mirror of
https://github.com/coder/code-server.git
synced 2025-08-02 14:02:51 +08:00
chore(vscode): update to 1.53.2
These conflicts will be resolved in the following commits. We do it this way so that PR review is possible.
This commit is contained in:
@ -9,12 +9,12 @@ import {
|
||||
commands, Event, EventEmitter, ExtensionContext,
|
||||
Range,
|
||||
Selection, Task,
|
||||
TaskGroup, tasks, TextDocument, TextDocumentShowOptions, ThemeIcon, TreeDataProvider, TreeItem, TreeItemCollapsibleState, Uri,
|
||||
TaskGroup, tasks, TextDocument, TextDocumentShowOptions, ThemeIcon, TreeDataProvider, TreeItem, TreeItemLabel, TreeItemCollapsibleState, Uri,
|
||||
window, workspace, WorkspaceFolder
|
||||
} from 'vscode';
|
||||
import * as nls from 'vscode-nls';
|
||||
import {
|
||||
createTask, getTaskName, isAutoDetectionEnabled, isWorkspaceFolder, NpmTaskDefinition,
|
||||
createTask, getPackageManager, getTaskName, isAutoDetectionEnabled, isWorkspaceFolder, NpmTaskDefinition,
|
||||
NpmTaskProvider,
|
||||
startDebugging,
|
||||
TaskLocation,
|
||||
@ -126,13 +126,15 @@ class NoScripts extends TreeItem {
|
||||
}
|
||||
}
|
||||
|
||||
type TaskTree = Folder[] | PackageJSON[] | NoScripts[];
|
||||
|
||||
export class NpmScriptsTreeDataProvider implements TreeDataProvider<TreeItem> {
|
||||
private taskTree: Folder[] | PackageJSON[] | NoScripts[] | null = null;
|
||||
private taskTree: TaskTree | null = null;
|
||||
private extensionContext: ExtensionContext;
|
||||
private _onDidChangeTreeData: EventEmitter<TreeItem | null> = new EventEmitter<TreeItem | null>();
|
||||
readonly onDidChangeTreeData: Event<TreeItem | null> = this._onDidChangeTreeData.event;
|
||||
|
||||
constructor(context: ExtensionContext, public taskProvider: NpmTaskProvider) {
|
||||
constructor(private context: ExtensionContext, public taskProvider: NpmTaskProvider) {
|
||||
const subscriptions = context.subscriptions;
|
||||
this.extensionContext = context;
|
||||
subscriptions.push(commands.registerCommand('npm.runScript', this.runScript, this));
|
||||
@ -142,6 +144,8 @@ export class NpmScriptsTreeDataProvider implements TreeDataProvider<TreeItem> {
|
||||
}
|
||||
|
||||
private async runScript(script: NpmScript) {
|
||||
// Call getPackageManager to trigger the multiple lock files warning.
|
||||
await getPackageManager(this.context, script.getFolder().uri);
|
||||
tasks.executeTask(script.task);
|
||||
}
|
||||
|
||||
@ -190,7 +194,7 @@ export class NpmScriptsTreeDataProvider implements TreeDataProvider<TreeItem> {
|
||||
if (!uri) {
|
||||
return;
|
||||
}
|
||||
let task = await createTask(this.extensionContext, 'install', 'install', selection.folder.workspaceFolder, uri, undefined, []);
|
||||
let task = await createTask(this.extensionContext, 'install', ['install'], selection.folder.workspaceFolder, uri, true, undefined, []);
|
||||
tasks.executeTask(task);
|
||||
}
|
||||
|
||||
@ -239,7 +243,8 @@ export class NpmScriptsTreeDataProvider implements TreeDataProvider<TreeItem> {
|
||||
if (!this.taskTree) {
|
||||
const taskItems = await this.taskProvider.tasksWithLocation;
|
||||
if (taskItems) {
|
||||
this.taskTree = this.buildTaskTree(taskItems);
|
||||
const taskTree = this.buildTaskTree(taskItems);
|
||||
this.taskTree = this.sortTaskTree(taskTree);
|
||||
if (this.taskTree.length === 0) {
|
||||
let message = localize('noScripts', 'No scripts found.');
|
||||
if (!isAutoDetectionEnabled()) {
|
||||
@ -274,7 +279,27 @@ export class NpmScriptsTreeDataProvider implements TreeDataProvider<TreeItem> {
|
||||
return fullName === task.name;
|
||||
}
|
||||
|
||||
private buildTaskTree(tasks: TaskWithLocation[]): Folder[] | PackageJSON[] | NoScripts[] {
|
||||
private getTaskTreeItemLabel(taskTreeLabel: string | TreeItemLabel | undefined): string {
|
||||
if (taskTreeLabel === undefined) {
|
||||
return '';
|
||||
}
|
||||
|
||||
if (typeof taskTreeLabel === 'string') {
|
||||
return taskTreeLabel;
|
||||
}
|
||||
|
||||
return taskTreeLabel.label;
|
||||
}
|
||||
|
||||
private sortTaskTree(taskTree: TaskTree) {
|
||||
return taskTree.sort((first: TreeItem, second: TreeItem) => {
|
||||
const firstLabel = this.getTaskTreeItemLabel(first.label);
|
||||
const secondLabel = this.getTaskTreeItemLabel(second.label);
|
||||
return firstLabel.localeCompare(secondLabel);
|
||||
});
|
||||
}
|
||||
|
||||
private buildTaskTree(tasks: TaskWithLocation[]): TaskTree {
|
||||
let folders: Map<String, Folder> = new Map();
|
||||
let packages: Map<String, PackageJSON> = new Map();
|
||||
|
||||
|
Reference in New Issue
Block a user