Improve DevChat dependency check and error handling

- Add logger import to commandsBase.ts.
- Replace plain error handling with logger in checkDevChatDependency.
- Refactor getPipxEnvironmentPath and updateEnvironmentPath functions.
This commit is contained in:
bobo.yang 2023-06-12 08:39:02 +08:00
parent 857f73a4d9
commit 13f161506f

View File

@ -1,42 +1,48 @@
// src/contributes/commandsBase.ts
import { runCommand } from "../util/commonUtil";
import { logger } from "../util/logger";
export function checkDevChatDependency(): boolean {
try {
const binPath = getPipxEnvironmentPath();
try {
const binPath = getPipxEnvironmentPath();
if (binPath) {
updateEnvironmentPath(binPath);
if (binPath) {
updateEnvironmentPath(binPath);
// Check if DevChat is installed
runCommand('devchat --help');
return true;
} else {
return false;
}
} catch (error) {
// DevChat dependency check failed
return false;
}
// Check if DevChat is installed
runCommand('devchat --help');
return true;
} else {
logger.channel()?.error(`Failed to get pipx environment path, I will try to install pipx.`);
logger.channel()?.show();
return false;
}
} catch (error) {
// DevChat dependency check failed
// log out detail error message
logger.channel()?.error(`Failed to check DevChat dependency: ${error}`);
logger.channel()?.show();
return false;
}
}
export function getPipxEnvironmentPath(): string | null {
// Get pipx environment
const pipxEnvOutput = runCommand('python3 -m pipx environment').toString();
const binPathRegex = /PIPX_BIN_DIR=\s*(.*)/;
// Get pipx environment
const pipxEnvOutput = runCommand('python3 -m pipx environment').toString();
const binPathRegex = /PIPX_BIN_DIR=\s*(.*)/;
// Get BIN path from pipx environment
const match = pipxEnvOutput.match(binPathRegex);
if (match && match[1]) {
return match[1];
} else {
return null;
}
// Get BIN path from pipx environment
const match = pipxEnvOutput.match(binPathRegex);
if (match && match[1]) {
return match[1];
} else {
return null;
}
}
function updateEnvironmentPath(binPath: string): void {
// Add BIN path to PATH
process.env.PATH = `${binPath}:${process.env.PATH}`;
// Add BIN path to PATH
process.env.PATH = `${binPath}:${process.env.PATH}`;
}