/
githubmirror
/
angular-cli
Обзор
Документация
Войти
/
githubmirror
/
angular-cli
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
packages/angular/cli/src/command-builder/utilities/normalize-options-middleware.ts
39 строк
2 KB
Alan Agius
build: update dependency yargs to v18
28 май 2025, 23:43
28 май 2025, 23:43
9bb7447
Код
Авторство
О чём код?
/** * @license * Copyright Google LLC All Rights Reserved. * * Use of this source code is governed by an MIT-style license that can be * found in the LICENSE file at https://angular.dev/license */ import type { Arguments, Argv } from 'yargs'; /** * A Yargs middleware that normalizes non Array options when the argument has been provided multiple times. * * By default, when an option is non array and it is provided multiple times in the command line, yargs * will not override it's value but instead it will be changed to an array unless `duplicate-arguments-array` is disabled. * But this option also have an effect on real array options which isn't desired. * * See: https://github.com/yargs/yargs-parser/pull/163#issuecomment-516566614 */ export function createNormalizeOptionsMiddleware(localeYargs: Argv): (args: Arguments) => void { return (args: Arguments) => { // `getOptions` is not included in the types even though it's public API. // https://github.com/yargs/yargs/issues/2098 // eslint-disable-next-line @typescript-eslint/no-explicit-any const { array } = (localeYargs as any).getOptions(); const arrayOptions = new Set(array); for (const [key, value] of Object.entries(args)) { if (key !== '_' && Array.isArray(value) && !arrayOptions.has(key)) { const newValue = value.pop(); // eslint-disable-next-line no-console console.warn( `Option '${key}' has been specified multiple times. The value '${newValue}' will be used.`, ); args[key] = newValue; } } }; }