From f0e808955e4f75f51889592a3c7ab00b2a5691ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ville=20Skytt=C3=A4?= Date: Wed, 12 Mar 2025 17:41:25 +0200 Subject: [PATCH] feat(*sum): handle more common checksum filenames checksums, checksums.txt, ${sumtype}sums, ${sumtype}sums.txt --- completions/sha256sum | 8 +++++--- test/fixtures/sha256sum/checksums | 1 + test/fixtures/sha256sum/checksums.txt | 1 + test/fixtures/sha256sum/sha256sums | 1 + test/fixtures/sha256sum/sha256sums.txt | 1 + test/t/test_sha256sum.py | 8 +++++++- 6 files changed, 16 insertions(+), 4 deletions(-) create mode 100644 test/fixtures/sha256sum/checksums create mode 100644 test/fixtures/sha256sum/checksums.txt create mode 100644 test/fixtures/sha256sum/sha256sums create mode 100644 test/fixtures/sha256sum/sha256sums.txt diff --git a/completions/sha256sum b/completions/sha256sum index adef1cd4a8c..ba2ad08472a 100644 --- a/completions/sha256sum +++ b/completions/sha256sum @@ -20,18 +20,20 @@ _comp_cmd_sha256sum() local sumtype=${1##*/} sumtype=${sumtype%sum} + local sumglob="@(*.$sumtype|@(check|${sumtype})sums?(.txt))" - local opt + local files opt for opt in "${words[@]}"; do if [[ $opt == -@(c|-check) ]]; then - _comp_compgen_filedir "$sumtype" + _comp_compgen -v files filedir && + _comp_compgen -- -X "!$sumglob" -W '"${files[@]}"' return fi done local files _comp_compgen -v files filedir && - _comp_compgen -- -X "*.$sumtype" -W '"${files[@]}"' + _comp_compgen -- -X "$sumglob" -W '"${files[@]}"' } && complete -F _comp_cmd_sha256sum b2sum md5sum sha{,1,224,256,384,512}sum diff --git a/test/fixtures/sha256sum/checksums b/test/fixtures/sha256sum/checksums new file mode 100644 index 00000000000..26d55dc42a5 --- /dev/null +++ b/test/fixtures/sha256sum/checksums @@ -0,0 +1 @@ +e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 foo diff --git a/test/fixtures/sha256sum/checksums.txt b/test/fixtures/sha256sum/checksums.txt new file mode 100644 index 00000000000..26d55dc42a5 --- /dev/null +++ b/test/fixtures/sha256sum/checksums.txt @@ -0,0 +1 @@ +e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 foo diff --git a/test/fixtures/sha256sum/sha256sums b/test/fixtures/sha256sum/sha256sums new file mode 100644 index 00000000000..26d55dc42a5 --- /dev/null +++ b/test/fixtures/sha256sum/sha256sums @@ -0,0 +1 @@ +e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 foo diff --git a/test/fixtures/sha256sum/sha256sums.txt b/test/fixtures/sha256sum/sha256sums.txt new file mode 100644 index 00000000000..26d55dc42a5 --- /dev/null +++ b/test/fixtures/sha256sum/sha256sums.txt @@ -0,0 +1 @@ +e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 foo diff --git a/test/t/test_sha256sum.py b/test/t/test_sha256sum.py index c8df94c461c..b919233787e 100644 --- a/test/t/test_sha256sum.py +++ b/test/t/test_sha256sum.py @@ -12,4 +12,10 @@ def test_summing(self, completion): @pytest.mark.complete("sha256sum -c ", cwd="sha256sum") def test_checking(self, completion): - assert completion == "foo.sha256" + assert completion == [ + "checksums", + "checksums.txt", + "foo.sha256", + "sha256sums", + "sha256sums.txt", + ]