diff options
| author | Danilo M. <danix@danix.xyz> | 2026-06-05 10:21:27 +0200 |
|---|---|---|
| committer | Danilo M. <danix@danix.xyz> | 2026-06-05 10:21:27 +0200 |
| commit | 8284ac7c6948ffcb43a43eab7ef1ec50cbb6e820 (patch) | |
| tree | 5c4da1c0500700e5eaec7a2a10878aef4444f207 | |
| parent | 9f1ad23a187a493ffa812064e6641061553e6386 (diff) | |
| download | mkhintfile-8284ac7c6948ffcb43a43eab7ef1ec50cbb6e820.tar.gz mkhintfile-8284ac7c6948ffcb43a43eab7ef1ec50cbb6e820.zip | |
feat(completion): suggest current VERSION when completing -v
When -f <package> is already on the command line, -v [TAB]
reads VERSION from the existing hint file and offers it as
the only completion candidate. No hint file = no suggestion.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
| -rw-r--r-- | README.md | 2 | ||||
| -rw-r--r-- | mkhint.bash-completion | 16 |
2 files changed, 16 insertions, 2 deletions
@@ -142,4 +142,4 @@ mkhint -h - Hint files are backed up to `.bak` before any modification. - If DOWNLOAD or DOWNLOAD_x86_64 is `UNSUPPORTED` or `UNTESTED`, that URL is skipped and its MD5SUM is left unchanged. - `--no-dl` / `-N` does **not** skip downloads — it downloads and recalculates checksums as normal, then appends `NODOWNLOAD=yes` to the hint file. -- Bash completion for `-f`/`--hintfile`, `-n`/`--new`, and `-d`/`--delete` autocompletes package names from their respective directories. Short flags (`-v`, `-f`, `-n`, `-l`, `-c`, `-d`, `-N`, `-h`) are also completed. +- Bash completion for `-f`/`--hintfile`, `-n`/`--new`, and `-d`/`--delete` autocompletes package names from their respective directories. When `-f <package>` is already on the command line, `-v [TAB]` suggests the current `VERSION` from that package's hint file. If the hint file is absent, no version is suggested. Short flags (`-v`, `-f`, `-n`, `-l`, `-c`, `-d`, `-N`, `-h`) are also completed. diff --git a/mkhint.bash-completion b/mkhint.bash-completion index 29e2523..dee57e7 100644 --- a/mkhint.bash-completion +++ b/mkhint.bash-completion @@ -26,7 +26,21 @@ _mkhintfile_completions() { COMPREPLY=($(compgen -W "${words[*]}" -- "$cur")) ;; --version|-v) - # no completion, raw text + local pkg="" i + for (( i=1; i<${#COMP_WORDS[@]}-1; i++ )); do + if [[ "${COMP_WORDS[i]}" == "--hintfile" || "${COMP_WORDS[i]}" == "-f" ]]; then + pkg="${COMP_WORDS[i+1]}" + break + fi + done + if [[ -n "$pkg" ]]; then + local hint_file="$hint_dir/${pkg}.hint" + if [[ -f "$hint_file" ]]; then + local ver + ver=$(grep -m1 '^VERSION=' "$hint_file" | cut -d= -f2 | tr -d '"') + [[ -n "$ver" ]] && COMPREPLY=($(compgen -W "$ver" -- "$cur")) + fi + fi ;; *) COMPREPLY=($(compgen -W "$all_flags" -- "$cur")) |
