#!/usr/bin/env bash # Сверка таблиц pkica.bash-completion с реальным выводом `pkica ... --help`. # Запуск (из WSL/Linux): bash tests/check_tree.sh [путь к pkica] # Без аргумента используется pkica из PATH. root=$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd) pkica=${1:-$(command -v pkica)} [[ -x $pkica ]] || { echo "pkica not found: укажите путь аргументом"; exit 1; } # shellcheck disable=SC1091 source "$root/pkica.bash-completion" || exit 1 fail=0 nodes=0 walk() { local path=$1 help cmds opts expected_cmds expected_opts sub help=$("$pkica" ${path#pkica} --help 2>&1) nodes=$((nodes + 1)) cmds=$(awk '/^Commands:/{f=1;next} f&&/^$/{f=0} f&&/^ [a-z]/{print $1}' <<<"$help" | tr '\n' ' ' | sed 's/ $//') opts=$(awk '/^Options:/{f=1;next} /^(Commands:)?$/{f=0} f&&/^ -/{s=$1; gsub(/-\?\|/,"",s); if($2 ~ /^&1 | grep -q "^Usage: $key " || { fail=$((fail + 1)) printf 'UNKNOWN node in completion: [%s]\n' "$key" } done echo "checked nodes: $nodes, mismatches: $fail" ((fail == 0))