From 6edca81f84713087f97ea4a33d2f9e539f36060f 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/dir/.gitignore | 0 test/fixtures/sha256sum/sha256sums | 1 + test/fixtures/sha256sum/sha256sums.txt | 1 + test/t/test_sha256sum.py | 11 +++++++++-- 7 files changed, 17 insertions(+), 6 deletions(-) create mode 100644 test/fixtures/sha256sum/checksums create mode 100644 test/fixtures/sha256sum/checksums.txt create mode 100644 test/fixtures/sha256sum/dir/.gitignore create mode 100644 test/fixtures/sha256sum/sha256sums create mode 100644 test/fixtures/sha256sum/sha256sums.txt diff --git a/completions/sha256sum b/completions/sha256sum index 3f4403e5674..40ffd62125a 100644 --- a/completions/sha256sum +++ b/completions/sha256sum @@ -20,18 +20,18 @@ _comp_cmd_sha256sum() local sumtype=${1##*/} sumtype=${sumtype%sum} + local sumglob="@(*.$sumtype|@(check|${sumtype})sums?(.txt))" + compopt -o filenames local opt for opt in "${words[@]}"; do if [[ $opt == -@(c|-check) ]]; then - _comp_compgen_filedir "$sumtype" + _comp_compgen -- -f -X "!$sumglob" -o plusdirs return fi done - local files - _comp_compgen -v files filedir && - _comp_compgen -- -X "*.$sumtype" -W '"${files[@]}"' + _comp_compgen -- -f -X "$sumglob" -o plusdirs } && complete -F _comp_cmd_sha256sum b2sum cksum 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/dir/.gitignore b/test/fixtures/sha256sum/dir/.gitignore new file mode 100644 index 00000000000..e69de29bb2d 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..d4847495238 100644 --- a/test/t/test_sha256sum.py +++ b/test/t/test_sha256sum.py @@ -8,8 +8,15 @@ def test_options(self, completion): @pytest.mark.complete("sha256sum ", cwd="sha256sum") def test_summing(self, completion): - assert completion == "foo" + assert completion == ["dir/", "foo"] @pytest.mark.complete("sha256sum -c ", cwd="sha256sum") def test_checking(self, completion): - assert completion == "foo.sha256" + assert completion == [ + "checksums", + "checksums.txt", + "dir/", + "foo.sha256", + "sha256sums", + "sha256sums.txt", + ]