Skip to content

Commit ceeb311

Browse files
authored
Add task detail property and adopt in npm extension (microsoft#83070)
Fixes microsoft#69785
1 parent 6de0eea commit ceeb311

13 files changed

Lines changed: 1138 additions & 11 deletions

File tree

extensions/npm/src/npmView.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55

66
import * as path from 'path';
77
import {
8-
Event, EventEmitter, ExtensionContext, Task,
8+
Event, EventEmitter, ExtensionContext, Task2 as Task,
99
TextDocument, ThemeIcon, TreeDataProvider, TreeItem, TreeItemCollapsibleState, Uri,
1010
WorkspaceFolder, commands, window, workspace, tasks, Selection, TaskGroup
1111
} from 'vscode';
@@ -108,6 +108,9 @@ class NpmScript extends TreeItem {
108108
dark: context.asAbsolutePath(path.join('resources', 'dark', 'script.svg'))
109109
};
110110
}
111+
if (task.detail) {
112+
this.tooltip = task.detail;
113+
}
111114
}
112115

113116
getFolder(): WorkspaceFolder {
@@ -206,7 +209,7 @@ export class NpmScriptsTreeDataProvider implements TreeDataProvider<TreeItem> {
206209
if (!uri) {
207210
return;
208211
}
209-
let task = createTask('install', 'install', selection.folder.workspaceFolder, uri, []);
212+
let task = createTask('install', 'install', selection.folder.workspaceFolder, uri, undefined, []);
210213
tasks.executeTask(task);
211214
}
212215

extensions/npm/src/tasks.ts

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
*--------------------------------------------------------------------------------------------*/
55

66
import {
7-
TaskDefinition, Task, TaskGroup, WorkspaceFolder, RelativePattern, ShellExecution, Uri, workspace,
7+
TaskDefinition, Task2 as Task, TaskGroup, WorkspaceFolder, RelativePattern, ShellExecution, Uri, workspace,
88
DebugConfiguration, debug, TaskProvider, TextDocument, tasks, TaskScope, QuickPickItem
99
} from 'vscode';
1010
import * as path from 'path';
@@ -237,7 +237,7 @@ async function provideNpmScriptsForFolder(packageJsonUri: Uri): Promise<Task[]>
237237

238238
const prePostScripts = getPrePostScripts(scripts);
239239
Object.keys(scripts).forEach(each => {
240-
const task = createTask(each, `run ${each}`, folder!, packageJsonUri);
240+
const task = createTask(each, `run ${each}`, folder!, packageJsonUri, scripts![each]);
241241
const lowerCaseTaskName = each.toLowerCase();
242242
if (isBuildTask(lowerCaseTaskName)) {
243243
task.group = TaskGroup.Build;
@@ -253,7 +253,7 @@ async function provideNpmScriptsForFolder(packageJsonUri: Uri): Promise<Task[]>
253253
result.push(task);
254254
});
255255
// always add npm install (without a problem matcher)
256-
result.push(createTask('install', 'install', folder, packageJsonUri, []));
256+
result.push(createTask('install', 'install', folder, packageJsonUri, undefined, []));
257257
return result;
258258
}
259259

@@ -264,7 +264,7 @@ export function getTaskName(script: string, relativePath: string | undefined) {
264264
return script;
265265
}
266266

267-
export function createTask(script: NpmTaskDefinition | string, cmd: string, folder: WorkspaceFolder, packageJsonUri: Uri, matcher?: any): Task {
267+
export function createTask(script: NpmTaskDefinition | string, cmd: string, folder: WorkspaceFolder, packageJsonUri: Uri, detail?: string, matcher?: any): Task {
268268
let kind: NpmTaskDefinition;
269269
if (typeof script === 'string') {
270270
kind = { type: 'npm', script: script };
@@ -292,7 +292,9 @@ export function createTask(script: NpmTaskDefinition | string, cmd: string, fold
292292
}
293293
let taskName = getTaskName(kind.script, relativePackageJson);
294294
let cwd = path.dirname(packageJsonUri.fsPath);
295-
return new Task(kind, folder, taskName, 'npm', new ShellExecution(getCommandLine(folder, cmd), { cwd: cwd }), matcher);
295+
const task = new Task(kind, folder, taskName, 'npm', new ShellExecution(getCommandLine(folder, cmd), { cwd: cwd }), matcher);
296+
task.detail = detail;
297+
return task;
296298
}
297299

298300

0 commit comments

Comments
 (0)