diff options
Diffstat (limited to 'editors/code/src/toolchain.ts')
-rw-r--r-- | editors/code/src/toolchain.ts | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/editors/code/src/toolchain.ts b/editors/code/src/toolchain.ts index a5dc3cf0c..b746da1d9 100644 --- a/editors/code/src/toolchain.ts +++ b/editors/code/src/toolchain.ts | |||
@@ -121,6 +121,27 @@ export class Cargo { | |||
121 | } | 121 | } |
122 | } | 122 | } |
123 | 123 | ||
124 | /** Mirrors `project_model::sysroot::discover_sysroot_dir()` implementation*/ | ||
125 | export function sysrootForDir(dir: string): Promise<string> { | ||
126 | const rustc_path = getPathForExecutable("rustc"); | ||
127 | |||
128 | return new Promise((resolve, reject) => { | ||
129 | cp.exec(`${rustc_path} --print sysroot`, { cwd: dir }, (err, stdout, stderr) => { | ||
130 | if (err) { | ||
131 | reject(err); | ||
132 | return; | ||
133 | } | ||
134 | |||
135 | if (stderr) { | ||
136 | reject(new Error(stderr)); | ||
137 | return; | ||
138 | } | ||
139 | |||
140 | resolve(stdout.trimEnd()); | ||
141 | }); | ||
142 | }); | ||
143 | } | ||
144 | |||
124 | /** Mirrors `toolchain::cargo()` implementation */ | 145 | /** Mirrors `toolchain::cargo()` implementation */ |
125 | export function cargoPath(): string { | 146 | export function cargoPath(): string { |
126 | return getPathForExecutable("cargo"); | 147 | return getPathForExecutable("cargo"); |