/
githubmirror
/
ripgrep
Обзор
Документация
Войти
/
githubmirror
/
ripgrep
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
ci/test-complete
88 строк
3 KB
dana
test-complete: misc. improvements
08 июл 2026, 15:55
08 июл 2026, 15:55
2394f72
Код
Авторство
О чём код?
#!/usr/bin/env zsh emulate zsh -o extended_glob -o no_unset -o warn_create_global ## # Compares options in `rg --help` output to options in zsh completion function get_comp_args() { # Technically there are many options that the completion system sets that # our function may rely on, but we'll trust that we've got it mostly right setopt local_options unset # Our completion function recognises a special variable which tells it to # dump the _arguments specs and then just return. But do this in a sub-shell # anyway to avoid any weirdness ( _RG_COMPLETE_LIST_ARGS=1 source $1 ) } main() { local diff local rg=${ZSH_ARGZERO:a:h}/../${TARGET_DIR:-target}/release/rg local _rg=${ZSH_ARGZERO:a:h}/../crates/core/flags/complete/rg.zsh local -a help_args comp_args [[ -e $rg ]] || rg=${rg/%\/release\/rg/\/debug\/rg} rg=${rg:a} _rg=${_rg:a} [[ -e $rg ]] || { print -ru2 - "${ZSH_ARGZERO:t}: rg not found: $rg" return 1 } [[ -e $_rg ]] || { print -ru2 - "${ZSH_ARGZERO:t}: _rg not found: $_rg" return 1 } print -rl - 'Comparing options:' "-$rg" "+$_rg" # 'Parse' options out of the `--help` output. To prevent false positives we # only look at lines where the first non-white-space character is `-`, or # where a long option starting with certain letters (see `_rg`) is found. # Occasionally we may have to handle some manually, however help_args=( ${(f)"$( $rg --help | $rg -i -- '^\s+--?[a-z0-9.]|--[a-z]' | $rg -ior '$1' -- $'[\t /\"\'`.,](-[a-z0-9.]|--[a-z0-9-]+)(,|\\b)' | $rg -vw -- --print0 # False positives )"} ) help_args=( ${(ou)help_args} ) # 'Parse' options out of the completion function comp_args=( ${(f)"$( get_comp_args $_rg )"} ) comp_args=( ${comp_args#\!} ) # Strip hidden indicator comp_args=( ${comp_args#\(*\)} ) # Strip excluded options comp_args=( ${comp_args#\*} ) # Strip repetition indicator comp_args=( ${comp_args%%-[:[]*} ) # Strip everything after -optname- comp_args=( ${comp_args%%[:+=[]*} ) # Strip everything after other optspecs comp_args=( ${comp_args##[^-]*} ) # Remove non-options comp_args=( ${(ou)comp_args} ) (( $#help_args )) || { print -ru2 - "${ZSH_ARGZERO:t}: Failed to get help_args" return 1 } (( $#comp_args )) || { print -ru2 - "${ZSH_ARGZERO:t}: Failed to get comp_args" return 1 } diff=$( diff -U2 \ -L 'rg --help' \ -L '_rg' \ =( print -rl - $help_args ) =( print -rl - $comp_args ) ) (( $#diff )) && { print -ru2 - "${ZSH_ARGZERO:t}: zsh completion options differ from --help options:" print -rlu2 - $diff return 1 } print -r - OK return 0 } main "$@"