diff options
Diffstat (limited to 'editors/code/src/toolchain.ts')
-rw-r--r-- | editors/code/src/toolchain.ts | 20 |
1 files changed, 19 insertions, 1 deletions
diff --git a/editors/code/src/toolchain.ts b/editors/code/src/toolchain.ts index a5dc3cf0c..68826c478 100644 --- a/editors/code/src/toolchain.ts +++ b/editors/code/src/toolchain.ts | |||
@@ -4,7 +4,7 @@ import * as path from 'path'; | |||
4 | import * as fs from 'fs'; | 4 | import * as fs from 'fs'; |
5 | import * as readline from 'readline'; | 5 | import * as readline from 'readline'; |
6 | import { OutputChannel } from 'vscode'; | 6 | import { OutputChannel } from 'vscode'; |
7 | import { log, memoize } from './util'; | 7 | import { execute, log, memoize } from './util'; |
8 | 8 | ||
9 | interface CompilationArtifact { | 9 | interface CompilationArtifact { |
10 | fileName: string; | 10 | fileName: string; |
@@ -121,6 +121,24 @@ export class Cargo { | |||
121 | } | 121 | } |
122 | } | 122 | } |
123 | 123 | ||
124 | /** Mirrors `project_model::sysroot::discover_sysroot_dir()` implementation*/ | ||
125 | export function getSysroot(dir: string): Promise<string> { | ||
126 | const rustcPath = getPathForExecutable("rustc"); | ||
127 | |||
128 | // do not memoize the result because the toolchain may change between runs | ||
129 | return execute(`${rustcPath} --print sysroot`, { cwd: dir }); | ||
130 | } | ||
131 | |||
132 | export async function getRustcId(dir: string): Promise<string> { | ||
133 | const rustcPath = getPathForExecutable("rustc"); | ||
134 | |||
135 | // do not memoize the result because the toolchain may change between runs | ||
136 | const data = await execute(`${rustcPath} -V -v`, { cwd: dir }); | ||
137 | const rx = /commit-hash:\s(.*)$/m.compile(); | ||
138 | |||
139 | return rx.exec(data)![1]; | ||
140 | } | ||
141 | |||
124 | /** Mirrors `toolchain::cargo()` implementation */ | 142 | /** Mirrors `toolchain::cargo()` implementation */ |
125 | export function cargoPath(): string { | 143 | export function cargoPath(): string { |
126 | return getPathForExecutable("cargo"); | 144 | return getPathForExecutable("cargo"); |