ensure WSL compatibility

This commit is contained in:
Philipp Kunz 2018-12-13 16:50:32 +01:00
parent d5d347721a
commit 4701341c0c
3 changed files with 35 additions and 17 deletions

View File

@ -33,11 +33,26 @@ export class ShellEnv {
*/
private _setPath(commandStringArg): string {
let commandResult = commandStringArg;
let commandPath = process.env.PATH;
let commandPaths: string[] = [];
commandPaths = commandPaths.concat(process.env.PATH.split(':'));
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;
}
@ -60,12 +75,21 @@ export class ShellEnv {
createEnvExecString(commandArg): string {
let commandResult = '';
if (this.executor === 'bash') {
let sourceString = '';
switch (this.executor) {
case 'bash':
for (let sourceFilePath of this.sourceFileArray) {
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);
return commandResult;

View File

@ -13,13 +13,7 @@ export class ShellLog {
*/
logToConsole(dataArg: string | Buffer): void {
// make sure we have the data as string
const dataString: string = (() => {
if (Buffer.isBuffer(dataArg)) {
return dataArg.toString();
}
return dataArg;
})();
process.stdout.write(dataString);
process.stdout.write(dataArg);
}
/**