From 8c80e4dce14eed4e3c06b16fc307c6c7d20b9af8 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Fri, 17 May 2024 16:57:17 +0200 Subject: Merging upstream version 1:2.14.0. Signed-off-by: Daniel Baumann --- .github/release-please-manifest.json | 2 +- .github/workflows/ci.yaml | 2 +- .github/workflows/update-docker-images.yml | 2 +- .pre-commit-config.yaml | 8 +- .shellcheckrc | 2 - CHANGELOG.md | 642 +++++++++++---------- bash_completion | 30 +- completions/.gitignore | 6 + completions/Makefile.am | 13 +- completions/_nox | 4 +- completions/add_members | 2 +- completions/apt-get | 4 +- completions/arch | 2 +- completions/change_pw | 2 +- completions/check_db | 2 +- completions/clone_member | 2 +- completions/config_list | 2 +- completions/cryptsetup | 2 +- completions/env | 56 ++ completions/find_member | 2 +- completions/fio | 2 +- completions/inject | 2 +- completions/ip | 105 +++- completions/iperf | 10 +- completions/list_admins | 2 +- completions/list_members | 2 +- completions/list_owners | 2 +- completions/mysql | 2 +- completions/newlist | 2 +- completions/perl | 2 +- completions/pkgutil | 3 + completions/pydoc | 2 +- completions/remove_members | 2 +- completions/rmlist | 2 +- completions/rpm | 2 +- completions/ssh | 8 +- completions/ssh-add | 17 +- completions/ssh-copy-id | 8 +- completions/ssh-keygen | 90 ++- completions/ssh-keyscan | 16 +- completions/sync_members | 2 +- completions/withlist | 2 +- configure.ac | 2 +- test/requirements-dev.txt | 2 +- test/t/conftest.py | 4 +- test/t/test_env.py | 37 ++ test/t/test_fio.py | 2 + test/t/test_ssh_keygen.py | 26 +- .../unit/test_unit_compgen_available_interfaces.py | 2 +- test/t/unit/test_unit_load.py | 3 + test/t/unit/test_unit_realcommand.py | 8 + version.txt | 2 +- 52 files changed, 741 insertions(+), 419 deletions(-) create mode 100644 completions/env diff --git a/.github/release-please-manifest.json b/.github/release-please-manifest.json index 6f6cd64..a3b85fa 100644 --- a/.github/release-please-manifest.json +++ b/.github/release-please-manifest.json @@ -1 +1 @@ -{".":"2.13.0"} +{".":"2.14.0"} diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 60f9adb..6a8edbd 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -4,7 +4,7 @@ on: pull_request: push: branches: - - master + - main jobs: pre-commit: diff --git a/.github/workflows/update-docker-images.yml b/.github/workflows/update-docker-images.yml index 5f6e269..0d0df35 100644 --- a/.github/workflows/update-docker-images.yml +++ b/.github/workflows/update-docker-images.yml @@ -18,7 +18,7 @@ on: jobs: update-test-image: runs-on: ubuntu-latest - if: github.repository_owner == 'scop' && github.ref == 'refs/heads/master' + if: github.repository_owner == 'scop' && github.ref == 'refs/heads/main' strategy: matrix: include: diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 52eea9b..7529e72 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -43,7 +43,7 @@ repos: pass_filenames: false - repo: https://github.com/astral-sh/ruff-pre-commit - rev: v0.3.5 + rev: v0.4.3 hooks: - id: ruff types: [text] @@ -83,7 +83,7 @@ repos: files: ^(helpers/perl|.+\.p[ml])$ - repo: https://github.com/jackdewinter/pymarkdown - rev: v0.9.18 + rev: v0.9.19 hooks: - id: pymarkdown entry: pymarkdown @@ -93,12 +93,12 @@ repos: exclude: ^CHANGELOG\.md$ - repo: https://github.com/pre-commit/pre-commit-hooks - rev: v4.5.0 + rev: v4.6.0 hooks: - id: check-case-conflict - repo: https://github.com/crate-ci/typos - rev: v1.20.3 + rev: v1.21.0 hooks: - id: typos exclude: ^(CHANGELOG\.md|test/(test-cmd-list\.txt|fixtures/.+))$ diff --git a/.shellcheckrc b/.shellcheckrc index 3a3d939..a638d96 100644 --- a/.shellcheckrc +++ b/.shellcheckrc @@ -4,9 +4,7 @@ enable=require-double-brackets disable=SC1090 # not really fixable usually (ever?) disable=SC2034 # for localizing variables set in called functions disable=SC2128 # intentional style choice -disable=SC2206 # suggested alternatives fail in posix mode or use temp files disable=SC2209 # interferes with our `set` (literal) vs empty booleans -disable=SC2207 # suggested alternatives fail in posix mode or use temp files # These disables are to be investigated and decided diff --git a/CHANGELOG.md b/CHANGELOG.md index 711ab85..cc905d4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,303 +1,46 @@ -## 2.11 (2020-07-25) +## [2.14.0](https://github.com/scop/bash-completion/compare/2.13.0...2.14.0) (2024-05-09) -* lilo: add -B and -E completions ([7dd16ad](https://www.github.com/scop/bash-completion/commit/7dd16adf6ae409ee76256ac8b73977e9a88e341e)) -* lilo: honor -C when completing labels ([5b12f1d](https://www.github.com/scop/bash-completion/commit/5b12f1d49bf036f99ccd97df2c3effee63fb04d8)) -* lilo: don't complete on commented out labels ([ad6a349](https://www.github.com/scop/bash-completion/commit/ad6a3496c3517534e5791334094cc23ec7f09437)) -* test/dnssec-keygen: allow more alternatives in algorithm completion ([0f80613](https://www.github.com/scop/bash-completion/commit/0f80613bd8a554c6aece24cf694a4ba9a11e57ba)) -* test/wol: don't fail MAC test if test system has /etc/ethers entries ([8130f87](https://www.github.com/scop/bash-completion/commit/8130f87b4e035e3b439ce2f06bdb6bb495288e15)) -* : complete commands when prefixed with a backslash ([1e029e8](https://www.github.com/scop/bash-completion/commit/1e029e81dc0a121f575d35c925cc878448feccc4)) -* ipcalc: new completion ([1307b7a](https://www.github.com/scop/bash-completion/commit/1307b7ae9f809aec4d1cda74a13878c1947eb095)) -* README.md: add introduction ([3e941a6](https://www.github.com/scop/bash-completion/commit/3e941a643097d080277af00924e34ef925c4c41f)) -* chromium-browser, firefox: complete on *.txt (#379) ([d705123](https://www.github.com/scop/bash-completion/commit/d7051234afee6cc164b59660dade18f34fb0d52f)) -* test/ipcalc: fix tests with busybox ipcalc ([ba3b2ea](https://www.github.com/scop/bash-completion/commit/ba3b2ea05632e07920c4670d0297af557ba717c5)) -* lilo: work around shellcheck false positive ([42dbeef](https://www.github.com/scop/bash-completion/commit/42dbeefb8a681e52f381218c2b69e586537ab6e4)) -* test: port remaining finger, sftp, ssh, and xhost cases to pytest+pexpect ([aab32df](https://www.github.com/scop/bash-completion/commit/aab32df7ec7a9bff6059560d58c0c7088a983bd4)) -* test: port some scp test cases to pytest+pexpect ([f4f365d](https://www.github.com/scop/bash-completion/commit/f4f365dd6c619b41f9947eb3e53a120fd5173cbe)) -* test: fix spurious hosts fixture failure without avahi-browse installed ([b2c12be](https://www.github.com/scop/bash-completion/commit/b2c12be995eb4cb9aea931abb5f8c90a9f96907c)) -* test: remove some no longer needed tcl/expect code ([f066c67](https://www.github.com/scop/bash-completion/commit/f066c676f2145acb4df84461ba75847af35d2e9f)) -* test: port some _known_hosts_real unit tests to pytest+pexpect ([30aefd3](https://www.github.com/scop/bash-completion/commit/30aefd3ee918d2a2c70d24eeb37e7c36004d3ea8)) -* test: host helper lint and usage fixes ([bd3d509](https://www.github.com/scop/bash-completion/commit/bd3d509f04fe6ca0ef9477293006fada716aebca)) -* cryptsetup: add luksChangeKey arg completion (#380) ([5bb526a](https://www.github.com/scop/bash-completion/commit/5bb526a0b6f1af02b32464879c71a1fd5a5e4104)) -* tsig-keygen: new completion ([399771d](https://www.github.com/scop/bash-completion/commit/399771d6f19d839069f0eb45001887a04231885e)) -* test/upgradepkg: port remaining test case to pytest+pexpect ([3a0e9c1](https://www.github.com/scop/bash-completion/commit/3a0e9c1e78d33571f272d327c7f4fbb8dca250d8)) -* test/tsig-keygen: require command for test_options ([9f0ae30](https://www.github.com/scop/bash-completion/commit/9f0ae306200cbf5cc6e62f72f77ea8a774ea41e3)) -* test/chown,sudo: parametrize special case test, improve xfail targeting ([2f34e86](https://www.github.com/scop/bash-completion/commit/2f34e86d988733515e21b3050d4f4ab603b9adc4)) -* test: remove some no longer needed old test suite code ([8b3007f](https://www.github.com/scop/bash-completion/commit/8b3007f7315e7313add3518599ce44c288c48aa6)) -* test/cd: convert remaining test case to pytest+pexpect ([c23c807](https://www.github.com/scop/bash-completion/commit/c23c8079fb1d78f03acb5c183b85264f6c9e06db)) -* test/cd: make dir_at_point produce better debuggable failures ([a6cfbcd](https://www.github.com/scop/bash-completion/commit/a6cfbcdc729a640b1b89af4cd4c8f3d713d51a47)) -* nmap: parse options from -h output ([e99577a](https://www.github.com/scop/bash-completion/commit/e99577a3e7f7c571a61074242ab21e0245bfe3dd)) -* nmap: handle options split on equals sign ([c51ccb7](https://www.github.com/scop/bash-completion/commit/c51ccb76d1f4fa08f1260e8d204d3622dce76f4e)) -* openssl: support getting digest list from more recent openssl versions ([fe90e2a](https://www.github.com/scop/bash-completion/commit/fe90e2aef9364d2361bdc9ae57f06690de52a596)) -* openssl: parse available options from $command -help ([9e03fc5](https://www.github.com/scop/bash-completion/commit/9e03fc5ca07ecc7cbb863b2affdd06f8bbf8b415)) -* openssl: complete -writerand with filenames ([548feef](https://www.github.com/scop/bash-completion/commit/548feef55be93a99c488e31051f524a0e4c5549b)) -* totem: reuse kaffeine completions (#372) ([e4d5eba](https://www.github.com/scop/bash-completion/commit/e4d5ebadf2a7ae61162defb7d6045fb8bff3f0da)) -* test/cd: remove unused import ([9a9f09f](https://www.github.com/scop/bash-completion/commit/9a9f09fd175b859b53c014137b8c91722ef158f1)) -* test/totem: add basic test case ([9c33f68](https://www.github.com/scop/bash-completion/commit/9c33f68a04e0ec6766cb224ab025efbd42ca54e7)) -* extra/make-changelog: run through black ([c85e5b1](https://www.github.com/scop/bash-completion/commit/c85e5b16aed3e49b2a3445e67b5143c305c37883)) -* : python type hint fixes and improvements ([d1dee07](https://www.github.com/scop/bash-completion/commit/d1dee0769275e68d39ef4c49983f4c7c89534b8f)) -* test: drop redundant black args from docker runs ([eedaa1c](https://www.github.com/scop/bash-completion/commit/eedaa1c56c09d00d39347d4b4b12c5a9d2920b1f)) -* pre-commit: add config with black, flake8, and mypy ([3b82089](https://www.github.com/scop/bash-completion/commit/3b8208985813bb424bc58a2d013eda08c50f7591)) -* test: install black for Python 3.6 too ([3f1d1ee](https://www.github.com/scop/bash-completion/commit/3f1d1ee9e41f1976181fb9f8b7a8039ee42f0219)) -* test: add flake8-bugbear ([1dddc81](https://www.github.com/scop/bash-completion/commit/1dddc81eb7363dfefde6f3b595efaa8d12e05691)) -* test: add isort to pre-commit, run it ([092d20a](https://www.github.com/scop/bash-completion/commit/092d20a8c592cc801cd7604e7a2f6907a787fbf2)) -* test: shellcheck tweaks ([e0c9c5e](https://www.github.com/scop/bash-completion/commit/e0c9c5e67ffb9d3f5c4076ffd667fb4a9b6dafbe)) -* test: run pre-commit in tools container ([0a5d616](https://www.github.com/scop/bash-completion/commit/0a5d61699c25dc13fc7eec0a18a9e1ff87411dbe)) -* jarsigner: complete on *.apk too (#386) ([64449ed](https://www.github.com/scop/bash-completion/commit/64449edf99377f66739c4ce51eeaec077687b52b)) -* python: support executables with minor version (#389) ([bd3eba8](https://www.github.com/scop/bash-completion/commit/bd3eba8182e9cc72d838ea655a8c2aa25a3272fc)) -* _known_hosts_real: check that ruptime is present before calling (#390) ([6217345](https://www.github.com/scop/bash-completion/commit/62173450aa686bed5431342410eb6edd21c33e6d)) -* ip: improve completion of route subcommands (#326) ([9982cc3](https://www.github.com/scop/bash-completion/commit/9982cc34d6ea684720f171dcdfa1a20a0b5a81e3)) -* test: fix CompletionResult.__eq__ UnboundLocalError ([0e1fe15](https://www.github.com/scop/bash-completion/commit/0e1fe15aa71cd4fafe571613f9a77b17b71fbcc6)) -* copyright: add 2020 ([0055238](https://www.github.com/scop/bash-completion/commit/00552386675b8589943dc50748ab00e272979796)) -* printenv: new completion ([014b3f2](https://www.github.com/scop/bash-completion/commit/014b3f2a0e13e87f25f31fd0ccacbf09ba3bcec2)) -* _xinetd_services: look up from $BASHCOMP_XINETDDIR, add some unit tests ([ea1cfa1](https://www.github.com/scop/bash-completion/commit/ea1cfa1da4cd793f66e298dadc9b5b5a916d5a63)) -* test: ignore flake8 messages that are in black's domain ([6dae998](https://www.github.com/scop/bash-completion/commit/6dae998a9e8870fff5f9511383c5becc8005e7b1)) -* test: move shellcheck to pre-commit ([e908d02](https://www.github.com/scop/bash-completion/commit/e908d02129cf641784fcd14f0e3105bf573aaed3)) -* test: move perltidy to pre-commit, run with --converge ([15aacc9](https://www.github.com/scop/bash-completion/commit/15aacc96cb1c767f162836b121d18d7ecc744a55)) -* test: require openssl command for option argument tests ([4c64a1b](https://www.github.com/scop/bash-completion/commit/4c64a1bd293b6fe1b5ed182ac8306ed2036b2603)) -* git: trigger docker rebuild on pre-commit config change ([ffc5adf](https://www.github.com/scop/bash-completion/commit/ffc5adfb8f1d312bfc77664dc3144289e978d0ae)) -* test: split dependencies requiring Python 3.6.1+ to requirements-dev.txt ([009bf22](https://www.github.com/scop/bash-completion/commit/009bf2228c68894629eb6fd17b3dc0f1f6d67615)) -* test: upgrade mypy to 0.770 ([383cbad](https://www.github.com/scop/bash-completion/commit/383cbad64934208df355cb5c1d6f29026b3f3ebe)) -* printenv: indentation fixes ([3ac9f0a](https://www.github.com/scop/bash-completion/commit/3ac9f0a24331d0768ce16bdce4977694f037ed1e)) -* test/printenv: require command for arg completion test ([afc9052](https://www.github.com/scop/bash-completion/commit/afc9052be4990f41675766935933e95a2f8f9a20)) -* test/ldd: xfail if --help is not implemented ([71b465a](https://www.github.com/scop/bash-completion/commit/71b465a89801e60fc9c5172004e0d92353999adc)) -* test/python: add testcase for submodule completion ([900824d](https://www.github.com/scop/bash-completion/commit/900824d9162b42399c17331cbbcfe6bce56665b4)) -* pre-commit: run most python checks on helpers/python too ([5ed40e0](https://www.github.com/scop/bash-completion/commit/5ed40e089f5e5f33a125dc145f6d678fef0584ca)) -* lintian: complete paths for Ubuntu's .ddeb and Debian's buildinfo files (#397) ([0988831](https://www.github.com/scop/bash-completion/commit/0988831a7a4fea73e5d61e64dd657d69779cf8e3)) -* ip: add support for netns (#391) ([a2ccfa6](https://www.github.com/scop/bash-completion/commit/a2ccfa6bb0438cdb88ef1e551448e839bf70f99f)) -* apt-get etc: use _apt_cache_packages from apt-cache ([d90fbe3](https://www.github.com/scop/bash-completion/commit/d90fbe3bfd7e53c365897fa584edc9d2d0a2e9bf)) -* : whitespace tweaks ([3c87811](https://www.github.com/scop/bash-completion/commit/3c87811d8917852a132771e5c92b1e76886e493e)) -* : argument interaction improvements ([ec6995c](https://www.github.com/scop/bash-completion/commit/ec6995cadc3ab24246e363b4cbc2452091cd4d28)) -* test/aptitude: add some test cases ([762ee12](https://www.github.com/scop/bash-completion/commit/762ee12d24db419f02fc026e063962dde82e7275)) -* aptitude: parse options list from --help, hardcode less ([27219f8](https://www.github.com/scop/bash-completion/commit/27219f8e76970e7780062d6746ab609792bb7e3d)) -* aptitude: add some option arg (non)completions ([826b333](https://www.github.com/scop/bash-completion/commit/826b3336cfa25696b0886908609c29f87a37f8e4)) -* crontab, wodim: silence shellcheck SC2191 and SC2192 ([e81f690](https://www.github.com/scop/bash-completion/commit/e81f6908ffbbe8477f636e5ca68ffda0748c12de)) -* bash_completion: address shellcheck SC2220 ([a167497](https://www.github.com/scop/bash-completion/commit/a167497e3ea2136b51e62cb04851cb3178f9c332)) -* : address shellcheck SC2221 and SC2222 ([365fa76](https://www.github.com/scop/bash-completion/commit/365fa76e2b587bd6c9c39154433b9ced38fe091d)) -* smartctl: hush shellcheck SC2054 false positives ([0ad46d6](https://www.github.com/scop/bash-completion/commit/0ad46d6042d6dec1b28f3212551d668a1febe8d4)) -* mplayer: address shellcheck SC1078 false positive ([a6e5e99](https://www.github.com/scop/bash-completion/commit/a6e5e9953ee275b67aae8a1f34e3fdc3fa340e38)) -* java, pkgadd, sysbench: address shellcheck SC2124 ([5757fd4](https://www.github.com/scop/bash-completion/commit/5757fd4a3693da792f61ff600a0072218b4162dd)) -* chronyc, wvdial: address shellcheck SC2178 ([cddf99a](https://www.github.com/scop/bash-completion/commit/cddf99a63b9bd4d561691299a3eb04aa56e60fa1)) -* pkgadd: indentation fix ([523387e](https://www.github.com/scop/bash-completion/commit/523387e2891cf17dbf79767d0ee521c6946af46c)) -* sysbench: add --test= deprecation TODO ([9caf5c9](https://www.github.com/scop/bash-completion/commit/9caf5c99b64803be50d15421460978bfe33a85be)) -* protoc: complete all --*_out without more specific handling with dirs ([a10adf2](https://www.github.com/scop/bash-completion/commit/a10adf25a75bab2d9cd1eb5805e73d12149cb287)) -* test: don't run shellcheck on completions/.gitignore ([3f0d77f](https://www.github.com/scop/bash-completion/commit/3f0d77f079901c080d10cc2331c6def42648278e)) -* _known_hosts_real, op: address shellcheck SC2184 ([7fdd0a5](https://www.github.com/scop/bash-completion/commit/7fdd0a5582a0830d02575e290133b26f089c24e2)) -* test/aptitude: require command where necessary ([72a59a6](https://www.github.com/scop/bash-completion/commit/72a59a6a604a3fba297484732bc3eac66a702969)) -* test/printenv: xfail if --help doesn't contain options (e.g. busybox) ([2eccac4](https://www.github.com/scop/bash-completion/commit/2eccac4327e835f4ea553fe0fadf2f6103c24055)) -* insmod, modinfo, modprobe: support xz compressed modules (#401) ([2c6a522](https://www.github.com/scop/bash-completion/commit/2c6a52236026a8e3307faca7b897ae368489391d)) -* test: upgrade shellcheck to 0.7.1 ([6af1710](https://www.github.com/scop/bash-completion/commit/6af1710fcbf8ec1108a394a7d611394590957911)) -* quote_readline: fix $ret leak ([3f340bf](https://www.github.com/scop/bash-completion/commit/3f340bf8d7f63f86987a3c947db272ccd296487e)) -* info, java: address shellcheck SC2153 ([460f1b1](https://www.github.com/scop/bash-completion/commit/460f1b105f7ea3e6b26016cf61d6449c6b504c12)) -* man, perl, route, tipc: address shellcheck SC2053 ([0fcfa65](https://www.github.com/scop/bash-completion/commit/0fcfa6592bf6d4085c1e37f6d0dd00510c805a1f)) -* tipc: comment grammar and spelling fixes ([22b015e](https://www.github.com/scop/bash-completion/commit/22b015ec167cfe9cb8da1fc399067dc2d0a55f71)) -* renice: address shellcheck SC2254 ([5f25641](https://www.github.com/scop/bash-completion/commit/5f2564100ed436d4eb2dc7a664a2706304e80b66)) -* test/run: address shellcheck SC2164 ([49ac2d9](https://www.github.com/scop/bash-completion/commit/49ac2d9ffcc8cc2c58984ae1e38f360478ea80ed)) -* _upvar, _upvars, _variables, rpm: address shellcheck SC1083 ([e043fac](https://www.github.com/scop/bash-completion/commit/e043fac649b50c7c0e5d0a8d49ce8bd93a139322)) -* mutt: address shellcheck SC2088 ([2404e97](https://www.github.com/scop/bash-completion/commit/2404e9755aaba02bd11471f9a6bd3f11ce3a4386)) -* ssh: add new -Q completions in OpenSSH 8.2p1 (#400) ([a5890aa](https://www.github.com/scop/bash-completion/commit/a5890aa5e29e0f1cd1500df4758d7883dd55f2f5)) -* cvs, modprobe, sh: address shellcheck SC2209 ([f894bc1](https://www.github.com/scop/bash-completion/commit/f894bc19b770d83b91612219016674aed6546604)) -* rpm, ssh, umount.linux: address shellcheck SC2120 ([d7381be](https://www.github.com/scop/bash-completion/commit/d7381be935d96244838b0a3a603639d95a0e6564)) -* _filedir_xspec: address shellcheck SC2140 ([198d3f7](https://www.github.com/scop/bash-completion/commit/198d3f71fc09f11519321b9561c31b1ef796e7dd)) -* scp: address shellcheck SC2089 and SC2090 ([c906aeb](https://www.github.com/scop/bash-completion/commit/c906aeb76cae276b04d8cbe25f80a986fec42018)) -* java, pkgadd, sysbench: address shellchec SC2124 ([34e5e6a](https://www.github.com/scop/bash-completion/commit/34e5e6a0ad9d29b4f91e93a6952050e88c5ad2a6)) -* test/lib/library.sh: address shellcheck SC2125 ([bef80ef](https://www.github.com/scop/bash-completion/commit/bef80ef624c3d7101b3661895958365f71b890a8)) -* : address shellcheck SC2046 ([1d3add4](https://www.github.com/scop/bash-completion/commit/1d3add44563e48be7a6ec6cbd4cc8bb9e27d44f0)) -* test: bump shellcheck severity to warning + some disables ([a6cd66c](https://www.github.com/scop/bash-completion/commit/a6cd66cc4b0dcf8f36e788b0ecdb637c72f0118e)) -* test: tolerate duplicates from compgen actions ([bbd6814](https://www.github.com/scop/bash-completion/commit/bbd68147a9eb829ddbae4ffed6523b69a076b6ed)) -* test/xfreerdp: skip xfreerdp kbd test if kbd-list returns empty ([9746a39](https://www.github.com/scop/bash-completion/commit/9746a39cbc2a1102c3bc9f7fff36ce36e8d05881)) -* test: make it possible to not care whether command did output or not ([1ef3ad4](https://www.github.com/scop/bash-completion/commit/1ef3ad487fb9f02b8cc641439b2049529fbdfb9e)) -* test: run skipif and xfail commands without caring if they output or not ([005ab9f](https://www.github.com/scop/bash-completion/commit/005ab9f0957f33f092d415f2ab2e1b3a3f501dfd)) -* pgrep, pkill: add --ns and --nslist arg completions ([e649ea1](https://www.github.com/scop/bash-completion/commit/e649ea16374bbacfdb84c3d9803211754f62bfc1)) -* pytest: complete test classes ([f4ac160](https://www.github.com/scop/bash-completion/commit/f4ac16016d005d91652226272e3d496ede8e5ca1)) -* pytest: add some option arg (non-)completions ([61e5d8d](https://www.github.com/scop/bash-completion/commit/61e5d8de7fcbc426c5a1e3f7f5dcda9510051eed)) -* test/cd: fix test_dir_at_point for setups that repeat "trailer" ([25b4f1d](https://www.github.com/scop/bash-completion/commit/25b4f1db77f2373f7a700998327e9d9d837da89a)) -* test: generalize complete at point test ([8314c75](https://www.github.com/scop/bash-completion/commit/8314c7576134d2a1ae948bc6f3e008e15d837886)) -* test/alias: port remaining test case to pytest+pexpect ([f81d313](https://www.github.com/scop/bash-completion/commit/f81d313138cb6ab0fd155089b3c7499d733c118b)) -* nmap: fix option parsing with BSD sed ([e712b2f](https://www.github.com/scop/bash-completion/commit/e712b2f932a4f000c75a417ab62f19532147ed52)) -* carton: fix command parsing with BSD sed ([1968b3a](https://www.github.com/scop/bash-completion/commit/1968b3ae59b20ea16fe0004ecff53831a1728467)) -* _filedir*: update link to bug-bash discussion on -X (#404) ([bfd65f3](https://www.github.com/scop/bash-completion/commit/bfd65f3be7af378d944a269e77cdf5d93aaac022)) -* openssl: update -starttls completions (#403) ([28df326](https://www.github.com/scop/bash-completion/commit/28df3269a994a33ccb8a7946a960ba26a97b6790)) -* : replace various conditional expressions with arithmetic evaluation ([2ad992a](https://www.github.com/scop/bash-completion/commit/2ad992a1bca79e0a9353afc32cbb59749f2f07c0)) -* bash_completion, invoke-rc.d, svcadm: trivial cleanups ([69a835a](https://www.github.com/scop/bash-completion/commit/69a835a335c8ecea7c8f0453097ab909838eef08)) -* : enable and address shellcheck SC2053 ([333d590](https://www.github.com/scop/bash-completion/commit/333d5908887e5133916b5987ce67ba65b6a5b343)) -* ssh-keygen: -s and -n completion improvements ([6666ebb](https://www.github.com/scop/bash-completion/commit/6666ebbb0d9934fd999937c10028f51295be5d28)) -* : array subscript cleanups ([13b5a4b](https://www.github.com/scop/bash-completion/commit/13b5a4bea8bae0d67d9286ef1d732c5dad1de685)) -* doc: recommend arithmetic evaluation ([5e5c83b](https://www.github.com/scop/bash-completion/commit/5e5c83b13808b2c29c0264284042998e4cc0816e)) -* test: remove shellcheck severity filter, add explicit disables instead ([fd19ea0](https://www.github.com/scop/bash-completion/commit/fd19ea00db362d9a33a6d4edd0d626b3da26a69c)) -* test: enable parallel pre-commit shellcheck ([48ab77e](https://www.github.com/scop/bash-completion/commit/48ab77e2ac5518ffbf8c6a2ce5b205da4b072c97)) -* __reassemble_comp_words_by_ref, java: address and work around shellcheck SC2102 ([dcf9f39](https://www.github.com/scop/bash-completion/commit/dcf9f3991d94804591fac1941587f04d3f19b4c0)) -* : more arithmetic evaluation cleanups, thanks to shellcheck SC2004 ([b147516](https://www.github.com/scop/bash-completion/commit/b147516b6081f451ace1e8172e6041029177536e)) -* bash_completion, java, tipc: for loop whitespace consistency tweaks ([3abbd23](https://www.github.com/scop/bash-completion/commit/3abbd23be045138a1d63ecdd27b5c0de9f5c1cd1)) -* pytest: address shellcheck SC2002 ([fe53ef2](https://www.github.com/scop/bash-completion/commit/fe53ef2ae8e3615c5a1186bfbc980f918b1d0c99)) -* wget: address shellcheck SC2116 ([091a7cd](https://www.github.com/scop/bash-completion/commit/091a7cde3deaeb7650e6972f5dda8c943cd1c120)) -* mutt: address shellchec SC2236 ([566c5f5](https://www.github.com/scop/bash-completion/commit/566c5f521d1d4cc3bdcba4b7555a4460d78aeebe)) -* scp: work around shellcheck SC1003 ([e1cbe8f](https://www.github.com/scop/bash-completion/commit/e1cbe8f6f0d097b51f9815dcf6729ac3abca526c)) -* ssh, xsltproc: address shellcheck SC2006 ([32421d1](https://www.github.com/scop/bash-completion/commit/32421d1d74a2915c227caa5c08457c0d7a9f18e6)) -* test: make at-point completion tests easier ([e9450b8](https://www.github.com/scop/bash-completion/commit/e9450b88c38921aa9dd297f56c99c055857c1952)) -* doc: add loop variable naming guideline ([a6a59e3](https://www.github.com/scop/bash-completion/commit/a6a59e32b8dd165f04409897641ba72d11d44e1d)) -* apt-cache: fix command mode handling ([c41b772](https://www.github.com/scop/bash-completion/commit/c41b772dcb4e31c8a6ee8d3052f3d2742d7a889d)) -* crontab: fix loop over already given args ([568c658](https://www.github.com/scop/bash-completion/commit/568c658c2c0ac6097f5332d4bfe23a9cf7b4de37)) -* : various loop iteration improvements ([911a432](https://www.github.com/scop/bash-completion/commit/911a4322cdc8eb393921b2a52efbab4e394e67e2)) -* : remove some unused variables, thanks to shellcheck SC2034 ([95f3bec](https://www.github.com/scop/bash-completion/commit/95f3bec3ba948fdb4f26673e008e4bfa990b96a0)) -* test: add perlcritic to pre-commit, run on all perl ([dd890cd](https://www.github.com/scop/bash-completion/commit/dd890cd30ddc617a10c7ff114bef13ff6485536b)) -* test: run pre-commit on host instead of docker ([b8c2a95](https://www.github.com/scop/bash-completion/commit/b8c2a95c5ed41088cd94d6ece044f37b941d8a2f)) -* make: add bmake alias ([6b42551](https://www.github.com/scop/bash-completion/commit/6b42551fa0166508b1ef6c28751ccdf5c7c49f32)) -* test/make: mark more cases as requiring command ([6354520](https://www.github.com/scop/bash-completion/commit/63545202952c970146eced87ae156f023f7306e4)) -* test: run lint tests on Travis in a quickish separate first stage ([e493f6a](https://www.github.com/scop/bash-completion/commit/e493f6a2f2ea596f373c9f31e91f44633f6f2d4a)) -* test: add script to maintain list of executables for full test coverage ([e0b9397](https://www.github.com/scop/bash-completion/commit/e0b93973acdc6f3938ecc1103971a8a0d18bf5ad)) -* extra: trigger docker builds only on test-cmd-list.txt changes ([85f3c73](https://www.github.com/scop/bash-completion/commit/85f3c737d97e5f420885d9b875de73d56035c78a)) -* find: fix -exec etc argument and its completion ([3e849c2](https://www.github.com/scop/bash-completion/commit/3e849c25ef9a2a2dc95c713085898a9547a70e18)) -* reportbug, scp, sftp, svn: use compgen -c instead of _command ([e73535f](https://www.github.com/scop/bash-completion/commit/e73535f72e0190c953211625dd71d73cfb2fa7e6)) -* _command: improve commentary ([2cf6b67](https://www.github.com/scop/bash-completion/commit/2cf6b670323ad0e914c5bed13122d2ee0cf07821)) -* ssh-keygen: option and arg completion updates for new versions ([edc4f9b](https://www.github.com/scop/bash-completion/commit/edc4f9b0390ae07c572a3186bdb9741a5be321de)) -* ssh-keygen: add -b arg completions according to specified -t ([69b477b](https://www.github.com/scop/bash-completion/commit/69b477bada9672fa5ec9079f42758a866e874180)) -* ssh-keygen: -O arg updates and improvements ([63e04ee](https://www.github.com/scop/bash-completion/commit/63e04ee86aeee5dc33a0e5d80c5e4e28692ac937)) -* README: clarify loading automatically on demand ([f5e831b](https://www.github.com/scop/bash-completion/commit/f5e831bb789094dc0293e61727b0319bb5714909)) -* pre-commit, *.md: add markdownlint, address findings ([43e958a](https://www.github.com/scop/bash-completion/commit/43e958a6db294367451190624a73e5f532fb6174)) -* : doc and comment link updates ([a234784](https://www.github.com/scop/bash-completion/commit/a234784b39e657be671f292c384395ed2fd64a75)) -* pre-commit: use local perlcritic hook ([a277345](https://www.github.com/scop/bash-completion/commit/a277345460a38206837e5e98380b30c39be89734)) -* editorconfig: apply yaml settings to .yaml too ([7af92f5](https://www.github.com/scop/bash-completion/commit/7af92f506c60c32eb95d4625e542e4e67d77eee9)) -* test: add note about unescaped assert_complete single return values ([663ac51](https://www.github.com/scop/bash-completion/commit/663ac5175fd46b790beff1ac5952551b0e211f90)) -* test: port most umount test cases to pytest+pexpect ([b621591](https://www.github.com/scop/bash-completion/commit/b6215914784096189db0ef4fd9d580a249a19675)) -* Source user completion only if it's a file (#409) ([78bf738](https://www.github.com/scop/bash-completion/commit/78bf738eb082f67080ec26b64444fd9116907743)) -* test: prefix fake test commands with underscore ([5351161](https://www.github.com/scop/bash-completion/commit/53511617f0ab972d0b6912990ebf0adc3eeffe9d)) -* nmap: simplify help scraping a bit, don't try to emit unnecessary newlines ([8db05b4](https://www.github.com/scop/bash-completion/commit/8db05b4d1c6de665a76c330b484279dc279dff27)) -* test: upgrade markdownlint to 0.23.0 ([5520dd4](https://www.github.com/scop/bash-completion/commit/5520dd4a20a7e849d24cf239a63a876e48dabc1b)) -* test: fix incorrect fixtures/shared/default xfails/expectations ([f0fe52c](https://www.github.com/scop/bash-completion/commit/f0fe52c923a5becc0556798ea892d2710aa9500c)) -* pre-commit etc: add shfmt ([08db11f](https://www.github.com/scop/bash-completion/commit/08db11f12a04516622948bb6c1ff8cc50001fb3a)) -* : run all shell code through shfmt -s ([dbe0ec8](https://www.github.com/scop/bash-completion/commit/dbe0ec8c1a8a36752d3b63b685add075f36ba113)) -* travis: use golang 1.14 for shfmt ([d34719a](https://www.github.com/scop/bash-completion/commit/d34719aa79f80578fe4be11ac859f348ae62ed02)) -* apt-get: complete build-dep with dirs ([e7ea033](https://www.github.com/scop/bash-completion/commit/e7ea033f1075a99898b4ef8c3a364bb7ba23ef62)) -* secret-tool: new completion ([e9a556f](https://www.github.com/scop/bash-completion/commit/e9a556f4a233250c6f05dfd0c5e9ae17a0ffd747)) -* test/umount: convert remaining test case to pytest+pexpect ([4514d3e](https://www.github.com/scop/bash-completion/commit/4514d3e7ef774c4bdfc4fe3f9acdf66def16c664)) -* test/scp: port remaining test case to pytest+pexpect ([12de472](https://www.github.com/scop/bash-completion/commit/12de47263b5a49ae8adab7fb1c85d3a2f42852e5)) -* test/secret-tool: add to test command list ([25c1c76](https://www.github.com/scop/bash-completion/commit/25c1c76030107cf918015856299f899bfa251e80)) -* test/slapt-get: convert remaining test case to pytest+pexpect ([033f548](https://www.github.com/scop/bash-completion/commit/033f5488bdec49f635b6e0ef13784698cdf8d190)) -* apt-cache: avoid nonzero exit code from _apt_cache_packages ([ea97386](https://www.github.com/scop/bash-completion/commit/ea973866fdbb4f8f72d4e87d090950795ef68a49)) -* _xfunc: simplify ([c0f6a6d](https://www.github.com/scop/bash-completion/commit/c0f6a6d09c88a23441a46c351eff25f23e64b528)) -* test/slapt-src: convert remaining test case to pytest+pexpect ([62b3dc6](https://www.github.com/scop/bash-completion/commit/62b3dc6dc2024eb2101bddcd468552d485c60a8c)) -* test: drop some no longer needed old test suite code ([2612750](https://www.github.com/scop/bash-completion/commit/2612750d2527865f432218770ccaa0e3dd398f71)) -* lftp: use "bookmark list" command to list bookmarks ([c198a94](https://www.github.com/scop/bash-completion/commit/c198a94029aa33cfbd4bd0586e1674859337c35c)) -* test: run pytest --verbose in docker ([ea0236e](https://www.github.com/scop/bash-completion/commit/ea0236e1e6b6ad2f0ffc402e4a1d4da6365014a3)) -* test/_get_comp_words_by_ref: convert remaining test cases to pytest+pexpect ([322420d](https://www.github.com/scop/bash-completion/commit/322420d50b894e786226987c40c6d559313058f9)) -* test/__expand_tilde_by_ref: port remaining test cases to pytest+pexpect ([d258b3c](https://www.github.com/scop/bash-completion/commit/d258b3ca8ab65fec4dfc6a14c4697212e09ad69c)) -* test/_filedir: port more test cases to pytest+pexpect ([54c732a](https://www.github.com/scop/bash-completion/commit/54c732a82066e1595d8dd153e992987ea87b54b6)) -* test: drop not needed sudo on Travis ([a9822bc](https://www.github.com/scop/bash-completion/commit/a9822bc79b997cfb985b1d8c91f9c3402adce232)) -* test: run all Travis jobs on dist: bionic ([9c0a307](https://www.github.com/scop/bash-completion/commit/9c0a30729ce5dd9954ad32dd226021b733b94abd)) -* test/_filedir: port remaining test cases to pytest+pexpect ([fb7fb46](https://www.github.com/scop/bash-completion/commit/fb7fb461362fd99cf21de40821793c8a38bf6c56)) -* test: drop some no longer needed old test suite code ([4543212](https://www.github.com/scop/bash-completion/commit/4543212a52e9d569017013e1365e9d969683fb49)) -* test/_expand: port remaining test cases to pytest+pexpect ([db481c6](https://www.github.com/scop/bash-completion/commit/db481c67fd8ea17036bd432c7e41dbe578a274e4)) -* test/_filedir: fix shutil.rmtree on Python < 3.6 ([febf177](https://www.github.com/scop/bash-completion/commit/febf177e84162199394f71704cbcf58ce1dbefd3)) -* test: replace some echos with printfs ([bcdf00c](https://www.github.com/scop/bash-completion/commit/bcdf00ce3cec4e6f43521d6d24d75e4574f59b66)) -* test/_get_cword: port remaining test case to pytest+pexpect ([80ac63e](https://www.github.com/scop/bash-completion/commit/80ac63efbb3b4677514b900ba936d7af2d2c8eb9)) -* test/_known_hosts_real: port more test cases to pytest+pexpect ([5c7bb2d](https://www.github.com/scop/bash-completion/commit/5c7bb2d72c03ad28f700e82b8ca1aeaa4528fedd)) -* test: remove more no longer needed old test suite code ([b1a4de9](https://www.github.com/scop/bash-completion/commit/b1a4de9aee916b622889c28a61812092c4d76b9b)) -* test/_known_hosts_real: port remaining test cases to pytest+pexpect ([21d4fba](https://www.github.com/scop/bash-completion/commit/21d4fba9d75860454bc0c869f63d66c6cd66bca6)) -* test: remove old test suite code no longer used \o/ ([5afc3b5](https://www.github.com/scop/bash-completion/commit/5afc3b558f7651a4a0854fdd9ac0a4580876fd33)) -* test: remove unused run-shellcheck, shellcheck is in pre-commit now ([76aa130](https://www.github.com/scop/bash-completion/commit/76aa130483d6da9761715b89ce750eebed3a95b0)) -* test: shfmt bashrc ([ead40fa](https://www.github.com/scop/bash-completion/commit/ead40fab3e8e09833b632a6c1c0b828b92ae4ecb)) -* test: sync shfmt and shellcheck configs ([c21e0e1](https://www.github.com/scop/bash-completion/commit/c21e0e11025fa2117417d5ddcbe65a7edd116fe3)) -* test: upgrade pre-commit to 2.4.0+, drop shfmt kludge ([8af206f](https://www.github.com/scop/bash-completion/commit/8af206f45ad801c47e9e79060a0fbad033cd1d89)) -* test: pre-commit config cleanups, ordering ([b4eadfd](https://www.github.com/scop/bash-completion/commit/b4eadfd4b401f15acaab714c363cb0a7ee7bcf8c)) -* test: upgrade flake8 to 3.8.1 ([1f27374](https://www.github.com/scop/bash-completion/commit/1f27374d45e7062e6a74a0046bba289eda02f75a)) -* test/irb: xfail options test if --help is not available ([f5ea515](https://www.github.com/scop/bash-completion/commit/f5ea515f07ec2cbbbc63262d1f053327a9d466ae)) -* : use $ifs for storing/restoring $IFS ([acc43ed](https://www.github.com/scop/bash-completion/commit/acc43edf81c7eaf8b3556453a7cfc4b0104975cd)) -* test: try harder to restore environment and cwd on failures ([f0bf00a](https://www.github.com/scop/bash-completion/commit/f0bf00a53677285600cdf8d82e754abb7f0e0644)) -* : use more arithmetic evaluation ([328ce5b](https://www.github.com/scop/bash-completion/commit/328ce5be5b4b8822b3b9421dab4460c56990df0b)) -* test: upgrade markdownlint-cli to 0.23.1 ([2255f2a](https://www.github.com/scop/bash-completion/commit/2255f2a8577cf7d48b5572d84a6900d9ffdef75e)) -* dpkg-deb: fix --show/-W completion ([2eee0b5](https://www.github.com/scop/bash-completion/commit/2eee0b5063ae3fd8d48594bc03d2f5a9e4678ce5)) -* test: add some dpkg-query test cases ([034bdee](https://www.github.com/scop/bash-completion/commit/034bdeec06f36c12d3cbf927ca293eee321817f0)) -* dpkg-deb: add --raw-extract and -X arg completions ([69198c0](https://www.github.com/scop/bash-completion/commit/69198c0c4ef9830de1ea25d0b5c713adef8b5987)) -* test: mark known non-ASCII issues with test suite as xfail ([106e825](https://www.github.com/scop/bash-completion/commit/106e825a7f3b07c6c4d59f0b9c4e66bfa48a870f)) -* test/mr: handle missing "clean" with skipif ([eb93dde](https://www.github.com/scop/bash-completion/commit/eb93dde7304ee62e20d54cba003639b46bd18119)) -* mr: avoid herestrings, simplify command parsing ([cf64492](https://www.github.com/scop/bash-completion/commit/cf6449226350987f8d0d3ff3d329ca31c19cbcac)) -* _bashcomp_try_faketty: new function to try running command with a fake tty ([3829fe9](https://www.github.com/scop/bash-completion/commit/3829fe95d6583cc9eebc1abae1e553dedacd8cd5)) -* postfix: try to arrange a fake tty so we can tickle the usage message out ([7aea619](https://www.github.com/scop/bash-completion/commit/7aea619b1b4563f6a5a55877aeeea009e71cfd87)) -* 7z: fix -o/-w attached arg completion ([54774d6](https://www.github.com/scop/bash-completion/commit/54774d610323daff29e4cd00d5bcce23b714513f)) -* __reassemble_comp_words_by_ref: avoid triggering nounset on indirect references ([0b0323c](https://www.github.com/scop/bash-completion/commit/0b0323c514276c0143568b9e03646b65ee57e788)) -* bash_completion: line wrapping tweaks, NFC ([1d1d308](https://www.github.com/scop/bash-completion/commit/1d1d308d1f15e3ab2794c14ed54206cc56b96655)) -* test/unit: include test_unit_known_hosts_real.py in dist ([fdc9fc9](https://www.github.com/scop/bash-completion/commit/fdc9fc9b231c084c6e8de32587ec6a746898ce39)) -* test/unit: sort files included in dist ([d8f309f](https://www.github.com/scop/bash-completion/commit/d8f309f9fa8cb57067c6ef559269ea1eb3f9d98a)) -* : avoid more errors in nounset mode ([3687d27](https://www.github.com/scop/bash-completion/commit/3687d27f1ac266fa784dacc4492f0c554ed3091c)) -* test/inputrc: comment and whitespace tweaks ([1293d7c](https://www.github.com/scop/bash-completion/commit/1293d7c7258ef93c131e0e0d546064593610e731)) -* : avoid more errors in nounset mode ([b807460](https://www.github.com/scop/bash-completion/commit/b807460140aa6dda09eb2af2ecf3afa1971c84c4)) -* : avoid more errors in nounset mode ([d0a0eb5](https://www.github.com/scop/bash-completion/commit/d0a0eb5979d2831174b50e541d97559ac30d7d73)) -* : avoid more errors in nounset mode ([505fb2c](https://www.github.com/scop/bash-completion/commit/505fb2c68e38c9071542ff30fbafdab7ddc6f363)) -* : mark nounset mode as supported, issues with it are bugs now ([e85a361](https://www.github.com/scop/bash-completion/commit/e85a361199f02f3818312ba149dc64bf2c920d7a)) -* test: skip various tests if we don't get a useful usage message ([6f12de6](https://www.github.com/scop/bash-completion/commit/6f12de60230b85fbdd004c69be23be1bc9798767)) -* test/runLint: warn about [ ] instead of [[ ]] use ([f6f49db](https://www.github.com/scop/bash-completion/commit/f6f49db9175eb1ee5521bcb59ac6747bebaf1f28)) -* modprobe, tshark, _included_ssh_config_files: use [[ ]] instead of [ ] ([50ad3f8](https://www.github.com/scop/bash-completion/commit/50ad3f8d91a2782b5d10dc177e98f2ec06171e20)) -* scp, sftp, ssh: fix completion on options bundled with -4/-6 ([b4490f2](https://www.github.com/scop/bash-completion/commit/b4490f238ed534ce9084614a3580656e4cf759f6)) -* _pids, _pgids, _pnames: improve shfmt formatting ([2bfb0a7](https://www.github.com/scop/bash-completion/commit/2bfb0a7e22ca94624e13df5876fe80acc7017f1b)) -* _filedir: avoid unbound variable error on Ubuntu 14 and 16 ([ac37d77](https://www.github.com/scop/bash-completion/commit/ac37d77db99425aaa9d71fe9215e98623378a4b1)) -* ip: add more completions for ip-rule ([426d07e](https://www.github.com/scop/bash-completion/commit/426d07e33ce5379ce4fc7726c140ca3b8c7c7575)) -* ip: style fixes similar to ip-netns ([75093c0](https://www.github.com/scop/bash-completion/commit/75093c018a5dee8db1d7a97f42b0cc2c0902ef3e)) -* ip: route shfmt, arithmetic evaluation ([a1fe69a](https://www.github.com/scop/bash-completion/commit/a1fe69adf7d476984a3498e8c1616d84e9b694f1)) -* ip: complete route add table arg ([e4ad602](https://www.github.com/scop/bash-completion/commit/e4ad602f483f3574fd8630bfcd82bd88ef6def28)) -* _init_completion: fix unassigned redirect completion in nounset mode ([2e52b40](https://www.github.com/scop/bash-completion/commit/2e52b40d5087c55798c7bf006654aafd98e5deab)) -* : drop support for bash 4.1 ([e2d47ae](https://www.github.com/scop/bash-completion/commit/e2d47aea537ed18892ba485b2acba470ad79301a)) -* test: enable shellcheck SC2035 ([77a3505](https://www.github.com/scop/bash-completion/commit/77a35054a335323014f8d63879c0017ff200f9c9)) -* qemu, sbopkg: avoid unintentional globbing on option arg completions ([7dc4f61](https://www.github.com/scop/bash-completion/commit/7dc4f61dc0ebdbf45d64195ab9a8cb97768e455a)) -* qemu: add -machine arg completion ([11cd174](https://www.github.com/scop/bash-completion/commit/11cd1746d94a98fe12bd989a168204e03583bf78)) -* : avoid more errors in nounset mode ([5103c5d](https://www.github.com/scop/bash-completion/commit/5103c5dc3e236e3fa4e0e5a9048ada6ea99a9c76)) -* _command_offset, route: cleanups ([9994be6](https://www.github.com/scop/bash-completion/commit/9994be6476247261cb8d3e1befcce4af72a136b0)) -* cfrun: fix $hostfile leak ([68b5719](https://www.github.com/scop/bash-completion/commit/68b5719bbc2db1e71f76d843b4b6df41e671952b)) -* : avoid more errors in nounset mode ([f4fa0b6](https://www.github.com/scop/bash-completion/commit/f4fa0b6d0ca079e350c8a98ddaeaa4d932fb21ef)) -* bash_completion: fix array set checks with empty elements in them ([efaa991](https://www.github.com/scop/bash-completion/commit/efaa991d385e28eeb21490b3a91fd903e4f90b30)) -* _known_hosts: avoid errors in nounset mode and no arguments ([36475fc](https://www.github.com/scop/bash-completion/commit/36475fc6762edca0d52a4817aba53f7c2431b9a7)) -* pytest: add test class method completion ([ba4c941](https://www.github.com/scop/bash-completion/commit/ba4c941faa1ff5eb63e7984a6a52a7b703e2887f)) -* README: document GNU make build requirement ([3423e14](https://www.github.com/scop/bash-completion/commit/3423e14fb0e891a7d2764233eccd3cbecc983e22)) -* java, make: avoid errors in nounset mode on Ubuntu 14 and 16 ([1a633f3](https://www.github.com/scop/bash-completion/commit/1a633f3a551154ac3c70bfdc5263d73d8b3d9f3f)) -* man, mutt: avoid errors in nounset mode on Ubuntu 14 and 16 ([e5fa022](https://www.github.com/scop/bash-completion/commit/e5fa0221578dce638a84107f0ee813be89bbe3bd)) -* pytest: fix test class method completion with BSD awk ([3374911](https://www.github.com/scop/bash-completion/commit/337491161b1278a30d3f0aaf4a7cd2508ea809f5)) -* gcc: avoid errors in nounset mode ([221a6aa](https://www.github.com/scop/bash-completion/commit/221a6aa9b18bb8afe11435ee2244589bbaac0ff4)) -* bash_completion: trivial cleanups ([817d832](https://www.github.com/scop/bash-completion/commit/817d832fb7ac49eceda6ed3c21428dcc4659fa48)) -* test/_known_hosts_real: tolerate duplicates ([0b2866a](https://www.github.com/scop/bash-completion/commit/0b2866a9fe32ee24df242e200896125c7ecf65ad)) -* test/_known_hosts_real: reset COMP_KNOWN_HOSTS_WITH_HOSTFILE between tests ([5e63557](https://www.github.com/scop/bash-completion/commit/5e63557aac12251538091dc40bf587842327ced5)) -* test/_known_hosts_real: don't modify class scoped base expected list ([133790c](https://www.github.com/scop/bash-completion/commit/133790c464c68fa728b2957a66ee1fa012181a88)) -* test: upgrade mypy to 0.780 ([2e7271b](https://www.github.com/scop/bash-completion/commit/2e7271b3aed635a7fead1b97517673092eba5923)) -* test: regex escape our magic mark for completeness ([588b05c](https://www.github.com/scop/bash-completion/commit/588b05c1bf74feadad61bd1d1b39e752e639c201)) -* test/lspci: skip -A arg test if lspci fails -A help, e.g. busybox lspci ([e2cb804](https://www.github.com/scop/bash-completion/commit/e2cb80403d32af436a93782de4f33aee8352dd2b)) -* .gitignore: clean up some no longer needed ignores ([df7b81e](https://www.github.com/scop/bash-completion/commit/df7b81ea93d799affa858f26749f6aba8f0c1a38)) -* test/dpkg-query: mark as xfail on non-Debian based systems ([d176aaf](https://www.github.com/scop/bash-completion/commit/d176aafc18cb15a90c6c1d89918884d03382b20d)) -* test: simplify completion parsing ([726e4c0](https://www.github.com/scop/bash-completion/commit/726e4c08a96b1f0be1c931179f1b3edb31913917)) -* test: partial hostname completion fixes ([ba39695](https://www.github.com/scop/bash-completion/commit/ba39695792410c88f9d8e2303288274e2959cef7)) -* test/slapt-src: single expected result handling fixes ([1b9c9bc](https://www.github.com/scop/bash-completion/commit/1b9c9bcc285c296aa2c6df3e75ad75537080947e)) -* test/xhost: multiple expected result handling fixes ([888f39a](https://www.github.com/scop/bash-completion/commit/888f39a84a1847333c9e8bc06806886cd95eb103)) -* test: upgrade flake8 to 3.8.3 ([4730f3f](https://www.github.com/scop/bash-completion/commit/4730f3fcb0c0cefafc29cad7b0aed81ecd1decca)) -* _known_hosts_real: fix # handling in ssh configs ([ebabed1](https://www.github.com/scop/bash-completion/commit/ebabed1a4ca28f6e56a02831fee0e33f15047119)) -* _known_hosts_real: fix completion of Host entries after a wildcard etc ([0c69125](https://www.github.com/scop/bash-completion/commit/0c69125d65faaa60b0829db58c88dc33366bb67c)) -* test: upgrade perltidy to 20200619 ([87b169d](https://www.github.com/scop/bash-completion/commit/87b169dcf3b95d071280d70b3fc2fb0d8306c9e1)) -* test: upgrade mypy to 0.781 ([d46e8a5](https://www.github.com/scop/bash-completion/commit/d46e8a58e7840c0a8a5e942eb987479c69a0272a)) -* CONTRIBUTING.md: add posix and nounset mode item ([25887a3](https://www.github.com/scop/bash-completion/commit/25887a38ba3b81e9a6791ade89f5fa1a7c7ea5d3)) -* test: upgrade mypy to 0.782 ([f7c14b5](https://www.github.com/scop/bash-completion/commit/f7c14b5579b7bde9b57ae9bb175be7cba916edd9)) -* test/_known_hosts_real: add explicit no globbing test case ([8200b9a](https://www.github.com/scop/bash-completion/commit/8200b9a9529316f1f467aea18aaed2cbf4776bf0)) -* test/shfmt: upgrade to 3.1.2, reformat with it ([de35c91](https://www.github.com/scop/bash-completion/commit/de35c91dd3fe6c6c1adaeeb7e1a96f6a8360b0eb)) -* _known_hosts_real: prevent unwanted pathname expansion on host entries ([29be9d2](https://www.github.com/scop/bash-completion/commit/29be9d2e6bea356f16f12bfa7ad647b3ed67839e)) -* _included_ssh_config_files: support globs ([8bd47d4](https://www.github.com/scop/bash-completion/commit/8bd47d4ee25642b5fcddefb825d5025721840673)) -* _longopt: exclude too many dashes, allow underscores, require ends with alnum ([e2bcbd5](https://www.github.com/scop/bash-completion/commit/e2bcbd5115868bcfc048da1ce1b6b10f76762bf1)) -* _known_hosts_real: avoid errors in nounset mode on Ubuntu 14 and 16 ([54fd092](https://www.github.com/scop/bash-completion/commit/54fd092139e05c8fa01b3256b6c717ef3cdb9fb6)) -* test: upgrade markdownlint-cli to 0.23.2 ([95992bf](https://www.github.com/scop/bash-completion/commit/95992bfeee3c0409991fe45e89c1d08cd2eb4401)) -* __get_cword_at_cursor_by_ref: fix regression on bash 4.2 ([2ed8d90](https://www.github.com/scop/bash-completion/commit/2ed8d90b51e3ca6a337a15086f47c7dc982891a4)) -* pytest: complete async test class methods ([5c4f7a4](https://www.github.com/scop/bash-completion/commit/5c4f7a42d9864dcf91de845ea8167aad9cd3bdfc)) -* test/inputrc: comment typo fix ([0d2367b](https://www.github.com/scop/bash-completion/commit/0d2367bd46b722a23e7b83e8bc828342ba857fa5)) -* test/inputrc: do not set print-completions-horizontally ([d050205](https://www.github.com/scop/bash-completion/commit/d05020538be21f4b41a2f129c8f4eab83c077f40)) -* unzip, zipinfo: complete *.aar (#428) ([8273ce3](https://www.github.com/scop/bash-completion/commit/8273ce3138708ad1db851b74eafba38d6683ca0a)) -* pre-commit: update shellcheck-py URL ([08451ec](https://www.github.com/scop/bash-completion/commit/08451ec8383bb309d945589cab7d8c74a347a8b7)) -* pre-commit: upgrade isort to 5.0.7 ([d128d70](https://www.github.com/scop/bash-completion/commit/d128d70b1baef5a93f376fd44f18c7824d4643f3)) -* _known_hosts_real: exclude Host negations ([812e2ac](https://www.github.com/scop/bash-completion/commit/812e2acec01689b7c20488e2e11d335efd25ce9a)) -* test/ant: gitignore all target cache files ([6703c90](https://www.github.com/scop/bash-completion/commit/6703c9035b7a1639a1eded9989ede80848539078)) -* pre-commit: add pyupgrade, run it ([54b1e6f](https://www.github.com/scop/bash-completion/commit/54b1e6f70decfb8b8a5b15a1d14279e52551edf2)) -* pre-commit: upgrade pyupgrade to 2.7.2 ([5ac90cc](https://www.github.com/scop/bash-completion/commit/5ac90cc4eb6330d0a1999e598e6873d7dc545b77)) -* pre-commit: upgrade isort to 5.1.4 ([c2f0056](https://www.github.com/scop/bash-completion/commit/c2f0056c8edc35fc53f40a9b4d53d48e40f6676f)) -* _xinetd_services: avoid nounset error on bash 4.2 ([0df93b0](https://www.github.com/scop/bash-completion/commit/0df93b02d355b2faaad0d25d20d45967b82edd63)) -* test/ant: avoid complete-ant-cmd.pl interference with ANT_ARGS ([2ad91ec](https://www.github.com/scop/bash-completion/commit/2ad91ec985dc1fbc57d27f7b9815c7d0797426e8)) -* test/tshark: fix multiple -O completion with no http2 support ([53f624f](https://www.github.com/scop/bash-completion/commit/53f624f8212497c116afd4a365768237ac4069bb)) -* test/xfreerdp: skip --help failure cases ([b41b97c](https://www.github.com/scop/bash-completion/commit/b41b97cd2c646e813317429edbb8285c09cfd0b7)) -* tshark: complete -r arg with all filenames (#422) ([436b0cb](https://www.github.com/scop/bash-completion/commit/436b0cbe9e0839a51edcc7948e4ca11f2444a238)) -* pytest: rewrite in bash, support toplevel funcs, avoid nondef ones and classes ([bf3f720](https://www.github.com/scop/bash-completion/commit/bf3f72046f62ea86f43b65389d6d706a28544adb)) -* pre-commit: anchor exclude patterns ([cc697a6](https://www.github.com/scop/bash-completion/commit/cc697a646c1bd1100890abd367bb8d0274a42275)) -* extra/make-changelog: check and output usage message ([cf90b29](https://www.github.com/scop/bash-completion/commit/cf90b297696cee57650f4fb6c29cebe872f773a7)) + +### Features + +* **bao:** add 3rd party fallback completion loader ([af7fbb9](https://github.com/scop/bash-completion/commit/af7fbb97b470abce4025144fe4676c38cf4514d4)) +* **cryptsetup:** complete --header with filenames ([4c9fc87](https://github.com/scop/bash-completion/commit/4c9fc87975bd2dc04a6851017d9a71116ec1e44f)) +* **dlv:** add 3rd party fallback completion loader ([eefe71d](https://github.com/scop/bash-completion/commit/eefe71d8681d0735abc541cd0b7d2c7f9c535212)) +* **env:** complete commands and variable assignments ([5c75fa3](https://github.com/scop/bash-completion/commit/5c75fa332b5f86863f14c2ef45cdc8732c9a2c35)) +* **env:** treat `-*` as the command name after `-` and `--` ([0cd2883](https://github.com/scop/bash-completion/commit/0cd2883ca17e65a86fe81c650cea869f9fc70839)) +* **env:** treat `-*` as the command name after assignments ([71b7fb2](https://github.com/scop/bash-completion/commit/71b7fb2bc6fd9eef901e959aaf089419cc6f74a4)) +* **gup:** add 3rd party fallback completion loader (>= 0.25.0) ([1641f1a](https://github.com/scop/bash-completion/commit/1641f1a3043e3a378b4dd08a0f07240dd1d56548)) +* **incus:** add 3rd party fallback completion loader ([7108d9c](https://github.com/scop/bash-completion/commit/7108d9ca84a2617ae36e88181d39aeeabe3225dd)) +* **ip:** Complete 'route get' options ([12fbdb1](https://github.com/scop/bash-completion/commit/12fbdb163b9ffabb5f673c910a98edc8eaa6ac65)) +* **ip:** Complete addr add/change/replace options ([8262664](https://github.com/scop/bash-completion/commit/82626648c75406509187d3775b25430da6347fea)) +* **ip:** Complete ip route list options ([43beafc](https://github.com/scop/bash-completion/commit/43beafcfde8f6c8630ad9197ffbae76bfae010a5)) +* **ip:** Complete link afstats command ([6721346](https://github.com/scop/bash-completion/commit/672134688efceb71dc58c1c00463f8c38a4b0477)) +* **ip:** Complete neigh add, del, change, replace ([ba80203](https://github.com/scop/bash-completion/commit/ba8020349c965e92e25ae66fc1f8eceda50bc450)) +* **ip:** Complete route save/showdump ([606f650](https://github.com/scop/bash-completion/commit/606f6509ddff9c30bb8b4971fb16a90fa39e4dfe)) +* **iperf:** --tos/-S argument completion ([d2f59bb](https://github.com/scop/bash-completion/commit/d2f59bb6fa55e2f4becd21bdd21ff75fe627ad38)) +* **ssh-copy-id:** (non-)complete args to `-t` and `-F` ([53fdce4](https://github.com/scop/bash-completion/commit/53fdce4bd972a71dba3e8e5be05eadb443ec93f3)) +* **ssh-keygen:** complete -r/-Y specific -O args ([d6977fc](https://github.com/scop/bash-completion/commit/d6977fcd43302c8b3820fe5f90ce56c31db6e5ad)) +* **ssh-keyscan:** complete -O argument ([39ea543](https://github.com/scop/bash-completion/commit/39ea5435abfc4b13445bb0eec086e246e3cadb38)) +* **tofu:** add 3rd party fallback completion loader ([4edd9a2](https://github.com/scop/bash-completion/commit/4edd9a2bde503d3897eb1906275d6509a3fafc97)) +* **zarf:** add 3rd party fallback completion loader ([032f0f0](https://github.com/scop/bash-completion/commit/032f0f0f35b53856c3be642bb3101a4d01c81aee)) + + +### Bug Fixes + +* **_comp_{compgen,xfunc}:** use `declare -F --` for arbitrary funcs ([8998491](https://github.com/scop/bash-completion/commit/899849127707f6d616d5312c0efab0092b8caea8)) +* **_comp_{load,realcommand}:** handle option-like command name ([883946d](https://github.com/scop/bash-completion/commit/883946d84d13d7947eb0c21a536bd947b3dbc31a)) +* **available_interfaces:** strip only trailing colon from entries ([a452aee](https://github.com/scop/bash-completion/commit/a452aee8fb58720ecfadbdaad95277ac9d9072ac)) +* **bash_completion,conftest:** use `complete -p --` for arbitrary cmds ([dafd338](https://github.com/scop/bash-completion/commit/dafd3382e019cf90156cc6abc4266a82ab4ebe5f)) +* **fio:** engines completion ([27a0ef8](https://github.com/scop/bash-completion/commit/27a0ef80a2dbd84d8a0d2f90945cc66577149726)) +* **ip:** Complete link change as well as set ([956bd5d](https://github.com/scop/bash-completion/commit/956bd5dfd26f40ba23d1708bb15174d18b142087)) +* **ip:** Don't stop at proxy and nomaster in neigh ([d58ea76](https://github.com/scop/bash-completion/commit/d58ea763364f234ed90e8152f36b99f02e82ec84)) +* **scp remote_files:** do not filter generated paths with "$cur" ([bc812df](https://github.com/scop/bash-completion/commit/bc812dff7246e5186c7ae752081605787942f8f9)) +* **scp remote_files:** localize variable `cur` ([34f7d0c](https://github.com/scop/bash-completion/commit/34f7d0c321977016e3191cb7e9ab7ebd1a4083a0)) +* **ssh-keygen:** handling of bundled short options ([18e436d](https://github.com/scop/bash-completion/commit/18e436d0a0a25809bc1c8e6457aaa78a1667fa51)) +* **ssh-keygen:** make work with custom IFS ([b71340b](https://github.com/scop/bash-completion/commit/b71340bb411fb5d8ddb0c96836e484ace7eeb8f3)) +* **ssh-keygen:** suggest -O arg completions depending on mode ([b49ab1d](https://github.com/scop/bash-completion/commit/b49ab1d9f5515d12920ddb1548790fa0bf78d0b1)) +* use -- to pass arbitrary cmdnames to `_comp_load` ([3c1d9bc](https://github.com/scop/bash-completion/commit/3c1d9bc3f5432dee7de0935e8a4b6bf66c2fad77)) +* use `pathcmd=$(type -P -- "$1")` for arbitrary cmds ([8795ca9](https://github.com/scop/bash-completion/commit/8795ca99f3eb147e26d49f06e535f0ce64b4d162)) ## [2.13.0](https://github.com/scop/bash-completion/compare/2.12.0...2.13.0) (2024-04-03) @@ -557,6 +300,307 @@ * **portinstall:** return earlier for -lLo and non-existent file ([395e463](https://github.com/scop/bash-completion/commit/395e463d7e22bfb8b8b9f8ce4884ff7a979b2e35)) * **vncviewer:** set nocasematch inside subshell ([5ed0020](https://github.com/scop/bash-completion/commit/5ed0020f4ec39c5ff9994882cae9f04eb45e4ed7)) +## 2.11 (2020-07-25) + +* lilo: add -B and -E completions ([7dd16ad](https://www.github.com/scop/bash-completion/commit/7dd16adf6ae409ee76256ac8b73977e9a88e341e)) +* lilo: honor -C when completing labels ([5b12f1d](https://www.github.com/scop/bash-completion/commit/5b12f1d49bf036f99ccd97df2c3effee63fb04d8)) +* lilo: don't complete on commented out labels ([ad6a349](https://www.github.com/scop/bash-completion/commit/ad6a3496c3517534e5791334094cc23ec7f09437)) +* test/dnssec-keygen: allow more alternatives in algorithm completion ([0f80613](https://www.github.com/scop/bash-completion/commit/0f80613bd8a554c6aece24cf694a4ba9a11e57ba)) +* test/wol: don't fail MAC test if test system has /etc/ethers entries ([8130f87](https://www.github.com/scop/bash-completion/commit/8130f87b4e035e3b439ce2f06bdb6bb495288e15)) +* : complete commands when prefixed with a backslash ([1e029e8](https://www.github.com/scop/bash-completion/commit/1e029e81dc0a121f575d35c925cc878448feccc4)) +* ipcalc: new completion ([1307b7a](https://www.github.com/scop/bash-completion/commit/1307b7ae9f809aec4d1cda74a13878c1947eb095)) +* README.md: add introduction ([3e941a6](https://www.github.com/scop/bash-completion/commit/3e941a643097d080277af00924e34ef925c4c41f)) +* chromium-browser, firefox: complete on *.txt (#379) ([d705123](https://www.github.com/scop/bash-completion/commit/d7051234afee6cc164b59660dade18f34fb0d52f)) +* test/ipcalc: fix tests with busybox ipcalc ([ba3b2ea](https://www.github.com/scop/bash-completion/commit/ba3b2ea05632e07920c4670d0297af557ba717c5)) +* lilo: work around shellcheck false positive ([42dbeef](https://www.github.com/scop/bash-completion/commit/42dbeefb8a681e52f381218c2b69e586537ab6e4)) +* test: port remaining finger, sftp, ssh, and xhost cases to pytest+pexpect ([aab32df](https://www.github.com/scop/bash-completion/commit/aab32df7ec7a9bff6059560d58c0c7088a983bd4)) +* test: port some scp test cases to pytest+pexpect ([f4f365d](https://www.github.com/scop/bash-completion/commit/f4f365dd6c619b41f9947eb3e53a120fd5173cbe)) +* test: fix spurious hosts fixture failure without avahi-browse installed ([b2c12be](https://www.github.com/scop/bash-completion/commit/b2c12be995eb4cb9aea931abb5f8c90a9f96907c)) +* test: remove some no longer needed tcl/expect code ([f066c67](https://www.github.com/scop/bash-completion/commit/f066c676f2145acb4df84461ba75847af35d2e9f)) +* test: port some _known_hosts_real unit tests to pytest+pexpect ([30aefd3](https://www.github.com/scop/bash-completion/commit/30aefd3ee918d2a2c70d24eeb37e7c36004d3ea8)) +* test: host helper lint and usage fixes ([bd3d509](https://www.github.com/scop/bash-completion/commit/bd3d509f04fe6ca0ef9477293006fada716aebca)) +* cryptsetup: add luksChangeKey arg completion (#380) ([5bb526a](https://www.github.com/scop/bash-completion/commit/5bb526a0b6f1af02b32464879c71a1fd5a5e4104)) +* tsig-keygen: new completion ([399771d](https://www.github.com/scop/bash-completion/commit/399771d6f19d839069f0eb45001887a04231885e)) +* test/upgradepkg: port remaining test case to pytest+pexpect ([3a0e9c1](https://www.github.com/scop/bash-completion/commit/3a0e9c1e78d33571f272d327c7f4fbb8dca250d8)) +* test/tsig-keygen: require command for test_options ([9f0ae30](https://www.github.com/scop/bash-completion/commit/9f0ae306200cbf5cc6e62f72f77ea8a774ea41e3)) +* test/chown,sudo: parametrize special case test, improve xfail targeting ([2f34e86](https://www.github.com/scop/bash-completion/commit/2f34e86d988733515e21b3050d4f4ab603b9adc4)) +* test: remove some no longer needed old test suite code ([8b3007f](https://www.github.com/scop/bash-completion/commit/8b3007f7315e7313add3518599ce44c288c48aa6)) +* test/cd: convert remaining test case to pytest+pexpect ([c23c807](https://www.github.com/scop/bash-completion/commit/c23c8079fb1d78f03acb5c183b85264f6c9e06db)) +* test/cd: make dir_at_point produce better debuggable failures ([a6cfbcd](https://www.github.com/scop/bash-completion/commit/a6cfbcdc729a640b1b89af4cd4c8f3d713d51a47)) +* nmap: parse options from -h output ([e99577a](https://www.github.com/scop/bash-completion/commit/e99577a3e7f7c571a61074242ab21e0245bfe3dd)) +* nmap: handle options split on equals sign ([c51ccb7](https://www.github.com/scop/bash-completion/commit/c51ccb76d1f4fa08f1260e8d204d3622dce76f4e)) +* openssl: support getting digest list from more recent openssl versions ([fe90e2a](https://www.github.com/scop/bash-completion/commit/fe90e2aef9364d2361bdc9ae57f06690de52a596)) +* openssl: parse available options from $command -help ([9e03fc5](https://www.github.com/scop/bash-completion/commit/9e03fc5ca07ecc7cbb863b2affdd06f8bbf8b415)) +* openssl: complete -writerand with filenames ([548feef](https://www.github.com/scop/bash-completion/commit/548feef55be93a99c488e31051f524a0e4c5549b)) +* totem: reuse kaffeine completions (#372) ([e4d5eba](https://www.github.com/scop/bash-completion/commit/e4d5ebadf2a7ae61162defb7d6045fb8bff3f0da)) +* test/cd: remove unused import ([9a9f09f](https://www.github.com/scop/bash-completion/commit/9a9f09fd175b859b53c014137b8c91722ef158f1)) +* test/totem: add basic test case ([9c33f68](https://www.github.com/scop/bash-completion/commit/9c33f68a04e0ec6766cb224ab025efbd42ca54e7)) +* extra/make-changelog: run through black ([c85e5b1](https://www.github.com/scop/bash-completion/commit/c85e5b16aed3e49b2a3445e67b5143c305c37883)) +* : python type hint fixes and improvements ([d1dee07](https://www.github.com/scop/bash-completion/commit/d1dee0769275e68d39ef4c49983f4c7c89534b8f)) +* test: drop redundant black args from docker runs ([eedaa1c](https://www.github.com/scop/bash-completion/commit/eedaa1c56c09d00d39347d4b4b12c5a9d2920b1f)) +* pre-commit: add config with black, flake8, and mypy ([3b82089](https://www.github.com/scop/bash-completion/commit/3b8208985813bb424bc58a2d013eda08c50f7591)) +* test: install black for Python 3.6 too ([3f1d1ee](https://www.github.com/scop/bash-completion/commit/3f1d1ee9e41f1976181fb9f8b7a8039ee42f0219)) +* test: add flake8-bugbear ([1dddc81](https://www.github.com/scop/bash-completion/commit/1dddc81eb7363dfefde6f3b595efaa8d12e05691)) +* test: add isort to pre-commit, run it ([092d20a](https://www.github.com/scop/bash-completion/commit/092d20a8c592cc801cd7604e7a2f6907a787fbf2)) +* test: shellcheck tweaks ([e0c9c5e](https://www.github.com/scop/bash-completion/commit/e0c9c5e67ffb9d3f5c4076ffd667fb4a9b6dafbe)) +* test: run pre-commit in tools container ([0a5d616](https://www.github.com/scop/bash-completion/commit/0a5d61699c25dc13fc7eec0a18a9e1ff87411dbe)) +* jarsigner: complete on *.apk too (#386) ([64449ed](https://www.github.com/scop/bash-completion/commit/64449edf99377f66739c4ce51eeaec077687b52b)) +* python: support executables with minor version (#389) ([bd3eba8](https://www.github.com/scop/bash-completion/commit/bd3eba8182e9cc72d838ea655a8c2aa25a3272fc)) +* _known_hosts_real: check that ruptime is present before calling (#390) ([6217345](https://www.github.com/scop/bash-completion/commit/62173450aa686bed5431342410eb6edd21c33e6d)) +* ip: improve completion of route subcommands (#326) ([9982cc3](https://www.github.com/scop/bash-completion/commit/9982cc34d6ea684720f171dcdfa1a20a0b5a81e3)) +* test: fix CompletionResult.__eq__ UnboundLocalError ([0e1fe15](https://www.github.com/scop/bash-completion/commit/0e1fe15aa71cd4fafe571613f9a77b17b71fbcc6)) +* copyright: add 2020 ([0055238](https://www.github.com/scop/bash-completion/commit/00552386675b8589943dc50748ab00e272979796)) +* printenv: new completion ([014b3f2](https://www.github.com/scop/bash-completion/commit/014b3f2a0e13e87f25f31fd0ccacbf09ba3bcec2)) +* _xinetd_services: look up from $BASHCOMP_XINETDDIR, add some unit tests ([ea1cfa1](https://www.github.com/scop/bash-completion/commit/ea1cfa1da4cd793f66e298dadc9b5b5a916d5a63)) +* test: ignore flake8 messages that are in black's domain ([6dae998](https://www.github.com/scop/bash-completion/commit/6dae998a9e8870fff5f9511383c5becc8005e7b1)) +* test: move shellcheck to pre-commit ([e908d02](https://www.github.com/scop/bash-completion/commit/e908d02129cf641784fcd14f0e3105bf573aaed3)) +* test: move perltidy to pre-commit, run with --converge ([15aacc9](https://www.github.com/scop/bash-completion/commit/15aacc96cb1c767f162836b121d18d7ecc744a55)) +* test: require openssl command for option argument tests ([4c64a1b](https://www.github.com/scop/bash-completion/commit/4c64a1bd293b6fe1b5ed182ac8306ed2036b2603)) +* git: trigger docker rebuild on pre-commit config change ([ffc5adf](https://www.github.com/scop/bash-completion/commit/ffc5adfb8f1d312bfc77664dc3144289e978d0ae)) +* test: split dependencies requiring Python 3.6.1+ to requirements-dev.txt ([009bf22](https://www.github.com/scop/bash-completion/commit/009bf2228c68894629eb6fd17b3dc0f1f6d67615)) +* test: upgrade mypy to 0.770 ([383cbad](https://www.github.com/scop/bash-completion/commit/383cbad64934208df355cb5c1d6f29026b3f3ebe)) +* printenv: indentation fixes ([3ac9f0a](https://www.github.com/scop/bash-completion/commit/3ac9f0a24331d0768ce16bdce4977694f037ed1e)) +* test/printenv: require command for arg completion test ([afc9052](https://www.github.com/scop/bash-completion/commit/afc9052be4990f41675766935933e95a2f8f9a20)) +* test/ldd: xfail if --help is not implemented ([71b465a](https://www.github.com/scop/bash-completion/commit/71b465a89801e60fc9c5172004e0d92353999adc)) +* test/python: add testcase for submodule completion ([900824d](https://www.github.com/scop/bash-completion/commit/900824d9162b42399c17331cbbcfe6bce56665b4)) +* pre-commit: run most python checks on helpers/python too ([5ed40e0](https://www.github.com/scop/bash-completion/commit/5ed40e089f5e5f33a125dc145f6d678fef0584ca)) +* lintian: complete paths for Ubuntu's .ddeb and Debian's buildinfo files (#397) ([0988831](https://www.github.com/scop/bash-completion/commit/0988831a7a4fea73e5d61e64dd657d69779cf8e3)) +* ip: add support for netns (#391) ([a2ccfa6](https://www.github.com/scop/bash-completion/commit/a2ccfa6bb0438cdb88ef1e551448e839bf70f99f)) +* apt-get etc: use _apt_cache_packages from apt-cache ([d90fbe3](https://www.github.com/scop/bash-completion/commit/d90fbe3bfd7e53c365897fa584edc9d2d0a2e9bf)) +* : whitespace tweaks ([3c87811](https://www.github.com/scop/bash-completion/commit/3c87811d8917852a132771e5c92b1e76886e493e)) +* : argument interaction improvements ([ec6995c](https://www.github.com/scop/bash-completion/commit/ec6995cadc3ab24246e363b4cbc2452091cd4d28)) +* test/aptitude: add some test cases ([762ee12](https://www.github.com/scop/bash-completion/commit/762ee12d24db419f02fc026e063962dde82e7275)) +* aptitude: parse options list from --help, hardcode less ([27219f8](https://www.github.com/scop/bash-completion/commit/27219f8e76970e7780062d6746ab609792bb7e3d)) +* aptitude: add some option arg (non)completions ([826b333](https://www.github.com/scop/bash-completion/commit/826b3336cfa25696b0886908609c29f87a37f8e4)) +* crontab, wodim: silence shellcheck SC2191 and SC2192 ([e81f690](https://www.github.com/scop/bash-completion/commit/e81f6908ffbbe8477f636e5ca68ffda0748c12de)) +* bash_completion: address shellcheck SC2220 ([a167497](https://www.github.com/scop/bash-completion/commit/a167497e3ea2136b51e62cb04851cb3178f9c332)) +* : address shellcheck SC2221 and SC2222 ([365fa76](https://www.github.com/scop/bash-completion/commit/365fa76e2b587bd6c9c39154433b9ced38fe091d)) +* smartctl: hush shellcheck SC2054 false positives ([0ad46d6](https://www.github.com/scop/bash-completion/commit/0ad46d6042d6dec1b28f3212551d668a1febe8d4)) +* mplayer: address shellcheck SC1078 false positive ([a6e5e99](https://www.github.com/scop/bash-completion/commit/a6e5e9953ee275b67aae8a1f34e3fdc3fa340e38)) +* java, pkgadd, sysbench: address shellcheck SC2124 ([5757fd4](https://www.github.com/scop/bash-completion/commit/5757fd4a3693da792f61ff600a0072218b4162dd)) +* chronyc, wvdial: address shellcheck SC2178 ([cddf99a](https://www.github.com/scop/bash-completion/commit/cddf99a63b9bd4d561691299a3eb04aa56e60fa1)) +* pkgadd: indentation fix ([523387e](https://www.github.com/scop/bash-completion/commit/523387e2891cf17dbf79767d0ee521c6946af46c)) +* sysbench: add --test= deprecation TODO ([9caf5c9](https://www.github.com/scop/bash-completion/commit/9caf5c99b64803be50d15421460978bfe33a85be)) +* protoc: complete all --*_out without more specific handling with dirs ([a10adf2](https://www.github.com/scop/bash-completion/commit/a10adf25a75bab2d9cd1eb5805e73d12149cb287)) +* test: don't run shellcheck on completions/.gitignore ([3f0d77f](https://www.github.com/scop/bash-completion/commit/3f0d77f079901c080d10cc2331c6def42648278e)) +* _known_hosts_real, op: address shellcheck SC2184 ([7fdd0a5](https://www.github.com/scop/bash-completion/commit/7fdd0a5582a0830d02575e290133b26f089c24e2)) +* test/aptitude: require command where necessary ([72a59a6](https://www.github.com/scop/bash-completion/commit/72a59a6a604a3fba297484732bc3eac66a702969)) +* test/printenv: xfail if --help doesn't contain options (e.g. busybox) ([2eccac4](https://www.github.com/scop/bash-completion/commit/2eccac4327e835f4ea553fe0fadf2f6103c24055)) +* insmod, modinfo, modprobe: support xz compressed modules (#401) ([2c6a522](https://www.github.com/scop/bash-completion/commit/2c6a52236026a8e3307faca7b897ae368489391d)) +* test: upgrade shellcheck to 0.7.1 ([6af1710](https://www.github.com/scop/bash-completion/commit/6af1710fcbf8ec1108a394a7d611394590957911)) +* quote_readline: fix $ret leak ([3f340bf](https://www.github.com/scop/bash-completion/commit/3f340bf8d7f63f86987a3c947db272ccd296487e)) +* info, java: address shellcheck SC2153 ([460f1b1](https://www.github.com/scop/bash-completion/commit/460f1b105f7ea3e6b26016cf61d6449c6b504c12)) +* man, perl, route, tipc: address shellcheck SC2053 ([0fcfa65](https://www.github.com/scop/bash-completion/commit/0fcfa6592bf6d4085c1e37f6d0dd00510c805a1f)) +* tipc: comment grammar and spelling fixes ([22b015e](https://www.github.com/scop/bash-completion/commit/22b015ec167cfe9cb8da1fc399067dc2d0a55f71)) +* renice: address shellcheck SC2254 ([5f25641](https://www.github.com/scop/bash-completion/commit/5f2564100ed436d4eb2dc7a664a2706304e80b66)) +* test/run: address shellcheck SC2164 ([49ac2d9](https://www.github.com/scop/bash-completion/commit/49ac2d9ffcc8cc2c58984ae1e38f360478ea80ed)) +* _upvar, _upvars, _variables, rpm: address shellcheck SC1083 ([e043fac](https://www.github.com/scop/bash-completion/commit/e043fac649b50c7c0e5d0a8d49ce8bd93a139322)) +* mutt: address shellcheck SC2088 ([2404e97](https://www.github.com/scop/bash-completion/commit/2404e9755aaba02bd11471f9a6bd3f11ce3a4386)) +* ssh: add new -Q completions in OpenSSH 8.2p1 (#400) ([a5890aa](https://www.github.com/scop/bash-completion/commit/a5890aa5e29e0f1cd1500df4758d7883dd55f2f5)) +* cvs, modprobe, sh: address shellcheck SC2209 ([f894bc1](https://www.github.com/scop/bash-completion/commit/f894bc19b770d83b91612219016674aed6546604)) +* rpm, ssh, umount.linux: address shellcheck SC2120 ([d7381be](https://www.github.com/scop/bash-completion/commit/d7381be935d96244838b0a3a603639d95a0e6564)) +* _filedir_xspec: address shellcheck SC2140 ([198d3f7](https://www.github.com/scop/bash-completion/commit/198d3f71fc09f11519321b9561c31b1ef796e7dd)) +* scp: address shellcheck SC2089 and SC2090 ([c906aeb](https://www.github.com/scop/bash-completion/commit/c906aeb76cae276b04d8cbe25f80a986fec42018)) +* java, pkgadd, sysbench: address shellchec SC2124 ([34e5e6a](https://www.github.com/scop/bash-completion/commit/34e5e6a0ad9d29b4f91e93a6952050e88c5ad2a6)) +* test/lib/library.sh: address shellcheck SC2125 ([bef80ef](https://www.github.com/scop/bash-completion/commit/bef80ef624c3d7101b3661895958365f71b890a8)) +* : address shellcheck SC2046 ([1d3add4](https://www.github.com/scop/bash-completion/commit/1d3add44563e48be7a6ec6cbd4cc8bb9e27d44f0)) +* test: bump shellcheck severity to warning + some disables ([a6cd66c](https://www.github.com/scop/bash-completion/commit/a6cd66cc4b0dcf8f36e788b0ecdb637c72f0118e)) +* test: tolerate duplicates from compgen actions ([bbd6814](https://www.github.com/scop/bash-completion/commit/bbd68147a9eb829ddbae4ffed6523b69a076b6ed)) +* test/xfreerdp: skip xfreerdp kbd test if kbd-list returns empty ([9746a39](https://www.github.com/scop/bash-completion/commit/9746a39cbc2a1102c3bc9f7fff36ce36e8d05881)) +* test: make it possible to not care whether command did output or not ([1ef3ad4](https://www.github.com/scop/bash-completion/commit/1ef3ad487fb9f02b8cc641439b2049529fbdfb9e)) +* test: run skipif and xfail commands without caring if they output or not ([005ab9f](https://www.github.com/scop/bash-completion/commit/005ab9f0957f33f092d415f2ab2e1b3a3f501dfd)) +* pgrep, pkill: add --ns and --nslist arg completions ([e649ea1](https://www.github.com/scop/bash-completion/commit/e649ea16374bbacfdb84c3d9803211754f62bfc1)) +* pytest: complete test classes ([f4ac160](https://www.github.com/scop/bash-completion/commit/f4ac16016d005d91652226272e3d496ede8e5ca1)) +* pytest: add some option arg (non-)completions ([61e5d8d](https://www.github.com/scop/bash-completion/commit/61e5d8de7fcbc426c5a1e3f7f5dcda9510051eed)) +* test/cd: fix test_dir_at_point for setups that repeat "trailer" ([25b4f1d](https://www.github.com/scop/bash-completion/commit/25b4f1db77f2373f7a700998327e9d9d837da89a)) +* test: generalize complete at point test ([8314c75](https://www.github.com/scop/bash-completion/commit/8314c7576134d2a1ae948bc6f3e008e15d837886)) +* test/alias: port remaining test case to pytest+pexpect ([f81d313](https://www.github.com/scop/bash-completion/commit/f81d313138cb6ab0fd155089b3c7499d733c118b)) +* nmap: fix option parsing with BSD sed ([e712b2f](https://www.github.com/scop/bash-completion/commit/e712b2f932a4f000c75a417ab62f19532147ed52)) +* carton: fix command parsing with BSD sed ([1968b3a](https://www.github.com/scop/bash-completion/commit/1968b3ae59b20ea16fe0004ecff53831a1728467)) +* _filedir*: update link to bug-bash discussion on -X (#404) ([bfd65f3](https://www.github.com/scop/bash-completion/commit/bfd65f3be7af378d944a269e77cdf5d93aaac022)) +* openssl: update -starttls completions (#403) ([28df326](https://www.github.com/scop/bash-completion/commit/28df3269a994a33ccb8a7946a960ba26a97b6790)) +* : replace various conditional expressions with arithmetic evaluation ([2ad992a](https://www.github.com/scop/bash-completion/commit/2ad992a1bca79e0a9353afc32cbb59749f2f07c0)) +* bash_completion, invoke-rc.d, svcadm: trivial cleanups ([69a835a](https://www.github.com/scop/bash-completion/commit/69a835a335c8ecea7c8f0453097ab909838eef08)) +* : enable and address shellcheck SC2053 ([333d590](https://www.github.com/scop/bash-completion/commit/333d5908887e5133916b5987ce67ba65b6a5b343)) +* ssh-keygen: -s and -n completion improvements ([6666ebb](https://www.github.com/scop/bash-completion/commit/6666ebbb0d9934fd999937c10028f51295be5d28)) +* : array subscript cleanups ([13b5a4b](https://www.github.com/scop/bash-completion/commit/13b5a4bea8bae0d67d9286ef1d732c5dad1de685)) +* doc: recommend arithmetic evaluation ([5e5c83b](https://www.github.com/scop/bash-completion/commit/5e5c83b13808b2c29c0264284042998e4cc0816e)) +* test: remove shellcheck severity filter, add explicit disables instead ([fd19ea0](https://www.github.com/scop/bash-completion/commit/fd19ea00db362d9a33a6d4edd0d626b3da26a69c)) +* test: enable parallel pre-commit shellcheck ([48ab77e](https://www.github.com/scop/bash-completion/commit/48ab77e2ac5518ffbf8c6a2ce5b205da4b072c97)) +* __reassemble_comp_words_by_ref, java: address and work around shellcheck SC2102 ([dcf9f39](https://www.github.com/scop/bash-completion/commit/dcf9f3991d94804591fac1941587f04d3f19b4c0)) +* : more arithmetic evaluation cleanups, thanks to shellcheck SC2004 ([b147516](https://www.github.com/scop/bash-completion/commit/b147516b6081f451ace1e8172e6041029177536e)) +* bash_completion, java, tipc: for loop whitespace consistency tweaks ([3abbd23](https://www.github.com/scop/bash-completion/commit/3abbd23be045138a1d63ecdd27b5c0de9f5c1cd1)) +* pytest: address shellcheck SC2002 ([fe53ef2](https://www.github.com/scop/bash-completion/commit/fe53ef2ae8e3615c5a1186bfbc980f918b1d0c99)) +* wget: address shellcheck SC2116 ([091a7cd](https://www.github.com/scop/bash-completion/commit/091a7cde3deaeb7650e6972f5dda8c943cd1c120)) +* mutt: address shellchec SC2236 ([566c5f5](https://www.github.com/scop/bash-completion/commit/566c5f521d1d4cc3bdcba4b7555a4460d78aeebe)) +* scp: work around shellcheck SC1003 ([e1cbe8f](https://www.github.com/scop/bash-completion/commit/e1cbe8f6f0d097b51f9815dcf6729ac3abca526c)) +* ssh, xsltproc: address shellcheck SC2006 ([32421d1](https://www.github.com/scop/bash-completion/commit/32421d1d74a2915c227caa5c08457c0d7a9f18e6)) +* test: make at-point completion tests easier ([e9450b8](https://www.github.com/scop/bash-completion/commit/e9450b88c38921aa9dd297f56c99c055857c1952)) +* doc: add loop variable naming guideline ([a6a59e3](https://www.github.com/scop/bash-completion/commit/a6a59e32b8dd165f04409897641ba72d11d44e1d)) +* apt-cache: fix command mode handling ([c41b772](https://www.github.com/scop/bash-completion/commit/c41b772dcb4e31c8a6ee8d3052f3d2742d7a889d)) +* crontab: fix loop over already given args ([568c658](https://www.github.com/scop/bash-completion/commit/568c658c2c0ac6097f5332d4bfe23a9cf7b4de37)) +* : various loop iteration improvements ([911a432](https://www.github.com/scop/bash-completion/commit/911a4322cdc8eb393921b2a52efbab4e394e67e2)) +* : remove some unused variables, thanks to shellcheck SC2034 ([95f3bec](https://www.github.com/scop/bash-completion/commit/95f3bec3ba948fdb4f26673e008e4bfa990b96a0)) +* test: add perlcritic to pre-commit, run on all perl ([dd890cd](https://www.github.com/scop/bash-completion/commit/dd890cd30ddc617a10c7ff114bef13ff6485536b)) +* test: run pre-commit on host instead of docker ([b8c2a95](https://www.github.com/scop/bash-completion/commit/b8c2a95c5ed41088cd94d6ece044f37b941d8a2f)) +* make: add bmake alias ([6b42551](https://www.github.com/scop/bash-completion/commit/6b42551fa0166508b1ef6c28751ccdf5c7c49f32)) +* test/make: mark more cases as requiring command ([6354520](https://www.github.com/scop/bash-completion/commit/63545202952c970146eced87ae156f023f7306e4)) +* test: run lint tests on Travis in a quickish separate first stage ([e493f6a](https://www.github.com/scop/bash-completion/commit/e493f6a2f2ea596f373c9f31e91f44633f6f2d4a)) +* test: add script to maintain list of executables for full test coverage ([e0b9397](https://www.github.com/scop/bash-completion/commit/e0b93973acdc6f3938ecc1103971a8a0d18bf5ad)) +* extra: trigger docker builds only on test-cmd-list.txt changes ([85f3c73](https://www.github.com/scop/bash-completion/commit/85f3c737d97e5f420885d9b875de73d56035c78a)) +* find: fix -exec etc argument and its completion ([3e849c2](https://www.github.com/scop/bash-completion/commit/3e849c25ef9a2a2dc95c713085898a9547a70e18)) +* reportbug, scp, sftp, svn: use compgen -c instead of _command ([e73535f](https://www.github.com/scop/bash-completion/commit/e73535f72e0190c953211625dd71d73cfb2fa7e6)) +* _command: improve commentary ([2cf6b67](https://www.github.com/scop/bash-completion/commit/2cf6b670323ad0e914c5bed13122d2ee0cf07821)) +* ssh-keygen: option and arg completion updates for new versions ([edc4f9b](https://www.github.com/scop/bash-completion/commit/edc4f9b0390ae07c572a3186bdb9741a5be321de)) +* ssh-keygen: add -b arg completions according to specified -t ([69b477b](https://www.github.com/scop/bash-completion/commit/69b477bada9672fa5ec9079f42758a866e874180)) +* ssh-keygen: -O arg updates and improvements ([63e04ee](https://www.github.com/scop/bash-completion/commit/63e04ee86aeee5dc33a0e5d80c5e4e28692ac937)) +* README: clarify loading automatically on demand ([f5e831b](https://www.github.com/scop/bash-completion/commit/f5e831bb789094dc0293e61727b0319bb5714909)) +* pre-commit, *.md: add markdownlint, address findings ([43e958a](https://www.github.com/scop/bash-completion/commit/43e958a6db294367451190624a73e5f532fb6174)) +* : doc and comment link updates ([a234784](https://www.github.com/scop/bash-completion/commit/a234784b39e657be671f292c384395ed2fd64a75)) +* pre-commit: use local perlcritic hook ([a277345](https://www.github.com/scop/bash-completion/commit/a277345460a38206837e5e98380b30c39be89734)) +* editorconfig: apply yaml settings to .yaml too ([7af92f5](https://www.github.com/scop/bash-completion/commit/7af92f506c60c32eb95d4625e542e4e67d77eee9)) +* test: add note about unescaped assert_complete single return values ([663ac51](https://www.github.com/scop/bash-completion/commit/663ac5175fd46b790beff1ac5952551b0e211f90)) +* test: port most umount test cases to pytest+pexpect ([b621591](https://www.github.com/scop/bash-completion/commit/b6215914784096189db0ef4fd9d580a249a19675)) +* Source user completion only if it's a file (#409) ([78bf738](https://www.github.com/scop/bash-completion/commit/78bf738eb082f67080ec26b64444fd9116907743)) +* test: prefix fake test commands with underscore ([5351161](https://www.github.com/scop/bash-completion/commit/53511617f0ab972d0b6912990ebf0adc3eeffe9d)) +* nmap: simplify help scraping a bit, don't try to emit unnecessary newlines ([8db05b4](https://www.github.com/scop/bash-completion/commit/8db05b4d1c6de665a76c330b484279dc279dff27)) +* test: upgrade markdownlint to 0.23.0 ([5520dd4](https://www.github.com/scop/bash-completion/commit/5520dd4a20a7e849d24cf239a63a876e48dabc1b)) +* test: fix incorrect fixtures/shared/default xfails/expectations ([f0fe52c](https://www.github.com/scop/bash-completion/commit/f0fe52c923a5becc0556798ea892d2710aa9500c)) +* pre-commit etc: add shfmt ([08db11f](https://www.github.com/scop/bash-completion/commit/08db11f12a04516622948bb6c1ff8cc50001fb3a)) +* : run all shell code through shfmt -s ([dbe0ec8](https://www.github.com/scop/bash-completion/commit/dbe0ec8c1a8a36752d3b63b685add075f36ba113)) +* travis: use golang 1.14 for shfmt ([d34719a](https://www.github.com/scop/bash-completion/commit/d34719aa79f80578fe4be11ac859f348ae62ed02)) +* apt-get: complete build-dep with dirs ([e7ea033](https://www.github.com/scop/bash-completion/commit/e7ea033f1075a99898b4ef8c3a364bb7ba23ef62)) +* secret-tool: new completion ([e9a556f](https://www.github.com/scop/bash-completion/commit/e9a556f4a233250c6f05dfd0c5e9ae17a0ffd747)) +* test/umount: convert remaining test case to pytest+pexpect ([4514d3e](https://www.github.com/scop/bash-completion/commit/4514d3e7ef774c4bdfc4fe3f9acdf66def16c664)) +* test/scp: port remaining test case to pytest+pexpect ([12de472](https://www.github.com/scop/bash-completion/commit/12de47263b5a49ae8adab7fb1c85d3a2f42852e5)) +* test/secret-tool: add to test command list ([25c1c76](https://www.github.com/scop/bash-completion/commit/25c1c76030107cf918015856299f899bfa251e80)) +* test/slapt-get: convert remaining test case to pytest+pexpect ([033f548](https://www.github.com/scop/bash-completion/commit/033f5488bdec49f635b6e0ef13784698cdf8d190)) +* apt-cache: avoid nonzero exit code from _apt_cache_packages ([ea97386](https://www.github.com/scop/bash-completion/commit/ea973866fdbb4f8f72d4e87d090950795ef68a49)) +* _xfunc: simplify ([c0f6a6d](https://www.github.com/scop/bash-completion/commit/c0f6a6d09c88a23441a46c351eff25f23e64b528)) +* test/slapt-src: convert remaining test case to pytest+pexpect ([62b3dc6](https://www.github.com/scop/bash-completion/commit/62b3dc6dc2024eb2101bddcd468552d485c60a8c)) +* test: drop some no longer needed old test suite code ([2612750](https://www.github.com/scop/bash-completion/commit/2612750d2527865f432218770ccaa0e3dd398f71)) +* lftp: use "bookmark list" command to list bookmarks ([c198a94](https://www.github.com/scop/bash-completion/commit/c198a94029aa33cfbd4bd0586e1674859337c35c)) +* test: run pytest --verbose in docker ([ea0236e](https://www.github.com/scop/bash-completion/commit/ea0236e1e6b6ad2f0ffc402e4a1d4da6365014a3)) +* test/_get_comp_words_by_ref: convert remaining test cases to pytest+pexpect ([322420d](https://www.github.com/scop/bash-completion/commit/322420d50b894e786226987c40c6d559313058f9)) +* test/__expand_tilde_by_ref: port remaining test cases to pytest+pexpect ([d258b3c](https://www.github.com/scop/bash-completion/commit/d258b3ca8ab65fec4dfc6a14c4697212e09ad69c)) +* test/_filedir: port more test cases to pytest+pexpect ([54c732a](https://www.github.com/scop/bash-completion/commit/54c732a82066e1595d8dd153e992987ea87b54b6)) +* test: drop not needed sudo on Travis ([a9822bc](https://www.github.com/scop/bash-completion/commit/a9822bc79b997cfb985b1d8c91f9c3402adce232)) +* test: run all Travis jobs on dist: bionic ([9c0a307](https://www.github.com/scop/bash-completion/commit/9c0a30729ce5dd9954ad32dd226021b733b94abd)) +* test/_filedir: port remaining test cases to pytest+pexpect ([fb7fb46](https://www.github.com/scop/bash-completion/commit/fb7fb461362fd99cf21de40821793c8a38bf6c56)) +* test: drop some no longer needed old test suite code ([4543212](https://www.github.com/scop/bash-completion/commit/4543212a52e9d569017013e1365e9d969683fb49)) +* test/_expand: port remaining test cases to pytest+pexpect ([db481c6](https://www.github.com/scop/bash-completion/commit/db481c67fd8ea17036bd432c7e41dbe578a274e4)) +* test/_filedir: fix shutil.rmtree on Python < 3.6 ([febf177](https://www.github.com/scop/bash-completion/commit/febf177e84162199394f71704cbcf58ce1dbefd3)) +* test: replace some echos with printfs ([bcdf00c](https://www.github.com/scop/bash-completion/commit/bcdf00ce3cec4e6f43521d6d24d75e4574f59b66)) +* test/_get_cword: port remaining test case to pytest+pexpect ([80ac63e](https://www.github.com/scop/bash-completion/commit/80ac63efbb3b4677514b900ba936d7af2d2c8eb9)) +* test/_known_hosts_real: port more test cases to pytest+pexpect ([5c7bb2d](https://www.github.com/scop/bash-completion/commit/5c7bb2d72c03ad28f700e82b8ca1aeaa4528fedd)) +* test: remove more no longer needed old test suite code ([b1a4de9](https://www.github.com/scop/bash-completion/commit/b1a4de9aee916b622889c28a61812092c4d76b9b)) +* test/_known_hosts_real: port remaining test cases to pytest+pexpect ([21d4fba](https://www.github.com/scop/bash-completion/commit/21d4fba9d75860454bc0c869f63d66c6cd66bca6)) +* test: remove old test suite code no longer used \o/ ([5afc3b5](https://www.github.com/scop/bash-completion/commit/5afc3b558f7651a4a0854fdd9ac0a4580876fd33)) +* test: remove unused run-shellcheck, shellcheck is in pre-commit now ([76aa130](https://www.github.com/scop/bash-completion/commit/76aa130483d6da9761715b89ce750eebed3a95b0)) +* test: shfmt bashrc ([ead40fa](https://www.github.com/scop/bash-completion/commit/ead40fab3e8e09833b632a6c1c0b828b92ae4ecb)) +* test: sync shfmt and shellcheck configs ([c21e0e1](https://www.github.com/scop/bash-completion/commit/c21e0e11025fa2117417d5ddcbe65a7edd116fe3)) +* test: upgrade pre-commit to 2.4.0+, drop shfmt kludge ([8af206f](https://www.github.com/scop/bash-completion/commit/8af206f45ad801c47e9e79060a0fbad033cd1d89)) +* test: pre-commit config cleanups, ordering ([b4eadfd](https://www.github.com/scop/bash-completion/commit/b4eadfd4b401f15acaab714c363cb0a7ee7bcf8c)) +* test: upgrade flake8 to 3.8.1 ([1f27374](https://www.github.com/scop/bash-completion/commit/1f27374d45e7062e6a74a0046bba289eda02f75a)) +* test/irb: xfail options test if --help is not available ([f5ea515](https://www.github.com/scop/bash-completion/commit/f5ea515f07ec2cbbbc63262d1f053327a9d466ae)) +* : use $ifs for storing/restoring $IFS ([acc43ed](https://www.github.com/scop/bash-completion/commit/acc43edf81c7eaf8b3556453a7cfc4b0104975cd)) +* test: try harder to restore environment and cwd on failures ([f0bf00a](https://www.github.com/scop/bash-completion/commit/f0bf00a53677285600cdf8d82e754abb7f0e0644)) +* : use more arithmetic evaluation ([328ce5b](https://www.github.com/scop/bash-completion/commit/328ce5be5b4b8822b3b9421dab4460c56990df0b)) +* test: upgrade markdownlint-cli to 0.23.1 ([2255f2a](https://www.github.com/scop/bash-completion/commit/2255f2a8577cf7d48b5572d84a6900d9ffdef75e)) +* dpkg-deb: fix --show/-W completion ([2eee0b5](https://www.github.com/scop/bash-completion/commit/2eee0b5063ae3fd8d48594bc03d2f5a9e4678ce5)) +* test: add some dpkg-query test cases ([034bdee](https://www.github.com/scop/bash-completion/commit/034bdeec06f36c12d3cbf927ca293eee321817f0)) +* dpkg-deb: add --raw-extract and -X arg completions ([69198c0](https://www.github.com/scop/bash-completion/commit/69198c0c4ef9830de1ea25d0b5c713adef8b5987)) +* test: mark known non-ASCII issues with test suite as xfail ([106e825](https://www.github.com/scop/bash-completion/commit/106e825a7f3b07c6c4d59f0b9c4e66bfa48a870f)) +* test/mr: handle missing "clean" with skipif ([eb93dde](https://www.github.com/scop/bash-completion/commit/eb93dde7304ee62e20d54cba003639b46bd18119)) +* mr: avoid herestrings, simplify command parsing ([cf64492](https://www.github.com/scop/bash-completion/commit/cf6449226350987f8d0d3ff3d329ca31c19cbcac)) +* _bashcomp_try_faketty: new function to try running command with a fake tty ([3829fe9](https://www.github.com/scop/bash-completion/commit/3829fe95d6583cc9eebc1abae1e553dedacd8cd5)) +* postfix: try to arrange a fake tty so we can tickle the usage message out ([7aea619](https://www.github.com/scop/bash-completion/commit/7aea619b1b4563f6a5a55877aeeea009e71cfd87)) +* 7z: fix -o/-w attached arg completion ([54774d6](https://www.github.com/scop/bash-completion/commit/54774d610323daff29e4cd00d5bcce23b714513f)) +* __reassemble_comp_words_by_ref: avoid triggering nounset on indirect references ([0b0323c](https://www.github.com/scop/bash-completion/commit/0b0323c514276c0143568b9e03646b65ee57e788)) +* bash_completion: line wrapping tweaks, NFC ([1d1d308](https://www.github.com/scop/bash-completion/commit/1d1d308d1f15e3ab2794c14ed54206cc56b96655)) +* test/unit: include test_unit_known_hosts_real.py in dist ([fdc9fc9](https://www.github.com/scop/bash-completion/commit/fdc9fc9b231c084c6e8de32587ec6a746898ce39)) +* test/unit: sort files included in dist ([d8f309f](https://www.github.com/scop/bash-completion/commit/d8f309f9fa8cb57067c6ef559269ea1eb3f9d98a)) +* : avoid more errors in nounset mode ([3687d27](https://www.github.com/scop/bash-completion/commit/3687d27f1ac266fa784dacc4492f0c554ed3091c)) +* test/inputrc: comment and whitespace tweaks ([1293d7c](https://www.github.com/scop/bash-completion/commit/1293d7c7258ef93c131e0e0d546064593610e731)) +* : avoid more errors in nounset mode ([b807460](https://www.github.com/scop/bash-completion/commit/b807460140aa6dda09eb2af2ecf3afa1971c84c4)) +* : avoid more errors in nounset mode ([d0a0eb5](https://www.github.com/scop/bash-completion/commit/d0a0eb5979d2831174b50e541d97559ac30d7d73)) +* : avoid more errors in nounset mode ([505fb2c](https://www.github.com/scop/bash-completion/commit/505fb2c68e38c9071542ff30fbafdab7ddc6f363)) +* : mark nounset mode as supported, issues with it are bugs now ([e85a361](https://www.github.com/scop/bash-completion/commit/e85a361199f02f3818312ba149dc64bf2c920d7a)) +* test: skip various tests if we don't get a useful usage message ([6f12de6](https://www.github.com/scop/bash-completion/commit/6f12de60230b85fbdd004c69be23be1bc9798767)) +* test/runLint: warn about [ ] instead of [[ ]] use ([f6f49db](https://www.github.com/scop/bash-completion/commit/f6f49db9175eb1ee5521bcb59ac6747bebaf1f28)) +* modprobe, tshark, _included_ssh_config_files: use [[ ]] instead of [ ] ([50ad3f8](https://www.github.com/scop/bash-completion/commit/50ad3f8d91a2782b5d10dc177e98f2ec06171e20)) +* scp, sftp, ssh: fix completion on options bundled with -4/-6 ([b4490f2](https://www.github.com/scop/bash-completion/commit/b4490f238ed534ce9084614a3580656e4cf759f6)) +* _pids, _pgids, _pnames: improve shfmt formatting ([2bfb0a7](https://www.github.com/scop/bash-completion/commit/2bfb0a7e22ca94624e13df5876fe80acc7017f1b)) +* _filedir: avoid unbound variable error on Ubuntu 14 and 16 ([ac37d77](https://www.github.com/scop/bash-completion/commit/ac37d77db99425aaa9d71fe9215e98623378a4b1)) +* ip: add more completions for ip-rule ([426d07e](https://www.github.com/scop/bash-completion/commit/426d07e33ce5379ce4fc7726c140ca3b8c7c7575)) +* ip: style fixes similar to ip-netns ([75093c0](https://www.github.com/scop/bash-completion/commit/75093c018a5dee8db1d7a97f42b0cc2c0902ef3e)) +* ip: route shfmt, arithmetic evaluation ([a1fe69a](https://www.github.com/scop/bash-completion/commit/a1fe69adf7d476984a3498e8c1616d84e9b694f1)) +* ip: complete route add table arg ([e4ad602](https://www.github.com/scop/bash-completion/commit/e4ad602f483f3574fd8630bfcd82bd88ef6def28)) +* _init_completion: fix unassigned redirect completion in nounset mode ([2e52b40](https://www.github.com/scop/bash-completion/commit/2e52b40d5087c55798c7bf006654aafd98e5deab)) +* : drop support for bash 4.1 ([e2d47ae](https://www.github.com/scop/bash-completion/commit/e2d47aea537ed18892ba485b2acba470ad79301a)) +* test: enable shellcheck SC2035 ([77a3505](https://www.github.com/scop/bash-completion/commit/77a35054a335323014f8d63879c0017ff200f9c9)) +* qemu, sbopkg: avoid unintentional globbing on option arg completions ([7dc4f61](https://www.github.com/scop/bash-completion/commit/7dc4f61dc0ebdbf45d64195ab9a8cb97768e455a)) +* qemu: add -machine arg completion ([11cd174](https://www.github.com/scop/bash-completion/commit/11cd1746d94a98fe12bd989a168204e03583bf78)) +* : avoid more errors in nounset mode ([5103c5d](https://www.github.com/scop/bash-completion/commit/5103c5dc3e236e3fa4e0e5a9048ada6ea99a9c76)) +* _command_offset, route: cleanups ([9994be6](https://www.github.com/scop/bash-completion/commit/9994be6476247261cb8d3e1befcce4af72a136b0)) +* cfrun: fix $hostfile leak ([68b5719](https://www.github.com/scop/bash-completion/commit/68b5719bbc2db1e71f76d843b4b6df41e671952b)) +* : avoid more errors in nounset mode ([f4fa0b6](https://www.github.com/scop/bash-completion/commit/f4fa0b6d0ca079e350c8a98ddaeaa4d932fb21ef)) +* bash_completion: fix array set checks with empty elements in them ([efaa991](https://www.github.com/scop/bash-completion/commit/efaa991d385e28eeb21490b3a91fd903e4f90b30)) +* _known_hosts: avoid errors in nounset mode and no arguments ([36475fc](https://www.github.com/scop/bash-completion/commit/36475fc6762edca0d52a4817aba53f7c2431b9a7)) +* pytest: add test class method completion ([ba4c941](https://www.github.com/scop/bash-completion/commit/ba4c941faa1ff5eb63e7984a6a52a7b703e2887f)) +* README: document GNU make build requirement ([3423e14](https://www.github.com/scop/bash-completion/commit/3423e14fb0e891a7d2764233eccd3cbecc983e22)) +* java, make: avoid errors in nounset mode on Ubuntu 14 and 16 ([1a633f3](https://www.github.com/scop/bash-completion/commit/1a633f3a551154ac3c70bfdc5263d73d8b3d9f3f)) +* man, mutt: avoid errors in nounset mode on Ubuntu 14 and 16 ([e5fa022](https://www.github.com/scop/bash-completion/commit/e5fa0221578dce638a84107f0ee813be89bbe3bd)) +* pytest: fix test class method completion with BSD awk ([3374911](https://www.github.com/scop/bash-completion/commit/337491161b1278a30d3f0aaf4a7cd2508ea809f5)) +* gcc: avoid errors in nounset mode ([221a6aa](https://www.github.com/scop/bash-completion/commit/221a6aa9b18bb8afe11435ee2244589bbaac0ff4)) +* bash_completion: trivial cleanups ([817d832](https://www.github.com/scop/bash-completion/commit/817d832fb7ac49eceda6ed3c21428dcc4659fa48)) +* test/_known_hosts_real: tolerate duplicates ([0b2866a](https://www.github.com/scop/bash-completion/commit/0b2866a9fe32ee24df242e200896125c7ecf65ad)) +* test/_known_hosts_real: reset COMP_KNOWN_HOSTS_WITH_HOSTFILE between tests ([5e63557](https://www.github.com/scop/bash-completion/commit/5e63557aac12251538091dc40bf587842327ced5)) +* test/_known_hosts_real: don't modify class scoped base expected list ([133790c](https://www.github.com/scop/bash-completion/commit/133790c464c68fa728b2957a66ee1fa012181a88)) +* test: upgrade mypy to 0.780 ([2e7271b](https://www.github.com/scop/bash-completion/commit/2e7271b3aed635a7fead1b97517673092eba5923)) +* test: regex escape our magic mark for completeness ([588b05c](https://www.github.com/scop/bash-completion/commit/588b05c1bf74feadad61bd1d1b39e752e639c201)) +* test/lspci: skip -A arg test if lspci fails -A help, e.g. busybox lspci ([e2cb804](https://www.github.com/scop/bash-completion/commit/e2cb80403d32af436a93782de4f33aee8352dd2b)) +* .gitignore: clean up some no longer needed ignores ([df7b81e](https://www.github.com/scop/bash-completion/commit/df7b81ea93d799affa858f26749f6aba8f0c1a38)) +* test/dpkg-query: mark as xfail on non-Debian based systems ([d176aaf](https://www.github.com/scop/bash-completion/commit/d176aafc18cb15a90c6c1d89918884d03382b20d)) +* test: simplify completion parsing ([726e4c0](https://www.github.com/scop/bash-completion/commit/726e4c08a96b1f0be1c931179f1b3edb31913917)) +* test: partial hostname completion fixes ([ba39695](https://www.github.com/scop/bash-completion/commit/ba39695792410c88f9d8e2303288274e2959cef7)) +* test/slapt-src: single expected result handling fixes ([1b9c9bc](https://www.github.com/scop/bash-completion/commit/1b9c9bcc285c296aa2c6df3e75ad75537080947e)) +* test/xhost: multiple expected result handling fixes ([888f39a](https://www.github.com/scop/bash-completion/commit/888f39a84a1847333c9e8bc06806886cd95eb103)) +* test: upgrade flake8 to 3.8.3 ([4730f3f](https://www.github.com/scop/bash-completion/commit/4730f3fcb0c0cefafc29cad7b0aed81ecd1decca)) +* _known_hosts_real: fix # handling in ssh configs ([ebabed1](https://www.github.com/scop/bash-completion/commit/ebabed1a4ca28f6e56a02831fee0e33f15047119)) +* _known_hosts_real: fix completion of Host entries after a wildcard etc ([0c69125](https://www.github.com/scop/bash-completion/commit/0c69125d65faaa60b0829db58c88dc33366bb67c)) +* test: upgrade perltidy to 20200619 ([87b169d](https://www.github.com/scop/bash-completion/commit/87b169dcf3b95d071280d70b3fc2fb0d8306c9e1)) +* test: upgrade mypy to 0.781 ([d46e8a5](https://www.github.com/scop/bash-completion/commit/d46e8a58e7840c0a8a5e942eb987479c69a0272a)) +* CONTRIBUTING.md: add posix and nounset mode item ([25887a3](https://www.github.com/scop/bash-completion/commit/25887a38ba3b81e9a6791ade89f5fa1a7c7ea5d3)) +* test: upgrade mypy to 0.782 ([f7c14b5](https://www.github.com/scop/bash-completion/commit/f7c14b5579b7bde9b57ae9bb175be7cba916edd9)) +* test/_known_hosts_real: add explicit no globbing test case ([8200b9a](https://www.github.com/scop/bash-completion/commit/8200b9a9529316f1f467aea18aaed2cbf4776bf0)) +* test/shfmt: upgrade to 3.1.2, reformat with it ([de35c91](https://www.github.com/scop/bash-completion/commit/de35c91dd3fe6c6c1adaeeb7e1a96f6a8360b0eb)) +* _known_hosts_real: prevent unwanted pathname expansion on host entries ([29be9d2](https://www.github.com/scop/bash-completion/commit/29be9d2e6bea356f16f12bfa7ad647b3ed67839e)) +* _included_ssh_config_files: support globs ([8bd47d4](https://www.github.com/scop/bash-completion/commit/8bd47d4ee25642b5fcddefb825d5025721840673)) +* _longopt: exclude too many dashes, allow underscores, require ends with alnum ([e2bcbd5](https://www.github.com/scop/bash-completion/commit/e2bcbd5115868bcfc048da1ce1b6b10f76762bf1)) +* _known_hosts_real: avoid errors in nounset mode on Ubuntu 14 and 16 ([54fd092](https://www.github.com/scop/bash-completion/commit/54fd092139e05c8fa01b3256b6c717ef3cdb9fb6)) +* test: upgrade markdownlint-cli to 0.23.2 ([95992bf](https://www.github.com/scop/bash-completion/commit/95992bfeee3c0409991fe45e89c1d08cd2eb4401)) +* __get_cword_at_cursor_by_ref: fix regression on bash 4.2 ([2ed8d90](https://www.github.com/scop/bash-completion/commit/2ed8d90b51e3ca6a337a15086f47c7dc982891a4)) +* pytest: complete async test class methods ([5c4f7a4](https://www.github.com/scop/bash-completion/commit/5c4f7a42d9864dcf91de845ea8167aad9cd3bdfc)) +* test/inputrc: comment typo fix ([0d2367b](https://www.github.com/scop/bash-completion/commit/0d2367bd46b722a23e7b83e8bc828342ba857fa5)) +* test/inputrc: do not set print-completions-horizontally ([d050205](https://www.github.com/scop/bash-completion/commit/d05020538be21f4b41a2f129c8f4eab83c077f40)) +* unzip, zipinfo: complete *.aar (#428) ([8273ce3](https://www.github.com/scop/bash-completion/commit/8273ce3138708ad1db851b74eafba38d6683ca0a)) +* pre-commit: update shellcheck-py URL ([08451ec](https://www.github.com/scop/bash-completion/commit/08451ec8383bb309d945589cab7d8c74a347a8b7)) +* pre-commit: upgrade isort to 5.0.7 ([d128d70](https://www.github.com/scop/bash-completion/commit/d128d70b1baef5a93f376fd44f18c7824d4643f3)) +* _known_hosts_real: exclude Host negations ([812e2ac](https://www.github.com/scop/bash-completion/commit/812e2acec01689b7c20488e2e11d335efd25ce9a)) +* test/ant: gitignore all target cache files ([6703c90](https://www.github.com/scop/bash-completion/commit/6703c9035b7a1639a1eded9989ede80848539078)) +* pre-commit: add pyupgrade, run it ([54b1e6f](https://www.github.com/scop/bash-completion/commit/54b1e6f70decfb8b8a5b15a1d14279e52551edf2)) +* pre-commit: upgrade pyupgrade to 2.7.2 ([5ac90cc](https://www.github.com/scop/bash-completion/commit/5ac90cc4eb6330d0a1999e598e6873d7dc545b77)) +* pre-commit: upgrade isort to 5.1.4 ([c2f0056](https://www.github.com/scop/bash-completion/commit/c2f0056c8edc35fc53f40a9b4d53d48e40f6676f)) +* _xinetd_services: avoid nounset error on bash 4.2 ([0df93b0](https://www.github.com/scop/bash-completion/commit/0df93b02d355b2faaad0d25d20d45967b82edd63)) +* test/ant: avoid complete-ant-cmd.pl interference with ANT_ARGS ([2ad91ec](https://www.github.com/scop/bash-completion/commit/2ad91ec985dc1fbc57d27f7b9815c7d0797426e8)) +* test/tshark: fix multiple -O completion with no http2 support ([53f624f](https://www.github.com/scop/bash-completion/commit/53f624f8212497c116afd4a365768237ac4069bb)) +* test/xfreerdp: skip --help failure cases ([b41b97c](https://www.github.com/scop/bash-completion/commit/b41b97cd2c646e813317429edbb8285c09cfd0b7)) +* tshark: complete -r arg with all filenames (#422) ([436b0cb](https://www.github.com/scop/bash-completion/commit/436b0cbe9e0839a51edcc7948e4ca11f2444a238)) +* pytest: rewrite in bash, support toplevel funcs, avoid nondef ones and classes ([bf3f720](https://www.github.com/scop/bash-completion/commit/bf3f72046f62ea86f43b65389d6d706a28544adb)) +* pre-commit: anchor exclude patterns ([cc697a6](https://www.github.com/scop/bash-completion/commit/cc697a646c1bd1100890abd367bb8d0274a42275)) +* extra/make-changelog: check and output usage message ([cf90b29](https://www.github.com/scop/bash-completion/commit/cf90b297696cee57650f4fb6c29cebe872f773a7)) + ## 2.10 (2019-12-05) * README: link to cygwin package ([8d60fd3](https://www.github.com/scop/bash-completion/commit/8d60fd32be777e4c6e734c1dac431b39b53fb216)) diff --git a/bash_completion b/bash_completion index 42a5dca..2bc27cc 100644 --- a/bash_completion +++ b/bash_completion @@ -25,7 +25,7 @@ BASH_COMPLETION_VERSINFO=( 2 # x-release-please-major - 13 # x-release-please-minor + 14 # x-release-please-minor 0 # x-release-please-patch ) @@ -649,7 +649,7 @@ _comp_compgen() else _generator=("_comp_compgen_$1") fi - if ! declare -F "${_generator[0]}" &>/dev/null; then + if ! declare -F -- "${_generator[0]}" &>/dev/null; then printf 'bash_completion: %s: unrecognized generator `%s'\'' (function %s not found)\n' "$FUNCNAME" "$1" "${_generator[0]}" >&2 return 2 fi @@ -1737,7 +1737,7 @@ _comp_compgen_available_interfaces() fi } 2>/dev/null | _comp_awk \ '/^[^ \t]/ { if ($1 ~ /^[0-9]+:/) { print $2 } else { print $1 } }')" && - _comp_compgen -U generated set "${generated[@]%%[[:punct:]]*}" + _comp_compgen -U generated set "${generated[@]%:}" } # Echo number of CPUs, falling back to 1 on failure. @@ -2201,7 +2201,7 @@ _comp_realcommand() { REPLY="" local file - file=$(type -P "$1") || return $? + file=$(type -P -- "$1") || return $? if type -p realpath >/dev/null; then REPLY=$(realpath "$file") elif type -p greadlink >/dev/null; then @@ -2765,18 +2765,18 @@ _comp_command_offset() else _comp_dequote "${COMP_WORDS[0]}" || REPLY=${COMP_WORDS[0]} local cmd=$REPLY compcmd=$REPLY - local cspec=$(complete -p "$cmd" 2>/dev/null) + local cspec=$(complete -p -- "$cmd" 2>/dev/null) # If we have no completion for $cmd yet, see if we have for basename if [[ ! $cspec && $cmd == */* ]]; then - cspec=$(complete -p "${cmd##*/}" 2>/dev/null) + cspec=$(complete -p -- "${cmd##*/}" 2>/dev/null) [[ $cspec ]] && compcmd=${cmd##*/} fi # If still nothing, just load it for the basename if [[ ! $cspec ]]; then compcmd=${cmd##*/} _comp_load -D -- "$compcmd" - cspec=$(complete -p "$compcmd" 2>/dev/null) + cspec=$(complete -p -- "$compcmd" 2>/dev/null) fi local retry_count=0 @@ -2809,7 +2809,7 @@ _comp_command_offset() # state of COMPREPLY is discarded. COMPREPLY=() - cspec=$(complete -p "$compcmd" 2>/dev/null) + cspec=$(complete -p -- "$compcmd" 2>/dev/null) # Note: When completion spec is removed after 124, we # do not generate any completions including the default @@ -2991,7 +2991,7 @@ _comp_complete_longopt() # makeinfo and texi2dvi are defined elsewhere. complete -F _comp_complete_longopt \ a2ps awk base64 bash bc bison cat chroot colordiff cp \ - csplit cut date df diff dir du enscript env expand fmt fold gperf \ + csplit cut date df diff dir du enscript expand fmt fold gperf \ grep grub head irb ld ldd less ln ls m4 mkdir mkfifo mknod \ mv netstat nl nm objcopy objdump od paste pr ptx readelf rm rmdir \ sed seq shar sort split strip sum tac tail tee \ @@ -3147,13 +3147,13 @@ _comp_load() if [[ $cmd == \\* ]]; then cmd=${cmd:1} # If we already have a completion for the "real" command, use it - $(complete -p "$cmd" 2>/dev/null || echo false) "\\$cmd" && return 0 + $(complete -p -- "$cmd" 2>/dev/null || echo false) "\\$cmd" && return 0 backslash=\\ fi # Resolve absolute path to $cmd local REPLY pathcmd origcmd=$cmd - if pathcmd=$(type -P "$cmd"); then + if pathcmd=$(type -P -- "$cmd"); then _comp_abspath "$pathcmd" cmd=$REPLY fi @@ -3222,18 +3222,18 @@ _comp_load() elif [[ -e $compfile ]] && . "$compfile" "$cmd" "$@"; then # At least $cmd is expected to have a completion set when # we return successfully; see if it already does - if compspec=$(complete -p "$cmd" 2>/dev/null); then + if compspec=$(complete -p -- "$cmd" 2>/dev/null); then # $cmd is the case in which we do backslash processing [[ $backslash ]] && eval "$compspec \"\$backslash\$cmd\"" # If invoked without path, that one should be set, too # ...but let's not overwrite an existing one, if any [[ $origcmd != */* ]] && - ! complete -p "$origcmd" &>/dev/null && + ! complete -p -- "$origcmd" &>/dev/null && eval "$compspec \"\$origcmd\"" return 0 fi # If not, see if we got one for $cmdname - if [[ $cmdname != "$cmd" ]] && compspec=$(complete -p "$cmdname" 2>/dev/null); then + if [[ $cmdname != "$cmd" ]] && compspec=$(complete -p -- "$cmdname" 2>/dev/null); then # Use that for $cmd too, if we have a full path to it [[ $cmd == /* ]] && eval "$compspec \"\$cmd\"" return 0 @@ -3281,7 +3281,7 @@ _comp_xfunc() local xfunc_name=$2 [[ $xfunc_name == _* ]] || xfunc_name=_comp_xfunc_${1//[^a-zA-Z0-9_]/_}_$xfunc_name - declare -F "$xfunc_name" &>/dev/null || _comp_load "$1" + declare -F -- "$xfunc_name" &>/dev/null || _comp_load -- "$1" "$xfunc_name" "${@:3}" } diff --git a/completions/.gitignore b/completions/.gitignore index 0837060..c3bf546 100644 --- a/completions/.gitignore +++ b/completions/.gitignore @@ -28,6 +28,7 @@ /autoupdate /avahi-browse-domains /b2sum +/_bao /_black /_blackd /bmake @@ -68,6 +69,7 @@ /dfutool /_diesel /display +/_dlv /_docker /dpkg-deb /dpkg-query @@ -115,6 +117,7 @@ /gpgv2 /gssdp-device-sniffer /gtar +/_gup /hciattach /hciconfig /hd @@ -131,6 +134,7 @@ /ifstatus /_ignite /import +/_incus /_infracost /inotifywatch /insmod.static @@ -313,6 +317,7 @@ /_tkn /_tkn-pac /tightvncviewer +/_tofu /tracepath6 /_trivy /typeset @@ -348,4 +353,5 @@ /xpovray /xvnc4viewer /ypcat +/_zarf /_zitadel diff --git a/completions/Makefile.am b/completions/Makefile.am index ed1f215..219ea10 100644 --- a/completions/Makefile.am +++ b/completions/Makefile.am @@ -100,6 +100,7 @@ bashcomp_DATA = 2to3 \ ebtables \ ecryptfs-migrate-home \ _eject \ + env \ eog \ ether-wake \ evince \ @@ -545,6 +546,7 @@ CLEANFILES = \ autossh \ autoupdate \ avahi-browse-domains \ + _bao \ _black \ _blackd \ bmake \ @@ -585,6 +587,7 @@ CLEANFILES = \ dfutool \ _diesel \ display \ + _dlv \ _docker \ dpkg-deb \ dpkg-query \ @@ -644,6 +647,7 @@ CLEANFILES = \ gpgv2 \ gssdp-device-sniffer \ gtar \ + _gup \ hciattach \ hciconfig \ hd \ @@ -660,6 +664,7 @@ CLEANFILES = \ ifstatus \ _ignite \ import \ + _incus \ _infracost \ inotifywatch \ insmod.static \ @@ -876,6 +881,7 @@ CLEANFILES = \ _tkn \ _tkn-pac \ tightvncviewer \ + _tofu \ tracepath6 \ _trivy \ typeset \ @@ -911,6 +917,7 @@ CLEANFILES = \ xpovray \ xvnc4viewer \ ypcat \ + _zarf \ _zitadel symlinks: $(DATA) @@ -998,6 +1005,7 @@ symlinks: $(DATA) _constellation \ _crc \ _datree \ + _dlv \ _docker \ _gardenctl \ _gh-label \ @@ -1005,8 +1013,10 @@ symlinks: $(DATA) _go-licenses \ _gopherjs \ _goreleaser \ + _gup \ _helm \ _hugo \ + _incus \ _ignite \ _istioctl \ _k3s \ @@ -1047,6 +1057,7 @@ symlinks: $(DATA) _upctl \ _vacuum \ _virtctl \ + _zarf \ _zitadel $(ss) gpgv \ gpgv2 @@ -1198,7 +1209,7 @@ symlinks: $(DATA) $(ss) update-alternatives \ alternatives $(ss) _vault \ - _consul _nomad _packer _terraform + _bao _consul _nomad _packer _terraform _tofu $(ss) vipw \ vigr $(ss) vncviewer \ diff --git a/completions/_nox b/completions/_nox index 40b8bb1..6293109 100644 --- a/completions/_nox +++ b/completions/_nox @@ -4,8 +4,8 @@ # This serves as a fallback in case the completion is not installed otherwise. eval -- "$( - bin_path=$(type -P "$1" 2>/dev/null | command sed 's,/[^/]*$,,') - [[ $bin_path ]] && PATH=$bin_path${PATH:+:$PATH} + pathcmd=$(type -P -- "$1" 2>/dev/null | command sed 's,/[^/]*$,,') + [[ $pathcmd ]] && PATH=$pathcmd${PATH:+:$PATH} register-python-argcomplete --shell bash "$1" 2>/dev/null || register-python-argcomplete3 --shell bash "$1" 2>/dev/null )" diff --git a/completions/add_members b/completions/add_members index d691884..d83957a 100644 --- a/completions/add_members +++ b/completions/add_members @@ -24,7 +24,7 @@ _comp_cmd_add_members() else # Prefer `list_lists` in the same dir as command local pathcmd - pathcmd=$(type -P "$1") && local PATH=${pathcmd%/*}:$PATH + pathcmd=$(type -P -- "$1") && local PATH=${pathcmd%/*}:$PATH _comp_xfunc list_lists mailman_lists fi diff --git a/completions/apt-get b/completions/apt-get index f59c62b..4c62b25 100644 --- a/completions/apt-get +++ b/completions/apt-get @@ -33,7 +33,7 @@ _comp_cmd_apt_get() source) # Prefer `apt-cache` in the same dir as command local pathcmd - pathcmd=$(type -P "$1") && local PATH=${pathcmd%/*}:$PATH + pathcmd=$(type -P -- "$1") && local PATH=${pathcmd%/*}:$PATH _comp_compgen -x apt-cache packages _comp_compgen -a split -- "$(apt-cache dumpavail | _comp_awk '$1 == "Source:" { print $2 }' | sort -u)" @@ -79,7 +79,7 @@ _comp_cmd_apt_get() --target-release | --default-release | -${noargopts}t) # Prefer `apt-cache` in the same dir as command local pathcmd - pathcmd=$(type -P "$1") && local PATH=${pathcmd%/*}:$PATH + pathcmd=$(type -P -- "$1") && local PATH=${pathcmd%/*}:$PATH _comp_compgen_split -- "$(apt-cache policy | command sed -ne \ 's/^ *release.*[ ,]o=\(Debian\|Ubuntu\),a=\(\w*\).*/\2/p')" return diff --git a/completions/arch b/completions/arch index 7ca9738..e03056f 100644 --- a/completions/arch +++ b/completions/arch @@ -34,7 +34,7 @@ _comp_have_command mailmanctl && 1) # Prefer `list_lists` in the same dir as command local pathcmd - pathcmd=$(type -P "$1") && local PATH=${pathcmd%/*}:$PATH + pathcmd=$(type -P -- "$1") && local PATH=${pathcmd%/*}:$PATH _comp_compgen -x list_lists mailman_lists ;; 2) diff --git a/completions/change_pw b/completions/change_pw index 819c082..dd5dd52 100644 --- a/completions/change_pw +++ b/completions/change_pw @@ -9,7 +9,7 @@ _comp_cmd_change_pw() -l | --listname) # Prefer `list_lists` in the same dir as command local pathcmd - pathcmd=$(type -P "$1") && local PATH=${pathcmd%/*}:$PATH + pathcmd=$(type -P -- "$1") && local PATH=${pathcmd%/*}:$PATH _comp_compgen -x list_lists mailman_lists return ;; diff --git a/completions/check_db b/completions/check_db index 6480a11..851829e 100644 --- a/completions/check_db +++ b/completions/check_db @@ -10,7 +10,7 @@ _comp_cmd_check_db() else # Prefer `list_lists` in the same dir as command local pathcmd - pathcmd=$(type -P "$1") && local PATH=${pathcmd%/*}:$PATH + pathcmd=$(type -P -- "$1") && local PATH=${pathcmd%/*}:$PATH _comp_compgen -x list_lists mailman_lists fi diff --git a/completions/clone_member b/completions/clone_member index 01f87e6..46514be 100644 --- a/completions/clone_member +++ b/completions/clone_member @@ -9,7 +9,7 @@ _comp_cmd_clone_member() -l | --listname) # Prefer `list_lists` in the same dir as command local pathcmd - pathcmd=$(type -P "$1") && local PATH=${pathcmd%/*}:$PATH + pathcmd=$(type -P -- "$1") && local PATH=${pathcmd%/*}:$PATH _comp_compgen -x list_lists mailman_lists return ;; diff --git a/completions/config_list b/completions/config_list index d75ef2e..96a7ab8 100644 --- a/completions/config_list +++ b/completions/config_list @@ -20,7 +20,7 @@ _comp_cmd_config_list() else # Prefer `list_lists` in the same dir as command local pathcmd - pathcmd=$(type -P "$1") && local PATH=${pathcmd%/*}:$PATH + pathcmd=$(type -P -- "$1") && local PATH=${pathcmd%/*}:$PATH _comp_xfunc list_lists mailman_lists fi diff --git a/completions/cryptsetup b/completions/cryptsetup index 9d23bfa..dbe2a2c 100644 --- a/completions/cryptsetup +++ b/completions/cryptsetup @@ -22,7 +22,7 @@ _comp_cmd_cryptsetup() --skip | --iter-time | --timeout | --tries | -${noargopts}[chslSbopitT]) return ;; - --key-file | --master-key-file | --header-backup-file | -${noargopts}d) + --key-file | --master-key-file | --header | --header-backup-file | -${noargopts}d) _comp_compgen_filedir return ;; diff --git a/completions/env b/completions/env new file mode 100644 index 0000000..9576510 --- /dev/null +++ b/completions/env @@ -0,0 +1,56 @@ +# bash completion for env(1) -*- shell-script -*- + +_comp_cmd_env() +{ + local cur prev words cword was_split comp_args + _comp_initialize -s -- "$@" || return + + local i noargopts='!(-*|*[uCS]*)' + for ((i = 1; i <= cword; i++)); do + if [[ ${words[i]} != -* || ${words[i]} == -?(-) && i -lt cword ]]; then + [[ ${words[i]} == -?(-) ]] && ((i++)) + for (( ; i <= cword; i++)); do + if [[ ${words[i]} != *=* ]]; then + _comp_command_offset "$i" + return + fi + done + break + fi + + # shellcheck disable=SC2254 + [[ ${words[i]} == @(--@(unset|chdir|split-string)|-${noargopts}[uCS]) ]] && + ((i++)) + done + + # shellcheck disable=SC2254 + case "$prev" in + --unset | -${noargopts}u) + _comp_compgen -- -A variable + return + ;; + --chdir | -${noargopts}C) + _comp_compgen_filedir -d + return + ;; + --split-string | -${noargopts}S) + return + ;; + --block-signal | --default-signal | --ignore-signal) + # TODO signals, but only if completing with a =SIG + ;; + esac + + [[ $was_split ]] && return + + _comp_variable_assignments "$cur" && return + + if [[ $cur == -* ]]; then + _comp_compgen_help || _comp_compgen_usage + [[ ${COMPREPLY-} == *= ]] && compopt -o nospace + return + fi +} && + complete -F _comp_cmd_env env + +# ex: filetype=sh diff --git a/completions/find_member b/completions/find_member index d2620e8..35214aa 100644 --- a/completions/find_member +++ b/completions/find_member @@ -9,7 +9,7 @@ _comp_cmd_find_member() -l | -x | --listname | --exclude) # Prefer `list_lists` in the same dir as command local pathcmd - pathcmd=$(type -P "$1") && local PATH=${pathcmd%/*}:$PATH + pathcmd=$(type -P -- "$1") && local PATH=${pathcmd%/*}:$PATH _comp_compgen -x list_lists mailman_lists return ;; diff --git a/completions/fio b/completions/fio index 7fbcdd4..51eb74e 100644 --- a/completions/fio +++ b/completions/fio @@ -2,7 +2,7 @@ _comp_cmd_fio__compgen_engines() { - _comp_compgen_split -l -- "$("$1" --enghelp 2>/dev/null | command sed -ne '/^[[:space:]]/p'))" + _comp_compgen_split -F $'\t\n' -- "$("$1" --enghelp 2>/dev/null | command sed -ne '/^[[:space:]]/p')" } _comp_cmd_fio() diff --git a/completions/inject b/completions/inject index 4b46921..4dc3bc4 100644 --- a/completions/inject +++ b/completions/inject @@ -9,7 +9,7 @@ _comp_cmd_inject() -l | --listname) # Prefer `list_lists` in the same dir as command local pathcmd - pathcmd=$(type -P "$1") && local PATH=${pathcmd%/*}:$PATH + pathcmd=$(type -P -- "$1") && local PATH=${pathcmd%/*}:$PATH _comp_compgen -x list_lists mailman_lists return ;; diff --git a/completions/ip b/completions/ip index 09bec5b..3b495b6 100644 --- a/completions/ip +++ b/completions/ip @@ -121,6 +121,13 @@ _comp_cmd_ip() add) # TODO ;; + afstats) + if [[ $prev == dev ]]; then + _comp_compgen_available_interfaces + else + _comp_compgen -- -W 'dev' + fi + ;; delete) if [[ $prev == type ]]; then _comp_cmd_ip__link_types "$1" @@ -129,7 +136,7 @@ _comp_cmd_ip() _comp_compgen -a -- -W 'type' fi ;; - set) + set | change) if ((cword - subcword == 1)); then _comp_compgen_available_interfaces else @@ -173,7 +180,7 @@ _comp_cmd_ip() ;; *) ((cword == subcword)) && - _comp_compgen -- -W 'help add delete set show property' + _comp_compgen -- -W 'help add change delete set show property afstats' ;; esac ;; @@ -181,13 +188,24 @@ _comp_cmd_ip() a | addr | address) case $subcmd in add | change | replace) - if [[ $prev == dev ]]; then - _comp_compgen_available_interfaces - elif [[ $prev == scope ]]; then - _comp_cmd_ip__iproute2_etc rt_scopes - else - : # TODO - fi + case $prev in + dev | label) + _comp_compgen_available_interfaces + ;; + scope) + _comp_cmd_ip__iproute2_etc rt_scopes + ;; + broadcast | anycast | peer | metric) + : + ;; + valid_lft | preferred_lft) + _comp_compgen -- -W 'forever' + ;; + *) + _comp_compgen -- -W 'anycast autojoin broadcast dev home label scope nodad metric mngtmpaddr + noprefixroute valid_lft peer preferred_lft' + ;; + esac ;; del) if [[ $prev == dev ]]; then @@ -241,15 +259,45 @@ _comp_cmd_ip() r | route) case $subcmd in - list | flush) - if [[ $prev == proto ]]; then - _comp_cmd_ip__iproute2_etc rt_protos - else - : # TODO - fi + list | flush | save) + case "$prev" in + proto) + _comp_cmd_ip__iproute2_etc rt_protos + ;; + table) + _comp_compgen -- -W 'local main default all' + ;; + scope) + _comp_cmd_ip__iproute2_etc rt_scopes + ;; + root | match | exact | vrf) + : # TODO: Can we complete vrf? + ;; + type) + _comp_compgen -- -W 'unicast local broadcast multicast throw unreachable prohibit blackhole nat' + ;; + *) + _comp_compgen -- -W 'root match exact table vrf proto type scope' + ;; + esac ;; get) - # TODO + case $prev in + as | dport | from | sport | ipproto | vrf | to | tos | mark) + : # TODO: Can we complete ipproto, tos, or vrf? + ;; + uid) + _comp_compgen_uids + ;; + oif | iif | dev) + _comp_compgen_available_interfaces -a + ;; + *) + # TODO: 'iif' only works if also 'from' is specified + _comp_compgen -- -W 'as connected dport from fibmatch + iif ipproto mark notify oif sport to tos uid vrf' + ;; + esac ;; a | add | d | del | change | append | r | replace) if [[ $prev == via ]]; then @@ -276,7 +324,7 @@ _comp_cmd_ip() *) ((cword == subcword)) && _comp_compgen -- -W 'help list flush get add del change - append replace' + append replace save showdump' ;; esac ;; @@ -357,7 +405,26 @@ _comp_cmd_ip() n | neigh | neighbor | neighbour) case $subcmd in add | del | change | replace) - # TODO + case $prev in + lladdr) + _comp_compgen_mac_addresses + ;; + nud) + _comp_cmd_ip__neigh_states "$1" + ;; + dev) + _comp_compgen_available_interfaces + ;; + protocol) + _comp_cmd_ip__iproute2_etc rt_protos + ;; + proxy) + : + ;; + *) + _comp_compgen -- -W 'lladdr nud proxy dev router use managed extern_learn protocol' + ;; + esac ;; show | flush) case "$prev" in @@ -367,7 +434,7 @@ _comp_cmd_ip() dev) _comp_compgen_available_interfaces ;; - nomaster | proxy | to | vrf) # TODO - Maybe we can complete vrf here? + to | vrf) # TODO - Maybe we can complete vrf here? : ;; *) diff --git a/completions/iperf b/completions/iperf index 0168814..ef2860a 100644 --- a/completions/iperf +++ b/completions/iperf @@ -5,16 +5,16 @@ _comp_cmd_iperf() local cur prev words cword was_split comp_args _comp_initialize -s -n : -- "$@" || return - local noargopts='!(-*|*[ilpwMXbntLPTZCkOSAfIoFBcxy]*)' + local noargopts='!(-*|*[ilpwMXbntLPTZCkOAfIoFBcxy]*)' # shellcheck disable=SC2254 case $prev in --help | --version | --interval | --len | --port | --window | --mss | --bandwidth | \ --num | --time | --listenport | --parallel | --ttl | --linux-congestion | --omit | \ --congestion | --bytes | --blockcount | --cport | --set-mss | --flowlabel | \ - --title | --tos | --affinity | --rcv-timeout | --server-bitrate-limit | \ + --title | --affinity | --rcv-timeout | --server-bitrate-limit | \ --idle-timeout | --time-skew-threshold | --xbind | --nstreams | --connect-timeout | \ --bitrate | --pacing-timer | --fq-rate | --length | --dscp | --extra-data | \ - --username | -${noargopts}[hvilpwMXbntLPTZCkOSA]) + --username | -${noargopts}[hvilpwMXbntLPTZCkOA]) return ;; --format | -${noargopts}f) @@ -59,6 +59,10 @@ _comp_cmd_iperf() _comp_compgen_filedir log return ;; + --tos | -${noargopts}S) + _comp_compgen -- -W '{0..255}' + return + ;; --rsa-private-key-path | --rsa-public-key-path) _comp_compgen_filedir pem return diff --git a/completions/list_admins b/completions/list_admins index 98452eb..e9de58e 100644 --- a/completions/list_admins +++ b/completions/list_admins @@ -10,7 +10,7 @@ _comp_cmd_list_admins() else # Prefer `list_lists` in the same dir as command local pathcmd - pathcmd=$(type -P "$1") && local PATH=${pathcmd%/*}:$PATH + pathcmd=$(type -P -- "$1") && local PATH=${pathcmd%/*}:$PATH _comp_compgen -x list_lists mailman_lists fi diff --git a/completions/list_members b/completions/list_members index a15a2cc..52d9398 100644 --- a/completions/list_members +++ b/completions/list_members @@ -28,7 +28,7 @@ _comp_cmd_list_members() else # Prefer `list_lists` in the same dir as command local pathcmd - pathcmd=$(type -P "$1") && local PATH=${pathcmd%/*}:$PATH + pathcmd=$(type -P -- "$1") && local PATH=${pathcmd%/*}:$PATH _comp_compgen -x list_lists mailman_lists fi diff --git a/completions/list_owners b/completions/list_owners index 6179176..f9e4225 100644 --- a/completions/list_owners +++ b/completions/list_owners @@ -10,7 +10,7 @@ _comp_cmd_list_owners() else # Prefer `list_lists` in the same dir as command local pathcmd - pathcmd=$(type -P "$1") && local PATH=${pathcmd%/*}:$PATH + pathcmd=$(type -P -- "$1") && local PATH=${pathcmd%/*}:$PATH _comp_compgen -x list_lists mailman_lists fi diff --git a/completions/mysql b/completions/mysql index 4ba049f..f1b9a9b 100644 --- a/completions/mysql +++ b/completions/mysql @@ -24,7 +24,7 @@ _comp_cmd_mysql() # Prefer `mysqlshow` in the same dir as the command local pathcmd - pathcmd=$(type -P "$1") && local PATH=${pathcmd%/*}:$PATH + pathcmd=$(type -P -- "$1") && local PATH=${pathcmd%/*}:$PATH local noargopts='!(-*|*[uDhSPeI]*)' # shellcheck disable=SC2254 diff --git a/completions/newlist b/completions/newlist index b4e6060..1e4d26e 100644 --- a/completions/newlist +++ b/completions/newlist @@ -19,7 +19,7 @@ _comp_cmd_newlist() else # Prefer `list_lists` in the same dir as command local pathcmd - pathcmd=$(type -P "$1") && local PATH=${pathcmd%/*}:$PATH + pathcmd=$(type -P -- "$1") && local PATH=${pathcmd%/*}:$PATH _comp_compgen -x list_lists mailman_lists fi } && diff --git a/completions/perl b/completions/perl index 9b82777..ee852f1 100644 --- a/completions/perl +++ b/completions/perl @@ -107,7 +107,7 @@ _comp_cmd_perldoc() # Prefer `perl` in the same dir in utility functions local pathcmd - pathcmd=$(type -P "$1") && local PATH=${pathcmd%/*}:$PATH + pathcmd=$(type -P -- "$1") && local PATH=${pathcmd%/*}:$PATH case $prev in -*[hVnoMwL]) diff --git a/completions/pkgutil b/completions/pkgutil index 63dc400..0b2e4ec 100644 --- a/completions/pkgutil +++ b/completions/pkgutil @@ -1,6 +1,9 @@ # pkgutil completion -*- shell-script -*- # Copyright 2006 Yann Rouillard +# At least macOS pkgutil is different +[[ $OSTYPE == *solaris* ]] || return 1 + _comp_cmd_pkgutil__url2catalog() { local filename="$1" diff --git a/completions/pydoc b/completions/pydoc index 2cf2987..12e83e4 100644 --- a/completions/pydoc +++ b/completions/pydoc @@ -25,7 +25,7 @@ _comp_cmd_pydoc() if ! _comp_looks_like_path "$cur"; then # Prefer python in the same dir for resolving modules local pathcmd - pathcmd=$(type -P "$1") && local PATH=${pathcmd%/*}:$PATH + pathcmd=$(type -P -- "$1") && local PATH=${pathcmd%/*}:$PATH _comp_compgen -ax python modules fi diff --git a/completions/remove_members b/completions/remove_members index 4689b03..6f1290d 100644 --- a/completions/remove_members +++ b/completions/remove_members @@ -20,7 +20,7 @@ _comp_cmd_remove_members() else # Prefer `list_lists` in the same dir as command local pathcmd - pathcmd=$(type -P "$1") && local PATH=${pathcmd%/*}:$PATH + pathcmd=$(type -P -- "$1") && local PATH=${pathcmd%/*}:$PATH _comp_compgen -x list_lists mailman_lists fi diff --git a/completions/rmlist b/completions/rmlist index f3aca06..b5c140e 100644 --- a/completions/rmlist +++ b/completions/rmlist @@ -10,7 +10,7 @@ _comp_cmd_rmlist() else # Prefer `list_lists` in the same dir as command local pathcmd - pathcmd=$(type -P "$1") && local PATH=${pathcmd%/*}:$PATH + pathcmd=$(type -P -- "$1") && local PATH=${pathcmd%/*}:$PATH _comp_compgen -x list_lists mailman_lists fi diff --git a/completions/rpm b/completions/rpm index b6cafa5..1ffbeae 100644 --- a/completions/rpm +++ b/completions/rpm @@ -262,7 +262,7 @@ _comp_cmd_rpmbuild() --target | --eval | -${noargopts}E | --buildpolicy) # Prefer `rpm` in the same dir in utility functions local pathcmd - pathcmd=$(type -P "$1") && local PATH=${pathcmd%/*}:$PATH + pathcmd=$(type -P -- "$1") && local PATH=${pathcmd%/*}:$PATH ;;& --target) _comp_cmd_rpm__buildarchs diff --git a/completions/ssh b/completions/ssh index 386fd25..561dd07 100644 --- a/completions/ssh +++ b/completions/ssh @@ -404,7 +404,7 @@ _comp_cmd_sftp() # Prefer `ssh` from same dir for resolving options, etc local pathcmd - pathcmd=$(type -P "$1") && local PATH=${pathcmd%/*}:$PATH + pathcmd=$(type -P -- "$1") && local PATH=${pathcmd%/*}:$PATH _comp_xfunc_ssh_compgen_suboption_check && return @@ -469,7 +469,7 @@ _comp_cmd_scp__path_esc='[][(){}<>"'"'"',:;^&!$=?`\\|[:space:]]' _comp_xfunc_scp_compgen_remote_files() { # remove backslash escape from the first colon - cur=${cur/\\:/:} + local cur=${cur/\\:/:} local _userhost=${cur%%?(\\):*} local _path=${cur#*:} @@ -499,7 +499,7 @@ _comp_xfunc_scp_compgen_remote_files() command sed -e 's/'"$_comp_cmd_scp__path_esc"'/\\\\\\&/g' -e 's/[*@|=]$//g' \ -e 's/[^\/]$/& /g') fi - _comp_compgen_split -l -- "$_files" + _comp_compgen -R split -l -- "$_files" } # @deprecated 2.12 use `_comp_compgen -ax ssh remote_files` instead @@ -556,7 +556,7 @@ _comp_cmd_scp() # Prefer `ssh` from same dir for resolving options, remote files, etc local pathcmd - pathcmd=$(type -P "$1") && local PATH=${pathcmd%/*}:$PATH + pathcmd=$(type -P -- "$1") && local PATH=${pathcmd%/*}:$PATH _comp_xfunc_ssh_compgen_suboption_check && { ((${#COMPREPLY[@]})) && COMPREPLY=("${COMPREPLY[@]/%/ }") diff --git a/completions/ssh-add b/completions/ssh-add index 23c73e0..0589972 100644 --- a/completions/ssh-add +++ b/completions/ssh-add @@ -10,6 +10,19 @@ _comp_cmd_ssh_add() _comp_compgen -- -W 'md5 sha256' return ;; + -*H) + _comp_compgen_filedir + return + ;; + -*h) + # TODO should we try supporting more types of constraints? + if [[ $cur == *@* ]]; then + _comp_complete_user_at_host "$@" + else + _comp_compgen_known_hosts -- "$cur" + fi + return + ;; -*t) return ;; @@ -17,14 +30,14 @@ _comp_cmd_ssh_add() _comp_compgen_filedir return ;; - -*[se]) + -*S | -*[se]) _comp_compgen_filedir so return ;; esac if [[ $cur == -* ]]; then - _comp_compgen_help -- '-?' + _comp_compgen_usage -- '-?' || _comp_compgen_help -- '-?' return fi diff --git a/completions/ssh-copy-id b/completions/ssh-copy-id index 52aa9d7..5ead5a6 100644 --- a/completions/ssh-copy-id +++ b/completions/ssh-copy-id @@ -7,7 +7,7 @@ _comp_cmd_ssh_copy_id() # Prefer `ssh` from same dir for resolving options, etc local pathcmd - pathcmd=$(type -P "$1") && local PATH=${pathcmd%/*}:$PATH + pathcmd=$(type -P -- "$1") && local PATH=${pathcmd%/*}:$PATH _comp_compgen -x ssh suboption_check && return @@ -16,7 +16,11 @@ _comp_cmd_ssh_copy_id() _comp_compgen -x ssh identityfile pub return ;; - -p) + -p | -t) + return + ;; + -F) + _comp_compgen_filedir return ;; -o) diff --git a/completions/ssh-keygen b/completions/ssh-keygen index 3f9d175..095f36b 100644 --- a/completions/ssh-keygen +++ b/completions/ssh-keygen @@ -5,11 +5,14 @@ _comp_cmd_ssh_keygen() local cur prev words cword comp_args _comp_initialize -n := -- "$@" || return + local IFS=$' \t\n' # for ${words[*]} + local noargopts='!(-*|*[ aCIJjMNPSVWzbEFRDwfGKsTmnOrtY]*)' + # shellcheck disable=SC2254 case $prev in - -*[aCIJjMNPSVWz]) + -${noargopts}[aCIJjMNPSVWz]) return ;; - -*b) + -${noargopts}b) local -a sizes=() case "${words[*]}" in *" -t dsa"?( *)) @@ -26,28 +29,28 @@ _comp_cmd_ssh_keygen() _comp_compgen -- -W '"${sizes[@]}"' return ;; - -*E) + -${noargopts}E) _comp_compgen -- -W 'md5 sha256' return ;; - -*[FR]) + -${noargopts}[FR]) # TODO: trim this down to actual entries in known hosts files _comp_compgen_known_hosts -- "$cur" return ;; - -*[Dw]) + -${noargopts}[Dw]) _comp_compgen_filedir so return ;; - -*[fGKsT]) + -${noargopts}[fGKsT]) _comp_compgen_filedir return ;; - -*m) + -${noargopts}m) _comp_compgen -- -W 'PEM PKCS8 RFC4716' return ;; - -*n) + -${noargopts}n) [[ ${words[*]} != *\ -*Y\ * ]] || return if [[ ${words[*]} == *\ -*h\ * ]]; then _comp_compgen_known_hosts -- "${cur##*,}" @@ -58,19 +61,41 @@ _comp_cmd_ssh_keygen() fi return ;; - -*O) + -${noargopts}O) if [[ $cur != *=* ]]; then - _comp_compgen -- -W 'clear critical: extension: force-command= - no-agent-forwarding no-port-forwarding no-pty no-user-rc - no-x11-forwarding permit-agent-forwarding - permit-port-forwarding permit-pty permit-user-rc - permit-X11-forwarding no-touch-required source-address= - verify-required - - lines= start-line= checkpoint= memory= start= generator= - - application= challenge= device= no-touch-required resident - user= write-attestation=' + local -a opts=() + case ${words[*]} in + *\ -${noargopts}M\ *) + opts=( + lines= start-line= checkpoint= memory= start= + generator= + ) + ;; + *\ -${noargopts}r\ *) + opts=(hashalg=) + ;; + *\ -${noargopts}s\ *) + opts=( + clear critical: extension: force-command= + no-agent-forwarding no-port-forwarding no-pty + no-user-rc no-x11-forwarding permit-agent-forwarding + permit-port-forwarding permit-pty permit-user-rc + permit-X11-forwarding no-touch-required + source-address= verify-required + ) + ;; + *\ -${noargopts}t\ +([a-z0-9])-sk\ *) + opts=( + application= challenge= device= no-touch-required + resident user= verify-required write-attestation= + ) + ;; + *\ -${noargopts}Y\ *) + opts=(hashalg= print-pubkey verify-time) + ;; + esac + ((${#opts[@]})) && + _comp_compgen -- -W '"${opts[@]}"' [[ ${COMPREPLY-} == *[:=] ]] && compopt -o nospace _comp_ltrim_colon_completions "$cur" @@ -90,18 +115,31 @@ _comp_cmd_ssh_keygen() user=*) _comp_compgen -c "${cur#*=}" -- -u ;; + hashalg=*) + local -a args=() + case ${words[*]} in + *\ -*Y\ *) + args=(sha256 sha512) + ;; + *\ -*r\ *) + args=(sha1 sha256) + ;; + esac + ((${#args[@]})) && + _comp_compgen -c "${cur#*=}" -- -W '"${args[@]}"' + ;; esac fi return ;; - -*r) - [[ ${words[*]} != *\ -*Y\ * ]] || _comp_compgen_filedir + -${noargopts}r) + [[ ${words[*]} != *\ -${noargopts}Y\ * ]] || _comp_compgen_filedir return ;; - -*t) + -${noargopts}t) # Prefer `ssh` from same dir for resolving options, etc local pathcmd protocols - pathcmd=$(type -P "$1") && local PATH=${pathcmd%/*}:$PATH + pathcmd=$(type -P -- "$1") && local PATH=${pathcmd%/*}:$PATH _comp_compgen -v protocols -x ssh query protocol-version local types='dsa ecdsa ecdsa-sk ed25519 ed25519-sk rsa' if [[ ${protocols[*]} == *1* ]]; then @@ -110,7 +148,7 @@ _comp_cmd_ssh_keygen() _comp_compgen -- -W "$types" return ;; - -*Y) + -${noargopts}Y) _comp_compgen -- -W 'find-principals check-novalidate sign verify' return ;; @@ -122,7 +160,7 @@ _comp_cmd_ssh_keygen() _comp_compgen_help -- "-?" # OpenSSH < 7 fi - if [[ ${words[*]} == *\ -*s\ * ]]; then + if [[ ${words[*]} == *\ -${noargopts}s\ * ]]; then _comp_compgen -a filedir pub fi } && diff --git a/completions/ssh-keyscan b/completions/ssh-keyscan index f5e4364..e9d92cc 100644 --- a/completions/ssh-keyscan +++ b/completions/ssh-keyscan @@ -3,7 +3,7 @@ _comp_cmd_ssh_keyscan() { local cur prev words cword comp_args - _comp_initialize -- "$@" || return + _comp_initialize -n = -- "$@" || return local ipvx @@ -18,6 +18,20 @@ _comp_cmd_ssh_keyscan() _comp_compgen_filedir return ;; + -*O) + case $cur in + hashalg=*) + cur=${cur#*=} + _comp_compgen -- -W 'sha1 sha256' + ;; + *=*) ;; + *) + _comp_compgen -- -W 'hashalg=' + compopt -o nospace + ;; + esac + return + ;; -*p | -*T) return ;; diff --git a/completions/sync_members b/completions/sync_members index e8c07a7..450651f 100644 --- a/completions/sync_members +++ b/completions/sync_members @@ -24,7 +24,7 @@ _comp_cmd_sync_members() else # Prefer `list_lists` in the same dir as command local pathcmd - pathcmd=$(type -P "$1") && local PATH=${pathcmd%/*}:$PATH + pathcmd=$(type -P -- "$1") && local PATH=${pathcmd%/*}:$PATH _comp_compgen -x list_lists mailman_lists fi diff --git a/completions/withlist b/completions/withlist index f687511..b91346a 100644 --- a/completions/withlist +++ b/completions/withlist @@ -10,7 +10,7 @@ _comp_cmd_withlist() else # Prefer `list_lists` in the same dir as command local pathcmd - pathcmd=$(type -P "$1") && local PATH=${pathcmd%/*}:$PATH + pathcmd=$(type -P -- "$1") && local PATH=${pathcmd%/*}:$PATH _comp_compgen -x list_lists mailman_lists fi diff --git a/configure.ac b/configure.ac index 649ee3c..bba6890 100644 --- a/configure.ac +++ b/configure.ac @@ -1,5 +1,5 @@ AC_PREREQ([2.60]) -AC_INIT([bash-completion], [2.13.0]) dnl x-release-please-version +AC_INIT([bash-completion], [2.14.0]) dnl x-release-please-version dnl tar-pax for portable UTF-8 handling AM_INIT_AUTOMAKE([ foreign dist-xz no-dist-gzip tar-pax -Wall -Wno-portability -Werror diff --git a/test/requirements-dev.txt b/test/requirements-dev.txt index 68655c4..ed51d1c 100644 --- a/test/requirements-dev.txt +++ b/test/requirements-dev.txt @@ -3,4 +3,4 @@ -r requirements.txt mypy==1.8.0 -ruff==0.3.5 +ruff==0.4.3 diff --git a/test/t/conftest.py b/test/t/conftest.py index cb279cc..2ca0f9a 100644 --- a/test/t/conftest.py +++ b/test/t/conftest.py @@ -381,8 +381,8 @@ def load_completion_for(bash: pexpect.spawn, cmd: str) -> bool: try: # Allow _comp_load to fail so we can test completions # that are directly loaded in bash_completion without a separate file. - assert_bash_exec(bash, "_comp_load %s || :" % cmd) - assert_bash_exec(bash, "complete -p %s &>/dev/null" % cmd) + assert_bash_exec(bash, "_comp_load -- %s || :" % cmd) + assert_bash_exec(bash, "complete -p -- %s &>/dev/null" % cmd) except AssertionError: return False return True diff --git a/test/t/test_env.py b/test/t/test_env.py index 3d1a684..7608a4b 100644 --- a/test/t/test_env.py +++ b/test/t/test_env.py @@ -1,7 +1,44 @@ import pytest +from conftest import assert_complete + class TestEnv: @pytest.mark.complete("env --", require_longopt=True) def test_1(self, completion): assert completion + + @pytest.mark.complete("env __unknown_variable__=") + def test_unknown_variable_falls_back_to_filedir(self, completion): + assert "shared/" in completion + + @pytest.mark.complete("env LANG=", xfail="! locale -a &>/dev/null") + def test_lang_envvar(self, completion): + assert any(x == "C" or x.startswith("C.") for x in completion) + + @pytest.mark.parametrize( + "opts", + [ + "", + "foo=bar", + "--debug", + "--debug foo=bar", + "-", + "- foo=bar", + ], + ) + def test_command(self, bash, opts): + completion = assert_complete(bash, "env %s s" % opts) + assert completion == "h" or "sh" in completion + + @pytest.mark.parametrize( + "opts", + [ + "foo=bar --non-existent", + "- --non-existent", + "-- --non-existent", + ], + ) + def test_option_like_command(self, bash, opts): + completion = assert_complete(bash, "env %s s" % opts) + assert not (completion == "h" or "sh" in completion) diff --git a/test/t/test_fio.py b/test/t/test_fio.py index dadb5ac..75b9046 100644 --- a/test/t/test_fio.py +++ b/test/t/test_fio.py @@ -23,6 +23,8 @@ class TestFio: def test_enghelp(self, completion): """Test --enghelp parsing.""" assert completion + assert all(x == x.strip() for x in completion) + assert all(")" not in x for x in completion) @pytest.mark.complete("fio --unlink=", require_cmd=True) def test_cmdhelp_boolean(self, completion): diff --git a/test/t/test_ssh_keygen.py b/test/t/test_ssh_keygen.py index cc6ff4e..6e9953c 100644 --- a/test/t/test_ssh_keygen.py +++ b/test/t/test_ssh_keygen.py @@ -55,11 +55,15 @@ class TestSshKeygen: assert not completion @pytest.mark.complete("ssh-keygen -O ") - def test_O(self, completion): + def test_bare_O(self, completion): + assert not completion + + @pytest.mark.complete("ssh-keygen -s -O ") + def test_s_O(self, completion): assert completion assert any(x.endswith("=") for x in completion) - @pytest.mark.complete("ssh-keygen -O force-command=bas") + @pytest.mark.complete("ssh-keygen -s -O force-command=bas") def test_O_force_command(self, completion): assert completion assert not completion.startswith("force-command=") @@ -68,18 +72,28 @@ class TestSshKeygen: def test_O_unknown(self, completion): assert not completion - @pytest.mark.complete("ssh-keygen -O application=") + @pytest.mark.complete("ssh-keygen -t ed25519-sk -O application=") def test_O_application(self, completion): assert completion == "ssh:" - @pytest.mark.complete("ssh-keygen -O application=s") + @pytest.mark.complete("ssh-keygen -t ed25519-sk -O application=s") def test_O_application_s(self, completion): assert completion == "sh:" - @pytest.mark.complete("ssh-keygen -O application=ssh:") + @pytest.mark.complete("ssh-keygen -t ed25519-sk -O application=ssh:") def test_O_application_ssh_colon(self, completion): assert not completion - @pytest.mark.complete("ssh-keygen -O application=nonexistent") + @pytest.mark.complete( + "ssh-keygen -t ed25519-sk -O application=nonexistent" + ) def test_O_application_nonexistent(self, completion): assert not completion + + @pytest.mark.complete("ssh-keygen -r -O ") + def test_r_O(self, completion): + assert completion + + @pytest.mark.complete("ssh-keygen -Y -O ") + def test_Y_O(self, completion): + assert completion diff --git a/test/t/unit/test_unit_compgen_available_interfaces.py b/test/t/unit/test_unit_compgen_available_interfaces.py index 5e93100..f3ebac0 100644 --- a/test/t/unit/test_unit_compgen_available_interfaces.py +++ b/test/t/unit/test_unit_compgen_available_interfaces.py @@ -22,4 +22,4 @@ class TestUtilCompgenAvailableInterfaces: "_comp__test_compgen available_interfaces", want_output=True, ) - assert ":" not in output.strip() + assert ":>" not in output.strip() diff --git a/test/t/unit/test_unit_load.py b/test/t/unit/test_unit_load.py index 3515703..5513041 100644 --- a/test/t/unit/test_unit_load.py +++ b/test/t/unit/test_unit_load.py @@ -128,3 +128,6 @@ class TestCompLoad: # The in-tree `sh` completion should be loaded here, # and cause no output, unlike our `$PWD/prefix1/bin/sh` canary. assert_bash_exec(bash, "_comp_load sh", want_output=False) + + def test_option_like_cmd_name(self, bash): + assert_bash_exec(bash, "! _comp_load -- --non-existent") diff --git a/test/t/unit/test_unit_realcommand.py b/test/t/unit/test_unit_realcommand.py index 4eb7b73..a057788 100644 --- a/test/t/unit/test_unit_realcommand.py +++ b/test/t/unit/test_unit_realcommand.py @@ -88,3 +88,11 @@ class TestUnitRealCommand: want_output=False, ) assert output.strip() == "" + + def test_option_like_cmd_name(self, bash, functions): + output = assert_bash_exec( + bash, + "! __tester --non-existent", + want_output=False, + ) + assert output.strip() == "" diff --git a/version.txt b/version.txt index fb2c076..edcfe40 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -2.13.0 +2.14.0 -- cgit v1.2.3