Best JavaScript code snippet using root
shell.js
Source:shell.js
1"use strict";2Object.defineProperty(exports, "__esModule", { value: true });3exports.prependNodeModulesBinToPath = exports.Shell = void 0;4const cli_framework_output_1 = require("@ionic/cli-framework-output");5const utils_process_1 = require("@ionic/utils-process");6const utils_subprocess_1 = require("@ionic/utils-subprocess");7const utils_terminal_1 = require("@ionic/utils-terminal");8const chalk = require("chalk");9const Debug = require("debug");10const path = require("path");11const split2 = require("split2");12const combineStreams = require("stream-combiner2");13const guards_1 = require("../guards");14const color_1 = require("./color");15const errors_1 = require("./errors");16const debug = Debug('ionic:lib:shell');17class Shell {18 constructor(e, options) {19 this.e = e;20 this.alterPath = options && options.alterPath ? options.alterPath : (p) => p;21 }22 async run(command, args, { stream, killOnExit = true, showCommand = true, showError = true, fatalOnNotFound = true, fatalOnError = true, truncateErrorOutput, ...crossSpawnOptions }) {23 const proc = await this.createSubprocess(command, args, crossSpawnOptions);24 const fullCmd = proc.bashify();25 const truncatedCmd = fullCmd.length > 80 ? fullCmd.substring(0, 80) + '...' : fullCmd;26 if (showCommand && this.e.log.level >= cli_framework_output_1.LOGGER_LEVELS.INFO) {27 this.e.log.rawmsg(`> ${color_1.input(fullCmd)}`);28 }29 const ws = stream ? stream : this.e.log.createWriteStream(cli_framework_output_1.LOGGER_LEVELS.INFO, false);30 try {31 const promise = proc.run();32 if (promise.p.stdout) {33 const s = combineStreams(split2(), ws);34 // TODO: https://github.com/angular/angular-cli/issues/1092235 s.on('error', (err) => {36 debug('Error in subprocess stdout pipe: %o', err);37 });38 promise.p.stdout.pipe(s);39 }40 if (promise.p.stderr) {41 const s = combineStreams(split2(), ws);42 // TODO: https://github.com/angular/angular-cli/issues/1092243 s.on('error', (err) => {44 debug('Error in subprocess stderr pipe: %o', err);45 });46 promise.p.stderr.pipe(s);47 }48 if (killOnExit) {49 utils_process_1.onBeforeExit(async () => {50 if (promise.p.pid) {51 await utils_process_1.killProcessTree(promise.p.pid);52 }53 });54 }55 await promise;56 }57 catch (e) {58 if (e instanceof utils_subprocess_1.SubprocessError && e.code === utils_subprocess_1.ERROR_COMMAND_NOT_FOUND) {59 if (fatalOnNotFound) {60 throw new errors_1.FatalException(`Command not found: ${color_1.input(command)}`, 127);61 }62 else {63 throw e;64 }65 }66 if (!guards_1.isExitCodeException(e)) {67 throw e;68 }69 let err = e.message || '';70 if (truncateErrorOutput && err.length > truncateErrorOutput) {71 err = `${color_1.strong('(truncated)')} ... ` + err.substring(err.length - truncateErrorOutput);72 }73 const publicErrorMsg = (`An error occurred while running subprocess ${color_1.input(command)}.\n` +74 `${color_1.input(truncatedCmd)} exited with exit code ${e.exitCode}.\n\n` +75 `Re-running this command with the ${color_1.input('--verbose')} flag may provide more information.`);76 const privateErrorMsg = `Subprocess (${color_1.input(command)}) encountered an error (exit code ${e.exitCode}).`;77 if (fatalOnError) {78 if (showError) {79 throw new errors_1.FatalException(publicErrorMsg, e.exitCode);80 }81 else {82 throw new errors_1.FatalException(privateErrorMsg, e.exitCode);83 }84 }85 else {86 if (showError) {87 this.e.log.error(publicErrorMsg);88 }89 }90 throw e;91 }92 }93 async output(command, args, { fatalOnNotFound = true, fatalOnError = true, showError = true, showCommand = false, ...crossSpawnOptions }) {94 const proc = await this.createSubprocess(command, args, crossSpawnOptions);95 const fullCmd = proc.bashify();96 const truncatedCmd = fullCmd.length > 80 ? fullCmd.substring(0, 80) + '...' : fullCmd;97 if (showCommand && this.e.log.level >= cli_framework_output_1.LOGGER_LEVELS.INFO) {98 this.e.log.rawmsg(`> ${color_1.input(fullCmd)}`);99 }100 try {101 return await proc.output();102 }103 catch (e) {104 if (e instanceof utils_subprocess_1.SubprocessError && e.code === utils_subprocess_1.ERROR_COMMAND_NOT_FOUND) {105 if (fatalOnNotFound) {106 throw new errors_1.FatalException(`Command not found: ${color_1.input(command)}`, 127);107 }108 else {109 throw e;110 }111 }112 if (!guards_1.isExitCodeException(e)) {113 throw e;114 }115 const errorMsg = `An error occurred while running ${color_1.input(truncatedCmd)} (exit code ${e.exitCode})\n`;116 if (fatalOnError) {117 throw new errors_1.FatalException(errorMsg, e.exitCode);118 }119 else {120 if (showError) {121 this.e.log.error(errorMsg);122 }123 }124 return '';125 }126 }127 /**128 * When `child_process.spawn` isn't provided a full path to the command129 * binary, it behaves differently on Windows than other platforms. For130 * Windows, discover the full path to the binary, otherwise fallback to the131 * command provided.132 *133 * @see https://github.com/ionic-team/ionic-cli/issues/3563#issuecomment-425232005134 */135 async resolveCommandPath(command, options) {136 if (utils_terminal_1.TERMINAL_INFO.windows) {137 try {138 return await this.which(command, { PATH: options.env && options.env.PATH ? options.env.PATH : process.env.PATH });139 }140 catch (e) {141 // ignore142 }143 }144 return command;145 }146 async which(command, { PATH = process.env.PATH } = {}) {147 return utils_subprocess_1.which(command, { PATH: this.alterPath(PATH || '') });148 }149 async spawn(command, args, { showCommand = true, ...crossSpawnOptions }) {150 const proc = await this.createSubprocess(command, args, crossSpawnOptions);151 const p = proc.spawn();152 if (showCommand && this.e.log.level >= cli_framework_output_1.LOGGER_LEVELS.INFO) {153 this.e.log.rawmsg(`> ${color_1.input(proc.bashify())}`);154 }155 return p;156 }157 async cmdinfo(command, args = []) {158 const opts = {};159 const proc = await this.createSubprocess(command, args, opts);160 try {161 const out = await proc.output();162 return out.split('\n').join(' ').trim();163 }164 catch (e) {165 // no command info at this point166 }167 }168 async createSubprocess(command, args = [], options = {}) {169 this.prepareSpawnOptions(options);170 const cmdpath = await this.resolveCommandPath(command, options);171 const proc = new utils_subprocess_1.Subprocess(cmdpath, args, options);172 return proc;173 }174 prepareSpawnOptions(options) {175 var _a;176 // Create a `process.env`-type object from all key/values of `process.env`,177 // then `options.env`, then add several key/values. PATH is supplemented178 // with the `node_modules\.bin` folder in the project directory so that we179 // can run binaries inside a project.180 options.env = utils_process_1.createProcessEnv(process.env, (_a = options.env) !== null && _a !== void 0 ? _a : {}, {181 PATH: this.alterPath(process.env.PATH || ''),182 FORCE_COLOR: chalk.level > 0 ? '1' : '0',183 });184 }185}186exports.Shell = Shell;187function prependNodeModulesBinToPath(projectDir, p) {188 return path.resolve(projectDir, 'node_modules', '.bin') + path.delimiter + p;189}...
misc.js
Source:misc.js
...13 }14 return `${cli}${key}=${JSON.stringify(value)} `;15 }, '');16}17function prependNodeModulesBinToPATH(env) {18 const PATH = Object.keys(env).find(key => `${key.toUpperCase()}` === 'PATH');19 if (!PATH) {20 return;21 }22 const nodeBinariesPath = path.dirname(process.argv[1]) + path.delimiter;23 if (!env[PATH].startsWith(nodeBinariesPath)) {24 env[PATH] = nodeBinariesPath + env[PATH];25 }26 return env[PATH];27}28module.exports = {29 getPlatformSpecificString,30 printEnvironmentVariables,31 prependNodeModulesBinToPATH,...
Using AI Code Generation
1const { prependNodeModulesBinToPATH } = require('prepend-node-modules-bin-to-path');2prependNodeModulesBinToPATH();3const { prependNodeModulesBinToPATH } = require('prepend-node-modules-bin-to-path');4prependNodeModulesBinToPATH('child-package.json');5const { prependNodeModulesBinToPATH } = require('prepend-node-modules-bin-to-path');6prependNodeModulesBinToPATH('child-package.json', 'bin');7const { prependNodeModulesBinToPATH } = require('prepend-node-modules-bin-to-path');8prependNodeModulesBinToPATH('child-package.json', 'bin', 'node_modules');9prependNodeModulesBinToPATH([packageJsonPath], [binPath], [nodeModulesPath]);
Using AI Code Generation
1const { prependNodeModulesBinToPATH } = require('@fluentui/scripts');2prependNodeModulesBinToPATH();3const { prependNodeModulesBinToPATH } = require('@fluentui/scripts/package1');4prependNodeModulesBinToPATH();5const { getMonorepoPackageJson } = require('@fluentui/scripts');6const packageJson = getMonorepoPackageJson();7const { getMonorepoPackageJson } = require('@fluentui/scripts/package1');8const packageJson = getMonorepoPackageJson();9const { getMonorepoPackageInfo } = require('@fluentui/scripts');10const packageInfo = getMonorepoPackageInfo();11const { getMonorepoPackageInfo } = require('@fluentui/scripts/package1');12const packageInfo = getMonorepoPackageInfo();13const { getMonorepoPackageInfoFor } = require('@fluentui/scripts');14const packageInfo = getMonorepoPackageInfoFor('package1');15const { getMonorepoPackageInfoFor } = require('@fluentui/scripts/package1');16const packageInfo = getMonorepoPackageInfoFor('package1');17const { get
Using AI Code Generation
1const { prependNodeModulesBinToPATH } = require('prepend-node-modules-bin-to-path');2prependNodeModulesBinToPATH();3{4 "scripts": {5 }6}
Using AI Code Generation
1const path = require('path');2const rootPackage = require('@root/package');3rootPackage.prependNodeModulesBinToPATH();4const path = require('path');5const package = require('@root/package');6package.prependNodeModulesBinToPATH();7### `prependNodeModulesBinToPATH([options])`8Default: `process.cwd()`9MIT © [Lukas Oppermann](
Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!