refactor(dev-infra): use the `exec()` helper from `utils/shelljs` whenever possible (#37444)

There is an `exec()` helper provided by `utils/shelljs.ts`, which is a
wrapper around ShellJS' `exec()` with some default options (currently
`silent: true`). The intention is to avoid having to pass these options
to every invocation of the `exec()` function.

This commit updates all code inside `dev-infra/` to use this helper
whenever possible).

NOTE: For simplicity, the `utils/shelljs` helper does not support some
      of the less common call signatures of the original `exec()`
      helper, so in some cases we still need to use the original.

PR Close #37444
This commit is contained in:
George Kalpakas 2020-06-05 11:03:32 +03:00 committed by atscott
parent e31208beb1
commit d4c0962c7b
6 changed files with 12 additions and 18 deletions

View File

@ -5,9 +5,8 @@
* Use of this source code is governed by an MIT-style license that can be
* found in the LICENSE file at https://angular.io/license
*/
import {exec} from 'shelljs';
import {info} from '../utils/console';
import {exec} from '../utils/shelljs';
import {parseCommitMessage, validateCommitMessage, ValidateCommitMessageOptions} from './validate';
@ -26,7 +25,7 @@ export function validateCommitRange(range: string) {
const gitLogFormat = `%s%n%n%b${randomValueSeparator}`;
// Retrieve the commits in the provided range.
const result = exec(`git log --reverse --format=${gitLogFormat} ${range}`, {silent: true});
const result = exec(`git log --reverse --format=${gitLogFormat} ${range}`);
if (result.code) {
throw new Error(`Failed to get all commits in the range: \n ${result.stderr}`);
}

View File

@ -6,9 +6,7 @@
* found in the LICENSE file at https://angular.io/license
*/
import {exec as _exec} from 'shelljs';
import {info} from '../utils/console';
import {exec as _exec} from '../utils/shelljs';
/**
* Log the environment variables expected by bazel for stamping.
@ -32,7 +30,7 @@ export function buildEnvStamp() {
/** Run the exec command and return the stdout as a trimmed string. */
function exec(cmd: string) {
return _exec(cmd, {silent: true}).toString().trim();
return _exec(cmd).trim();
}
/** Whether the repo has local changes. */

View File

@ -8,9 +8,9 @@
import {existsSync} from 'fs';
import {dirname, join} from 'path';
import {exec} from 'shelljs';
import {error} from './console';
import {exec} from './shelljs';
import {isTsNodeAvailable} from './ts-node';
/**
@ -119,7 +119,7 @@ export function assertNoErrors(errors: string[]) {
/** Gets the path of the directory for the repository base. */
export function getRepoBaseDir() {
const baseRepoDir = exec(`git rev-parse --show-toplevel`, {silent: true});
const baseRepoDir = exec(`git rev-parse --show-toplevel`);
if (baseRepoDir.code) {
throw Error(
`Unable to find the path to the base directory of the repository.\n` +

View File

@ -6,7 +6,7 @@
* found in the LICENSE file at https://angular.io/license
*/
import {exec} from '../utils/shelljs';
import {exec} from './shelljs';
/** Whether the repo has any local changes. */

View File

@ -6,8 +6,8 @@
* found in the LICENSE file at https://angular.io/license
*/
import {exec} from 'shelljs';
import {getRepoBaseDir} from './config';
import {exec} from './shelljs';
/**
* A list of all files currently in the repo which have been modified since the provided sha.
@ -33,8 +33,5 @@ export function allFiles() {
function gitOutputAsArray(cmd: string) {
return exec(cmd, {cwd: getRepoBaseDir(), silent: true})
.split('\n')
.map(x => x.trim())
.filter(x => !!x);
return exec(cmd, {cwd: getRepoBaseDir()}).split('\n').map(x => x.trim()).filter(x => !!x);
}

View File

@ -6,9 +6,9 @@
* found in the LICENSE file at https://angular.io/license
*/
import {exec as _exec, ShellString} from 'shelljs';
import {exec as _exec, ExecOptions, ShellString} from 'shelljs';
/* Run an exec command as silent. */
export function exec(cmd: string): ShellString {
return _exec(cmd, {silent: true});
export function exec(cmd: string, opts?: ExecOptions&{async?: false}): ShellString {
return _exec(cmd, {silent: true, ...opts});
}