# Автодополнение bash для `pkica` `pkica.bash-completion` — правила автодополнения (TAB) в bash для утилиты `pkica` (командная строка управления инфраструктурой КриптоПро УЦ 2.0). ## Установка Требуется пакет `bash-completion`. Для всех пользователей: ```bash sudo install -m 644 pkica.bash-completion /usr/share/bash-completion/completions/pkica ``` Для текущего пользователя: ```bash mkdir -p ~/.local/share/bash-completion/completions cp pkica.bash-completion ~/.local/share/bash-completion/completions/pkica ``` Для текущей сессии: ```bash source pkica.bash-completion ``` После установки откройте новый терминал. Дополнение работает для `pkica` из `PATH` и для запуска по пути (`./pkica`, `/opt/.../pkica`). ## Что дополняется * команды и подкоманды всех уровней (`pkica ca signing-key change-usage`); * опции текущей команды: после `-` — короткие и длинные, без `-` — только длинные. Уже указанные опции (и их синонимы) повторно не предлагаются; * значения опций с фиксированным набором значений: | Опция | Значения | | --- | --- | | `--format` | `Json`, `Yaml` | | `-s`, `--storage-type` | `PostgreSql`, `SqlServer` | | `--sign-tool-class` | `KC1` … `KA1` | | `-k`, `--key-spec` | `Signature`, `KeyExchange` | | `--key-location`, `--store-location` | `CurrentUser`, `LocalMachine` | | `--store-name` | `My`, `Root`, `CertificateAuthority`, … | | `--serial-number-algorithm` | `CryptoPro`, `Msca` | | `-p`, `--provider-type` | `80`, `81` | | `-u`, `--usage` (signing-key) | `SignCertAndCrl`, `SignCrl`, `Retired` | | `-d`, `--default-template` | `SubCa`, `User`, `Tls`, `Ocsp`, `Tsp`, `Qual`, `QualOcsp`, `QualTsp` | | `-v`, `--value` (identification-kind) | `Personal`, `RemoteCert`, `RemotePassport`, `RemoteSystem` | | `-n`, `--name` (ra settings) | `NamePolicy`, `Templates`, `DefaultAuthority` | | `-v`, `--validity`, `-V`, `--key-validity` | `Years:`, `Months:`, `Weeks:`, `Days:`, `Hours:`, `Minutes:` | * пути к файлам: `-f`/`--file`, `-o`/`--out-file`, `--extensions-file`, `--tls-cert-file`, `--signing-cert-file`; каталоги: `-o`/`--output-folder` (`ca crl get`, `ca crl issue`); * поддерживается форма `--опция=значение`. Одна и та же короткая опция в разных командах может означать разное (например, `-f` в `ra operator add` — это `--first-name`, а не файл) — это учитывается. ## Ограничения * Утилита при дополнении не вызывается: дерево команд зашито в файл (запуск .NET-приложения занимает заметное время). * Имена экземпляров ЦС, шаблонов, папок, групп, операторов не дополняются — для этого нужен доступ к БД. ## Тесты Запуск в Linux или WSL из каталога `bash-completion`: ```bash bash tests/test_completion.sh # модульные тесты функции дополнения bash tests/test_interactive.sh # реальный TAB в bash через tmux (нужен tmux) bash tests/check_tree.sh [pkica] # сверка с выводом `pkica ... --help` ``` `check_tree.sh` рекурсивно обходит справку утилиты (без аргумента берётся `pkica` из `PATH`) и сообщает о расхождениях команд и опций с таблицами в `pkica.bash-completion`. Запускайте его после обновления `pkica`.