mirror of
https://github.com/microsoft/vscode.git
synced 2026-05-08 09:08:48 +01:00
bug fixing
This commit is contained in:
@@ -10,7 +10,7 @@ import {
|
|||||||
TextDocument, ThemeIcon, TreeDataProvider, TreeItem, TreeItemCollapsibleState, Uri,
|
TextDocument, ThemeIcon, TreeDataProvider, TreeItem, TreeItemCollapsibleState, Uri,
|
||||||
WorkspaceFolder, commands, debug, window, workspace
|
WorkspaceFolder, commands, debug, window, workspace
|
||||||
} from 'vscode';
|
} from 'vscode';
|
||||||
import { NpmTaskDefinition, getPackageJsonUriFromTask, getScripts, isWorkspaceFolder, getPackageManager } from './tasks';
|
import { NpmTaskDefinition, getPackageJsonUriFromTask, getScripts, isWorkspaceFolder, getPackageManager, getTaskName } from './tasks';
|
||||||
|
|
||||||
class Folder extends TreeItem {
|
class Folder extends TreeItem {
|
||||||
packages: PackageJSON[] = [];
|
packages: PackageJSON[] = [];
|
||||||
@@ -94,7 +94,6 @@ export class NpmScriptsTreeDataProvider implements TreeDataProvider<TreeItem> {
|
|||||||
private _onDidChangeTreeData: EventEmitter<TreeItem | null> = new EventEmitter<TreeItem | null>();
|
private _onDidChangeTreeData: EventEmitter<TreeItem | null> = new EventEmitter<TreeItem | null>();
|
||||||
readonly onDidChangeTreeData: Event<TreeItem | null> = this._onDidChangeTreeData.event;
|
readonly onDidChangeTreeData: Event<TreeItem | null> = this._onDidChangeTreeData.event;
|
||||||
|
|
||||||
|
|
||||||
constructor(context: ExtensionContext, taskProvider: TaskProvider, localize: any) {
|
constructor(context: ExtensionContext, taskProvider: TaskProvider, localize: any) {
|
||||||
const subscriptions = context.subscriptions;
|
const subscriptions = context.subscriptions;
|
||||||
this.taskProvider = taskProvider;
|
this.taskProvider = taskProvider;
|
||||||
@@ -106,9 +105,12 @@ export class NpmScriptsTreeDataProvider implements TreeDataProvider<TreeItem> {
|
|||||||
subscriptions.push(commands.registerCommand('npm.refresh', this.refresh, this));
|
subscriptions.push(commands.registerCommand('npm.refresh', this.refresh, this));
|
||||||
}
|
}
|
||||||
|
|
||||||
private async scriptIsValid(scripts: any, task: Task): Promise<boolean> {
|
private scriptIsValid(scripts: any, task: Task): boolean {
|
||||||
if (scripts[task.name]) {
|
for (const script in scripts) {
|
||||||
return true;
|
let label = getTaskName(script, task.definition.path);
|
||||||
|
if (task.name === label) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -118,7 +120,7 @@ export class NpmScriptsTreeDataProvider implements TreeDataProvider<TreeItem> {
|
|||||||
let uri = getPackageJsonUriFromTask(task);
|
let uri = getPackageJsonUriFromTask(task);
|
||||||
let scripts = await getScripts(uri!, this.localize);
|
let scripts = await getScripts(uri!, this.localize);
|
||||||
|
|
||||||
if (!await this.scriptIsValid(scripts, task)) {
|
if (!this.scriptIsValid(scripts, task)) {
|
||||||
this.scriptNotValid(task);
|
this.scriptNotValid(task);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -139,7 +141,7 @@ export class NpmScriptsTreeDataProvider implements TreeDataProvider<TreeItem> {
|
|||||||
let uri = getPackageJsonUriFromTask(task);
|
let uri = getPackageJsonUriFromTask(task);
|
||||||
let scripts = await getScripts(uri!, this.localize);
|
let scripts = await getScripts(uri!, this.localize);
|
||||||
|
|
||||||
if (!await this.scriptIsValid(scripts, task)) {
|
if (!this.scriptIsValid(scripts, task)) {
|
||||||
this.scriptNotValid(task);
|
this.scriptNotValid(task);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -249,12 +251,13 @@ export class NpmScriptsTreeDataProvider implements TreeDataProvider<TreeItem> {
|
|||||||
folders.set(each.scope.name, folder);
|
folders.set(each.scope.name, folder);
|
||||||
}
|
}
|
||||||
let definition: NpmTaskDefinition = <NpmTaskDefinition>each.definition;
|
let definition: NpmTaskDefinition = <NpmTaskDefinition>each.definition;
|
||||||
let path = definition.path ? definition.path : '';
|
let relativePath = definition.path ? definition.path : '';
|
||||||
packageJson = packages.get(path);
|
let fullPath = path.join(each.scope.name, relativePath);
|
||||||
|
packageJson = packages.get(fullPath);
|
||||||
if (!packageJson) {
|
if (!packageJson) {
|
||||||
packageJson = new PackageJSON(folder, path);
|
packageJson = new PackageJSON(folder, relativePath);
|
||||||
folder.addPackage(packageJson);
|
folder.addPackage(packageJson);
|
||||||
packages.set(path, packageJson);
|
packages.set(fullPath, packageJson);
|
||||||
}
|
}
|
||||||
let script = new NpmScript(this.extensionContext, packageJson, each);
|
let script = new NpmScript(this.extensionContext, packageJson, each);
|
||||||
packageJson.addScript(script);
|
packageJson.addScript(script);
|
||||||
|
|||||||
@@ -129,14 +129,14 @@ async function provideNpmScriptsForFolder(localize: any, packageJsonUri: Uri): P
|
|||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
function createTask(script: string, cmd: string, folder: WorkspaceFolder, packageJsonUri: Uri, matcher?: any): Task {
|
export function getTaskName(script: string, relativePath: string | undefined) {
|
||||||
|
if (relativePath && relativePath.length) {
|
||||||
function getTaskName(script: string, file: string) {
|
return `${script} - ${relativePath.substring(0, relativePath.length - 1)}`;
|
||||||
if (file.length) {
|
|
||||||
return `${script} - ${file.substring(0, file.length - 1)}`;
|
|
||||||
}
|
|
||||||
return script;
|
|
||||||
}
|
}
|
||||||
|
return script;
|
||||||
|
}
|
||||||
|
|
||||||
|
function createTask(script: string, cmd: string, folder: WorkspaceFolder, packageJsonUri: Uri, matcher?: any): Task {
|
||||||
|
|
||||||
function getCommandLine(folder: WorkspaceFolder, cmd: string): string {
|
function getCommandLine(folder: WorkspaceFolder, cmd: string): string {
|
||||||
let packageManager = getPackageManager(folder);
|
let packageManager = getPackageManager(folder);
|
||||||
@@ -177,7 +177,7 @@ export function getPackageJsonUriFromTask(task: Task): Uri | null {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function exists(file: string): Promise<boolean> {
|
async function exists(file: string): Promise<boolean> {
|
||||||
return new Promise<boolean>((resolve, _reject) => {
|
return new Promise<boolean>((resolve, _reject) => {
|
||||||
fs.exists(file, (value) => {
|
fs.exists(file, (value) => {
|
||||||
resolve(value);
|
resolve(value);
|
||||||
@@ -185,7 +185,7 @@ export async function exists(file: string): Promise<boolean> {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
export async function readFile(file: string): Promise<string> {
|
async function readFile(file: string): Promise<string> {
|
||||||
return new Promise<string>((resolve, reject) => {
|
return new Promise<string>((resolve, reject) => {
|
||||||
fs.readFile(file, (err, data) => {
|
fs.readFile(file, (err, data) => {
|
||||||
if (err) {
|
if (err) {
|
||||||
|
|||||||
Reference in New Issue
Block a user