Конфиг и поиск репозиториев
Откуда CLI берёт список пакетов, и как добавлять в него репозитории без ручного редактирования JSON.
setup
Интерактивное меню для самого конфиг-файла. Показывает текущие списки roots и packages с пометками ✓ exists / ✗ not found (а для packages ещё и ! no package.json/.git here, если папка существует, но не является пакетом), и позволяет добавить директорию-root или директорию-package, отредактировать существующую запись или удалить её (с подтверждением).
polyrepo setupПуть не проверяется строго — добавление ещё не существующего пути просто печатает предупреждение, на случай если папка появится позже. Изменения записываются на диск только при выборе «Save and exit»; «Discard changes and exit» отбрасывает всё сделанное за сессию.
Пример вывода — текущее состояние, прямо перед самим меню:
Configure package sources
Editing: C:\work\NPM\polyrepo.config.json
roots (subfolders are scanned as packages)
1. C:\work\NPM ✓ exists
packages (the folder itself is the package)
(none)
? What do you want to do?Опции
--config <path>
Редактировать конфиг-файл, отличный от файла по умолчанию рядом с самим CLI.
Пример:
polyrepo setup --config "/path/to/polyrepo.config.json"clone
Сверяет список репозиториев GitHub-организации/пользователя с тем, что уже склонировано под одной root-директорией, и клонирует недостающее.
polyrepo clone --org <name> [options]gh repo list <org>— все репозитории под этой организацией/пользователем (архивные пропускаются по умолчанию).- Сравнивает имена с директориями, уже найденными под целевым root (
--root, либо первая записьrootsв конфиге, если не указано). - Показывает чекбокс недостающих (все отмечены по умолчанию), затем клонирует каждый выбранный
git cloneв целевой root, один за другим.
--org обязателен и не сохраняется в конфиге — roots/packages конфига описывают где локально лежат репозитории, а не с какого GitHub-аккаунта они пришли.
Пример вывода — два репозитория выбраны из чекбокса и клонируются по одному:
Clone missing repos from my-github-org
Target root: C:\work\NPM
? Pick repos to clone into C:\work\NPM:
vue-command-palette
vue-toast-kit
[1/2] vue-command-palette
$ git clone https://github.com/my-github-org/vue-command-palette.git C:\work\NPM\vue-command-palette
✓ Cloned into C:\work\NPM\vue-command-palette.
[2/2] vue-toast-kit
$ git clone https://github.com/my-github-org/vue-toast-kit.git C:\work\NPM\vue-toast-kit
✓ Cloned into C:\work\NPM\vue-toast-kit.Опции
--org <name>
GitHub-организация или пользователь, чей список репозиториев нужно получить. Обязательный параметр.
--root <path>
Root-директория для клонирования. По умолчанию — первая запись roots в конфиге.
--include-archived
Также предлагать архивные репозитории (по умолчанию пропускаются).
--packages <a,b,c>
Предложить только эти имена репозиториев, без интерактивного чекбокса.
--yes
Пропустить подтверждение «proceed?».
--dry-run
Напечатать, что было бы склонировано, без реального клонирования.
Пример:
polyrepo clone --org my-github-org --root "C:\work\NPM" --yes