Add bash completion for pkica
Static completion rules for all pkica commands, options and option values, plus unit, interactive (tmux) and --help reconciliation tests. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5.5
parent
81404a24cc
commit
11283c573a
@@ -0,0 +1,82 @@
|
||||
# Автодополнение 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`.
|
||||
Reference in New Issue
Block a user