@@ -157,26 +157,28 @@ export class OperationExecutionManager {
157
157
if ( parallelism === 'max' ) {
158
158
this . _parallelism = numberOfCores ;
159
159
} else {
160
- const parsed : number = parseInt ( parallelism , 10 ) ;
160
+ const parallelismAsNumber : number = Number ( parallelism ) ;
161
161
162
- let parallelismInt : number = parsed > 0 ? parsed : 1 ;
162
+ const getParallelismValueHighThanZero = ( value : number ) => ( value > 0 ? value : 1 ) ;
163
163
164
164
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 ) {
166
168
throw new Error (
167
169
`Invalid percentage value of '${ parallelism } ', value cannot be less than '0%' or more than '100%'`
168
170
) ;
169
171
}
170
172
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 ) ;
177
177
}
178
178
179
- this . _parallelism = parallelismInt ;
179
+ throw new Error (
180
+ `Invalid parallelism value of '${ parallelism } ', expected a number, a percentage, or 'max'`
181
+ ) ;
180
182
}
181
183
} else {
182
184
// If an explicit parallelism number wasn't provided, then choose a sensible
0 commit comments