bug fixing

This commit is contained in:
Erich Gamma
2018-04-01 18:13:55 +02:00
parent 3d5f0b75af
commit 8f6206c7d0
2 changed files with 23 additions and 20 deletions
+14 -11
View File
@@ -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);
+9 -9
View File
@@ -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) {