Код Junior Файлы и процессы обновлено

Разбор аргументов командной строки

Условие

Напиши parseArgs(argv) для CLI-утилиты (argv уже без node и имени скрипта). Верни { flags, positionals }:

  • --name=value → flags.name = 'value';
  • --name value → flags.name = 'value', если следующий аргумент не начинается с -; иначе flags.name = true;
  • --no-name → flags.name = false;
  • -abc → flags.a = flags.b = flags.c = true (короткие флаги без значений);
  • после -- всё идёт в positionals как есть;
  • остальное в positionals. Повторный флаг перезаписывает предыдущий.

Примеры

parseArgs(["--port=8080", "serve"]) // {"flags":{"port":"8080"},"positionals":["serve"]}
parseArgs(["--port", "8080", "--verbose"]) // {"flags":{"port":"8080","verbose":true},"positionals":[]}
parseArgs(["--dry-run", "--force"]) // {"flags":{"dry-run":true,"force":true},"positionals":[]}

Как подойти

Подсказки: 2
  1. Обходи индексом: --name value съедает следующий аргумент.
  2. Значение после = режь по первому =.

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.