2023-05-31 16:10:53 +08:00
|
|
|
// src/contributes/commandsBase.ts
|
2023-05-31 16:10:53 +08:00
|
|
|
|
2023-07-06 07:42:44 +08:00
|
|
|
import { UiUtilWrapper } from "../util/uiUtil";
|
2023-05-31 16:10:53 +08:00
|
|
|
import { runCommand } from "../util/commonUtil";
|
2023-06-12 08:39:02 +08:00
|
|
|
import { logger } from "../util/logger";
|
2023-05-31 16:10:53 +08:00
|
|
|
|
2023-07-06 07:42:44 +08:00
|
|
|
let devchatStatus = '';
|
|
|
|
|
2023-11-03 11:13:22 +08:00
|
|
|
|
|
|
|
|
|
|
|
function locateCommand(command): string | undefined {
|
|
|
|
try {
|
|
|
|
// split lines and choose first line
|
|
|
|
const binPaths = runCommand(`where ${command}`).toString().trim().split('\n');
|
|
|
|
return binPaths[0].trim();
|
|
|
|
} catch (error) {
|
|
|
|
try {
|
|
|
|
const binPaths = runCommand(`which ${command}`).toString().trim().split('\n');
|
|
|
|
return binPaths[0].trim();
|
|
|
|
} catch (error) {
|
|
|
|
return undefined;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
function getDefaultPythonCommand(): string | undefined {
|
|
|
|
try {
|
|
|
|
runCommand('python3 -V');
|
|
|
|
return locateCommand('python3');
|
|
|
|
} catch (error) {
|
|
|
|
try {
|
|
|
|
const version = runCommand('python -V');
|
|
|
|
if (version.includes('Python 3')) {
|
|
|
|
return locateCommand('python');
|
|
|
|
}
|
|
|
|
return undefined;
|
|
|
|
} catch (error) {
|
|
|
|
return undefined;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
export function getValidPythonCommand(): string | undefined {
|
|
|
|
try {
|
2023-11-23 13:02:02 +08:00
|
|
|
const pythonCommand = UiUtilWrapper.getConfiguration('DevChat', 'PythonForChat');
|
2023-11-03 11:13:22 +08:00
|
|
|
if (pythonCommand) {
|
|
|
|
return pythonCommand;
|
|
|
|
}
|
|
|
|
|
|
|
|
const defaultPythonCommand = getDefaultPythonCommand();
|
|
|
|
if (defaultPythonCommand) {
|
2023-11-23 13:02:02 +08:00
|
|
|
UiUtilWrapper.updateConfiguration('DevChat', 'PythonForChat', defaultPythonCommand);
|
2023-11-03 11:13:22 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
return defaultPythonCommand;
|
|
|
|
} catch (error) {
|
|
|
|
return undefined;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-05-31 16:10:53 +08:00
|
|
|
|