mirror of
https://github.com/Microsoft/vscode
synced 2024-08-27 13:00:58 +00:00
Fixes #27738: Defer switching to Tasks 2.0.0 as the default
This commit is contained in:
parent
6ba48011f5
commit
e98c09c842
|
@ -7,6 +7,7 @@
|
||||||
"engines": {
|
"engines": {
|
||||||
"vscode": "*"
|
"vscode": "*"
|
||||||
},
|
},
|
||||||
|
"enableProposedApi": true,
|
||||||
"categories": [
|
"categories": [
|
||||||
"Other"
|
"Other"
|
||||||
],
|
],
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
"engines": {
|
"engines": {
|
||||||
"vscode": "*"
|
"vscode": "*"
|
||||||
},
|
},
|
||||||
|
"enableProposedApi": true,
|
||||||
"categories": [
|
"categories": [
|
||||||
"Other"
|
"Other"
|
||||||
],
|
],
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
"engines": {
|
"engines": {
|
||||||
"vscode": "*"
|
"vscode": "*"
|
||||||
},
|
},
|
||||||
|
"enableProposedApi": true,
|
||||||
"categories": [
|
"categories": [
|
||||||
"Other"
|
"Other"
|
||||||
],
|
],
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
"engines": {
|
"engines": {
|
||||||
"vscode": "*"
|
"vscode": "*"
|
||||||
},
|
},
|
||||||
|
"enableProposedApi": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"semver": "4.3.6",
|
"semver": "4.3.6",
|
||||||
"vscode-extension-telemetry": "^0.0.7",
|
"vscode-extension-telemetry": "^0.0.7",
|
||||||
|
|
1
extensions/typescript/src/typings/ref.d.ts
vendored
1
extensions/typescript/src/typings/ref.d.ts
vendored
|
@ -4,4 +4,5 @@
|
||||||
*--------------------------------------------------------------------------------------------*/
|
*--------------------------------------------------------------------------------------------*/
|
||||||
|
|
||||||
/// <reference path='../../../../src/vs/vscode.d.ts'/>
|
/// <reference path='../../../../src/vs/vscode.d.ts'/>
|
||||||
|
/// <reference path='../../../../src/vs/vscode.proposed.d.ts'/>
|
||||||
/// <reference types='@types/node'/>
|
/// <reference types='@types/node'/>
|
||||||
|
|
329
src/vs/vscode.d.ts
vendored
329
src/vs/vscode.d.ts
vendored
|
@ -3537,335 +3537,6 @@ declare module 'vscode' {
|
||||||
update(key: string, value: any): Thenable<void>;
|
update(key: string, value: any): Thenable<void>;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Controls the behaviour of the terminal's visibility.
|
|
||||||
*/
|
|
||||||
export enum TaskRevealKind {
|
|
||||||
/**
|
|
||||||
* Always brings the terminal to front if the task is executed.
|
|
||||||
*/
|
|
||||||
Always = 1,
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Only brings the terminal to front if a problem is detected executing the task
|
|
||||||
* (e.g. the task couldn't be started because).
|
|
||||||
*/
|
|
||||||
Silent = 2,
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The terminal never comes to front when the task is executed.
|
|
||||||
*/
|
|
||||||
Never = 3
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Controls terminal specific behavior.
|
|
||||||
*/
|
|
||||||
export interface TaskTerminalBehavior {
|
|
||||||
/**
|
|
||||||
* Controls whether the terminal executing a task is brought to front or not.
|
|
||||||
* Defaults to `RevealKind.Always`.
|
|
||||||
*/
|
|
||||||
reveal?: TaskRevealKind;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Controls whether the command is echoed in the terminal or not.
|
|
||||||
*/
|
|
||||||
echo?: boolean;
|
|
||||||
}
|
|
||||||
|
|
||||||
export interface ProcessTaskOptions {
|
|
||||||
/**
|
|
||||||
* The current working directory of the executed program or shell.
|
|
||||||
* If omitted the tools current workspace root is used.
|
|
||||||
*/
|
|
||||||
cwd?: string;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The additional environment of the executed program or shell. If omitted
|
|
||||||
* the parent process' environment is used. If provided it is merged with
|
|
||||||
* the parent process' environment.
|
|
||||||
*/
|
|
||||||
env?: { [key: string]: string };
|
|
||||||
}
|
|
||||||
|
|
||||||
export namespace TaskGroup {
|
|
||||||
/**
|
|
||||||
* The clean task group
|
|
||||||
*/
|
|
||||||
export const Clean: 'clean';
|
|
||||||
/**
|
|
||||||
* The build task group. If a task is part of the build task group
|
|
||||||
* it can be executed via the run build short cut.
|
|
||||||
*/
|
|
||||||
export const Build: 'build';
|
|
||||||
/**
|
|
||||||
* The rebuild all task group
|
|
||||||
*/
|
|
||||||
export const RebuildAll: 'rebuildAll';
|
|
||||||
/**
|
|
||||||
* The test task group. If a task is part of the test task group
|
|
||||||
* it can be executed via the run test short cut.
|
|
||||||
*/
|
|
||||||
export const Test: 'test';
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A task that starts an external process.
|
|
||||||
*/
|
|
||||||
export class ProcessTask {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates a process task.
|
|
||||||
*
|
|
||||||
* @param name the task's name. Is presented in the user interface.
|
|
||||||
* @param process the process to start.
|
|
||||||
* @param problemMatchers the names of problem matchers to use, like '$tsc'
|
|
||||||
* or '$eslint'. Problem matchers can be contributed by an extension using
|
|
||||||
* the `problemMatchers` extension point.
|
|
||||||
*/
|
|
||||||
constructor(name: string, process: string, problemMatchers?: string | string[]);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates a process task.
|
|
||||||
*
|
|
||||||
* @param name the task's name. Is presented in the user interface.
|
|
||||||
* @param process the process to start.
|
|
||||||
* @param args arguments to be passed to the process.
|
|
||||||
* @param problemMatchers the names of problem matchers to use, like '$tsc'
|
|
||||||
* or '$eslint'. Problem matchers can be contributed by an extension using
|
|
||||||
* the `problemMatchers` extension point.
|
|
||||||
*/
|
|
||||||
constructor(name: string, process: string, args: string[], problemMatchers?: string | string[]);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates a process task.
|
|
||||||
*
|
|
||||||
* @param name the task's name. Is presented in the user interface.
|
|
||||||
* @param process the process to start.
|
|
||||||
* @param args arguments to be passed to the process.
|
|
||||||
* @param options additional options for the started process.
|
|
||||||
* @param problemMatchers the names of problem matchers to use, like '$tsc'
|
|
||||||
* or '$eslint'. Problem matchers can be contributed by an extension using
|
|
||||||
* the `problemMatchers` extension point.
|
|
||||||
*/
|
|
||||||
constructor(name: string, process: string, args: string[], options: ProcessTaskOptions, problemMatchers?: string | string[]);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The task's name
|
|
||||||
*/
|
|
||||||
readonly name: string;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The task's identifier. If omitted the internal identifier will
|
|
||||||
* be `${extensionName}:${name}`
|
|
||||||
*/
|
|
||||||
identifier: string | undefined;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Whether the task is a background task or not.
|
|
||||||
*/
|
|
||||||
isBackground: boolean;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The process to be executed.
|
|
||||||
*/
|
|
||||||
readonly process: string;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The arguments passed to the process. Defaults to an empty array.
|
|
||||||
*/
|
|
||||||
args: string[];
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A human-readable string describing the source of this
|
|
||||||
* shell task, e.g. 'gulp' or 'npm'.
|
|
||||||
*/
|
|
||||||
source: string | undefined;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The task group this tasks belongs to. See TaskGroup
|
|
||||||
* for a predefined set of available groups.
|
|
||||||
* Defaults to undefined meaning that the task doesn't
|
|
||||||
* belong to any special group.
|
|
||||||
*/
|
|
||||||
group: string | undefined;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The process options used when the process is executed.
|
|
||||||
* Defaults to an empty object literal.
|
|
||||||
*/
|
|
||||||
options: ProcessTaskOptions;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The terminal behavior. Defaults to an empty object literal.
|
|
||||||
*/
|
|
||||||
terminalBehavior: TaskTerminalBehavior;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The problem matchers attached to the task. Defaults to an empty
|
|
||||||
* array.
|
|
||||||
*/
|
|
||||||
problemMatchers: string[];
|
|
||||||
}
|
|
||||||
|
|
||||||
export type ShellTaskOptions = {
|
|
||||||
/**
|
|
||||||
* The shell executable.
|
|
||||||
*/
|
|
||||||
executable: string;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The arguments to be passed to the shell executable used to run the task.
|
|
||||||
*/
|
|
||||||
shellArgs?: string[];
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The current working directory of the executed shell.
|
|
||||||
* If omitted the tools current workspace root is used.
|
|
||||||
*/
|
|
||||||
cwd?: string;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The additional environment of the executed shell. If omitted
|
|
||||||
* the parent process' environment is used. If provided it is merged with
|
|
||||||
* the parent process' environment.
|
|
||||||
*/
|
|
||||||
env?: { [key: string]: string };
|
|
||||||
} | {
|
|
||||||
/**
|
|
||||||
* The current working directory of the executed shell.
|
|
||||||
* If omitted the tools current workspace root is used.
|
|
||||||
*/
|
|
||||||
cwd: string;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The additional environment of the executed shell. If omitted
|
|
||||||
* the parent process' environment is used. If provided it is merged with
|
|
||||||
* the parent process' environment.
|
|
||||||
*/
|
|
||||||
env?: { [key: string]: string };
|
|
||||||
} | {
|
|
||||||
/**
|
|
||||||
* The current working directory of the executed shell.
|
|
||||||
* If omitted the tools current workspace root is used.
|
|
||||||
*/
|
|
||||||
cwd?: string;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The additional environment of the executed shell. If omitted
|
|
||||||
* the parent process' environment is used. If provided it is merged with
|
|
||||||
* the parent process' environment.
|
|
||||||
*/
|
|
||||||
env: { [key: string]: string };
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A task that executes a shell command.
|
|
||||||
*/
|
|
||||||
export class ShellTask {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates a shell task.
|
|
||||||
*
|
|
||||||
* @param name the task's name. Is presented in the user interface.
|
|
||||||
* @param commandLine the command line to execute.
|
|
||||||
* @param problemMatchers the names of problem matchers to use, like '$tsc'
|
|
||||||
* or '$eslint'. Problem matchers can be contributed by an extension using
|
|
||||||
* the `problemMatchers` extension point.
|
|
||||||
*/
|
|
||||||
constructor(name: string, commandLine: string, problemMatchers?: string | string[]);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates a shell task.
|
|
||||||
*
|
|
||||||
* @param name the task's name. Is presented in the user interface.
|
|
||||||
* @param commandLine the command line to execute.
|
|
||||||
* @param options additional options used when creating the shell.
|
|
||||||
* @param problemMatchers the names of problem matchers to use, like '$tsc'
|
|
||||||
* or '$eslint'. Problem matchers can be contributed by an extension using
|
|
||||||
* the `problemMatchers` extension point.
|
|
||||||
*/
|
|
||||||
constructor(name: string, commandLine: string, options: ShellTaskOptions, problemMatchers?: string | string[]);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The task's name
|
|
||||||
*/
|
|
||||||
readonly name: string;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The task's identifier. If omitted the internal identifier will
|
|
||||||
* be `${extensionName}:${name}`
|
|
||||||
*/
|
|
||||||
identifier: string | undefined;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Whether the task is a background task or not.
|
|
||||||
*/
|
|
||||||
isBackground: boolean;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The command line to execute.
|
|
||||||
*/
|
|
||||||
readonly commandLine: string;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A human-readable string describing the source of this
|
|
||||||
* shell task, e.g. 'gulp' or 'npm'.
|
|
||||||
*/
|
|
||||||
source: string | undefined;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The task group this tasks belongs to. See TaskGroup
|
|
||||||
* for a predefined set of available groups.
|
|
||||||
* Defaults to undefined meaning that the task doesn't
|
|
||||||
* belong to any special group.
|
|
||||||
*/
|
|
||||||
group: string | undefined;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The shell options used when the shell is executed. Defaults to an
|
|
||||||
* empty object literal.
|
|
||||||
*/
|
|
||||||
options: ShellTaskOptions;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The terminal behavior. Defaults to an empty object literal.
|
|
||||||
*/
|
|
||||||
terminalBehavior: TaskTerminalBehavior;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The problem matchers attached to the task. Defaults to an empty
|
|
||||||
* array.
|
|
||||||
*/
|
|
||||||
problemMatchers: string[];
|
|
||||||
}
|
|
||||||
|
|
||||||
export type Task = ProcessTask | ShellTask;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* A task provider allows to add tasks to the task service.
|
|
||||||
* A task provider is registerd via #workspace.registerTaskProvider.
|
|
||||||
*/
|
|
||||||
export interface TaskProvider {
|
|
||||||
/**
|
|
||||||
* Provides additional tasks.
|
|
||||||
* @param token A cancellation token.
|
|
||||||
* @return a #TaskSet
|
|
||||||
*/
|
|
||||||
provideTasks(token: CancellationToken): ProviderResult<Task[]>;
|
|
||||||
}
|
|
||||||
|
|
||||||
export namespace workspace {
|
|
||||||
/**
|
|
||||||
* Register a task provider.
|
|
||||||
*
|
|
||||||
* @param provider A task provider.
|
|
||||||
* @return A [disposable](#Disposable) that unregisters this provider when being disposed.
|
|
||||||
*/
|
|
||||||
export function registerTaskProvider(provider: TaskProvider): Disposable;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Namespace describing the environment the editor runs in.
|
* Namespace describing the environment the editor runs in.
|
||||||
*/
|
*/
|
||||||
|
|
329
src/vs/vscode.proposed.d.ts
vendored
329
src/vs/vscode.proposed.d.ts
vendored
|
@ -7,6 +7,335 @@
|
||||||
|
|
||||||
declare module 'vscode' {
|
declare module 'vscode' {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Controls the behaviour of the terminal's visibility.
|
||||||
|
*/
|
||||||
|
export enum TaskRevealKind {
|
||||||
|
/**
|
||||||
|
* Always brings the terminal to front if the task is executed.
|
||||||
|
*/
|
||||||
|
Always = 1,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Only brings the terminal to front if a problem is detected executing the task
|
||||||
|
* (e.g. the task couldn't be started because).
|
||||||
|
*/
|
||||||
|
Silent = 2,
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The terminal never comes to front when the task is executed.
|
||||||
|
*/
|
||||||
|
Never = 3
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Controls terminal specific behavior.
|
||||||
|
*/
|
||||||
|
export interface TaskTerminalBehavior {
|
||||||
|
/**
|
||||||
|
* Controls whether the terminal executing a task is brought to front or not.
|
||||||
|
* Defaults to `RevealKind.Always`.
|
||||||
|
*/
|
||||||
|
reveal?: TaskRevealKind;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Controls whether the command is echoed in the terminal or not.
|
||||||
|
*/
|
||||||
|
echo?: boolean;
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface ProcessTaskOptions {
|
||||||
|
/**
|
||||||
|
* The current working directory of the executed program or shell.
|
||||||
|
* If omitted the tools current workspace root is used.
|
||||||
|
*/
|
||||||
|
cwd?: string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The additional environment of the executed program or shell. If omitted
|
||||||
|
* the parent process' environment is used. If provided it is merged with
|
||||||
|
* the parent process' environment.
|
||||||
|
*/
|
||||||
|
env?: { [key: string]: string };
|
||||||
|
}
|
||||||
|
|
||||||
|
export namespace TaskGroup {
|
||||||
|
/**
|
||||||
|
* The clean task group
|
||||||
|
*/
|
||||||
|
export const Clean: 'clean';
|
||||||
|
/**
|
||||||
|
* The build task group. If a task is part of the build task group
|
||||||
|
* it can be executed via the run build short cut.
|
||||||
|
*/
|
||||||
|
export const Build: 'build';
|
||||||
|
/**
|
||||||
|
* The rebuild all task group
|
||||||
|
*/
|
||||||
|
export const RebuildAll: 'rebuildAll';
|
||||||
|
/**
|
||||||
|
* The test task group. If a task is part of the test task group
|
||||||
|
* it can be executed via the run test short cut.
|
||||||
|
*/
|
||||||
|
export const Test: 'test';
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A task that starts an external process.
|
||||||
|
*/
|
||||||
|
export class ProcessTask {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a process task.
|
||||||
|
*
|
||||||
|
* @param name the task's name. Is presented in the user interface.
|
||||||
|
* @param process the process to start.
|
||||||
|
* @param problemMatchers the names of problem matchers to use, like '$tsc'
|
||||||
|
* or '$eslint'. Problem matchers can be contributed by an extension using
|
||||||
|
* the `problemMatchers` extension point.
|
||||||
|
*/
|
||||||
|
constructor(name: string, process: string, problemMatchers?: string | string[]);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a process task.
|
||||||
|
*
|
||||||
|
* @param name the task's name. Is presented in the user interface.
|
||||||
|
* @param process the process to start.
|
||||||
|
* @param args arguments to be passed to the process.
|
||||||
|
* @param problemMatchers the names of problem matchers to use, like '$tsc'
|
||||||
|
* or '$eslint'. Problem matchers can be contributed by an extension using
|
||||||
|
* the `problemMatchers` extension point.
|
||||||
|
*/
|
||||||
|
constructor(name: string, process: string, args: string[], problemMatchers?: string | string[]);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a process task.
|
||||||
|
*
|
||||||
|
* @param name the task's name. Is presented in the user interface.
|
||||||
|
* @param process the process to start.
|
||||||
|
* @param args arguments to be passed to the process.
|
||||||
|
* @param options additional options for the started process.
|
||||||
|
* @param problemMatchers the names of problem matchers to use, like '$tsc'
|
||||||
|
* or '$eslint'. Problem matchers can be contributed by an extension using
|
||||||
|
* the `problemMatchers` extension point.
|
||||||
|
*/
|
||||||
|
constructor(name: string, process: string, args: string[], options: ProcessTaskOptions, problemMatchers?: string | string[]);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The task's name
|
||||||
|
*/
|
||||||
|
readonly name: string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The task's identifier. If omitted the internal identifier will
|
||||||
|
* be `${extensionName}:${name}`
|
||||||
|
*/
|
||||||
|
identifier: string | undefined;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Whether the task is a background task or not.
|
||||||
|
*/
|
||||||
|
isBackground: boolean;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The process to be executed.
|
||||||
|
*/
|
||||||
|
readonly process: string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The arguments passed to the process. Defaults to an empty array.
|
||||||
|
*/
|
||||||
|
args: string[];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A human-readable string describing the source of this
|
||||||
|
* shell task, e.g. 'gulp' or 'npm'.
|
||||||
|
*/
|
||||||
|
source: string | undefined;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The task group this tasks belongs to. See TaskGroup
|
||||||
|
* for a predefined set of available groups.
|
||||||
|
* Defaults to undefined meaning that the task doesn't
|
||||||
|
* belong to any special group.
|
||||||
|
*/
|
||||||
|
group: string | undefined;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The process options used when the process is executed.
|
||||||
|
* Defaults to an empty object literal.
|
||||||
|
*/
|
||||||
|
options: ProcessTaskOptions;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The terminal behavior. Defaults to an empty object literal.
|
||||||
|
*/
|
||||||
|
terminalBehavior: TaskTerminalBehavior;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The problem matchers attached to the task. Defaults to an empty
|
||||||
|
* array.
|
||||||
|
*/
|
||||||
|
problemMatchers: string[];
|
||||||
|
}
|
||||||
|
|
||||||
|
export type ShellTaskOptions = {
|
||||||
|
/**
|
||||||
|
* The shell executable.
|
||||||
|
*/
|
||||||
|
executable: string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The arguments to be passed to the shell executable used to run the task.
|
||||||
|
*/
|
||||||
|
shellArgs?: string[];
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The current working directory of the executed shell.
|
||||||
|
* If omitted the tools current workspace root is used.
|
||||||
|
*/
|
||||||
|
cwd?: string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The additional environment of the executed shell. If omitted
|
||||||
|
* the parent process' environment is used. If provided it is merged with
|
||||||
|
* the parent process' environment.
|
||||||
|
*/
|
||||||
|
env?: { [key: string]: string };
|
||||||
|
} | {
|
||||||
|
/**
|
||||||
|
* The current working directory of the executed shell.
|
||||||
|
* If omitted the tools current workspace root is used.
|
||||||
|
*/
|
||||||
|
cwd: string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The additional environment of the executed shell. If omitted
|
||||||
|
* the parent process' environment is used. If provided it is merged with
|
||||||
|
* the parent process' environment.
|
||||||
|
*/
|
||||||
|
env?: { [key: string]: string };
|
||||||
|
} | {
|
||||||
|
/**
|
||||||
|
* The current working directory of the executed shell.
|
||||||
|
* If omitted the tools current workspace root is used.
|
||||||
|
*/
|
||||||
|
cwd?: string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The additional environment of the executed shell. If omitted
|
||||||
|
* the parent process' environment is used. If provided it is merged with
|
||||||
|
* the parent process' environment.
|
||||||
|
*/
|
||||||
|
env: { [key: string]: string };
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A task that executes a shell command.
|
||||||
|
*/
|
||||||
|
export class ShellTask {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a shell task.
|
||||||
|
*
|
||||||
|
* @param name the task's name. Is presented in the user interface.
|
||||||
|
* @param commandLine the command line to execute.
|
||||||
|
* @param problemMatchers the names of problem matchers to use, like '$tsc'
|
||||||
|
* or '$eslint'. Problem matchers can be contributed by an extension using
|
||||||
|
* the `problemMatchers` extension point.
|
||||||
|
*/
|
||||||
|
constructor(name: string, commandLine: string, problemMatchers?: string | string[]);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a shell task.
|
||||||
|
*
|
||||||
|
* @param name the task's name. Is presented in the user interface.
|
||||||
|
* @param commandLine the command line to execute.
|
||||||
|
* @param options additional options used when creating the shell.
|
||||||
|
* @param problemMatchers the names of problem matchers to use, like '$tsc'
|
||||||
|
* or '$eslint'. Problem matchers can be contributed by an extension using
|
||||||
|
* the `problemMatchers` extension point.
|
||||||
|
*/
|
||||||
|
constructor(name: string, commandLine: string, options: ShellTaskOptions, problemMatchers?: string | string[]);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The task's name
|
||||||
|
*/
|
||||||
|
readonly name: string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The task's identifier. If omitted the internal identifier will
|
||||||
|
* be `${extensionName}:${name}`
|
||||||
|
*/
|
||||||
|
identifier: string | undefined;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Whether the task is a background task or not.
|
||||||
|
*/
|
||||||
|
isBackground: boolean;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The command line to execute.
|
||||||
|
*/
|
||||||
|
readonly commandLine: string;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A human-readable string describing the source of this
|
||||||
|
* shell task, e.g. 'gulp' or 'npm'.
|
||||||
|
*/
|
||||||
|
source: string | undefined;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The task group this tasks belongs to. See TaskGroup
|
||||||
|
* for a predefined set of available groups.
|
||||||
|
* Defaults to undefined meaning that the task doesn't
|
||||||
|
* belong to any special group.
|
||||||
|
*/
|
||||||
|
group: string | undefined;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The shell options used when the shell is executed. Defaults to an
|
||||||
|
* empty object literal.
|
||||||
|
*/
|
||||||
|
options: ShellTaskOptions;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The terminal behavior. Defaults to an empty object literal.
|
||||||
|
*/
|
||||||
|
terminalBehavior: TaskTerminalBehavior;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The problem matchers attached to the task. Defaults to an empty
|
||||||
|
* array.
|
||||||
|
*/
|
||||||
|
problemMatchers: string[];
|
||||||
|
}
|
||||||
|
|
||||||
|
export type Task = ProcessTask | ShellTask;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A task provider allows to add tasks to the task service.
|
||||||
|
* A task provider is registerd via #workspace.registerTaskProvider.
|
||||||
|
*/
|
||||||
|
export interface TaskProvider {
|
||||||
|
/**
|
||||||
|
* Provides additional tasks.
|
||||||
|
* @param token A cancellation token.
|
||||||
|
* @return a #TaskSet
|
||||||
|
*/
|
||||||
|
provideTasks(token: CancellationToken): ProviderResult<Task[]>;
|
||||||
|
}
|
||||||
|
|
||||||
|
export namespace workspace {
|
||||||
|
/**
|
||||||
|
* Register a task provider.
|
||||||
|
*
|
||||||
|
* @param provider A task provider.
|
||||||
|
* @return A [disposable](#Disposable) that unregisters this provider when being disposed.
|
||||||
|
*/
|
||||||
|
export function registerTaskProvider(provider: TaskProvider): Disposable;
|
||||||
|
}
|
||||||
|
|
||||||
export namespace window {
|
export namespace window {
|
||||||
|
|
||||||
export function sampleFunction(): Thenable<any>;
|
export function sampleFunction(): Thenable<any>;
|
||||||
|
|
|
@ -448,9 +448,9 @@ export function createApiFactory(
|
||||||
getConfiguration: (section?: string): vscode.WorkspaceConfiguration => {
|
getConfiguration: (section?: string): vscode.WorkspaceConfiguration => {
|
||||||
return extHostConfiguration.getConfiguration(section);
|
return extHostConfiguration.getConfiguration(section);
|
||||||
},
|
},
|
||||||
registerTaskProvider: (provider: vscode.TaskProvider) => {
|
registerTaskProvider: proposedApiFunction(extension, (provider: vscode.TaskProvider) => {
|
||||||
return extHostTask.registerTaskProvider(extension, provider);
|
return extHostTask.registerTaskProvider(extension, provider);
|
||||||
}
|
})
|
||||||
};
|
};
|
||||||
|
|
||||||
class SCM {
|
class SCM {
|
||||||
|
|
|
@ -1101,6 +1101,8 @@ namespace Globals {
|
||||||
|
|
||||||
export namespace ExecutionEngine {
|
export namespace ExecutionEngine {
|
||||||
|
|
||||||
|
export const _default: Tasks.ExecutionEngine = Tasks.ExecutionEngine.Process;
|
||||||
|
|
||||||
export function from(config: ExternalTaskRunnerConfiguration): Tasks.ExecutionEngine {
|
export function from(config: ExternalTaskRunnerConfiguration): Tasks.ExecutionEngine {
|
||||||
let runner = config.runner || config._runner;
|
let runner = config.runner || config._runner;
|
||||||
let result: Tasks.ExecutionEngine;
|
let result: Tasks.ExecutionEngine;
|
||||||
|
@ -1128,16 +1130,20 @@ export namespace ExecutionEngine {
|
||||||
|
|
||||||
export namespace JsonSchemaVersion {
|
export namespace JsonSchemaVersion {
|
||||||
|
|
||||||
|
export const _default: Tasks.JsonSchemaVersion = Tasks.JsonSchemaVersion.V0_1_0;
|
||||||
|
|
||||||
export function from(config: ExternalTaskRunnerConfiguration): Tasks.JsonSchemaVersion {
|
export function from(config: ExternalTaskRunnerConfiguration): Tasks.JsonSchemaVersion {
|
||||||
let version = config.version;
|
let version = config.version;
|
||||||
if (!version) {
|
if (!version) {
|
||||||
return Tasks.JsonSchemaVersion.V2_0_0;
|
return _default;
|
||||||
}
|
}
|
||||||
switch (version) {
|
switch (version) {
|
||||||
case '0.1.0':
|
case '0.1.0':
|
||||||
return Tasks.JsonSchemaVersion.V0_1_0;
|
return Tasks.JsonSchemaVersion.V0_1_0;
|
||||||
default:
|
case '2.0.0':
|
||||||
return Tasks.JsonSchemaVersion.V2_0_0;
|
return Tasks.JsonSchemaVersion.V2_0_0;
|
||||||
|
default:
|
||||||
|
return _default;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,6 +14,7 @@ export interface TaskEntry extends IPickOpenEntry {
|
||||||
content: string;
|
content: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Version 2.0 templates
|
||||||
const dotnetBuild: TaskEntry = {
|
const dotnetBuild: TaskEntry = {
|
||||||
id: 'dotnetCore',
|
id: 'dotnetCore',
|
||||||
label: '.NET Core',
|
label: '.NET Core',
|
||||||
|
@ -127,3 +128,220 @@ export let templates: TaskEntry[] = [dotnetBuild, msbuild, maven].sort((a, b) =>
|
||||||
return (a.sort || a.label).localeCompare(b.sort || b.label);
|
return (a.sort || a.label).localeCompare(b.sort || b.label);
|
||||||
});
|
});
|
||||||
templates.push(command);
|
templates.push(command);
|
||||||
|
*/
|
||||||
|
|
||||||
|
const gulp: TaskEntry = {
|
||||||
|
id: 'gulp',
|
||||||
|
label: 'Gulp',
|
||||||
|
autoDetect: true,
|
||||||
|
content: [
|
||||||
|
'{',
|
||||||
|
'\t// See https://go.microsoft.com/fwlink/?LinkId=733558',
|
||||||
|
'\t// for the documentation about the tasks.json format',
|
||||||
|
'\t"version": "0.1.0",',
|
||||||
|
'\t"command": "gulp",',
|
||||||
|
'\t"isShellCommand": true,',
|
||||||
|
'\t"args": ["--no-color"],',
|
||||||
|
'\t"showOutput": "always"',
|
||||||
|
'}'
|
||||||
|
].join('\n')
|
||||||
|
};
|
||||||
|
|
||||||
|
const grunt: TaskEntry = {
|
||||||
|
id: 'grunt',
|
||||||
|
label: 'Grunt',
|
||||||
|
autoDetect: true,
|
||||||
|
content: [
|
||||||
|
'{',
|
||||||
|
'\t// See https://go.microsoft.com/fwlink/?LinkId=733558',
|
||||||
|
'\t// for the documentation about the tasks.json format',
|
||||||
|
'\t"version": "0.1.0",',
|
||||||
|
'\t"command": "grunt",',
|
||||||
|
'\t"isShellCommand": true,',
|
||||||
|
'\t"args": ["--no-color"],',
|
||||||
|
'\t"showOutput": "always"',
|
||||||
|
'}'
|
||||||
|
].join('\n')
|
||||||
|
};
|
||||||
|
|
||||||
|
const npm: TaskEntry = {
|
||||||
|
id: 'npm',
|
||||||
|
label: 'npm',
|
||||||
|
sort: 'NPM',
|
||||||
|
autoDetect: false,
|
||||||
|
content: [
|
||||||
|
'{',
|
||||||
|
'\t// See https://go.microsoft.com/fwlink/?LinkId=733558',
|
||||||
|
'\t// for the documentation about the tasks.json format',
|
||||||
|
'\t"version": "0.1.0",',
|
||||||
|
'\t"command": "npm",',
|
||||||
|
'\t"isShellCommand": true,',
|
||||||
|
'\t"showOutput": "always",',
|
||||||
|
'\t"suppressTaskName": true,',
|
||||||
|
'\t"tasks": [',
|
||||||
|
'\t\t{',
|
||||||
|
'\t\t\t"taskName": "install",',
|
||||||
|
'\t\t\t"args": ["install"]',
|
||||||
|
'\t\t},',
|
||||||
|
'\t\t{',
|
||||||
|
'\t\t\t"taskName": "update",',
|
||||||
|
'\t\t\t"args": ["update"]',
|
||||||
|
'\t\t},',
|
||||||
|
'\t\t{',
|
||||||
|
'\t\t\t"taskName": "test",',
|
||||||
|
'\t\t\t"args": ["run", "test"]',
|
||||||
|
'\t\t}',
|
||||||
|
'\t]',
|
||||||
|
'}'
|
||||||
|
].join('\n')
|
||||||
|
};
|
||||||
|
|
||||||
|
const tscConfig: TaskEntry = {
|
||||||
|
id: 'tsc.config',
|
||||||
|
label: 'TypeScript - tsconfig.json',
|
||||||
|
autoDetect: false,
|
||||||
|
description: nls.localize('tsc.config', 'Compiles a TypeScript project'),
|
||||||
|
content: [
|
||||||
|
'{',
|
||||||
|
'\t// See https://go.microsoft.com/fwlink/?LinkId=733558',
|
||||||
|
'\t// for the documentation about the tasks.json format',
|
||||||
|
'\t"version": "0.1.0",',
|
||||||
|
'\t"command": "tsc",',
|
||||||
|
'\t"isShellCommand": true,',
|
||||||
|
'\t"args": ["-p", "."],',
|
||||||
|
'\t"showOutput": "silent",',
|
||||||
|
'\t"problemMatcher": "$tsc"',
|
||||||
|
'}'
|
||||||
|
].join('\n')
|
||||||
|
};
|
||||||
|
|
||||||
|
const tscWatch: TaskEntry = {
|
||||||
|
id: 'tsc.watch',
|
||||||
|
label: 'TypeScript - Watch Mode',
|
||||||
|
autoDetect: false,
|
||||||
|
description: nls.localize('tsc.watch', 'Compiles a TypeScript project in watch mode'),
|
||||||
|
content: [
|
||||||
|
'{',
|
||||||
|
'\t// See https://go.microsoft.com/fwlink/?LinkId=733558',
|
||||||
|
'\t// for the documentation about the tasks.json format',
|
||||||
|
'\t"version": "0.1.0",',
|
||||||
|
'\t"command": "tsc",',
|
||||||
|
'\t"isShellCommand": true,',
|
||||||
|
'\t"args": ["-w", "-p", "."],',
|
||||||
|
'\t"showOutput": "silent",',
|
||||||
|
'\t"isBackground": true,',
|
||||||
|
'\t"problemMatcher": "$tsc-watch"',
|
||||||
|
'}'
|
||||||
|
].join('\n')
|
||||||
|
};
|
||||||
|
|
||||||
|
const dotnetBuild: TaskEntry = {
|
||||||
|
id: 'dotnetCore',
|
||||||
|
label: '.NET Core',
|
||||||
|
sort: 'NET Core',
|
||||||
|
autoDetect: false,
|
||||||
|
description: nls.localize('dotnetCore', 'Executes .NET Core build command'),
|
||||||
|
content: [
|
||||||
|
'{',
|
||||||
|
'\t// See https://go.microsoft.com/fwlink/?LinkId=733558',
|
||||||
|
'\t// for the documentation about the tasks.json format',
|
||||||
|
'\t"version": "0.1.0",',
|
||||||
|
'\t"command": "dotnet",',
|
||||||
|
'\t"isShellCommand": true,',
|
||||||
|
'\t"args": [],',
|
||||||
|
'\t"tasks": [',
|
||||||
|
'\t\t{',
|
||||||
|
'\t\t\t"taskName": "build",',
|
||||||
|
'\t\t\t"args": [ ],',
|
||||||
|
'\t\t\t"isBuildCommand": true,',
|
||||||
|
'\t\t\t"showOutput": "silent",',
|
||||||
|
'\t\t\t"problemMatcher": "$msCompile"',
|
||||||
|
'\t\t}',
|
||||||
|
'\t]',
|
||||||
|
'}'
|
||||||
|
].join('\n')
|
||||||
|
};
|
||||||
|
|
||||||
|
const msbuild: TaskEntry = {
|
||||||
|
id: 'msbuild',
|
||||||
|
label: 'MSBuild',
|
||||||
|
autoDetect: false,
|
||||||
|
description: nls.localize('msbuild', 'Executes the build target'),
|
||||||
|
content: [
|
||||||
|
'{',
|
||||||
|
'\t// See https://go.microsoft.com/fwlink/?LinkId=733558',
|
||||||
|
'\t// for the documentation about the tasks.json format',
|
||||||
|
'\t"version": "0.1.0",',
|
||||||
|
'\t"command": "msbuild",',
|
||||||
|
'\t"args": [',
|
||||||
|
'\t\t// Ask msbuild to generate full paths for file names.',
|
||||||
|
'\t\t"/property:GenerateFullPaths=true"',
|
||||||
|
'\t],',
|
||||||
|
'\t"taskSelector": "/t:",',
|
||||||
|
'\t"showOutput": "silent",',
|
||||||
|
'\t"tasks": [',
|
||||||
|
'\t\t{',
|
||||||
|
'\t\t\t"taskName": "build",',
|
||||||
|
'\t\t\t// Show the output window only if unrecognized errors occur.',
|
||||||
|
'\t\t\t"showOutput": "silent",',
|
||||||
|
'\t\t\t// Use the standard MS compiler pattern to detect errors, warnings and infos',
|
||||||
|
'\t\t\t"problemMatcher": "$msCompile"',
|
||||||
|
'\t\t}',
|
||||||
|
'\t]',
|
||||||
|
'}'
|
||||||
|
].join('\n')
|
||||||
|
};
|
||||||
|
|
||||||
|
const command: TaskEntry = {
|
||||||
|
id: 'externalCommand',
|
||||||
|
label: 'Others',
|
||||||
|
autoDetect: false,
|
||||||
|
description: nls.localize('externalCommand', 'Example to run an arbitrary external command'),
|
||||||
|
content: [
|
||||||
|
'{',
|
||||||
|
'\t// See https://go.microsoft.com/fwlink/?LinkId=733558',
|
||||||
|
'\t// for the documentation about the tasks.json format',
|
||||||
|
'\t"version": "0.1.0",',
|
||||||
|
'\t"command": "echo",',
|
||||||
|
'\t"isShellCommand": true,',
|
||||||
|
'\t"args": ["Hello World"],',
|
||||||
|
'\t"showOutput": "always"',
|
||||||
|
'}'
|
||||||
|
].join('\n')
|
||||||
|
};
|
||||||
|
|
||||||
|
const maven: TaskEntry = {
|
||||||
|
id: 'maven',
|
||||||
|
label: 'maven',
|
||||||
|
sort: 'MVN',
|
||||||
|
autoDetect: false,
|
||||||
|
description: nls.localize('Maven', 'Executes common maven commands'),
|
||||||
|
content: [
|
||||||
|
'{',
|
||||||
|
'\t// See https://go.microsoft.com/fwlink/?LinkId=733558',
|
||||||
|
'\t// for the documentation about the tasks.json format',
|
||||||
|
'\t"version": "0.1.0",',
|
||||||
|
'\t"command": "mvn",',
|
||||||
|
'\t"isShellCommand": true,',
|
||||||
|
'\t"showOutput": "always",',
|
||||||
|
'\t"suppressTaskName": true,',
|
||||||
|
'\t"tasks": [',
|
||||||
|
'\t\t{',
|
||||||
|
'\t\t\t"taskName": "verify",',
|
||||||
|
'\t\t\t"args": ["-B", "verify"],',
|
||||||
|
'\t\t\t"isBuildCommand": true',
|
||||||
|
'\t\t},',
|
||||||
|
'\t\t{',
|
||||||
|
'\t\t\t"taskName": "test",',
|
||||||
|
'\t\t\t"args": ["-B", "test"],',
|
||||||
|
'\t\t\t"isTestCommand": true',
|
||||||
|
'\t\t}',
|
||||||
|
'\t]',
|
||||||
|
'}'
|
||||||
|
].join('\n')
|
||||||
|
};
|
||||||
|
|
||||||
|
export let templates: TaskEntry[] = [gulp, grunt, tscConfig, tscWatch, dotnetBuild, msbuild, npm, maven].sort((a, b) => {
|
||||||
|
return (a.sort || a.label).localeCompare(b.sort || b.label);
|
||||||
|
});
|
||||||
|
templates.push(command);
|
||||||
|
|
|
@ -20,8 +20,8 @@ const shellCommand: IJSONSchema = {
|
||||||
{
|
{
|
||||||
$ref: '#definitions/shellConfiguration'
|
$ref: '#definitions/shellConfiguration'
|
||||||
}
|
}
|
||||||
],
|
]
|
||||||
deprecationMessage: nls.localize('JsonSchema.tasks.isShellCommand.deprecated', 'The property isShellCommand is deprecated. Use the type property and the shell property in the options instead.')
|
// deprecationMessage: nls.localize('JsonSchema.tasks.isShellCommand.deprecated', 'The property isShellCommand is deprecated. Use the type property and the shell property in the options instead.')
|
||||||
};
|
};
|
||||||
|
|
||||||
const dependsOn: IJSONSchema = {
|
const dependsOn: IJSONSchema = {
|
||||||
|
@ -124,10 +124,10 @@ let definitions = schema.definitions;
|
||||||
definitions.commandConfiguration.properties.isShellCommand = Objects.deepClone(shellCommand);
|
definitions.commandConfiguration.properties.isShellCommand = Objects.deepClone(shellCommand);
|
||||||
definitions.taskDescription.properties.isShellCommand = Objects.deepClone(shellCommand);
|
definitions.taskDescription.properties.isShellCommand = Objects.deepClone(shellCommand);
|
||||||
definitions.taskDescription.properties.dependsOn = dependsOn;
|
definitions.taskDescription.properties.dependsOn = dependsOn;
|
||||||
definitions.showOutputType.deprecationMessage = nls.localize('JsonSchema.tasks.showOputput.deprecated', 'The property showOutput is deprecated. Use the terminal property instead.');
|
// definitions.showOutputType.deprecationMessage = nls.localize('JsonSchema.tasks.showOputput.deprecated', 'The property showOutput is deprecated. Use the terminal property instead.');
|
||||||
definitions.taskDescription.properties.echoCommand.deprecationMessage = nls.localize('JsonSchema.tasks.echoCommand.deprecated', 'The property echoCommand is deprecated. Use the terminal property instead.');
|
// definitions.taskDescription.properties.echoCommand.deprecationMessage = nls.localize('JsonSchema.tasks.echoCommand.deprecated', 'The property echoCommand is deprecated. Use the terminal property instead.');
|
||||||
definitions.taskDescription.properties.isBuildCommand.deprecationMessage = nls.localize('JsonSchema.tasks.isBuildCommand.deprecated', 'The property isBuildCommand is deprecated. Use the group property instead.');
|
// definitions.taskDescription.properties.isBuildCommand.deprecationMessage = nls.localize('JsonSchema.tasks.isBuildCommand.deprecated', 'The property isBuildCommand is deprecated. Use the group property instead.');
|
||||||
definitions.taskDescription.properties.isTestCommand.deprecationMessage = nls.localize('JsonSchema.tasks.isTestCommand.deprecated', 'The property isTestCommand is deprecated. Use the group property instead.');
|
// definitions.taskDescription.properties.isTestCommand.deprecationMessage = nls.localize('JsonSchema.tasks.isTestCommand.deprecated', 'The property isTestCommand is deprecated. Use the group property instead.');
|
||||||
definitions.taskDescription.properties.identifier = identifier;
|
definitions.taskDescription.properties.identifier = identifier;
|
||||||
definitions.taskDescription.properties.type = Objects.deepClone(taskType);
|
definitions.taskDescription.properties.type = Objects.deepClone(taskType);
|
||||||
definitions.taskDescription.properties.terminal = terminal;
|
definitions.taskDescription.properties.terminal = terminal;
|
||||||
|
|
|
@ -119,6 +119,52 @@ abstract class OpenTaskConfigurationAction extends Action {
|
||||||
if (!selection) {
|
if (!selection) {
|
||||||
return undefined;
|
return undefined;
|
||||||
}
|
}
|
||||||
|
let contentPromise: TPromise<string>;
|
||||||
|
if (selection.autoDetect) {
|
||||||
|
const outputChannel = this.outputService.getChannel(TaskService.OutputChannelId);
|
||||||
|
outputChannel.show(true);
|
||||||
|
outputChannel.append(nls.localize('ConfigureTaskRunnerAction.autoDetecting', 'Auto detecting tasks for {0}', selection.id) + '\n');
|
||||||
|
let detector = new ProcessRunnerDetector(this.fileService, this.contextService, this.configurationResolverService);
|
||||||
|
contentPromise = detector.detect(false, selection.id).then((value) => {
|
||||||
|
let config = value.config;
|
||||||
|
if (value.stderr && value.stderr.length > 0) {
|
||||||
|
value.stderr.forEach((line) => {
|
||||||
|
outputChannel.append(line + '\n');
|
||||||
|
});
|
||||||
|
if (config && (!config.tasks || config.tasks.length === 0)) {
|
||||||
|
this.messageService.show(Severity.Warning, nls.localize('ConfigureTaskRunnerAction.autoDetect', 'Auto detecting the task system failed. Using default template. Consult the task output for details.'));
|
||||||
|
return selection.content;
|
||||||
|
} else {
|
||||||
|
this.messageService.show(Severity.Warning, nls.localize('ConfigureTaskRunnerAction.autoDetectError', 'Auto detecting the task system produced errors. Consult the task output for details.'));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (config) {
|
||||||
|
if (value.stdout && value.stdout.length > 0) {
|
||||||
|
value.stdout.forEach(line => outputChannel.append(line + '\n'));
|
||||||
|
}
|
||||||
|
let content = JSON.stringify(config, null, '\t');
|
||||||
|
content = [
|
||||||
|
'{',
|
||||||
|
'\t// See https://go.microsoft.com/fwlink/?LinkId=733558',
|
||||||
|
'\t// for the documentation about the tasks.json format',
|
||||||
|
].join('\n') + content.substr(1);
|
||||||
|
return content;
|
||||||
|
} else {
|
||||||
|
return selection.content;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
contentPromise = TPromise.as(selection.content);
|
||||||
|
}
|
||||||
|
return contentPromise.then(content => {
|
||||||
|
let editorConfig = this.configurationService.getConfiguration<any>();
|
||||||
|
if (editorConfig.editor.insertSpaces) {
|
||||||
|
content = content.replace(/(\n)(\t+)/g, (_, s1, s2) => s1 + strings.repeat(' ', s2.length * editorConfig.editor.tabSize));
|
||||||
|
}
|
||||||
|
configFileCreated = true;
|
||||||
|
return this.fileService.createFile(this.contextService.toResource('.vscode/tasks.json'), content);
|
||||||
|
});
|
||||||
|
/* 2.0 version
|
||||||
let content = selection.content;
|
let content = selection.content;
|
||||||
let editorConfig = this.configurationService.getConfiguration<any>();
|
let editorConfig = this.configurationService.getConfiguration<any>();
|
||||||
if (editorConfig.editor.insertSpaces) {
|
if (editorConfig.editor.insertSpaces) {
|
||||||
|
@ -126,6 +172,7 @@ abstract class OpenTaskConfigurationAction extends Action {
|
||||||
}
|
}
|
||||||
configFileCreated = true;
|
configFileCreated = true;
|
||||||
return this.fileService.createFile(this.contextService.toResource('.vscode/tasks.json'), content);
|
return this.fileService.createFile(this.contextService.toResource('.vscode/tasks.json'), content);
|
||||||
|
*/
|
||||||
});
|
});
|
||||||
}).then((stat) => {
|
}).then((stat) => {
|
||||||
if (!stat) {
|
if (!stat) {
|
||||||
|
@ -1016,8 +1063,9 @@ class TaskService extends EventEmitter implements ITaskService {
|
||||||
if (hasParseErrors) {
|
if (hasParseErrors) {
|
||||||
return TPromise.as({ set: undefined, hasErrors: true });
|
return TPromise.as({ set: undefined, hasErrors: true });
|
||||||
}
|
}
|
||||||
|
let engine = TaskConfig.ExecutionEngine._default;
|
||||||
if (config) {
|
if (config) {
|
||||||
let engine = TaskConfig.ExecutionEngine.from(config);
|
engine = TaskConfig.ExecutionEngine.from(config);
|
||||||
if (engine === ExecutionEngine.Process) {
|
if (engine === ExecutionEngine.Process) {
|
||||||
if (this.hasDetectorSupport(config)) {
|
if (this.hasDetectorSupport(config)) {
|
||||||
configPromise = new ProcessRunnerDetector(this.fileService, this.contextService, this.configurationResolverService, config).detect(true).then((value): WorkspaceConfigurationResult => {
|
configPromise = new ProcessRunnerDetector(this.fileService, this.contextService, this.configurationResolverService, config).detect(true).then((value): WorkspaceConfigurationResult => {
|
||||||
|
@ -1052,7 +1100,14 @@ class TaskService extends EventEmitter implements ITaskService {
|
||||||
configPromise = TPromise.as({ config, hasErrors: false });
|
configPromise = TPromise.as({ config, hasErrors: false });
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
configPromise = TPromise.as({ config, hasErrors: false });
|
if (engine === ExecutionEngine.Terminal) {
|
||||||
|
configPromise = TPromise.as({ config, hasErrors: false });
|
||||||
|
} else {
|
||||||
|
configPromise = new ProcessRunnerDetector(this.fileService, this.contextService, this.configurationResolverService).detect(true).then((value) => {
|
||||||
|
let hasErrors = this.printStderr(value.stderr);
|
||||||
|
return { config: value.config, hasErrors };
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return configPromise.then((resolved) => {
|
return configPromise.then((resolved) => {
|
||||||
|
@ -1092,7 +1147,7 @@ class TaskService extends EventEmitter implements ITaskService {
|
||||||
private getExecutionEngine(): ExecutionEngine {
|
private getExecutionEngine(): ExecutionEngine {
|
||||||
let { config } = this.getConfiguration();
|
let { config } = this.getConfiguration();
|
||||||
if (!config) {
|
if (!config) {
|
||||||
return ExecutionEngine.Terminal;
|
return ExecutionEngine.Process;
|
||||||
}
|
}
|
||||||
return TaskConfig.ExecutionEngine.from(config);
|
return TaskConfig.ExecutionEngine.from(config);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue