ensure WSL compatibility
This commit is contained in:
parent
d5d347721a
commit
4701341c0c
@ -37,4 +37,4 @@
|
|||||||
"@types/which": "^1.3.1",
|
"@types/which": "^1.3.1",
|
||||||
"which": "^1.3.1"
|
"which": "^1.3.1"
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -33,11 +33,26 @@ export class ShellEnv {
|
|||||||
*/
|
*/
|
||||||
private _setPath(commandStringArg): string {
|
private _setPath(commandStringArg): string {
|
||||||
let commandResult = commandStringArg;
|
let commandResult = commandStringArg;
|
||||||
let commandPath = process.env.PATH;
|
let commandPaths: string[] = [];
|
||||||
|
commandPaths = commandPaths.concat(process.env.PATH.split(':'));
|
||||||
if (process.env.SMARTSHELL_PATH) {
|
if (process.env.SMARTSHELL_PATH) {
|
||||||
commandPath = `${commandPath}:${process.env.SMARTSHELL_PATH}`;
|
commandPaths = commandPaths.concat(process.env.SMARTSHELL_PATH.split(':'));
|
||||||
}
|
}
|
||||||
commandResult = `PATH=${commandPath} && ${commandStringArg}`;
|
|
||||||
|
// lets filter for unwanted paths
|
||||||
|
// Windows WSL
|
||||||
|
commandPaths = commandPaths.filter(commandPathArg => {
|
||||||
|
const filterResult =
|
||||||
|
!commandPathArg.startsWith('/mnt/c/') &&
|
||||||
|
!commandPathArg.startsWith('Files/1E') &&
|
||||||
|
!commandPathArg.includes(' ');
|
||||||
|
if (!filterResult) {
|
||||||
|
// console.log(`${commandPathArg} will be filtered!`);
|
||||||
|
}
|
||||||
|
return filterResult;
|
||||||
|
});
|
||||||
|
|
||||||
|
commandResult = `PATH=${commandPaths.join(':')} && ${commandStringArg}`;
|
||||||
return commandResult;
|
return commandResult;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -60,12 +75,21 @@ export class ShellEnv {
|
|||||||
|
|
||||||
createEnvExecString(commandArg): string {
|
createEnvExecString(commandArg): string {
|
||||||
let commandResult = '';
|
let commandResult = '';
|
||||||
if (this.executor === 'bash') {
|
let sourceString = '';
|
||||||
let sourceString = '';
|
|
||||||
for (let sourceFilePath of this.sourceFileArray) {
|
switch (this.executor) {
|
||||||
sourceString = sourceString + `source ${sourceFilePath} && `;
|
case 'bash':
|
||||||
}
|
for (let sourceFilePath of this.sourceFileArray) {
|
||||||
commandResult = `bash -c '${sourceString} ${commandArg}'`;
|
sourceString = sourceString + `source ${sourceFilePath} && `;
|
||||||
|
}
|
||||||
|
commandResult = `bash -c '${sourceString}${commandArg}'`;
|
||||||
|
break;
|
||||||
|
case 'sh':
|
||||||
|
for (let sourceFilePath of this.sourceFileArray) {
|
||||||
|
sourceString = sourceString + `source ${sourceFilePath} && `;
|
||||||
|
}
|
||||||
|
commandResult = `${sourceString}${commandArg}`;
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
commandResult = this._setPath(commandResult);
|
commandResult = this._setPath(commandResult);
|
||||||
return commandResult;
|
return commandResult;
|
||||||
|
@ -13,13 +13,7 @@ export class ShellLog {
|
|||||||
*/
|
*/
|
||||||
logToConsole(dataArg: string | Buffer): void {
|
logToConsole(dataArg: string | Buffer): void {
|
||||||
// make sure we have the data as string
|
// make sure we have the data as string
|
||||||
const dataString: string = (() => {
|
process.stdout.write(dataArg);
|
||||||
if (Buffer.isBuffer(dataArg)) {
|
|
||||||
return dataArg.toString();
|
|
||||||
}
|
|
||||||
return dataArg;
|
|
||||||
})();
|
|
||||||
process.stdout.write(dataString);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
Reference in New Issue
Block a user