Skip to content

Commit

Permalink
fix: use new command for discovering package manager
Browse files Browse the repository at this point in the history
Fixes #808
  • Loading branch information
connor4312 committed Oct 21, 2020
1 parent f5336ee commit 55ca9c6
Show file tree
Hide file tree
Showing 4 changed files with 39 additions and 33 deletions.
17 changes: 9 additions & 8 deletions src/ui/configuration/nodeDebugConfigurationProvider.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,12 @@
* Copyright (C) Microsoft Corporation. All rights reserved.
*--------------------------------------------------------*/

import * as nls from 'vscode-nls';
import * as vscode from 'vscode';
import * as path from 'path';
import { injectable } from 'inversify';
import * as path from 'path';
import * as vscode from 'vscode';
import * as nls from 'vscode-nls';
import { DebugType } from '../../common/contributionUtils';
import { createLaunchConfigFromContext } from './nodeDebugConfigurationResolver';
import { BaseConfigurationProvider } from './baseConfigurationProvider';
import { flatten } from '../../common/objUtils';
import {
AnyNodeConfiguration,
AnyResolvingConfiguration,
Expand All @@ -18,8 +17,9 @@ import {
ResolvingTerminalConfiguration,
} from '../../configuration';
import { findScripts } from '../debugNpmScript';
import { flatten } from '../../common/objUtils';
import { getRunScriptCommand } from '../getRunScriptCommand';
import { getPackageManager } from '../getRunScriptCommand';
import { BaseConfigurationProvider } from './baseConfigurationProvider';
import { createLaunchConfigFromContext } from './nodeDebugConfigurationResolver';

const localize = nls.loadMessageBundle();

Expand Down Expand Up @@ -97,12 +97,13 @@ export class NodeDynamicDebugConfigurationProvider extends BaseConfigurationProv
return [openTerminal];
}

const packageManager = await getPackageManager(folder);
return scripts
.map<DynamicConfig>(script => ({
type: DebugType.Terminal,
name: localize('node.launch.script', 'Run Script: {0}', script.name),
request: 'launch',
command: getRunScriptCommand(script.name, folder),
command: `${packageManager} run ${script.name}`,
cwd: script.directory,
}))
.concat(openTerminal);
Expand Down
14 changes: 7 additions & 7 deletions src/ui/debugNpmScript.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,12 @@
*--------------------------------------------------------*/

import * as fs from 'fs';
import * as vscode from 'vscode';
import * as path from 'path';
import * as vscode from 'vscode';
import * as nls from 'vscode-nls';
import { runCommand, Commands } from '../common/contributionUtils';
import { getRunScriptCommand } from './getRunScriptCommand';
import { Commands, runCommand } from '../common/contributionUtils';
import { readfile } from '../common/fsUtils';
import { getRunScriptCommand } from './getRunScriptCommand';

const localize = nls.loadMessageBundle();

Expand Down Expand Up @@ -40,18 +40,18 @@ export async function debugNpmScript(inFolder?: string) {
description: script.command,
}));

quickPick.onDidAccept(() => {
quickPick.onDidAccept(async () => {
const { script } = quickPick.selectedItems[0];
const workspaceFolder = vscode.workspace.getWorkspaceFolder(vscode.Uri.file(script.directory));
quickPick.dispose();

runCommand(
vscode.commands,
Commands.CreateDebuggerTerminal,
getRunScriptCommand(script.name, workspaceFolder),
await getRunScriptCommand(script.name, workspaceFolder),
workspaceFolder,
{ cwd: script.directory },
);

quickPick.dispose();
});

quickPick.show();
Expand Down
15 changes: 10 additions & 5 deletions src/ui/getRunScriptCommand.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,16 +2,21 @@
* Copyright (C) Microsoft Corporation. All rights reserved.
*--------------------------------------------------------*/

import { workspace, WorkspaceFolder } from 'vscode';
import { commands, WorkspaceFolder } from 'vscode';

/**
* Gets the package manager the user configured in the folder.
*/
const getPackageManager = (folder: WorkspaceFolder | undefined) =>
workspace.getConfiguration('npm', folder?.uri).get<string>('packageManager', 'npm');
export const getPackageManager = async (folder: WorkspaceFolder | undefined) => {
try {
return await commands.executeCommand('npm.packageManager', folder?.uri);
} catch {
return 'npm';
}
};

/**
* Gets a command to run a script
*/
export const getRunScriptCommand = (name: string, folder?: WorkspaceFolder) =>
`${getPackageManager(folder)} run ${name}`;
export const getRunScriptCommand = async (name: string, folder?: WorkspaceFolder) =>
`${await getPackageManager(folder)} run ${name}`;
26 changes: 13 additions & 13 deletions src/ui/npmScriptLens.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,24 +2,23 @@
* Copyright (C) Microsoft Corporation. All rights reserved.
*--------------------------------------------------------*/

import { JSONVisitor, visit } from 'jsonc-parser';
import * as path from 'path';
import {
TextDocument,
CodeLens,
CodeLensProvider,
Range,
workspace,
languages,
EventEmitter,
ExtensionContext,
ProviderResult,
languages,
Position,
EventEmitter,
Range,
TextDocument,
workspace,
} from 'vscode';
import * as path from 'path';
import { readConfig, Configuration, asCommand, Commands } from '../common/contributionUtils';
import { JSONVisitor, visit } from 'jsonc-parser';
import { IDisposable } from '../common/disposable';
import { getRunScriptCommand } from './getRunScriptCommand';
import * as nls from 'vscode-nls';
import { asCommand, Commands, Configuration, readConfig } from '../common/contributionUtils';
import { IDisposable } from '../common/disposable';
import { getPackageManager } from './getRunScriptCommand';

const localize = nls.loadMessageBundle();

Expand Down Expand Up @@ -53,7 +52,7 @@ export class NpmScriptLenProvider implements CodeLensProvider, IDisposable {
/**
* @inheritdoc
*/
public provideCodeLenses(document: TextDocument): ProviderResult<CodeLens[]> {
public async provideCodeLenses(document: TextDocument): Promise<CodeLens[]> {
if (this.lensLocation === 'never') {
return [];
}
Expand All @@ -80,14 +79,15 @@ export class NpmScriptLenProvider implements CodeLensProvider, IDisposable {

if (this.lensLocation === 'all') {
const workspaceFolder = workspace.getWorkspaceFolder(document.uri);
const packageManager = await getPackageManager(workspaceFolder);
return tokens.scripts.map(
({ name, position }) =>
new CodeLens(
new Range(position, position),
asCommand({
title,
command: Commands.CreateDebuggerTerminal,
arguments: [getRunScriptCommand(name, workspaceFolder), workspaceFolder, { cwd }],
arguments: [`${packageManager} run ${name}`, workspaceFolder, { cwd }],
}),
),
);
Expand Down

0 comments on commit 55ca9c6

Please sign in to comment.