Skip to content

Commit

Permalink
Allow use of ${workspaceFolder} in more commands
Browse files Browse the repository at this point in the history
  • Loading branch information
garymm committed May 3, 2024
1 parent 3eb7f3b commit f02467b
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 14 deletions.
23 changes: 12 additions & 11 deletions packages/ansible-language-server/src/utils/commandRunner.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
import { URI } from "vscode-uri";
import { Connection } from "vscode-languageserver";
import { withInterpreter, asyncExec } from "./misc";
import { getAnsibleCommandExecPath } from "./execPath";
import {
getAnsibleCommandExecPath,
replaceWorkspaceFolderInPath,
} from "./execPath";
import { WorkspaceFolderContext } from "../services/workspaceManager";
import { ExtensionSettings } from "../interfaces/extensionSettings";

Expand Down Expand Up @@ -33,20 +36,18 @@ export class CommandRunner {
let command: string | undefined;
let runEnv: NodeJS.ProcessEnv | undefined;
const isEEEnabled = this.settings.executionEnvironment.enabled;
let interpreterPathFromConfig = this.settings.python.interpreterPath;
if (interpreterPathFromConfig.includes("${workspaceFolder}")) {
const workspaceFolder = URI.parse(this.context.workspaceFolder.uri).path;
interpreterPathFromConfig = interpreterPathFromConfig.replace(
"${workspaceFolder}",
workspaceFolder,
);
}
const interpreterPathFromSettings = replaceWorkspaceFolderInPath(
this.settings.python.interpreterPath,
this.context,
);

const interpreterPath = isEEEnabled ? "python3" : interpreterPathFromConfig;
const interpreterPath = isEEEnabled
? "python3"
: interpreterPathFromSettings;
if (executable.startsWith("ansible")) {
executablePath = isEEEnabled
? executable
: getAnsibleCommandExecPath(executable, this.settings);
: getAnsibleCommandExecPath(executable, this.settings, this.context);
} else {
executablePath = executable;
}
Expand Down
22 changes: 19 additions & 3 deletions packages/ansible-language-server/src/utils/execPath.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
// utils function to resolve executable path
import { URI } from "vscode-uri";
import * as path from "path";
import { ExtensionSettings } from "../interfaces/extensionSettings";
import { WorkspaceFolderContext } from "../services/workspaceManager";

/**
* A method to return the path to the provided executable
Expand All @@ -11,8 +13,22 @@ import { ExtensionSettings } from "../interfaces/extensionSettings";
export function getAnsibleCommandExecPath(
name: string,
settings: ExtensionSettings,
context: WorkspaceFolderContext,
): string {
return name === "ansible-lint"
? settings.validation.lint.path
: path.join(path.dirname(settings.ansible.path), name);
let pathFromSettings =
name === "ansible-lint"
? settings.validation.lint.path
: path.join(path.dirname(settings.ansible.path), name);
return replaceWorkspaceFolderInPath(pathFromSettings, context);
}

export function replaceWorkspaceFolderInPath(
p: string,
context: WorkspaceFolderContext,
): string {
if (p.includes("${workspaceFolder}")) {
const workspaceFolder = URI.parse(context.workspaceFolder.uri).path;
p = p.replace("${workspaceFolder}", workspaceFolder);
}
return p;
}

0 comments on commit f02467b

Please sign in to comment.