8000 Use Number() for more strict parameter value parsing · psy-repos-typescript/rushstack@1c9f6e7 · GitHub
[go: up one dir, main page]

Skip to content

Commit 1c9f6e7

Browse files
wberniclanton
authored andcommitted
Use Number() for more strict parameter value parsing
1 parent 59ebb5f commit 1c9f6e7

File tree

1 file changed

+12
-10
lines changed

1 file changed

+12
-10
lines changed

apps/rush-lib/src/logic/operations/OperationExecutionManager.ts

Lines changed: 12 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -157,26 +157,28 @@ export class OperationExecutionManager {
157157
if (parallelism === 'max') {
158158
this._parallelism = numberOfCores;
159159
} else {
160-
const parsed: number = parseInt(parallelism, 10);
160+
const parallelismAsNumber: number = Number(parallelism);
161161

162-
let parallelismInt: number = parsed > 0 ? parsed : 1;
162+
const getParallelismValueHighThanZero = (value: number) => (value > 0 ? value : 1);
163163

164164
if (typeof parallelism === 'string' && parallelism.trim().endsWith('%')) {
165-
if (parsed <= 0 || parsed > 100) {
165+
const parsedPercentage = Number(parallelism.trim().replace(/\%$/, ''));
166+
167+
if (parsedPercentage <= 0 || parsedPercentage > 100) {
166168
throw new Error(
167169
`Invalid percentage value of '${parallelism}', value cannot be less than '0%' or more than '100%'`
168170
);
169171
}
170172

171-
const workers: number = Math.floor((parsed / 100) * numberOfCores);
172-
parallelismInt = Math.max(workers, 1);
173-
} else if (isNaN(parsed)) {
174-
throw new Error(
175-
`Invalid parallelism value of '${parallelism}', expected a number, a percentage, or 'max'`
176-
);
173+
const workers: number = Math.floor((parallelismAsNumber / 100) * numberOfCores);
174+
this._parallelism = getParallelismValueHighThanZero(workers);
175+
} else if (!isNaN(parallelismAsNumber)) {
176+
this._parallelism = getParallelismValueHighThanZero(parallelismAsNumber);
177177
}
178178

179-
this._parallelism = parallelismInt;
179+
throw new Error(
180+
`Invalid parallelism value of '${parallelism}', expected a number, a percentage, or 'max'`
181+
);
180182
}
181183
} else {
182184
// If an explicit parallelism number wasn't provided, then choose a sensible

0 commit comments

Comments
 (0)
0