mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-09-30 05:45:12 +00:00
Remove cargo-watch from vscode extension.
Still keeps tests around for reference when porting them to rust
This commit is contained in:
parent
66e8ef53a0
commit
41a1ec723c
6 changed files with 1 additions and 454 deletions
|
@ -1,11 +1,7 @@
|
|||
import * as child_process from 'child_process';
|
||||
|
||||
import * as util from 'util';
|
||||
import * as vscode from 'vscode';
|
||||
import * as lc from 'vscode-languageclient';
|
||||
|
||||
import { Server } from '../server';
|
||||
import { CargoWatchProvider, registerCargoWatchProvider } from './cargo_watch';
|
||||
|
||||
interface RunnablesParams {
|
||||
textDocument: lc.TextDocumentIdentifier;
|
||||
|
@ -131,90 +127,3 @@ export async function handleSingle(runnable: Runnable) {
|
|||
|
||||
return vscode.tasks.executeTask(task);
|
||||
}
|
||||
|
||||
/**
|
||||
* Interactively asks the user whether we should run `cargo check` in order to
|
||||
* provide inline diagnostics; the user is met with a series of dialog boxes
|
||||
* that, when accepted, allow us to `cargo install cargo-watch` and then run it.
|
||||
*/
|
||||
export async function interactivelyStartCargoWatch(
|
||||
context: vscode.ExtensionContext,
|
||||
): Promise<CargoWatchProvider | undefined> {
|
||||
if (Server.config.cargoWatchOptions.enableOnStartup === 'disabled') {
|
||||
return;
|
||||
}
|
||||
|
||||
if (Server.config.cargoWatchOptions.enableOnStartup === 'ask') {
|
||||
const watch = await vscode.window.showInformationMessage(
|
||||
'Start watching changes with cargo? (Executes `cargo watch`, provides inline diagnostics)',
|
||||
'yes',
|
||||
'no',
|
||||
);
|
||||
if (watch !== 'yes') {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
return startCargoWatch(context);
|
||||
}
|
||||
|
||||
export async function startCargoWatch(
|
||||
context: vscode.ExtensionContext,
|
||||
): Promise<CargoWatchProvider | undefined> {
|
||||
const execPromise = util.promisify(child_process.exec);
|
||||
|
||||
const { stderr, code = 0 } = await execPromise(
|
||||
'cargo watch --version',
|
||||
).catch(e => e);
|
||||
|
||||
if (stderr.includes('no such subcommand: `watch`')) {
|
||||
const msg =
|
||||
'The `cargo-watch` subcommand is not installed. Install? (takes ~1-2 minutes)';
|
||||
const install = await vscode.window.showInformationMessage(
|
||||
msg,
|
||||
'yes',
|
||||
'no',
|
||||
);
|
||||
if (install !== 'yes') {
|
||||
return;
|
||||
}
|
||||
|
||||
const label = 'install-cargo-watch';
|
||||
const taskFinished = new Promise((resolve, _reject) => {
|
||||
const disposable = vscode.tasks.onDidEndTask(({ execution }) => {
|
||||
if (execution.task.name === label) {
|
||||
disposable.dispose();
|
||||
resolve();
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
vscode.tasks.executeTask(
|
||||
createTask({
|
||||
label,
|
||||
bin: 'cargo',
|
||||
args: ['install', 'cargo-watch'],
|
||||
env: {},
|
||||
}),
|
||||
);
|
||||
await taskFinished;
|
||||
const output = await execPromise('cargo watch --version').catch(e => e);
|
||||
if (output.stderr !== '') {
|
||||
vscode.window.showErrorMessage(
|
||||
`Couldn't install \`cargo-\`watch: ${output.stderr}`,
|
||||
);
|
||||
return;
|
||||
}
|
||||
} else if (code !== 0) {
|
||||
vscode.window.showErrorMessage(
|
||||
`\`cargo watch\` failed with ${code}: ${stderr}`,
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
||||
const provider = await registerCargoWatchProvider(context.subscriptions);
|
||||
if (provider) {
|
||||
provider.start();
|
||||
}
|
||||
return provider;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue