From 408c9a07e55572f272e38fc84174cf610a9c9ccb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Thu, 4 Apr 2019 15:06:34 +0200 Subject: [PATCH 1/5] test: filter out messages when stripping binaries We would get an error for every script, which is just noise. --- test/test-functions | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/test/test-functions b/test/test-functions index 7179f70e46..6016fd21ac 100644 --- a/test/test-functions +++ b/test/test-functions @@ -560,7 +560,10 @@ strip_binaries() { return 0 fi ddebug "Strip binaries" - find "$initdir" -executable -not -path '*/lib/modules/*.ko' -type f | xargs strip --strip-unneeded | ddebug + find "$initdir" -executable -not -path '*/lib/modules/*.ko' -type f | \ + xargs strip --strip-unneeded |& \ + grep -v 'file format not recognized' | \ + ddebug } create_rc_local() { From cc5549ca12616376a4e4ef04fd4e2fb53d6d098c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Thu, 4 Apr 2019 14:10:42 +0200 Subject: [PATCH 2/5] scripts: use 4 space indentation We had all kinds of indentation: 2 sp, 3 sp, 4 sp, 8 sp, and mixed. 4 sp was the most common, in particular the majority of scripts under test/ used that. Let's standarize on 4 sp, because many commandlines are long and there's a lot of nesting, and with 8sp indentation less stuff fits. 4 sp also seems to be the default indentation, so this will make it less likely that people will mess up if they don't load the editor config. (I think people often use vi, and vi has no support to load project-wide configuration automatically. We distribute a .vimrc file, but it is not loaded by default, and even the instructions in it seem to discourage its use for security reasons.) Also remove the few vim config lines that were left. We should either have them on all files, or none. Also remove some strange stuff like '#!/bin/env bash', yikes. --- .dir-locals.el | 4 +- .editorconfig | 4 + .vimrc | 1 + coccinelle/run-coccinelle.sh | 26 +- man/50-xdg-data-dirs.sh | 2 +- semaphoreci/gcc-compilation.sh | 8 +- semaphoreci/setup.sh | 1 - src/basic/generate-af-list.sh | 4 +- src/basic/generate-arphrd-list.sh | 4 +- src/basic/generate-cap-list.sh | 4 +- src/basic/generate-errno-list.sh | 2 +- src/boot/efi/no-undefined-symbols.sh | 4 +- src/journal/generate-audit_type-list.sh | 8 +- src/shared/generate-ip-protocol-list.sh | 4 +- src/udev/generate-keyboard-keys-gperf.sh | 18 +- src/udev/generate-keyboard-keys-list.sh | 4 +- test/TEST-01-BASIC/test.sh | 2 - test/TEST-02-CRYPTSETUP/test.sh | 2 - test/TEST-03-JOBS/test.sh | 2 - test/TEST-04-JOURNAL/test-journal.sh | 1 - test/TEST-04-JOURNAL/test.sh | 2 - test/TEST-05-RLIMITS/test-rlimits.sh | 1 - test/TEST-05-RLIMITS/test.sh | 2 - test/TEST-06-SELINUX/test-selinux-checks.sh | 1 - test/TEST-06-SELINUX/test.sh | 2 - test/TEST-07-ISSUE-1981/test-segfault.sh | 1 - test/TEST-07-ISSUE-1981/test.sh | 2 - test/TEST-08-ISSUE-2730/test.sh | 2 - test/TEST-09-ISSUE-2691/test.sh | 2 - test/TEST-10-ISSUE-2467/test.sh | 2 - test/TEST-11-ISSUE-3166/test.sh | 2 - test/TEST-12-ISSUE-3171/test.sh | 2 - test/TEST-13-NSPAWN-SMOKE/test.sh | 2 - test/TEST-14-MACHINE-ID/test.sh | 2 - test/TEST-15-DROPIN/test-dropin.sh | 405 +++++++++---------- test/TEST-15-DROPIN/test.sh | 32 +- test/TEST-16-EXTEND-TIMEOUT/test.sh | 2 - test/TEST-17-UDEV-WANTS/test.sh | 2 - test/TEST-17-UDEV-WANTS/testsuite.sh | 2 - test/TEST-18-FAILUREACTION/test.sh | 2 - test/TEST-18-FAILUREACTION/testsuite.sh | 2 - test/TEST-19-DELEGATE/test.sh | 2 - test/TEST-19-DELEGATE/testsuite.sh | 46 +-- test/TEST-20-MAINPIDGAMES/test.sh | 2 - test/TEST-20-MAINPIDGAMES/testsuite.sh | 2 - test/TEST-21-SYSUSERS/test.sh | 146 ++++--- test/TEST-22-TMPFILES/test.sh | 2 - test/TEST-23-TYPE-EXEC/test.sh | 2 - test/TEST-23-TYPE-EXEC/testsuite.sh | 2 - test/TEST-24-UNIT-TESTS/test.sh | 2 - test/TEST-24-UNIT-TESTS/testsuite.sh | 2 - test/TEST-25-IMPORT/test.sh | 2 - test/TEST-25-IMPORT/testsuite.sh | 2 - test/TEST-26-SETENV/test.sh | 2 - test/TEST-26-SETENV/testsuite.sh | 2 - test/TEST-27-STDOUTFILE/test.sh | 2 - test/TEST-27-STDOUTFILE/testsuite.sh | 20 +- test/TEST-28-PERCENTJ-WANTEDBY/test.sh | 2 - test/TEST-29-UDEV-ID_RENAMING/test.sh | 2 - test/TEST-29-UDEV-ID_RENAMING/testsuite.sh | 2 - test/TEST-30-ONCLOCKCHANGE/test.sh | 2 - test/TEST-30-ONCLOCKCHANGE/testsuite.sh | 2 - test/TEST-31-DEVICE-ENUMERATION/test.sh | 2 - test/TEST-31-DEVICE-ENUMERATION/testsuite.sh | 2 - test/run-integration-tests.sh | 38 +- test/test-efi-create-disk.sh | 14 +- test/test-functions | 18 +- tools/add-git-hook.sh | 2 +- tools/check-directives.sh | 13 +- tools/choose-default-locale.sh | 7 +- tools/coverity.sh | 244 +++++------ tools/find-build-dir.sh | 24 +- tools/find-double-newline.sh | 57 ++- tools/find-tabs.sh | 57 ++- tools/meson-apply-m4.sh | 12 +- tools/meson-check-api-docs.sh | 41 +- tools/meson-check-help.sh | 14 +- tools/meson-git-contrib.sh | 10 +- tools/meson-hwdb-update.sh | 24 +- tools/meson-make-symlink.sh | 4 +- tools/meson-vcs-tag.sh | 4 +- tools/oss-fuzz.sh | 4 +- travis-ci/managers/travis_wait.bash | 82 ++-- travis-ci/managers/xenial.sh | 1 - travis-ci/scripts/build-docker-image.sh | 8 +- travis-ci/tools/get-coverity.sh | 22 +- units/meson-add-wants.sh | 24 +- xorg/50-systemd-user.sh | 2 +- 88 files changed, 740 insertions(+), 815 deletions(-) diff --git a/.dir-locals.el b/.dir-locals.el index 815afe172a..fde58d65bd 100644 --- a/.dir-locals.el +++ b/.dir-locals.el @@ -20,8 +20,8 @@ (nxml-mode . ((nxml-child-indent . 2) (fill-column . 109))) (meson-mode . ((meson-indent-basic . 8))) - (sh-mode . ((sh-basic-offset . 8) - (sh-indentation . 8))) + (sh-mode . ((sh-basic-offset . 4) + (sh-indentation . 4))) (awk-mode . ((c-basic-offset . 8))) (nil . ((indent-tabs-mode . nil) (tab-width . 8) diff --git a/.editorconfig b/.editorconfig index 67d848b68d..63b1d749cb 100644 --- a/.editorconfig +++ b/.editorconfig @@ -19,6 +19,10 @@ charset = utf-8 indent_style = space indent_size = 8 +[*.sh] +indent_style = space +indent_size = 4 + [meson.build] indent_style = space indent_size = 8 diff --git a/.vimrc b/.vimrc index a62546d8e2..d40b57a665 100644 --- a/.vimrc +++ b/.vimrc @@ -17,4 +17,5 @@ set expandtab set makeprg=GCC_COLORS=\ make set tw=79 au BufRead,BufNewFile *.xml set tw=109 shiftwidth=2 smarttab +au FileType sh set tw=80 shiftwidth=4 smarttab au FileType c set tw=109 diff --git a/coccinelle/run-coccinelle.sh b/coccinelle/run-coccinelle.sh index 22ab66d3dd..520de0ac42 100755 --- a/coccinelle/run-coccinelle.sh +++ b/coccinelle/run-coccinelle.sh @@ -5,23 +5,23 @@ files="$(git ls-files ':/*.[ch]')" args= case "$1" in - -i) - args="$args --in-place" - shift - ;; + -i) + args="$args --in-place" + shift + ;; esac if ! parallel -h >/dev/null; then - echo 'Please install GNU parallel (package "parallel")' - exit 1 + echo 'Please install GNU parallel (package "parallel")' + exit 1 fi for SCRIPT in ${@-$top/coccinelle/*.cocci} ; do - echo "--x-- Processing $SCRIPT --x--" - TMPFILE=`mktemp` - echo "+ spatch --sp-file $SCRIPT $args ..." - parallel --halt now,fail=1 --keep-order --noswap --max-args=20 \ - spatch --sp-file $SCRIPT $args ::: $files \ - 2>"$TMPFILE" || cat "$TMPFILE" - echo -e "--x-- Processed $SCRIPT --x--\n" + echo "--x-- Processing $SCRIPT --x--" + TMPFILE=`mktemp` + echo "+ spatch --sp-file $SCRIPT $args ..." + parallel --halt now,fail=1 --keep-order --noswap --max-args=20 \ + spatch --sp-file $SCRIPT $args ::: $files \ + 2>"$TMPFILE" || cat "$TMPFILE" + echo -e "--x-- Processed $SCRIPT --x--\n" done diff --git a/man/50-xdg-data-dirs.sh b/man/50-xdg-data-dirs.sh index 073174cb40..89e9fbb599 100755 --- a/man/50-xdg-data-dirs.sh +++ b/man/50-xdg-data-dirs.sh @@ -5,7 +5,7 @@ XDG_DATA_DIRS="${XDG_DATA_DIRS:-/usr/local/share/:/usr/share}" # add a directory if it exists if [[ -d /opt/foo/share ]]; then - XDG_DATA_DIRS=/opt/foo/share:${XDG_DATA_DIRS} + XDG_DATA_DIRS=/opt/foo/share:${XDG_DATA_DIRS} fi # write our output diff --git a/semaphoreci/gcc-compilation.sh b/semaphoreci/gcc-compilation.sh index 8755b850b6..ef499b8a35 100755 --- a/semaphoreci/gcc-compilation.sh +++ b/semaphoreci/gcc-compilation.sh @@ -1,5 +1,4 @@ #!/bin/bash - set -ex # keep this in sync with setup.sh @@ -40,4 +39,9 @@ dpkg-buildpackage -S -I -I$(basename "$SEMAPHORE_CACHE_DIR") -d -us -uc -nc # now build the package and run the tests rm -rf "$ARTIFACTS_DIR" # autopkgtest exits with 2 for "some tests skipped", accept that -$AUTOPKGTESTDIR/runner/autopkgtest --apt-upgrade --env DEB_BUILD_OPTIONS=noudeb --env TEST_UPSTREAM=1 ../systemd_*.dsc -o "$ARTIFACTS_DIR" -- lxc -s $CONTAINER || [ $? -eq 2 ] +$AUTOPKGTESTDIR/runner/autopkgtest --apt-upgrade \ + --env DEB_BUILD_OPTIONS=noudeb \ + --env TEST_UPSTREAM=1 ../systemd_*.dsc \ + -o "$ARTIFACTS_DIR" \ + -- lxc -s $CONTAINER \ + || [ $? -eq 2 ] diff --git a/semaphoreci/setup.sh b/semaphoreci/setup.sh index c904a300a1..c39238a4e9 100755 --- a/semaphoreci/setup.sh +++ b/semaphoreci/setup.sh @@ -1,5 +1,4 @@ #!/bin/bash - set -ex # default to Debian testing diff --git a/src/basic/generate-af-list.sh b/src/basic/generate-af-list.sh index 5bf244c49d..6987877ebf 100755 --- a/src/basic/generate-af-list.sh +++ b/src/basic/generate-af-list.sh @@ -2,5 +2,5 @@ set -eu $1 -E -dM -include sys/socket.h -include "$2" -include "$3" - = 7\n\ _Pragma(\"GCC diagnostic ignored \\\"-Wimplicit-fallthrough\\\"\")\n\ #endif\n\ %}" - print "struct key_name { const char* name; unsigned short id; };" - print "%null-strings" - print "%%" - } + print "struct key_name { const char* name; unsigned short id; };" + print "%null-strings" + print "%%" + } - /^KEY_/ { print tolower(substr($1 ,5)) ", " $1 } - { print tolower($1) ", " $1 } + /^KEY_/ { print tolower(substr($1 ,5)) ", " $1 } + { print tolower($1) ", " $1 } ' < "$1" diff --git a/src/udev/generate-keyboard-keys-list.sh b/src/udev/generate-keyboard-keys-list.sh index c055f7c756..aa00c15c16 100755 --- a/src/udev/generate-keyboard-keys-list.sh +++ b/src/udev/generate-keyboard-keys-list.sh @@ -2,6 +2,6 @@ set -eu $1 -dM -include linux/input.h - / { next } - /^#define[ \t]+(KEY|BTN)_[^ ]+[ \t]+[0-9BK]/ { print $2 } + /\<(KEY_(MAX|MIN_INTERESTING))|(BTN_(MISC|MOUSE|JOYSTICK|GAMEPAD|DIGI|WHEEL|TRIGGER_HAPPY))\>/ { next } + /^#define[ \t]+(KEY|BTN)_[^ ]+[ \t]+[0-9BK]/ { print $2 } ' diff --git a/test/TEST-01-BASIC/test.sh b/test/TEST-01-BASIC/test.sh index 1c64017aaa..2314ec37ce 100755 --- a/test/TEST-01-BASIC/test.sh +++ b/test/TEST-01-BASIC/test.sh @@ -1,6 +1,4 @@ #!/bin/bash -# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*- -# ex: ts=8 sw=4 sts=4 et filetype=sh set -e TEST_DESCRIPTION="Basic systemd setup" RUN_IN_UNPRIVILEGED_CONTAINER=${RUN_IN_UNPRIVILEGED_CONTAINER:-yes} diff --git a/test/TEST-02-CRYPTSETUP/test.sh b/test/TEST-02-CRYPTSETUP/test.sh index 97eb2f409e..aed1c59106 100755 --- a/test/TEST-02-CRYPTSETUP/test.sh +++ b/test/TEST-02-CRYPTSETUP/test.sh @@ -1,6 +1,4 @@ #!/bin/bash -# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*- -# ex: ts=8 sw=4 sts=4 et filetype=sh set -e TEST_DESCRIPTION="cryptsetup systemd setup" TEST_NO_NSPAWN=1 diff --git a/test/TEST-03-JOBS/test.sh b/test/TEST-03-JOBS/test.sh index 93a387df59..89125109d8 100755 --- a/test/TEST-03-JOBS/test.sh +++ b/test/TEST-03-JOBS/test.sh @@ -1,6 +1,4 @@ #!/bin/bash -# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*- -# ex: ts=8 sw=4 sts=4 et filetype=sh set -e TEST_DESCRIPTION="Job-related tests" TEST_NO_QEMU=1 diff --git a/test/TEST-04-JOURNAL/test-journal.sh b/test/TEST-04-JOURNAL/test-journal.sh index e198cb6ede..4e539aa151 100755 --- a/test/TEST-04-JOURNAL/test-journal.sh +++ b/test/TEST-04-JOURNAL/test-journal.sh @@ -1,5 +1,4 @@ #!/bin/bash - set -x set -e set -o pipefail diff --git a/test/TEST-04-JOURNAL/test.sh b/test/TEST-04-JOURNAL/test.sh index 33bfcbf681..f24a8f6be7 100755 --- a/test/TEST-04-JOURNAL/test.sh +++ b/test/TEST-04-JOURNAL/test.sh @@ -1,6 +1,4 @@ #!/bin/bash -# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*- -# ex: ts=8 sw=4 sts=4 et filetype=sh set -e TEST_DESCRIPTION="Journal-related tests" diff --git a/test/TEST-05-RLIMITS/test-rlimits.sh b/test/TEST-05-RLIMITS/test-rlimits.sh index ba665c5968..b4d79c9655 100755 --- a/test/TEST-05-RLIMITS/test-rlimits.sh +++ b/test/TEST-05-RLIMITS/test-rlimits.sh @@ -1,5 +1,4 @@ #!/bin/bash - set -x set -e set -o pipefail diff --git a/test/TEST-05-RLIMITS/test.sh b/test/TEST-05-RLIMITS/test.sh index 3eb2165796..3c29b2ee3f 100755 --- a/test/TEST-05-RLIMITS/test.sh +++ b/test/TEST-05-RLIMITS/test.sh @@ -1,6 +1,4 @@ #!/bin/bash -# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*- -# ex: ts=8 sw=4 sts=4 et filetype=sh set -e TEST_DESCRIPTION="Resource limits-related tests" diff --git a/test/TEST-06-SELINUX/test-selinux-checks.sh b/test/TEST-06-SELINUX/test-selinux-checks.sh index 153fab3aac..dae48cd4b2 100755 --- a/test/TEST-06-SELINUX/test-selinux-checks.sh +++ b/test/TEST-06-SELINUX/test-selinux-checks.sh @@ -1,5 +1,4 @@ #!/bin/bash - set -x set -e set -o pipefail diff --git a/test/TEST-06-SELINUX/test.sh b/test/TEST-06-SELINUX/test.sh index 0c924ecbbd..2b49b3d5ae 100755 --- a/test/TEST-06-SELINUX/test.sh +++ b/test/TEST-06-SELINUX/test.sh @@ -1,6 +1,4 @@ #!/bin/bash -# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*- -# ex: ts=8 sw=4 sts=4 et filetype=sh set -e TEST_DESCRIPTION="SELinux tests" TEST_NO_NSPAWN=1 diff --git a/test/TEST-07-ISSUE-1981/test-segfault.sh b/test/TEST-07-ISSUE-1981/test-segfault.sh index 48f05d89fb..82339c23cd 100755 --- a/test/TEST-07-ISSUE-1981/test-segfault.sh +++ b/test/TEST-07-ISSUE-1981/test-segfault.sh @@ -1,5 +1,4 @@ #!/bin/bash - set -x set -e diff --git a/test/TEST-07-ISSUE-1981/test.sh b/test/TEST-07-ISSUE-1981/test.sh index 499a36038c..93ddb6f5fb 100755 --- a/test/TEST-07-ISSUE-1981/test.sh +++ b/test/TEST-07-ISSUE-1981/test.sh @@ -1,6 +1,4 @@ #!/bin/bash -# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*- -# ex: ts=8 sw=4 sts=4 et filetype=sh set -e TEST_DESCRIPTION="https://github.com/systemd/systemd/issues/1981" TEST_NO_QEMU=1 diff --git a/test/TEST-08-ISSUE-2730/test.sh b/test/TEST-08-ISSUE-2730/test.sh index b01df3656b..ef2aba0e17 100755 --- a/test/TEST-08-ISSUE-2730/test.sh +++ b/test/TEST-08-ISSUE-2730/test.sh @@ -1,6 +1,4 @@ #!/bin/bash -# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*- -# ex: ts=8 sw=4 sts=4 et filetype=sh set -e TEST_DESCRIPTION="https://github.com/systemd/systemd/issues/2730" TEST_NO_NSPAWN=1 diff --git a/test/TEST-09-ISSUE-2691/test.sh b/test/TEST-09-ISSUE-2691/test.sh index 01eb4dbac8..8e7402fcd4 100755 --- a/test/TEST-09-ISSUE-2691/test.sh +++ b/test/TEST-09-ISSUE-2691/test.sh @@ -1,6 +1,4 @@ #!/bin/bash -# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*- -# ex: ts=8 sw=4 sts=4 et filetype=sh set -e TEST_DESCRIPTION="https://github.com/systemd/systemd/issues/2691" TEST_NO_NSPAWN=1 diff --git a/test/TEST-10-ISSUE-2467/test.sh b/test/TEST-10-ISSUE-2467/test.sh index c85433d7d3..dc7a9acaa1 100755 --- a/test/TEST-10-ISSUE-2467/test.sh +++ b/test/TEST-10-ISSUE-2467/test.sh @@ -1,6 +1,4 @@ #!/bin/bash -# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*- -# ex: ts=8 sw=4 sts=4 et filetype=sh set -e TEST_DESCRIPTION="https://github.com/systemd/systemd/issues/2467" diff --git a/test/TEST-11-ISSUE-3166/test.sh b/test/TEST-11-ISSUE-3166/test.sh index 38c725fa70..3419b78fe7 100755 --- a/test/TEST-11-ISSUE-3166/test.sh +++ b/test/TEST-11-ISSUE-3166/test.sh @@ -1,6 +1,4 @@ #!/bin/bash -# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*- -# ex: ts=8 sw=4 sts=4 et filetype=sh set -e TEST_DESCRIPTION="https://github.com/systemd/systemd/issues/3166" TEST_NO_NSPAWN=1 diff --git a/test/TEST-12-ISSUE-3171/test.sh b/test/TEST-12-ISSUE-3171/test.sh index 0c267e11a6..31cf1b471a 100755 --- a/test/TEST-12-ISSUE-3171/test.sh +++ b/test/TEST-12-ISSUE-3171/test.sh @@ -1,6 +1,4 @@ #!/bin/bash -# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*- -# ex: ts=8 sw=4 sts=4 et filetype=sh set -e TEST_DESCRIPTION="https://github.com/systemd/systemd/issues/3171" TEST_NO_QEMU=1 diff --git a/test/TEST-13-NSPAWN-SMOKE/test.sh b/test/TEST-13-NSPAWN-SMOKE/test.sh index 774b7cbed5..bd85b92caa 100755 --- a/test/TEST-13-NSPAWN-SMOKE/test.sh +++ b/test/TEST-13-NSPAWN-SMOKE/test.sh @@ -1,6 +1,4 @@ #!/bin/bash -# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*- -# ex: ts=8 sw=4 sts=4 et filetype=sh set -e TEST_DESCRIPTION="systemd-nspawn smoke test" TEST_NO_NSPAWN=1 diff --git a/test/TEST-14-MACHINE-ID/test.sh b/test/TEST-14-MACHINE-ID/test.sh index 9435834204..33e311a1e7 100755 --- a/test/TEST-14-MACHINE-ID/test.sh +++ b/test/TEST-14-MACHINE-ID/test.sh @@ -1,6 +1,4 @@ #!/bin/bash -# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*- -# ex: ts=8 sw=4 sts=4 et filetype=sh set -e TEST_DESCRIPTION="/etc/machine-id testing" TEST_NO_NSPAWN=1 diff --git a/test/TEST-15-DROPIN/test-dropin.sh b/test/TEST-15-DROPIN/test-dropin.sh index ab0a58caea..02962a8a07 100755 --- a/test/TEST-15-DROPIN/test-dropin.sh +++ b/test/TEST-15-DROPIN/test-dropin.sh @@ -1,279 +1,278 @@ #! /bin/bash - set -e set -x _clear_service () { - systemctl stop $1.service 2>/dev/null || : - rm -f /{etc,run,usr/lib}/systemd/system/$1.service - rm -fr /{etc,run,usr/lib}/systemd/system/$1.service.d - rm -fr /{etc,run,usr/lib}/systemd/system/$1.service.{wants,requires} + systemctl stop $1.service 2>/dev/null || : + rm -f /{etc,run,usr/lib}/systemd/system/$1.service + rm -fr /{etc,run,usr/lib}/systemd/system/$1.service.d + rm -fr /{etc,run,usr/lib}/systemd/system/$1.service.{wants,requires} } clear_services () { - for u in $*; do - _clear_service $u - done - systemctl daemon-reload + for u in $*; do + _clear_service $u + done + systemctl daemon-reload } create_service () { - clear_services $1 + clear_services $1 - cat >/etc/systemd/system/$1.service</etc/systemd/system/$1.service</usr/lib/systemd/system/a.service.d/override.conf </usr/lib/systemd/system/a.service.d/override.conf </usr/lib/systemd/system/a.service.d/wants-b.conf</usr/lib/systemd/system/a.service.d/wants-b.conf<&2 + echo "Skipping TEST-19-DELEGATE, as the kernel doesn't actually support cgroup v2" >&2 fi echo OK > /testok diff --git a/test/TEST-20-MAINPIDGAMES/test.sh b/test/TEST-20-MAINPIDGAMES/test.sh index 4ec8081478..bf80e8b584 100755 --- a/test/TEST-20-MAINPIDGAMES/test.sh +++ b/test/TEST-20-MAINPIDGAMES/test.sh @@ -1,6 +1,4 @@ #!/bin/bash -# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*- -# ex: ts=8 sw=4 sts=4 et filetype=sh set -e TEST_DESCRIPTION="test changing main PID" diff --git a/test/TEST-20-MAINPIDGAMES/testsuite.sh b/test/TEST-20-MAINPIDGAMES/testsuite.sh index b183ec9a6b..9471a5d734 100755 --- a/test/TEST-20-MAINPIDGAMES/testsuite.sh +++ b/test/TEST-20-MAINPIDGAMES/testsuite.sh @@ -1,6 +1,4 @@ #!/bin/bash -# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*- -# ex: ts=8 sw=4 sts=4 et filetype=sh set -ex set -o pipefail diff --git a/test/TEST-21-SYSUSERS/test.sh b/test/TEST-21-SYSUSERS/test.sh index b1049e720d..9f64e030b5 100755 --- a/test/TEST-21-SYSUSERS/test.sh +++ b/test/TEST-21-SYSUSERS/test.sh @@ -1,21 +1,19 @@ #!/bin/bash -# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*- -# ex: ts=8 sw=4 sts=4 et filetype=sh set -e TEST_DESCRIPTION="Sysuser-related tests" . $TEST_BASE_DIR/test-functions test_setup() { - mkdir -p $TESTDIR/etc/sysusers.d $TESTDIR/usr/lib/sysusers.d $TESTDIR/tmp + mkdir -p $TESTDIR/etc/sysusers.d $TESTDIR/usr/lib/sysusers.d $TESTDIR/tmp } prepare_testdir() { - rm -f $TESTDIR/etc/*{passwd,group,shadow} - for i in $1.initial-{passwd,group,shadow}; do - test -f $i && cp $i $TESTDIR/etc/${i#*.initial-} - done - return 0 + rm -f $TESTDIR/etc/*{passwd,group,shadow} + for i in $1.initial-{passwd,group,shadow}; do + test -f $i && cp $i $TESTDIR/etc/${i#*.initial-} + done + return 0 } preprocess() { @@ -30,92 +28,92 @@ preprocess() { compare() { if ! diff -u $TESTDIR/etc/passwd <(preprocess ${1%.*}.expected-passwd); then - echo "**** Unexpected output for $f" - exit 1 + echo "**** Unexpected output for $f" + exit 1 fi if ! diff -u $TESTDIR/etc/group <(preprocess ${1%.*}.expected-group); then - echo "**** Unexpected output for $f $2" - exit 1 + echo "**** Unexpected output for $f $2" + exit 1 fi } test_run() { - # ensure our build of systemd-sysusers is run - PATH=${BUILD_DIR}:$PATH + # ensure our build of systemd-sysusers is run + PATH=${BUILD_DIR}:$PATH - rm -f $TESTDIR/etc/sysusers.d/* $TESTDIR/usr/lib/sysusers.d/* + rm -f $TESTDIR/etc/sysusers.d/* $TESTDIR/usr/lib/sysusers.d/* - # happy tests - for f in test-*.input; do - echo "*** Running $f" - prepare_testdir ${f%.input} - cp $f $TESTDIR/usr/lib/sysusers.d/test.conf - systemd-sysusers --root=$TESTDIR + # happy tests + for f in test-*.input; do + echo "*** Running $f" + prepare_testdir ${f%.input} + cp $f $TESTDIR/usr/lib/sysusers.d/test.conf + systemd-sysusers --root=$TESTDIR - compare $f "" - done + compare $f "" + done - for f in test-*.input; do - echo "*** Running $f on stdin" - prepare_testdir ${f%.input} - touch $TESTDIR/etc/sysusers.d/test.conf - cat $f | systemd-sysusers --root=$TESTDIR - + for f in test-*.input; do + echo "*** Running $f on stdin" + prepare_testdir ${f%.input} + touch $TESTDIR/etc/sysusers.d/test.conf + cat $f | systemd-sysusers --root=$TESTDIR - - compare $f "on stdin" - done + compare $f "on stdin" + done - for f in test-*.input; do - echo "*** Running $f on stdin with --replace" - prepare_testdir ${f%.input} - touch $TESTDIR/etc/sysusers.d/test.conf - # this overrides test.conf which is masked on disk - cat $f | systemd-sysusers --root=$TESTDIR --replace=/etc/sysusers.d/test.conf - - # this should be ignored - cat test-1.input | systemd-sysusers --root=$TESTDIR --replace=/usr/lib/sysusers.d/test.conf - + for f in test-*.input; do + echo "*** Running $f on stdin with --replace" + prepare_testdir ${f%.input} + touch $TESTDIR/etc/sysusers.d/test.conf + # this overrides test.conf which is masked on disk + cat $f | systemd-sysusers --root=$TESTDIR --replace=/etc/sysusers.d/test.conf - + # this should be ignored + cat test-1.input | systemd-sysusers --root=$TESTDIR --replace=/usr/lib/sysusers.d/test.conf - - compare $f "on stdin with --replace" - done + compare $f "on stdin with --replace" + done - # test --inline - echo "*** Testing --inline" - prepare_testdir - # copy a random file to make sure it is ignored - cp $f $TESTDIR/etc/sysusers.d/confuse.conf - systemd-sysusers --root=$TESTDIR --inline \ - "u u1 222 - - /bin/zsh" \ - "g g1 111" + # test --inline + echo "*** Testing --inline" + prepare_testdir + # copy a random file to make sure it is ignored + cp $f $TESTDIR/etc/sysusers.d/confuse.conf + systemd-sysusers --root=$TESTDIR --inline \ + "u u1 222 - - /bin/zsh" \ + "g g1 111" - compare inline "(--inline)" + compare inline "(--inline)" - # test --replace - echo "*** Testing --inline with --replace" - prepare_testdir - # copy a random file to make sure it is ignored - cp $f $TESTDIR/etc/sysusers.d/confuse.conf - systemd-sysusers --root=$TESTDIR \ - --inline \ - --replace=/etc/sysusers.d/confuse.conf \ - "u u1 222 - - /bin/zsh" \ - "g g1 111" + # test --replace + echo "*** Testing --inline with --replace" + prepare_testdir + # copy a random file to make sure it is ignored + cp $f $TESTDIR/etc/sysusers.d/confuse.conf + systemd-sysusers --root=$TESTDIR \ + --inline \ + --replace=/etc/sysusers.d/confuse.conf \ + "u u1 222 - - /bin/zsh" \ + "g g1 111" - compare inline "(--inline --replace=…)" + compare inline "(--inline --replace=…)" - rm -f $TESTDIR/etc/sysusers.d/* $TESTDIR/usr/lib/sysusers.d/* + rm -f $TESTDIR/etc/sysusers.d/* $TESTDIR/usr/lib/sysusers.d/* - # tests for error conditions - for f in unhappy-*.input; do - echo "*** Running test $f" - prepare_testdir ${f%.input} - cp $f $TESTDIR/usr/lib/sysusers.d/test.conf - systemd-sysusers --root=$TESTDIR 2> /dev/null - journalctl -t systemd-sysusers -o cat | tail -n1 > $TESTDIR/tmp/err - if ! diff -u $TESTDIR/tmp/err ${f%.*}.expected-err; then - echo "**** Unexpected error output for $f" - cat $TESTDIR/tmp/err - exit 1 - fi - done + # tests for error conditions + for f in unhappy-*.input; do + echo "*** Running test $f" + prepare_testdir ${f%.input} + cp $f $TESTDIR/usr/lib/sysusers.d/test.conf + systemd-sysusers --root=$TESTDIR 2> /dev/null + journalctl -t systemd-sysusers -o cat | tail -n1 > $TESTDIR/tmp/err + if ! diff -u $TESTDIR/tmp/err ${f%.*}.expected-err; then + echo "**** Unexpected error output for $f" + cat $TESTDIR/tmp/err + exit 1 + fi + done } do_test "$@" diff --git a/test/TEST-22-TMPFILES/test.sh b/test/TEST-22-TMPFILES/test.sh index 13e191bd92..5c509f63fb 100755 --- a/test/TEST-22-TMPFILES/test.sh +++ b/test/TEST-22-TMPFILES/test.sh @@ -1,6 +1,4 @@ #!/bin/bash -# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*- -# ex: ts=8 sw=4 sts=4 et filetype=sh set -e TEST_DESCRIPTION="Tmpfiles related tests" TEST_NO_QEMU=1 diff --git a/test/TEST-23-TYPE-EXEC/test.sh b/test/TEST-23-TYPE-EXEC/test.sh index 2e76451f5b..6ed22be366 100755 --- a/test/TEST-23-TYPE-EXEC/test.sh +++ b/test/TEST-23-TYPE-EXEC/test.sh @@ -1,6 +1,4 @@ #!/bin/bash -# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*- -# ex: ts=8 sw=4 sts=4 et filetype=sh set -e TEST_DESCRIPTION="test Type=exec" diff --git a/test/TEST-23-TYPE-EXEC/testsuite.sh b/test/TEST-23-TYPE-EXEC/testsuite.sh index 4f7cc44310..b161d97a7c 100755 --- a/test/TEST-23-TYPE-EXEC/testsuite.sh +++ b/test/TEST-23-TYPE-EXEC/testsuite.sh @@ -1,6 +1,4 @@ #!/bin/bash -# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*- -# ex: ts=8 sw=4 sts=4 et filetype=sh set -ex set -o pipefail diff --git a/test/TEST-24-UNIT-TESTS/test.sh b/test/TEST-24-UNIT-TESTS/test.sh index fc8c89fe0a..038303edf8 100755 --- a/test/TEST-24-UNIT-TESTS/test.sh +++ b/test/TEST-24-UNIT-TESTS/test.sh @@ -1,6 +1,4 @@ #!/bin/bash -# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*- -# ex: ts=8 sw=4 sts=4 et filetype=sh set -e TEST_DESCRIPTION="Run unit tests under containers" RUN_IN_UNPRIVILEGED_CONTAINER=yes diff --git a/test/TEST-24-UNIT-TESTS/testsuite.sh b/test/TEST-24-UNIT-TESTS/testsuite.sh index 7c7a068556..e33d04d043 100755 --- a/test/TEST-24-UNIT-TESTS/testsuite.sh +++ b/test/TEST-24-UNIT-TESTS/testsuite.sh @@ -1,6 +1,4 @@ #!/bin/bash -# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*- -# ex: ts=8 sw=4 sts=4 et filetype=sh #set -ex #set -o pipefail diff --git a/test/TEST-25-IMPORT/test.sh b/test/TEST-25-IMPORT/test.sh index 188e7233bb..7fe367c3be 100755 --- a/test/TEST-25-IMPORT/test.sh +++ b/test/TEST-25-IMPORT/test.sh @@ -1,6 +1,4 @@ #!/bin/bash -# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*- -# ex: ts=8 sw=4 sts=4 et filetype=sh set -e TEST_DESCRIPTION="test importd" diff --git a/test/TEST-25-IMPORT/testsuite.sh b/test/TEST-25-IMPORT/testsuite.sh index 2bb96f137d..380ba3d82d 100755 --- a/test/TEST-25-IMPORT/testsuite.sh +++ b/test/TEST-25-IMPORT/testsuite.sh @@ -1,6 +1,4 @@ #!/bin/bash -# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*- -# ex: ts=8 sw=4 sts=4 et filetype=sh set -ex set -o pipefail diff --git a/test/TEST-26-SETENV/test.sh b/test/TEST-26-SETENV/test.sh index fb9c18926f..9a2913d330 100755 --- a/test/TEST-26-SETENV/test.sh +++ b/test/TEST-26-SETENV/test.sh @@ -1,6 +1,4 @@ #!/bin/bash -# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*- -# ex: ts=8 sw=4 sts=4 et filetype=sh set -e TEST_DESCRIPTION="test setenv" diff --git a/test/TEST-26-SETENV/testsuite.sh b/test/TEST-26-SETENV/testsuite.sh index 2d93cb49c9..0abbf95326 100755 --- a/test/TEST-26-SETENV/testsuite.sh +++ b/test/TEST-26-SETENV/testsuite.sh @@ -1,6 +1,4 @@ #!/bin/bash -# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*- -# ex: ts=8 sw=4 sts=4 et filetype=sh set -ex set -o pipefail diff --git a/test/TEST-27-STDOUTFILE/test.sh b/test/TEST-27-STDOUTFILE/test.sh index 724dbef231..fb35f80ec1 100755 --- a/test/TEST-27-STDOUTFILE/test.sh +++ b/test/TEST-27-STDOUTFILE/test.sh @@ -1,6 +1,4 @@ #!/bin/bash -# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*- -# ex: ts=8 sw=4 sts=4 et filetype=sh set -e TEST_DESCRIPTION="test StandardOutput=file:" diff --git a/test/TEST-27-STDOUTFILE/testsuite.sh b/test/TEST-27-STDOUTFILE/testsuite.sh index 6975b7966f..2c813da720 100755 --- a/test/TEST-27-STDOUTFILE/testsuite.sh +++ b/test/TEST-27-STDOUTFILE/testsuite.sh @@ -1,13 +1,15 @@ #!/bin/bash -# -*- mode: shell-script; indent-tabs-mode: nil; sh-basic-offset: 4; -*- -# ex: ts=8 sw=4 sts=4 et filetype=sh set -ex set -o pipefail systemd-analyze log-level debug systemd-analyze log-target console -systemd-run --wait --unit=one -p StandardOutput=file:/tmp/stdout -p StandardError=file:/tmp/stderr -p Type=exec sh -c 'echo x ; echo y >&2' +systemd-run --wait --unit=one \ + -p StandardOutput=file:/tmp/stdout \ + -p StandardError=file:/tmp/stderr \ + -p Type=exec \ + sh -c 'echo x ; echo y >&2' cmp /tmp/stdout <&2' +systemd-run --wait --unit=two \ + -p StandardOutput=file:/tmp/stdout \ + -p StandardError=file:/tmp/stderr \ + -p Type=exec \ + sh -c 'echo z ; echo a >&2' cmp /tmp/stdout <&2' +systemd-run --wait --unit=three \ + -p StandardOutput=append:/tmp/stdout \ + -p StandardError=append:/tmp/stderr \ + -p Type=exec \ + sh -c 'echo b ; echo c >&2' cmp /tmp/stdout <mnt/cmdline.txt objcopy \ - --add-section .osrel=/etc/os-release --change-section-vma .osrel=0x20000 \ - --add-section .cmdline=mnt/cmdline.txt --change-section-vma .cmdline=0x30000 \ - --add-section .splash="$splash_bmp" --change-section-vma .splash=0x40000 \ - --add-section .linux=/boot/$(cat /etc/machine-id)/$(uname -r)/linux --change-section-vma .linux=0x2000000 \ - --add-section .initrd=/boot/$(cat /etc/machine-id)/$(uname -r)/initrd --change-section-vma .initrd=0x3000000 \ - "$boot_stub" mnt/EFI/Linux/linux-test.efi + --add-section .osrel=/etc/os-release --change-section-vma .osrel=0x20000 \ + --add-section .cmdline=mnt/cmdline.txt --change-section-vma .cmdline=0x30000 \ + --add-section .splash="$splash_bmp" --change-section-vma .splash=0x40000 \ + --add-section .linux=/boot/$(cat /etc/machine-id)/$(uname -r)/linux --change-section-vma .linux=0x2000000 \ + --add-section .initrd=/boot/$(cat /etc/machine-id)/$(uname -r)/initrd --change-section-vma .initrd=0x3000000 \ + "$boot_stub" mnt/EFI/Linux/linux-test.efi # install entries mkdir -p mnt/loader/entries diff --git a/test/test-functions b/test/test-functions index 6016fd21ac..50c6e96902 100644 --- a/test/test-functions +++ b/test/test-functions @@ -159,15 +159,15 @@ run_qemu() { exit 1 fi -if [[ "$LOOKS_LIKE_SUSE" ]]; then - PARAMS+="rd.hostonly=0" -elif [[ "$LOOKS_LIKE_ARCH" ]]; then - PARAMS+="rw" -else - PARAMS+="ro" -fi + if [[ "$LOOKS_LIKE_SUSE" ]]; then + PARAMS+="rd.hostonly=0" + elif [[ "$LOOKS_LIKE_ARCH" ]]; then + PARAMS+="rw" + else + PARAMS+="ro" + fi -KERNEL_APPEND="$PARAMS \ + KERNEL_APPEND="$PARAMS \ root=/dev/sda1 \ raid=noautodetect \ loglevel=2 \ @@ -1639,7 +1639,7 @@ do_test() { exit 0 fi -# Detect lib paths + # Detect lib paths [[ $libdir ]] || for libdir in /lib64 /lib; do [[ -d $libdir ]] && libdirs+=" $libdir" && break done diff --git a/tools/add-git-hook.sh b/tools/add-git-hook.sh index c1db99b18a..5b1bf17219 100755 --- a/tools/add-git-hook.sh +++ b/tools/add-git-hook.sh @@ -4,7 +4,7 @@ set -eu cd "$MESON_SOURCE_ROOT" if [ ! -f .git/hooks/pre-commit.sample -o -f .git/hooks/pre-commit ]; then - exit 2 # not needed + exit 2 # not needed fi cp -p .git/hooks/pre-commit.sample .git/hooks/pre-commit diff --git a/tools/check-directives.sh b/tools/check-directives.sh index 99f8f9d451..e8c6e60040 100755 --- a/tools/check-directives.sh +++ b/tools/check-directives.sh @@ -1,5 +1,4 @@ #!/bin/bash - set -e function generate_directives() { @@ -12,18 +11,18 @@ function generate_directives() { ret=0 if [[ $(generate_directives src/network/networkd-network-gperf.gperf | wc -l) -ne $(wc -l &2 - exit 2 - fi - found="$c" + if [ -n "$found" ]; then + echo 'Found multiple candidates, specify build directory with $BUILD_DIR' >&2 + exit 2 + fi + found="$c" done if [ -z "$found" ]; then - echo 'Specify build directory with $BUILD_DIR' >&2 - exit 1 + echo 'Specify build directory with $BUILD_DIR' >&2 + exit 1 fi echo "$(realpath $found)" diff --git a/tools/find-double-newline.sh b/tools/find-double-newline.sh index 6a6790b4b2..51204eb7c9 100755 --- a/tools/find-double-newline.sh +++ b/tools/find-double-newline.sh @@ -4,39 +4,38 @@ TOP=`git rev-parse --show-toplevel` case "$1" in + recdiff) + if [ "$2" = "" ] ; then + DIR="$TOP" + else + DIR="$2" + fi - recdiff) - if [ "$2" = "" ] ; then - DIR="$TOP" - else - DIR="$2" - fi + find $DIR -type f \( -name '*.[ch]' -o -name '*.xml' \) -exec $0 diff \{\} \; + ;; - find $DIR -type f \( -name '*.[ch]' -o -name '*.xml' \) -exec $0 diff \{\} \; - ;; + recpatch) + if [ "$2" = "" ] ; then + DIR="$TOP" + else + DIR="$2" + fi - recpatch) - if [ "$2" = "" ] ; then - DIR="$TOP" - else - DIR="$2" - fi + find $DIR -type f \( -name '*.[ch]' -o -name '*.xml' \) -exec $0 patch \{\} \; + ;; - find $DIR -type f \( -name '*.[ch]' -o -name '*.xml' \) -exec $0 patch \{\} \; - ;; + diff) + T=`mktemp` + sed '/^$/N;/^\n$/D' < "$2" > "$T" + diff -u "$2" "$T" + rm -f "$T" + ;; - diff) - T=`mktemp` - sed '/^$/N;/^\n$/D' < "$2" > "$T" - diff -u "$2" "$T" - rm -f "$T" - ;; + patch) + sed -i '/^$/N;/^\n$/D' "$2" + ;; - patch) - sed -i '/^$/N;/^\n$/D' "$2" - ;; - - *) - echo "Expected recdiff|recpatch|diff|patch as verb." >&2 - ;; + *) + echo "Expected recdiff|recpatch|diff|patch as verb." >&2 + ;; esac diff --git a/tools/find-tabs.sh b/tools/find-tabs.sh index e32eac8f32..95249f9c9c 100755 --- a/tools/find-tabs.sh +++ b/tools/find-tabs.sh @@ -4,39 +4,38 @@ TOP=`git rev-parse --show-toplevel` case "$1" in + recdiff) + if [ "$2" = "" ] ; then + DIR="$TOP" + else + DIR="$2" + fi - recdiff) - if [ "$2" = "" ] ; then - DIR="$TOP" - else - DIR="$2" - fi + find $DIR -type f \( -name '*.[ch]' -o -name '*.xml' \) -exec $0 diff \{\} \; + ;; - find $DIR -type f \( -name '*.[ch]' -o -name '*.xml' \) -exec $0 diff \{\} \; - ;; + recpatch) + if [ "$2" = "" ] ; then + DIR="$TOP" + else + DIR="$2" + fi - recpatch) - if [ "$2" = "" ] ; then - DIR="$TOP" - else - DIR="$2" - fi + find $DIR -type f \( -name '*.[ch]' -o -name '*.xml' \) -exec $0 patch \{\} \; + ;; - find $DIR -type f \( -name '*.[ch]' -o -name '*.xml' \) -exec $0 patch \{\} \; - ;; + diff) + T=`mktemp` + sed 's/\t/ /g' < "$2" > "$T" + diff -u "$2" "$T" + rm -f "$T" + ;; - diff) - T=`mktemp` - sed 's/\t/ /g' < "$2" > "$T" - diff -u "$2" "$T" - rm -f "$T" - ;; + patch) + sed -i 's/\t/ /g' "$2" + ;; - patch) - sed -i 's/\t/ /g' "$2" - ;; - - *) - echo "Expected recdiff|recpatch|diff|patch as verb." >&2 - ;; + *) + echo "Expected recdiff|recpatch|diff|patch as verb." >&2 + ;; esac diff --git a/tools/meson-apply-m4.sh b/tools/meson-apply-m4.sh index 6abe177ac5..5fad8cd94f 100755 --- a/tools/meson-apply-m4.sh +++ b/tools/meson-apply-m4.sh @@ -5,18 +5,18 @@ CONFIG=$1 TARGET=$2 if [ $# -ne 2 ]; then - echo 'Invalid number of arguments.' - exit 1 + echo 'Invalid number of arguments.' + exit 1 fi if [ ! -f $CONFIG ]; then - echo "$CONFIG not found." - exit 2 + echo "$CONFIG not found." + exit 2 fi if [ ! -f $TARGET ]; then - echo "$TARGET not found." - exit 3 + echo "$TARGET not found." + exit 3 fi DEFINES=$(awk '$1 == "#define" && $3 == "1" { printf "-D%s ", $2 }' $CONFIG) diff --git a/tools/meson-check-api-docs.sh b/tools/meson-check-api-docs.sh index a654368f9e..bd320562ad 100755 --- a/tools/meson-check-api-docs.sh +++ b/tools/meson-check-api-docs.sh @@ -1,5 +1,4 @@ #!/bin/sh - set -eu sd_good=0 @@ -8,27 +7,27 @@ udev_good=0 udev_total=0 for symbol in `nm -g --defined-only "$@" | grep " T " | cut -d" " -f3 | sort -u` ; do - if test -f ${MESON_BUILD_ROOT}/man/$symbol.3 ; then - echo "✓ Symbol $symbol() is documented." - good=1 - else - printf " \x1b[1;31mSymbol $symbol() lacks documentation.\x1b[0m\n" - good=0 - fi + if test -f ${MESON_BUILD_ROOT}/man/$symbol.3 ; then + echo "✓ Symbol $symbol() is documented." + good=1 + else + printf " \x1b[1;31mSymbol $symbol() lacks documentation.\x1b[0m\n" + good=0 + fi - case $symbol in - sd_*) - ((sd_good+=good)) - ((sd_total+=1)) - ;; - udev_*) - ((udev_good+=good)) - ((udev_total+=1)) - ;; - *) - echo 'unknown symbol prefix' - exit 1 - esac + case $symbol in + sd_*) + ((sd_good+=good)) + ((sd_total+=1)) + ;; + udev_*) + ((udev_good+=good)) + ((udev_total+=1)) + ;; + *) + echo 'unknown symbol prefix' + exit 1 + esac done echo "libsystemd: $sd_good/$sd_total libudev: $udev_good/$udev_total" diff --git a/tools/meson-check-help.sh b/tools/meson-check-help.sh index 69157105f2..a0e304ca9c 100755 --- a/tools/meson-check-help.sh +++ b/tools/meson-check-help.sh @@ -5,19 +5,19 @@ export SYSTEMD_LOG_LEVEL=info # output width if "$1" --help | grep -v 'default:' | grep -E -q '.{80}.'; then - echo "$(basename "$1") --help output is too wide:" - "$1" --help | awk 'length > 80' | grep -E --color=yes '.{80}' - exit 1 + echo "$(basename "$1") --help output is too wide:" + "$1" --help | awk 'length > 80' | grep -E --color=yes '.{80}' + exit 1 fi # no --help output to stdout if "$1" --help 2>&1 1>/dev/null | grep .; then - echo "$(basename "$1") --help prints to stderr" - exit 2 + echo "$(basename "$1") --help prints to stderr" + exit 2 fi # error output to stderr if ! "$1" --no-such-parameter 2>&1 1>/dev/null | grep -q .; then - echo "$(basename "$1") with an unknown parameter does not print to stderr" - exit 3 + echo "$(basename "$1") with an unknown parameter does not print to stderr" + exit 3 fi diff --git a/tools/meson-git-contrib.sh b/tools/meson-git-contrib.sh index 514daa0949..b40e97ba62 100755 --- a/tools/meson-git-contrib.sh +++ b/tools/meson-git-contrib.sh @@ -2,8 +2,8 @@ set -eu git shortlog -s `git describe --abbrev=0`.. | \ - cut -c8- | \ - sed 's/ / /g' | \ - awk '{ print $$0 "," }' | \ - sed -e 's/ / /g' | \ - sort -u + cut -c8- | \ + sed 's/ / /g' | \ + awk '{ print $$0 "," }' | \ + sed -e 's/ / /g' | \ + sort -u diff --git a/tools/meson-hwdb-update.sh b/tools/meson-hwdb-update.sh index 8bdc58ac7f..39efd75192 100755 --- a/tools/meson-hwdb-update.sh +++ b/tools/meson-hwdb-update.sh @@ -5,23 +5,23 @@ cd "$1" unset permissive if [ "${2:-}" = "-p" ]; then - permissive=1 - shift + permissive=1 + shift else - permissive=0 + permissive=0 fi if [ "${2:-}" != "-n" ]; then ( - [ -z "$permissive" ] || set +e - set -x + [ -z "$permissive" ] || set +e + set -x - curl -L -o usb.ids 'http://www.linux-usb.org/usb.ids' - curl -L -o pci.ids 'http://pci-ids.ucw.cz/v2.2/pci.ids' - curl -L -o ma-large.txt 'http://standards-oui.ieee.org/oui/oui.txt' - curl -L -o ma-medium.txt 'http://standards-oui.ieee.org/oui28/mam.txt' - curl -L -o ma-small.txt 'http://standards-oui.ieee.org/oui36/oui36.txt' - curl -L -o pnp_id_registry.html 'https://uefi.org/uefi-pnp-export' - curl -L -o acpi_id_registry.html 'https://uefi.org/uefi-acpi-export' + curl -L -o usb.ids 'http://www.linux-usb.org/usb.ids' + curl -L -o pci.ids 'http://pci-ids.ucw.cz/v2.2/pci.ids' + curl -L -o ma-large.txt 'http://standards-oui.ieee.org/oui/oui.txt' + curl -L -o ma-medium.txt 'http://standards-oui.ieee.org/oui28/mam.txt' + curl -L -o ma-small.txt 'http://standards-oui.ieee.org/oui36/oui36.txt' + curl -L -o pnp_id_registry.html 'https://uefi.org/uefi-pnp-export' + curl -L -o acpi_id_registry.html 'https://uefi.org/uefi-acpi-export' ) fi set -x diff --git a/tools/meson-make-symlink.sh b/tools/meson-make-symlink.sh index 501cd43d47..da0d13a341 100755 --- a/tools/meson-make-symlink.sh +++ b/tools/meson-make-symlink.sh @@ -6,7 +6,7 @@ set -eu mkdir -vp "$(dirname "${DESTDIR:-}$2")" if [ "$(dirname $1)" = . ]; then - ln -vfs -T "$1" "${DESTDIR:-}$2" + ln -vfs -T "$1" "${DESTDIR:-}$2" else - ln -vfs -T --relative "${DESTDIR:-}$1" "${DESTDIR:-}$2" + ln -vfs -T --relative "${DESTDIR:-}$1" "${DESTDIR:-}$2" fi diff --git a/tools/meson-vcs-tag.sh b/tools/meson-vcs-tag.sh index c8033d00a1..a8605b6bc9 100755 --- a/tools/meson-vcs-tag.sh +++ b/tools/meson-vcs-tag.sh @@ -8,8 +8,8 @@ tag="$2" fallback="$3" if [ -n "$tag" ]; then - echo "$tag" - exit 0 + echo "$tag" + exit 0 fi # Apparently git describe has a bug where it always considers the work-tree diff --git a/tools/oss-fuzz.sh b/tools/oss-fuzz.sh index 9a116be114..610bb9c235 100755 --- a/tools/oss-fuzz.sh +++ b/tools/oss-fuzz.sh @@ -29,7 +29,7 @@ mkdir -p $build fuzzflag="oss-fuzz=true" if [ -z "$FUZZING_ENGINE" ]; then - fuzzflag="llvm-fuzz=true" + fuzzflag="llvm-fuzz=true" fi meson $build -D$fuzzflag -Db_lundef=false @@ -38,7 +38,7 @@ ninja -C $build fuzzers # The seed corpus is a separate flat archive for each fuzzer, # with a fixed name ${fuzzer}_seed_corpus.zip. for d in "$(dirname "$0")/../test/fuzz/fuzz-"*; do - zip -jqr $OUT/$(basename "$d")_seed_corpus.zip "$d" + zip -jqr $OUT/$(basename "$d")_seed_corpus.zip "$d" done # get fuzz-dns-packet corpus diff --git a/travis-ci/managers/travis_wait.bash b/travis-ci/managers/travis_wait.bash index acf6ad15e4..59de6638d6 100644 --- a/travis-ci/managers/travis_wait.bash +++ b/travis-ci/managers/travis_wait.bash @@ -3,59 +3,59 @@ # as soon as Travis CI has started to provide an easy way to export the functions to bash scripts. travis_jigger() { - local cmd_pid="${1}" - shift - local timeout="${1}" - shift - local count=0 + local cmd_pid="${1}" + shift + local timeout="${1}" + shift + local count=0 - echo -e "\\n" + echo -e "\\n" - while [[ "${count}" -lt "${timeout}" ]]; do - count="$((count + 1))" - echo -ne "Still running (${count} of ${timeout}): ${*}\\r" - sleep 60 - done + while [[ "${count}" -lt "${timeout}" ]]; do + count="$((count + 1))" + echo -ne "Still running (${count} of ${timeout}): ${*}\\r" + sleep 60 + done - echo -e "\\n${ANSI_RED}Timeout (${timeout} minutes) reached. Terminating \"${*}\"${ANSI_RESET}\\n" - kill -9 "${cmd_pid}" + echo -e "\\n${ANSI_RED}Timeout (${timeout} minutes) reached. Terminating \"${*}\"${ANSI_RESET}\\n" + kill -9 "${cmd_pid}" } travis_wait() { - local timeout="${1}" + local timeout="${1}" - if [[ "${timeout}" =~ ^[0-9]+$ ]]; then - shift - else - timeout=20 - fi + if [[ "${timeout}" =~ ^[0-9]+$ ]]; then + shift + else + timeout=20 + fi - local cmd=("${@}") - local log_file="travis_wait_${$}.log" + local cmd=("${@}") + local log_file="travis_wait_${$}.log" - "${cmd[@]}" &>"${log_file}" & - local cmd_pid="${!}" + "${cmd[@]}" &>"${log_file}" & + local cmd_pid="${!}" - travis_jigger "${!}" "${timeout}" "${cmd[@]}" & - local jigger_pid="${!}" - local result + travis_jigger "${!}" "${timeout}" "${cmd[@]}" & + local jigger_pid="${!}" + local result - { - set +e - wait "${cmd_pid}" 2>/dev/null - result="${?}" - ps -p"${jigger_pid}" &>/dev/null && kill "${jigger_pid}" - set -e - } + { + set +e + wait "${cmd_pid}" 2>/dev/null + result="${?}" + ps -p"${jigger_pid}" &>/dev/null && kill "${jigger_pid}" + set -e + } - if [[ "${result}" -eq 0 ]]; then - echo -e "\\n${ANSI_GREEN}The command ${cmd[*]} exited with ${result}.${ANSI_RESET}" - else - echo -e "\\n${ANSI_RED}The command ${cmd[*]} exited with ${result}.${ANSI_RESET}" - fi + if [[ "${result}" -eq 0 ]]; then + echo -e "\\n${ANSI_GREEN}The command ${cmd[*]} exited with ${result}.${ANSI_RESET}" + else + echo -e "\\n${ANSI_RED}The command ${cmd[*]} exited with ${result}.${ANSI_RESET}" + fi - echo -e "\\n${ANSI_GREEN}Log:${ANSI_RESET}\\n" - cat "${log_file}" + echo -e "\\n${ANSI_GREEN}Log:${ANSI_RESET}\\n" + cat "${log_file}" - return "${result}" + return "${result}" } diff --git a/travis-ci/managers/xenial.sh b/travis-ci/managers/xenial.sh index af60114d34..4822bdd4b7 100755 --- a/travis-ci/managers/xenial.sh +++ b/travis-ci/managers/xenial.sh @@ -1,5 +1,4 @@ #!/bin/bash - set -e set -x diff --git a/travis-ci/scripts/build-docker-image.sh b/travis-ci/scripts/build-docker-image.sh index a18bf5fa85..69f9d69ce7 100755 --- a/travis-ci/scripts/build-docker-image.sh +++ b/travis-ci/scripts/build-docker-image.sh @@ -7,7 +7,7 @@ echo -e "\n\033[33;1mBuilding docker image: coverity-$TRAVIS_COMMIT.\033[0m" docker build \ ---build-arg DOCKER_USER=$USER \ ---build-arg DOCKER_USER_UID=`id -u` \ ---build-arg DOCKER_USER_GID=`id -g` \ ---force-rm -t coverity-${TRAVIS_COMMIT} --pull=true . + --build-arg DOCKER_USER=$USER \ + --build-arg DOCKER_USER_UID=`id -u` \ + --build-arg DOCKER_USER_GID=`id -g` \ + --force-rm -t coverity-${TRAVIS_COMMIT} --pull=true . diff --git a/travis-ci/tools/get-coverity.sh b/travis-ci/tools/get-coverity.sh index d364b541e2..3634e57ad6 100755 --- a/travis-ci/tools/get-coverity.sh +++ b/travis-ci/tools/get-coverity.sh @@ -18,18 +18,18 @@ sudo apt-get update && sudo apt-get -y install wget # Get coverity tool if [ ! -d $TOOL_BASE ]; then - # Download Coverity Scan Analysis Tool - if [ ! -e $TOOL_ARCHIVE ]; then - echo -e "\033[33;1mDownloading Coverity Scan Analysis Tool...\033[0m" - wget -nv -O $TOOL_ARCHIVE $TOOL_URL --post-data "project=$COVERITY_SCAN_PROJECT_NAME&token=$COVERITY_SCAN_TOKEN" - fi + # Download Coverity Scan Analysis Tool + if [ ! -e $TOOL_ARCHIVE ]; then + echo -e "\033[33;1mDownloading Coverity Scan Analysis Tool...\033[0m" + wget -nv -O $TOOL_ARCHIVE $TOOL_URL --post-data "project=$COVERITY_SCAN_PROJECT_NAME&token=$COVERITY_SCAN_TOKEN" + fi - # Extract Coverity Scan Analysis Tool - echo -e "\033[33;1mExtracting Coverity Scan Analysis Tool...\033[0m" - mkdir -p $TOOL_BASE - pushd $TOOL_BASE - tar xzf $TOOL_ARCHIVE - popd + # Extract Coverity Scan Analysis Tool + echo -e "\033[33;1mExtracting Coverity Scan Analysis Tool...\033[0m" + mkdir -p $TOOL_BASE + pushd $TOOL_BASE + tar xzf $TOOL_ARCHIVE + popd fi echo -e "\033[33;1mCoverity Scan Analysis Tool can be found at $TOOL_BASE ...\033[0m" diff --git a/units/meson-add-wants.sh b/units/meson-add-wants.sh index e2b260398c..a483d75b86 100755 --- a/units/meson-add-wants.sh +++ b/units/meson-add-wants.sh @@ -6,23 +6,23 @@ target="$2" unit="$3" case "$target" in - */?*) # a path, but not just a slash at the end - dir="${DESTDIR:-}${target}" - ;; - *) - dir="${DESTDIR:-}${unitdir}/${target}" - ;; + */?*) # a path, but not just a slash at the end + dir="${DESTDIR:-}${target}" + ;; + *) + dir="${DESTDIR:-}${unitdir}/${target}" + ;; esac unitpath="${DESTDIR:-}${unitdir}/${unit}" case "$target" in - */) - mkdir -vp -m 0755 "$dir" - ;; - *) - mkdir -vp -m 0755 "$(dirname "$dir")" - ;; + */) + mkdir -vp -m 0755 "$dir" + ;; + *) + mkdir -vp -m 0755 "$(dirname "$dir")" + ;; esac ln -vfs --relative "$unitpath" "$dir" diff --git a/xorg/50-systemd-user.sh b/xorg/50-systemd-user.sh index 5588185c50..bfee5f691c 100755 --- a/xorg/50-systemd-user.sh +++ b/xorg/50-systemd-user.sh @@ -3,5 +3,5 @@ systemctl --user import-environment DISPLAY XAUTHORITY if command -v dbus-update-activation-environment >/dev/null 2>&1; then - dbus-update-activation-environment DISPLAY XAUTHORITY + dbus-update-activation-environment DISPLAY XAUTHORITY fi From 843cfcb15c1f55c37cc1baae3e12210287c1f5c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Fri, 5 Apr 2019 11:39:14 +0200 Subject: [PATCH 3/5] shell-completion: use 4 space indentation too The same as in other places, indentation levels were all over the place. --- shell-completion/bash/bootctl | 125 +++-- shell-completion/bash/busctl | 320 ++++++------ shell-completion/bash/coredumpctl | 108 ++-- shell-completion/bash/hostnamectl | 72 +-- shell-completion/bash/journalctl | 202 ++++---- shell-completion/bash/kernel-install | 47 +- shell-completion/bash/localectl | 122 ++--- shell-completion/bash/loginctl | 172 +++---- shell-completion/bash/machinectl | 158 +++--- shell-completion/bash/networkctl | 74 +-- shell-completion/bash/portablectl | 159 +++--- shell-completion/bash/resolvectl | 299 ++++++----- shell-completion/bash/systemctl.in | 474 +++++++++--------- shell-completion/bash/systemd-analyze | 272 +++++----- shell-completion/bash/systemd-cat | 54 +- shell-completion/bash/systemd-cgls | 69 ++- shell-completion/bash/systemd-cgtop | 59 ++- shell-completion/bash/systemd-delta | 59 ++- shell-completion/bash/systemd-detect-virt | 23 +- shell-completion/bash/systemd-id128 | 88 ++-- shell-completion/bash/systemd-nspawn | 293 +++++------ shell-completion/bash/systemd-path | 58 +-- shell-completion/bash/systemd-resolve | 100 ++-- shell-completion/bash/systemd-run | 10 +- shell-completion/bash/timedatectl | 106 ++-- shell-completion/bash/udevadm | 397 ++++++++------- shell-completion/zsh/_coredumpctl | 8 +- shell-completion/zsh/_kernel-install | 2 - shell-completion/zsh/_loginctl | 190 +++---- shell-completion/zsh/_machinectl | 176 +++---- shell-completion/zsh/_networkctl | 40 +- .../zsh/_sd_hosts_or_user_at_host | 4 +- shell-completion/zsh/_sd_machines | 8 +- shell-completion/zsh/_systemctl.in | 466 ++++++++--------- shell-completion/zsh/_systemd | 18 +- shell-completion/zsh/_systemd-analyze | 100 ++-- shell-completion/zsh/_systemd-resolve | 41 +- shell-completion/zsh/_systemd-run | 68 +-- shell-completion/zsh/_udevadm | 1 - 39 files changed, 2518 insertions(+), 2524 deletions(-) diff --git a/shell-completion/bash/bootctl b/shell-completion/bash/bootctl index 64bff4f879..7e568dc3bd 100644 --- a/shell-completion/bash/bootctl +++ b/shell-completion/bash/bootctl @@ -3,7 +3,6 @@ # # This file is part of systemd. # -# # systemd is free software; you can redistribute it and/or modify it # under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation; either version 2.1 of the License, or @@ -18,79 +17,79 @@ # along with systemd; If not, see . __contains_word () { - local w word=$1; shift - for w in "$@"; do - [[ $w = "$word" ]] && return - done + local w word=$1; shift + for w in "$@"; do + [[ $w = "$word" ]] && return + done } __get_entry_ids() { - bootctl --no-pager list 2>/dev/null | { while read -r a b; do [[ $a == 'id:' ]] && echo " $b"; done } + bootctl --no-pager list 2>/dev/null | { while read -r a b; do [[ $a == 'id:' ]] && echo " $b"; done } } _bootctl() { - local i verb comps - local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} - local -A OPTS=( - [STANDALONE]='-h --help --no-variables -p --print-path --version --no-pager' - [ARG]='--path' - ) + local i verb comps + local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} + local -A OPTS=( + [STANDALONE]='-h --help --no-variables -p --print-path --version --no-pager' + [ARG]='--path' + ) - if __contains_word "$prev" ${OPTS[ARG]}; then - case $prev in - --path) - if [[ -z $cur ]]; then - comps=$(compgen -A directory -- "/" ) - else - comps=$(compgen -A directory -- "$cur" ) - fi - compopt -o filenames - ;; - esac - COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) - return 0 - fi - - if [[ "$cur" = -* ]]; then - COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) - return 0 - fi - - local -A VERBS=( - [STANDALONE]='help install list remove status update' - [BOOTENTRY]='set-default set-oneshot' - ) - - for ((i=0; i < COMP_CWORD; i++)); do - if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]}; then - verb=${COMP_WORDS[i]} - break - fi - done - - if [[ -z $verb ]]; then - comps=${VERBS[*]} - elif __contains_word "$verb" ${VERBS[STANDALONE]}; then - comps='' - elif __contains_word "$verb" ${VERBS[BOOTENTRY]}; then - name= - for ((i++; i < COMP_CWORD; i++)); do - if ! __contains_word "${COMP_WORDS[i]}" ${OPTS[*]} ${VERBS[*]} && - ! __contains_word "${COMP_WORDS[i-1]}" ${OPTS[ARG]}; then - name=${COMP_WORDS[i]} - break; - fi - done - - if [[ -z $name ]]; then - comps=$( __get_entry_ids ) + if __contains_word "$prev" ${OPTS[ARG]}; then + case $prev in + --path) + if [[ -z $cur ]]; then + comps=$(compgen -A directory -- "/" ) else - comps='' + comps=$(compgen -A directory -- "$cur" ) fi - fi - + compopt -o filenames + ;; + esac COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) return 0 + fi + + if [[ "$cur" = -* ]]; then + COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) + return 0 + fi + + local -A VERBS=( + [STANDALONE]='help install list remove status update' + [BOOTENTRY]='set-default set-oneshot' + ) + + for ((i=0; i < COMP_CWORD; i++)); do + if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]}; then + verb=${COMP_WORDS[i]} + break + fi + done + + if [[ -z $verb ]]; then + comps=${VERBS[*]} + elif __contains_word "$verb" ${VERBS[STANDALONE]}; then + comps='' + elif __contains_word "$verb" ${VERBS[BOOTENTRY]}; then + name= + for ((i++; i < COMP_CWORD; i++)); do + if ! __contains_word "${COMP_WORDS[i]}" ${OPTS[*]} ${VERBS[*]} && + ! __contains_word "${COMP_WORDS[i-1]}" ${OPTS[ARG]}; then + name=${COMP_WORDS[i]} + break; + fi + done + + if [[ -z $name ]]; then + comps=$( __get_entry_ids ) + else + comps='' + fi + fi + + COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) + return 0 } complete -F _bootctl bootctl diff --git a/shell-completion/bash/busctl b/shell-completion/bash/busctl index 63a7644cbf..3be0600b9b 100644 --- a/shell-completion/bash/busctl +++ b/shell-completion/bash/busctl @@ -17,191 +17,191 @@ # along with systemd; If not, see . __contains_word () { - local w word=$1; shift - for w in "$@"; do - [[ $w = "$word" ]] && return - done + local w word=$1; shift + for w in "$@"; do + [[ $w = "$word" ]] && return + done } __get_machines() { - local a b - machinectl list --no-legend --no-pager 2>/dev/null | - { while read a b; do echo " $a"; done; }; + local a b + machinectl list --no-legend --no-pager 2>/dev/null | + { while read a b; do echo " $a"; done; }; } __get_busnames() { - local mode=$1 - local a b - busctl $mode list --no-legend --no-pager 2>/dev/null | - { while read a b; do echo " $a"; done; }; + local mode=$1 + local a b + busctl $mode list --no-legend --no-pager 2>/dev/null | + { while read a b; do echo " $a"; done; }; } __get_objects() { - local mode=$1 - local busname=$2 - local a b - busctl $mode tree --list --no-legend --no-pager $busname 2>/dev/null | - { while read a b; do echo " $a"; done; }; + local mode=$1 + local busname=$2 + local a b + busctl $mode tree --list --no-legend --no-pager $busname 2>/dev/null | + { while read a b; do echo " $a"; done; }; } __get_interfaces() { - local mode=$1 - local busname=$2 - local path=$3 - local a b c - busctl $mode introspect --list --no-legend --no-pager $busname $path 2>/dev/null | - { while read a b c; do [[ "$b" == "interface" ]] && echo " $a"; done; }; + local mode=$1 + local busname=$2 + local path=$3 + local a b c + busctl $mode introspect --list --no-legend --no-pager $busname $path 2>/dev/null | + { while read a b c; do [[ "$b" == "interface" ]] && echo " $a"; done; }; } __get_members() { - local mode=$1 - local busname=$2 - local path=$3 - local interface=$4 - local type=$5 - local flags=$6 - local a b c d e - busctl $mode introspect --list --no-legend --no-pager $busname $path $interface 2>/dev/null | - sed -e 's/^\.//' | - { while read a b c d e; do [[ "$b" == "$type" && ( -z $flags || "$e" == "$flags" ) ]] && echo " $a"; done; }; + local mode=$1 + local busname=$2 + local path=$3 + local interface=$4 + local type=$5 + local flags=$6 + local a b c d e + busctl $mode introspect --list --no-legend --no-pager $busname $path $interface 2>/dev/null | + sed -e 's/^\.//' | + { while read a b c d e; do [[ "$b" == "$type" && ( -z $flags || "$e" == "$flags" ) ]] && echo " $a"; done; }; } __get_signature() { - local mode=$1 - local busname=$2 - local path=$3 - local interface=$4 - local member=$5 - local a b c d - busctl $mode introspect --list --no-legend --no-pager $busname $path $interface 2>/dev/null | - sed -e 's/^\.//' | { while read a b c d; do [[ "$a" == "$member" && "$c" != '-' ]] && echo " \"$c\""; done; }; + local mode=$1 + local busname=$2 + local path=$3 + local interface=$4 + local member=$5 + local a b c d + busctl $mode introspect --list --no-legend --no-pager $busname $path $interface 2>/dev/null | + sed -e 's/^\.//' | { while read a b c d; do [[ "$a" == "$member" && "$c" != '-' ]] && echo " \"$c\""; done; }; } _busctl() { - local i n verb comps mode - local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} - local -A OPTS=( - [STANDALONE]='-h --help --version --no-pager --no-legend --system --user - --show-machine --unique --acquired --activatable --list - -q --quiet --verbose --expect-reply=no --auto-start=no - --allow-interactive-authorization=no --augment-creds=no - --watch-bind=yes -j' - [ARG]='--address -H --host -M --machine --match --timeout --size --json - --destination' - ) + local i n verb comps mode + local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} + local -A OPTS=( + [STANDALONE]='-h --help --version --no-pager --no-legend --system --user + --show-machine --unique --acquired --activatable --list + -q --quiet --verbose --expect-reply=no --auto-start=no + --allow-interactive-authorization=no --augment-creds=no + --watch-bind=yes -j' + [ARG]='--address -H --host -M --machine --match --timeout --size --json + --destination' + ) - if __contains_word "--user" ${COMP_WORDS[*]}; then - mode=--user - else - mode=--system - fi - - if __contains_word "$prev" ${OPTS[ARG]}; then - case $prev in - --host|-H) - comps=$(compgen -A hostname) - ;; - --machine|-M) - comps=$( __get_machines ) - ;; - --json) - comps=$( busctl --json=help 2>/dev/null ) - ;; - --destination) - comps=$( __get_busnames $mode ) - ;; - esac - COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) - return 0 - fi - - if [[ "$cur" = -* ]]; then - COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) - return 0 - fi - - local -A VERBS=( - [STANDALONE]='list help' - [BUSNAME]='status monitor capture tree' - [OBJECT]='introspect' - [METHOD]='call' - [EMIT]='emit' - [PROPERTY_GET]='get-property' - [PROPERTY_SET]='set-property' - ) - - for ((i=0; i < COMP_CWORD; i++)); do - if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]} && - ! __contains_word "${COMP_WORDS[i-1]}" ${OPTS[ARG]}; then - verb=${COMP_WORDS[i]} - break - fi - done - - n=$(($COMP_CWORD - $i)) - - if [[ -z $verb ]]; then - comps=${VERBS[*]} - elif __contains_word "$verb" ${VERBS[STANDALONE]}; then - comps='' - elif __contains_word "$verb" ${VERBS[BUSNAME]}; then - comps=$( __get_busnames $mode) - elif __contains_word "$verb" ${VERBS[OBJECT]}; then - if [[ $n -eq 1 ]] ; then - comps=$( __get_busnames $mode) - elif [[ $n -eq 2 ]] ; then - comps=$( __get_objects $mode ${COMP_WORDS[COMP_CWORD-1]}) - elif [[ $n -eq 3 ]] ; then - comps=$( __get_interfaces $mode ${COMP_WORDS[COMP_CWORD-2]} ${COMP_WORDS[COMP_CWORD-1]}) - else - comps='' - fi - elif __contains_word "$verb" ${VERBS[METHOD]}; then - if [[ $n -eq 1 ]] ; then - comps=$( __get_busnames $mode) - elif [[ $n -eq 2 ]] ; then - comps=$( __get_objects $mode ${COMP_WORDS[COMP_CWORD-1]}) - elif [[ $n -eq 3 ]] ; then - comps=$( __get_interfaces $mode ${COMP_WORDS[COMP_CWORD-2]} ${COMP_WORDS[COMP_CWORD-1]}) - elif [[ $n -eq 4 ]] ; then - comps=$( __get_members $mode ${COMP_WORDS[COMP_CWORD-3]} ${COMP_WORDS[COMP_CWORD-2]} ${COMP_WORDS[COMP_CWORD-1]} method) - elif [[ $n -eq 5 ]] ; then - comps=$( __get_signature $mode ${COMP_WORDS[COMP_CWORD-4]} ${COMP_WORDS[COMP_CWORD-3]} ${COMP_WORDS[COMP_CWORD-2]} ${COMP_WORDS[COMP_CWORD-1]}) - else - comps='' - fi - elif __contains_word "$verb" ${VERBS[EMIT]}; then - comps='' - elif __contains_word "$verb" ${VERBS[PROPERTY_GET]}; then - if [[ $n -eq 1 ]] ; then - comps=$( __get_busnames $mode) - elif [[ $n -eq 2 ]] ; then - comps=$( __get_objects $mode ${COMP_WORDS[COMP_CWORD-1]}) - elif [[ $n -eq 3 ]] ; then - comps=$( __get_interfaces $mode ${COMP_WORDS[COMP_CWORD-2]} ${COMP_WORDS[COMP_CWORD-1]}) - elif [[ $n -eq 4 ]] ; then - comps=$( __get_members $mode ${COMP_WORDS[COMP_CWORD-3]} ${COMP_WORDS[COMP_CWORD-2]} ${COMP_WORDS[COMP_CWORD-1]} property) - else - comps='' - fi - elif __contains_word "$verb" ${VERBS[PROPERTY_SET]}; then - if [[ $n -eq 1 ]] ; then - comps=$( __get_busnames $mode) - elif [[ $n -eq 2 ]] ; then - comps=$( __get_objects $mode ${COMP_WORDS[COMP_CWORD-1]}) - elif [[ $n -eq 3 ]] ; then - comps=$( __get_interfaces $mode ${COMP_WORDS[COMP_CWORD-2]} ${COMP_WORDS[COMP_CWORD-1]}) - elif [[ $n -eq 4 ]] ; then - comps=$( __get_members $mode ${COMP_WORDS[COMP_CWORD-3]} ${COMP_WORDS[COMP_CWORD-2]} ${COMP_WORDS[COMP_CWORD-1]} property writable) - elif [[ $n -eq 5 ]] ; then - comps=$( __get_signature $mode ${COMP_WORDS[COMP_CWORD-4]} ${COMP_WORDS[COMP_CWORD-3]} ${COMP_WORDS[COMP_CWORD-2]} ${COMP_WORDS[COMP_CWORD-1]}) - else - comps='' - fi - fi + if __contains_word "--user" ${COMP_WORDS[*]}; then + mode=--user + else + mode=--system + fi + if __contains_word "$prev" ${OPTS[ARG]}; then + case $prev in + --host|-H) + comps=$(compgen -A hostname) + ;; + --machine|-M) + comps=$( __get_machines ) + ;; + --json) + comps=$( busctl --json=help 2>/dev/null ) + ;; + --destination) + comps=$( __get_busnames $mode ) + ;; + esac COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) return 0 + fi + + if [[ "$cur" = -* ]]; then + COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) + return 0 + fi + + local -A VERBS=( + [STANDALONE]='list help' + [BUSNAME]='status monitor capture tree' + [OBJECT]='introspect' + [METHOD]='call' + [EMIT]='emit' + [PROPERTY_GET]='get-property' + [PROPERTY_SET]='set-property' + ) + + for ((i=0; i < COMP_CWORD; i++)); do + if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]} && + ! __contains_word "${COMP_WORDS[i-1]}" ${OPTS[ARG]}; then + verb=${COMP_WORDS[i]} + break + fi + done + + n=$(($COMP_CWORD - $i)) + + if [[ -z $verb ]]; then + comps=${VERBS[*]} + elif __contains_word "$verb" ${VERBS[STANDALONE]}; then + comps='' + elif __contains_word "$verb" ${VERBS[BUSNAME]}; then + comps=$( __get_busnames $mode) + elif __contains_word "$verb" ${VERBS[OBJECT]}; then + if [[ $n -eq 1 ]] ; then + comps=$( __get_busnames $mode) + elif [[ $n -eq 2 ]] ; then + comps=$( __get_objects $mode ${COMP_WORDS[COMP_CWORD-1]}) + elif [[ $n -eq 3 ]] ; then + comps=$( __get_interfaces $mode ${COMP_WORDS[COMP_CWORD-2]} ${COMP_WORDS[COMP_CWORD-1]}) + else + comps='' + fi + elif __contains_word "$verb" ${VERBS[METHOD]}; then + if [[ $n -eq 1 ]] ; then + comps=$( __get_busnames $mode) + elif [[ $n -eq 2 ]] ; then + comps=$( __get_objects $mode ${COMP_WORDS[COMP_CWORD-1]}) + elif [[ $n -eq 3 ]] ; then + comps=$( __get_interfaces $mode ${COMP_WORDS[COMP_CWORD-2]} ${COMP_WORDS[COMP_CWORD-1]}) + elif [[ $n -eq 4 ]] ; then + comps=$( __get_members $mode ${COMP_WORDS[COMP_CWORD-3]} ${COMP_WORDS[COMP_CWORD-2]} ${COMP_WORDS[COMP_CWORD-1]} method) + elif [[ $n -eq 5 ]] ; then + comps=$( __get_signature $mode ${COMP_WORDS[COMP_CWORD-4]} ${COMP_WORDS[COMP_CWORD-3]} ${COMP_WORDS[COMP_CWORD-2]} ${COMP_WORDS[COMP_CWORD-1]}) + else + comps='' + fi + elif __contains_word "$verb" ${VERBS[EMIT]}; then + comps='' + elif __contains_word "$verb" ${VERBS[PROPERTY_GET]}; then + if [[ $n -eq 1 ]] ; then + comps=$( __get_busnames $mode) + elif [[ $n -eq 2 ]] ; then + comps=$( __get_objects $mode ${COMP_WORDS[COMP_CWORD-1]}) + elif [[ $n -eq 3 ]] ; then + comps=$( __get_interfaces $mode ${COMP_WORDS[COMP_CWORD-2]} ${COMP_WORDS[COMP_CWORD-1]}) + elif [[ $n -eq 4 ]] ; then + comps=$( __get_members $mode ${COMP_WORDS[COMP_CWORD-3]} ${COMP_WORDS[COMP_CWORD-2]} ${COMP_WORDS[COMP_CWORD-1]} property) + else + comps='' + fi + elif __contains_word "$verb" ${VERBS[PROPERTY_SET]}; then + if [[ $n -eq 1 ]] ; then + comps=$( __get_busnames $mode) + elif [[ $n -eq 2 ]] ; then + comps=$( __get_objects $mode ${COMP_WORDS[COMP_CWORD-1]}) + elif [[ $n -eq 3 ]] ; then + comps=$( __get_interfaces $mode ${COMP_WORDS[COMP_CWORD-2]} ${COMP_WORDS[COMP_CWORD-1]}) + elif [[ $n -eq 4 ]] ; then + comps=$( __get_members $mode ${COMP_WORDS[COMP_CWORD-3]} ${COMP_WORDS[COMP_CWORD-2]} ${COMP_WORDS[COMP_CWORD-1]} property writable) + elif [[ $n -eq 5 ]] ; then + comps=$( __get_signature $mode ${COMP_WORDS[COMP_CWORD-4]} ${COMP_WORDS[COMP_CWORD-3]} ${COMP_WORDS[COMP_CWORD-2]} ${COMP_WORDS[COMP_CWORD-1]}) + else + comps='' + fi + fi + + COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) + return 0 } complete -F _busctl busctl diff --git a/shell-completion/bash/coredumpctl b/shell-completion/bash/coredumpctl index f73fd272f5..d4366df0d0 100644 --- a/shell-completion/bash/coredumpctl +++ b/shell-completion/bash/coredumpctl @@ -19,10 +19,10 @@ # along with systemd; If not, see . __contains_word () { - local w word=$1; shift - for w in "$@"; do - [[ $w = "$word" ]] && return - done + local w word=$1; shift + for w in "$@"; do + [[ $w = "$word" ]] && return + done } __journal_fields=(MESSAGE{,_ID} PRIORITY CODE_{FILE,LINE,FUNC} @@ -36,59 +36,59 @@ __journal_fields=(MESSAGE{,_ID} PRIORITY CODE_{FILE,LINE,FUNC} _UDEV_{SYSNAME,DEVNODE,DEVLINK} __CURSOR __{REALTIME,MONOTONIC}_TIMESTAMP) _coredumpctl() { - local i verb comps - local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} - local OPTS='-h --help --version --no-pager --no-legend -o --output -F --field -1 - -r --reverse -S --since -U --until -D --directory -q --quiet --debugger' + local i verb comps + local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} + local OPTS='-h --help --version --no-pager --no-legend -o --output -F --field -1 + -r --reverse -S --since -U --until -D --directory -q --quiet --debugger' - local -A VERBS=( - [LIST]='list info' - [DUMP]='dump debug' - ) + local -A VERBS=( + [LIST]='list info' + [DUMP]='dump debug' + ) - if __contains_word "$prev" '--output -o'; then - comps=$( compgen -A file -- "$cur" ) - compopt -o filenames - elif __contains_word "$prev" '-D --directory'; then - comps=$( compgen -A directory -- "$cur" ) - compopt -o filenames - elif __contains_word "$prev" '--debugger'; then - comps=$( compgen -A command -- "$cur" ) - compopt -o filenames - elif __contains_word "$prev" '--field -F'; then - comps=$( compgen -W '${__journal_fields[*]}' -- "$cur" ) - elif [[ $cur = -* ]]; then - comps=${OPTS} - elif __contains_word "$prev" ${VERBS[*]} && - ! __contains_word ${COMP_WORDS[COMP_CWORD-2]} \ - '--output -o -D --directory -F --field --debugger'; then - compopt -o nospace - COMPREPLY=( $(compgen -W '${__journal_fields[*]}' -S= -- "$cur") ) - return 0 - elif [[ $cur = *=* ]]; then - mapfile -t field_vals < <(coredumpctl -F "${prev%=}" 2>/dev/null) - COMPREPLY=( $(compgen -W '${field_vals[*]}' -- "${cur#=}") ) - return 0 - elif [[ $prev = '=' ]]; then - mapfile -t field_vals < <(coredumpctl -F "${COMP_WORDS[COMP_CWORD-2]}" 2>/dev/null) - comps=${field_vals[*]} - else - for ((i=0; i <= COMP_CWORD; i++)); do - if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]}; then - verb=${COMP_WORDS[i]} - break - fi - done - - if [[ -z $verb ]]; then - comps=${VERBS[*]} - elif __contains_word "$verb" ${VERBS[LIST]} ${VERBS[DUMP]}; then - comps='' - fi - fi - - COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) + if __contains_word "$prev" '--output -o'; then + comps=$( compgen -A file -- "$cur" ) + compopt -o filenames + elif __contains_word "$prev" '-D --directory'; then + comps=$( compgen -A directory -- "$cur" ) + compopt -o filenames + elif __contains_word "$prev" '--debugger'; then + comps=$( compgen -A command -- "$cur" ) + compopt -o filenames + elif __contains_word "$prev" '--field -F'; then + comps=$( compgen -W '${__journal_fields[*]}' -- "$cur" ) + elif [[ $cur = -* ]]; then + comps=${OPTS} + elif __contains_word "$prev" ${VERBS[*]} && + ! __contains_word ${COMP_WORDS[COMP_CWORD-2]} \ + '--output -o -D --directory -F --field --debugger'; then + compopt -o nospace + COMPREPLY=( $(compgen -W '${__journal_fields[*]}' -S= -- "$cur") ) return 0 + elif [[ $cur = *=* ]]; then + mapfile -t field_vals < <(coredumpctl -F "${prev%=}" 2>/dev/null) + COMPREPLY=( $(compgen -W '${field_vals[*]}' -- "${cur#=}") ) + return 0 + elif [[ $prev = '=' ]]; then + mapfile -t field_vals < <(coredumpctl -F "${COMP_WORDS[COMP_CWORD-2]}" 2>/dev/null) + comps=${field_vals[*]} + else + for ((i=0; i <= COMP_CWORD; i++)); do + if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]}; then + verb=${COMP_WORDS[i]} + break + fi + done + + if [[ -z $verb ]]; then + comps=${VERBS[*]} + elif __contains_word "$verb" ${VERBS[LIST]} ${VERBS[DUMP]}; then + comps='' + fi + fi + + COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) + return 0 } complete -F _coredumpctl coredumpctl diff --git a/shell-completion/bash/hostnamectl b/shell-completion/bash/hostnamectl index af6db81ce1..0d829e705a 100644 --- a/shell-completion/bash/hostnamectl +++ b/shell-completion/bash/hostnamectl @@ -19,47 +19,47 @@ # along with systemd; If not, see . __contains_word () { - local w word=$1; shift - for w in "$@"; do - [[ $w = "$word" ]] && return - done + local w word=$1; shift + for w in "$@"; do + [[ $w = "$word" ]] && return + done } _hostnamectl() { - local i verb comps - local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} - local OPTS='-h --help --version --transient --static --pretty - --no-ask-password -H --host -M --machine' + local i verb comps + local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} + local OPTS='-h --help --version --transient --static --pretty + --no-ask-password -H --host -M --machine' - if [[ $cur = -* ]]; then - COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) - return 0 - fi - - local -A VERBS=( - [STANDALONE]='status' - [ICONS]='set-icon-name' - [NAME]='set-hostname set-deployment set-location' - [CHASSIS]='set-chassis' - ) - - for ((i=0; i < COMP_CWORD; i++)); do - if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]}; then - verb=${COMP_WORDS[i]} - break - fi - done - - if [[ -z $verb ]]; then - comps=${VERBS[*]} - elif __contains_word "$verb" ${VERBS[CHASSIS]}; then - comps='desktop laptop convertible server tablet handset watch embedded vm container' - elif __contains_word "$verb" ${VERBS[STANDALONE]} ${VERBS[ICONS]} ${VERBS[NAME]}; then - comps='' - fi - - COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) + if [[ $cur = -* ]]; then + COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) return 0 + fi + + local -A VERBS=( + [STANDALONE]='status' + [ICONS]='set-icon-name' + [NAME]='set-hostname set-deployment set-location' + [CHASSIS]='set-chassis' + ) + + for ((i=0; i < COMP_CWORD; i++)); do + if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]}; then + verb=${COMP_WORDS[i]} + break + fi + done + + if [[ -z $verb ]]; then + comps=${VERBS[*]} + elif __contains_word "$verb" ${VERBS[CHASSIS]}; then + comps='desktop laptop convertible server tablet handset watch embedded vm container' + elif __contains_word "$verb" ${VERBS[STANDALONE]} ${VERBS[ICONS]} ${VERBS[NAME]}; then + comps='' + fi + + COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) + return 0 } complete -F _hostnamectl hostnamectl diff --git a/shell-completion/bash/journalctl b/shell-completion/bash/journalctl index 3beb347e1b..52ed2e3bcb 100644 --- a/shell-completion/bash/journalctl +++ b/shell-completion/bash/journalctl @@ -19,119 +19,119 @@ # along with systemd; If not, see . __contains_word () { - local w word=$1; shift - for w in "$@"; do - [[ $w = "$word" ]] && return - done + local w word=$1; shift + for w in "$@"; do + [[ $w = "$word" ]] && return + done } __get_machines() { - local a b - (machinectl list-images --no-legend --no-pager; machinectl list --no-legend --no-pager; echo ".host") | \ - { while read a b; do echo " $a"; done; } | sort -u; + local a b + (machinectl list-images --no-legend --no-pager; machinectl list --no-legend --no-pager; echo ".host") | \ + { while read a b; do echo " $a"; done; } | sort -u; } __syslog_priorities=(emerg alert crit err warning notice info debug) _journalctl() { - local field_vals= cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} - local -A OPTS=( - [STANDALONE]='-a --all --full --system --user - --disk-usage -f --follow --header - -h --help -l --local -m --merge --no-pager - --no-tail -q --quiet --setup-keys --verify - --version --list-catalog --update-catalog --list-boots - --show-cursor --dmesg -k --pager-end -e -r --reverse - --utc -x --catalog --no-full --force --dump-catalog - --flush --rotate --sync --no-hostname -N --fields' - [ARG]='-b --boot -D --directory --file -F --field -t --identifier - -M --machine -o --output -u --unit --user-unit -p --priority - --root --case-sensitive' - [ARGUNKNOWN]='-c --cursor --interval -n --lines -S --since -U --until - --after-cursor --cursor-file --verify-key -g --grep - --vacuum-size --vacuum-time --vacuum-files --output-fields' - ) + local field_vals= cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} + local -A OPTS=( + [STANDALONE]='-a --all --full --system --user + --disk-usage -f --follow --header + -h --help -l --local -m --merge --no-pager + --no-tail -q --quiet --setup-keys --verify + --version --list-catalog --update-catalog --list-boots + --show-cursor --dmesg -k --pager-end -e -r --reverse + --utc -x --catalog --no-full --force --dump-catalog + --flush --rotate --sync --no-hostname -N --fields' + [ARG]='-b --boot -D --directory --file -F --field -t --identifier + -M --machine -o --output -u --unit --user-unit -p --priority + --root --case-sensitive' + [ARGUNKNOWN]='-c --cursor --interval -n --lines -S --since -U --until + --after-cursor --cursor-file --verify-key -g --grep + --vacuum-size --vacuum-time --vacuum-files --output-fields' + ) - # Use the default completion for shell redirect operators - if __contains_word "$prev" '>' '>>' '&>'; then + # Use the default completion for shell redirect operators + if __contains_word "$prev" '>' '>>' '&>'; then + compopt -o filenames + COMPREPLY=( $(compgen -f -- "$cur") ) + return 0; + fi + + if __contains_word "$prev" ${OPTS[ARG]} ${OPTS[ARGUNKNOWN]}; then + case $prev in + --boot|-b) + comps=$(journalctl -F '_BOOT_ID' 2>/dev/null) + ;; + --directory|-D|--root) + comps=$(compgen -d -- "$cur") compopt -o filenames - COMPREPLY=( $(compgen -f -- "$cur") ) - return 0; - fi - - if __contains_word "$prev" ${OPTS[ARG]} ${OPTS[ARGUNKNOWN]}; then - case $prev in - --boot|-b) - comps=$(journalctl -F '_BOOT_ID' 2>/dev/null) - ;; - --directory|-D|--root) - comps=$(compgen -d -- "$cur") - compopt -o filenames - ;; - --file) - comps=$(compgen -f -- "$cur") - compopt -o filenames - ;; - --output|-o) - comps=$( journalctl --output=help 2>/dev/null ) - ;; - --field|-F) - comps=$(journalctl --fields | sort 2>/dev/null) - ;; - --machine|-M) - comps=$( __get_machines ) - ;; - --priority|-p) - comps=${__syslog_priorities[*]} - ;; - --unit|-u) - comps=$(journalctl -F '_SYSTEMD_UNIT' 2>/dev/null) - ;; - --user-unit) - comps=$(journalctl -F '_SYSTEMD_USER_UNIT' 2>/dev/null) - ;; - --identifier|-t) - comps=$(journalctl -F 'SYSLOG_IDENTIFIER' 2>/dev/null) - ;; - --case-sensitive) - comps='yes no' - ;; - *) - return 0 - ;; - esac - COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) - return 0 - fi - - if [[ $cur = -* ]]; then - COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) - return 0 - elif [[ $cur = *=* ]]; then - mapfile -t field_vals < <(journalctl -F "${prev%=}" 2>/dev/null) - COMPREPLY=( $(compgen -W '${field_vals[*]}' -- "${cur#=}") ) - elif [[ $cur = /dev* ]]; then + ;; + --file) + comps=$(compgen -f -- "$cur") compopt -o filenames - COMPREPLY=( $(compgen -f -- "${cur}") ) - elif [[ $cur = /* ]]; then - # Append /dev/ to the list of completions, so that - # after typing / the user sees /dev/ as one - # of the alternatives. Later on the rule above will - # take care of showing device files in /dev/. - mapfile -t field_vals < <(journalctl -F "_EXE" 2>/dev/null; echo '/dev/') - COMPREPLY=( $(compgen -W '${field_vals[*]}' -- "${cur}") ) - if [[ "${COMPREPLY[@]}" = '/dev/' ]]; then - compopt -o filenames - COMPREPLY=( $(compgen -f -- "${cur}") ) - fi - elif [[ $prev = '=' ]]; then - mapfile -t field_vals < <(journalctl -F "${COMP_WORDS[COMP_CWORD-2]}" 2>/dev/null) - COMPREPLY=( $(compgen -W '${field_vals[*]}' -- "$cur") ) - else - mapfile -t field_vals < <(journalctl --fields 2>/dev/null) - compopt -o nospace - COMPREPLY=( $(compgen -W '${field_vals[*]}' -S= -- "$cur") ) + ;; + --output|-o) + comps=$( journalctl --output=help 2>/dev/null ) + ;; + --field|-F) + comps=$(journalctl --fields | sort 2>/dev/null) + ;; + --machine|-M) + comps=$( __get_machines ) + ;; + --priority|-p) + comps=${__syslog_priorities[*]} + ;; + --unit|-u) + comps=$(journalctl -F '_SYSTEMD_UNIT' 2>/dev/null) + ;; + --user-unit) + comps=$(journalctl -F '_SYSTEMD_USER_UNIT' 2>/dev/null) + ;; + --identifier|-t) + comps=$(journalctl -F 'SYSLOG_IDENTIFIER' 2>/dev/null) + ;; + --case-sensitive) + comps='yes no' + ;; + *) + return 0 + ;; + esac + COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) + return 0 + fi + + if [[ $cur = -* ]]; then + COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) + return 0 + elif [[ $cur = *=* ]]; then + mapfile -t field_vals < <(journalctl -F "${prev%=}" 2>/dev/null) + COMPREPLY=( $(compgen -W '${field_vals[*]}' -- "${cur#=}") ) + elif [[ $cur = /dev* ]]; then + compopt -o filenames + COMPREPLY=( $(compgen -f -- "${cur}") ) + elif [[ $cur = /* ]]; then + # Append /dev/ to the list of completions, so that + # after typing / the user sees /dev/ as one + # of the alternatives. Later on the rule above will + # take care of showing device files in /dev/. + mapfile -t field_vals < <(journalctl -F "_EXE" 2>/dev/null; echo '/dev/') + COMPREPLY=( $(compgen -W '${field_vals[*]}' -- "${cur}") ) + if [[ "${COMPREPLY[@]}" = '/dev/' ]]; then + compopt -o filenames + COMPREPLY=( $(compgen -f -- "${cur}") ) fi + elif [[ $prev = '=' ]]; then + mapfile -t field_vals < <(journalctl -F "${COMP_WORDS[COMP_CWORD-2]}" 2>/dev/null) + COMPREPLY=( $(compgen -W '${field_vals[*]}' -- "$cur") ) + else + mapfile -t field_vals < <(journalctl --fields 2>/dev/null) + compopt -o nospace + COMPREPLY=( $(compgen -W '${field_vals[*]}' -S= -- "$cur") ) + fi } complete -F _journalctl journalctl diff --git a/shell-completion/bash/kernel-install b/shell-completion/bash/kernel-install index ca8c0e20ef..224ea83eb8 100644 --- a/shell-completion/bash/kernel-install +++ b/shell-completion/bash/kernel-install @@ -3,7 +3,6 @@ # # This file is part of systemd. # -# # systemd is free software; you can redistribute it and/or modify it # under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation; either version 2.1 of the License, or @@ -18,32 +17,32 @@ # along with systemd; If not, see . _kernel_install() { - local comps - local MACHINE_ID - local cur=${COMP_WORDS[COMP_CWORD]} + local comps + local MACHINE_ID + local cur=${COMP_WORDS[COMP_CWORD]} - case $COMP_CWORD in - 1) - comps="add remove" - ;; - 2) - comps=$(cd /lib/modules; echo [0-9]*) - if [[ ${COMP_WORDS[1]} == "remove" ]] && [[ -f /etc/machine-id ]]; then - read MACHINE_ID < /etc/machine-id - if [[ $MACHINE_ID ]] && ( [[ -d /boot/$MACHINE_ID ]] || [[ -L /boot/$MACHINE_ID ]] ); then - comps=$(cd "/boot/$MACHINE_ID"; echo [0-9]*) - fi + case $COMP_CWORD in + 1) + comps="add remove" + ;; + 2) + comps=$(cd /lib/modules; echo [0-9]*) + if [[ ${COMP_WORDS[1]} == "remove" ]] && [[ -f /etc/machine-id ]]; then + read MACHINE_ID < /etc/machine-id + if [[ $MACHINE_ID ]] && ( [[ -d /boot/$MACHINE_ID ]] || [[ -L /boot/$MACHINE_ID ]] ); then + comps=$(cd "/boot/$MACHINE_ID"; echo [0-9]*) fi - ;; - 3) - [[ "$cur" ]] || cur=/lib/modules/${COMP_WORDS[2]}/vmlinuz - comps=$(compgen -f -- "$cur") - compopt -o filenames - ;; - esac + fi + ;; + 3) + [[ "$cur" ]] || cur=/lib/modules/${COMP_WORDS[2]}/vmlinuz + comps=$(compgen -f -- "$cur") + compopt -o filenames + ;; + esac - COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) - return 0 + COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) + return 0 } complete -F _kernel_install kernel-install diff --git a/shell-completion/bash/localectl b/shell-completion/bash/localectl index db4eb4267f..fe53112fd4 100644 --- a/shell-completion/bash/localectl +++ b/shell-completion/bash/localectl @@ -19,78 +19,78 @@ # along with systemd; If not, see . __contains_word () { - local w word=$1; shift - for w in "$@"; do - [[ $w = "$word" ]] && return - done + local w word=$1; shift + for w in "$@"; do + [[ $w = "$word" ]] && return + done } -__locale_fields=( LANG LANGUAGE LC_CTYPE LC_NUMERIC LC_TIME \ - LC_COLLATE LC_MONETARY LC_MESSAGES LC_PAPER \ - LC_NAME LC_ADDRESS LC_TELEPHONE \ +__locale_fields=( LANG LANGUAGE LC_CTYPE LC_NUMERIC LC_TIME + LC_COLLATE LC_MONETARY LC_MESSAGES LC_PAPER + LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT LC_IDENTIFICATION ) # LC_ALL is omitted on purpose _localectl() { - local i verb comps locale_vals - local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} - local OPTS='-h --help --version --no-convert --no-pager --no-ask-password + local i verb comps locale_vals + local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} + local OPTS='-h --help --version --no-convert --no-pager --no-ask-password -H --host -M --machine' - if __contains_word "$prev" $OPTS; then - case $prev in - --host|-H) - comps='' - ;; - esac - COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) - return 0 - fi - - if [[ $cur = -* ]]; then - COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) - return 0 - fi - - local -A VERBS=( - [STANDALONE]='status list-locales list-keymaps list-x11-keymap-models list-x11-keymap-layouts list-x11-keymap-options' - [VARIANTS]='list-x11-keymap-variants' - [LOCALES]='set-locale' - [KEYMAPS]='set-keymap' - [X11]='set-x11-keymap' - ) - - for ((i=0; i < COMP_CWORD; i++)); do - if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]}; then - verb=${COMP_WORDS[i]} - break - fi - done - - if [[ -z $verb ]]; then - comps=${VERBS[*]} - elif __contains_word "$verb" ${VERBS[VARIANTS]}; then - comps=$(command localectl list-x11-keymap-layouts) - elif __contains_word "$verb" ${VERBS[LOCALES]}; then - if [[ $cur = *=* ]]; then - mapfile -t locale_vals < <(command localectl list-locales 2>/dev/null) - COMPREPLY=( $(compgen -W '${locale_vals[*]}' -- "${cur#=}") ) - elif [[ $prev = "=" ]]; then - mapfile -t locale_vals < <(command localectl list-locales 2>/dev/null) - COMPREPLY=( $(compgen -W '${locale_vals[*]}' -- "$cur") ) - else - compopt -o nospace - COMPREPLY=( $(compgen -W '${__locale_fields[*]}' -S= -- "$cur") ) - fi - return 0 - elif __contains_word "$verb" ${VERBS[KEYMAPS]}; then - comps=$(command localectl list-keymaps) - elif __contains_word "$verb" ${VERBS[STANDALONE]} ${VERBS[X11]}; then + if __contains_word "$prev" $OPTS; then + case $prev in + --host|-H) comps='' - fi - + ;; + esac COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) return 0 + fi + + if [[ $cur = -* ]]; then + COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) + return 0 + fi + + local -A VERBS=( + [STANDALONE]='status list-locales list-keymaps list-x11-keymap-models list-x11-keymap-layouts list-x11-keymap-options' + [VARIANTS]='list-x11-keymap-variants' + [LOCALES]='set-locale' + [KEYMAPS]='set-keymap' + [X11]='set-x11-keymap' + ) + + for ((i=0; i < COMP_CWORD; i++)); do + if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]}; then + verb=${COMP_WORDS[i]} + break + fi + done + + if [[ -z $verb ]]; then + comps=${VERBS[*]} + elif __contains_word "$verb" ${VERBS[VARIANTS]}; then + comps=$(command localectl list-x11-keymap-layouts) + elif __contains_word "$verb" ${VERBS[LOCALES]}; then + if [[ $cur = *=* ]]; then + mapfile -t locale_vals < <(command localectl list-locales 2>/dev/null) + COMPREPLY=( $(compgen -W '${locale_vals[*]}' -- "${cur#=}") ) + elif [[ $prev = "=" ]]; then + mapfile -t locale_vals < <(command localectl list-locales 2>/dev/null) + COMPREPLY=( $(compgen -W '${locale_vals[*]}' -- "$cur") ) + else + compopt -o nospace + COMPREPLY=( $(compgen -W '${__locale_fields[*]}' -S= -- "$cur") ) + fi + return 0 + elif __contains_word "$verb" ${VERBS[KEYMAPS]}; then + comps=$(command localectl list-keymaps) + elif __contains_word "$verb" ${VERBS[STANDALONE]} ${VERBS[X11]}; then + comps='' + fi + + COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) + return 0 } complete -F _localectl localectl diff --git a/shell-completion/bash/loginctl b/shell-completion/bash/loginctl index a0d224e9e2..c3e1ca754b 100644 --- a/shell-completion/bash/loginctl +++ b/shell-completion/bash/loginctl @@ -19,10 +19,10 @@ # along with systemd; If not, see . __contains_word () { - local w word=$1; shift - for w in "$@"; do - [[ $w = "$word" ]] && return - done + local w word=$1; shift + for w in "$@"; do + [[ $w = "$word" ]] && return + done } __get_all_sessions () { loginctl --no-legend list-sessions | { while read -r a b; do printf "%s\n" "$a"; done; } ; } @@ -30,96 +30,96 @@ __get_all_users () { loginctl --no-legend list-users | { while read -r a b __get_all_seats () { loginctl --no-legend list-seats | { while read -r a b; do printf "%s\n" "$a"; done; } ; } __get_machines() { - local a b - machinectl list --no-legend --no-pager 2>/dev/null | - { while read a b; do echo " $a"; done; }; + local a b + machinectl list --no-legend --no-pager 2>/dev/null | + { while read a b; do echo " $a"; done; }; } _loginctl () { - local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} - local i verb comps + local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} + local i verb comps - local -A OPTS=( - [STANDALONE]='--all -a --help -h --no-pager --version - --no-legend --no-ask-password -l --full --value' - [ARG]='--host -H --kill-who --property -p --signal -s -M --machine - -n --lines -o --output' - ) + local -A OPTS=( + [STANDALONE]='--all -a --help -h --no-pager --version + --no-legend --no-ask-password -l --full --value' + [ARG]='--host -H --kill-who --property -p --signal -s -M --machine + -n --lines -o --output' + ) - if __contains_word "$prev" ${OPTS[ARG]}; then - case $prev in - --signal|-s) - _signals - return - ;; - --kill-who) - comps='all leader' - ;; - --host|-H) - comps=$(compgen -A hostname) - ;; - --machine|-M) - comps=$( __get_machines ) - ;; - --property|-p) - comps='' - ;; - --output|-o) - comps=$( loginctl --output=help 2>/dev/null ) - ;; - esac - COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) - return 0 - fi - - - if [[ "$cur" = -* ]]; then - COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) - return 0 - fi - - local -A VERBS=( - [SESSIONS]='session-status show-session activate lock-session unlock-session terminate-session kill-session' - [USERS]='user-status show-user enable-linger disable-linger terminate-user kill-user' - [SEATS]='seat-status show-seat terminate-seat' - [STANDALONE]='list-sessions lock-sessions unlock-sessions list-users list-seats flush-devices' - [ATTACH]='attach' - ) - - for ((i=0; i < COMP_CWORD; i++)); do - if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]} && - ! __contains_word "${COMP_WORDS[i-1]}" ${OPTS[ARG]}; then - verb=${COMP_WORDS[i]} - break - fi - done - - if [[ -z $verb ]]; then - comps="${VERBS[*]}" - - elif __contains_word "$verb" ${VERBS[SESSIONS]}; then - comps=$( __get_all_sessions ) - - elif __contains_word "$verb" ${VERBS[USERS]}; then - comps=$( __get_all_users ) - - elif __contains_word "$verb" ${VERBS[SEATS]}; then - comps=$( __get_all_seats ) - - elif __contains_word "$verb" ${VERBS[STANDALONE]}; then + if __contains_word "$prev" ${OPTS[ARG]}; then + case $prev in + --signal|-s) + _signals + return + ;; + --kill-who) + comps='all leader' + ;; + --host|-H) + comps=$(compgen -A hostname) + ;; + --machine|-M) + comps=$( __get_machines ) + ;; + --property|-p) comps='' - - elif __contains_word "$verb" ${VERBS[ATTACH]}; then - if [[ $prev = $verb ]]; then - comps=$( __get_all_seats ) - else - comps=$(compgen -A file -- "$cur" ) - compopt -o filenames - fi - fi - + ;; + --output|-o) + comps=$( loginctl --output=help 2>/dev/null ) + ;; + esac COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) return 0 + fi + + + if [[ "$cur" = -* ]]; then + COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) + return 0 + fi + + local -A VERBS=( + [SESSIONS]='session-status show-session activate lock-session unlock-session terminate-session kill-session' + [USERS]='user-status show-user enable-linger disable-linger terminate-user kill-user' + [SEATS]='seat-status show-seat terminate-seat' + [STANDALONE]='list-sessions lock-sessions unlock-sessions list-users list-seats flush-devices' + [ATTACH]='attach' + ) + + for ((i=0; i < COMP_CWORD; i++)); do + if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]} && + ! __contains_word "${COMP_WORDS[i-1]}" ${OPTS[ARG]}; then + verb=${COMP_WORDS[i]} + break + fi + done + + if [[ -z $verb ]]; then + comps="${VERBS[*]}" + + elif __contains_word "$verb" ${VERBS[SESSIONS]}; then + comps=$( __get_all_sessions ) + + elif __contains_word "$verb" ${VERBS[USERS]}; then + comps=$( __get_all_users ) + + elif __contains_word "$verb" ${VERBS[SEATS]}; then + comps=$( __get_all_seats ) + + elif __contains_word "$verb" ${VERBS[STANDALONE]}; then + comps='' + + elif __contains_word "$verb" ${VERBS[ATTACH]}; then + if [[ $prev = $verb ]]; then + comps=$( __get_all_seats ) + else + comps=$(compgen -A file -- "$cur" ) + compopt -o filenames + fi + fi + + COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) + return 0 } complete -F _loginctl loginctl diff --git a/shell-completion/bash/machinectl b/shell-completion/bash/machinectl index 802a262603..b785cd4154 100644 --- a/shell-completion/bash/machinectl +++ b/shell-completion/bash/machinectl @@ -3,7 +3,6 @@ # # This file is part of systemd. # -# # systemd is free software; you can redistribute it and/or modify it # under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation; either version 2.1 of the License, or @@ -18,99 +17,100 @@ # along with systemd; If not, see . __contains_word() { - local w word=$1; shift - for w in "$@"; do - [[ $w = "$word" ]] && return - done + local w word=$1; shift + for w in "$@"; do + [[ $w = "$word" ]] && return + done } __get_machines() { - local a b - (machinectl list-images --no-legend --no-pager; machinectl list --no-legend --no-pager; echo ".host") | \ - { while read a b; do echo " $a"; done; } | sort -u; + local a b + (machinectl list-images --no-legend --no-pager; machinectl list --no-legend --no-pager; echo ".host") | \ + { while read a b; do echo " $a"; done; } | sort -u; } _machinectl() { - local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} - local i verb comps + local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} + local i verb comps - local -A OPTS=( - [STANDALONE]='--all -a -l --full --help -h --no-ask-password --no-legend --no-pager --version --value - --mkdir --read-only --force -q --quiet' - [ARG]='--host -H --kill-who -M --machine --property -p --signal -s --uid -E --setenv -n --lines - -o --output --verify --format --max-addresses' - ) + local -A OPTS=( + [STANDALONE]='--all -a -l --full --help -h --no-ask-password --no-legend --no-pager --version --value + --mkdir --read-only --force -q --quiet' + [ARG]='--host -H --kill-who -M --machine --property -p --signal -s --uid -E --setenv -n --lines + -o --output --verify --format --max-addresses' + ) - local -A VERBS=( - [STANDALONE]='list list-images clean pull-tar pull-raw list-transfers cancel-transfer import-fs' - [MACHINES]='status show start stop login shell enable disable poweroff reboot terminate kill bind copy-to copy-from - image-status show-image clone rename read-only remove set-limit export-tar export-raw' - [FILE]='import-tar import-raw' - ) + local -A VERBS=( + [STANDALONE]='list list-images clean pull-tar pull-raw list-transfers cancel-transfer import-fs' + [MACHINES]='status show start stop login shell enable disable poweroff reboot terminate kill bind + copy-to copy-from image-status show-image clone rename read-only remove set-limit + export-tar export-raw' + [FILE]='import-tar import-raw' + ) - _init_completion || return + _init_completion || return - for ((i=0; i <= COMP_CWORD; i++)); do - if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]} && - ! __contains_word "${COMP_WORDS[i-1]}" ${OPTS[ARG]}; then - verb=${COMP_WORDS[i]} - break - fi - done - - if __contains_word "$prev" ${OPTS[ARG]}; then - case $prev in - --signal|-s) - _signals - return - ;; - --kill-who) - comps='all leader' - ;; - --host|-H) - comps=$(compgen -A hostname) - ;; - --machine|-M) - comps=$( __get_machines ) - ;; - --property|-p) - comps='' - ;; - --output|-o) - comps=$( machinectl --output=help 2>/dev/null ) - ;; - --verify) - comps=$( machinectl --verify=help 2>/dev/null ) - ;; - --format) - comps='uncompressed xz gzip bzip2' - ;; - esac - COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) - return 0 + for ((i=0; i <= COMP_CWORD; i++)); do + if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]} && + ! __contains_word "${COMP_WORDS[i-1]}" ${OPTS[ARG]}; then + verb=${COMP_WORDS[i]} + break fi + done - if [[ "$cur" = -* ]]; then - COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) - return 0 - fi - - if [[ -z $verb ]]; then - comps=${VERBS[*]} - - elif __contains_word "$verb" ${VERBS[STANDALONE]}; then - comps='' - - elif __contains_word "$verb" ${VERBS[MACHINES]}; then + if __contains_word "$prev" ${OPTS[ARG]}; then + case $prev in + --signal|-s) + _signals + return + ;; + --kill-who) + comps='all leader' + ;; + --host|-H) + comps=$(compgen -A hostname) + ;; + --machine|-M) comps=$( __get_machines ) - - elif __contains_word "$verb" ${VERBS[FILE]}; then - comps=$(compgen -f -- "cur") - compopt -o filenames - fi - + ;; + --property|-p) + comps='' + ;; + --output|-o) + comps=$( machinectl --output=help 2>/dev/null ) + ;; + --verify) + comps=$( machinectl --verify=help 2>/dev/null ) + ;; + --format) + comps='uncompressed xz gzip bzip2' + ;; + esac COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) return 0 + fi + + if [[ "$cur" = -* ]]; then + COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) + return 0 + fi + + if [[ -z $verb ]]; then + comps=${VERBS[*]} + + elif __contains_word "$verb" ${VERBS[STANDALONE]}; then + comps='' + + elif __contains_word "$verb" ${VERBS[MACHINES]}; then + comps=$( __get_machines ) + + elif __contains_word "$verb" ${VERBS[FILE]}; then + comps=$(compgen -f -- "cur") + compopt -o filenames + fi + + COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) + return 0 } complete -F _machinectl machinectl diff --git a/shell-completion/bash/networkctl b/shell-completion/bash/networkctl index fb92c675d2..c4a51df6db 100644 --- a/shell-completion/bash/networkctl +++ b/shell-completion/bash/networkctl @@ -17,55 +17,55 @@ # along with systemd; If not, see . __contains_word () { - local w word=$1; shift - for w in "$@"; do - [[ $w = "$word" ]] && return - done - return 1 + local w word=$1; shift + for w in "$@"; do + [[ $w = "$word" ]] && return + done + return 1 } __get_links() { - networkctl list --no-legend --no-pager --all | { while read -r a b c; do echo " $b"; done; }; + networkctl list --no-legend --no-pager --all | { while read -r a b c; do echo " $b"; done; }; } _networkctl() { - local i verb comps - local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} - local -A OPTS=( - [STANDALONE]='-a --all -h --help --version --no-pager --no-legend' - [ARG]='' - ) + local i verb comps + local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} + local -A OPTS=( + [STANDALONE]='-a --all -h --help --version --no-pager --no-legend' + [ARG]='' + ) - local -A VERBS=( - [STANDALONE]='label' - [LINKS]='status list lldp' - ) + local -A VERBS=( + [STANDALONE]='label' + [LINKS]='status list lldp' + ) - _init_completion || return + _init_completion || return - for ((i=0; i < COMP_CWORD; i++)); do - if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]} && - ! __contains_word "${COMP_WORDS[i-1]}" ${OPTS[ARG]}; then - verb=${COMP_WORDS[i]} - break - fi - done - - if [[ "$cur" = -* ]]; then - COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) - return 0 + for ((i=0; i < COMP_CWORD; i++)); do + if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]} && + ! __contains_word "${COMP_WORDS[i-1]}" ${OPTS[ARG]}; then + verb=${COMP_WORDS[i]} + break fi + done - if [[ -z $verb ]]; then - comps=${VERBS[*]} - elif __contains_word "$verb" ${VERBS[STANDALONE]}; then - comps='' - elif __contains_word "$verb" ${VERBS[LINKS]}; then - comps=$( __get_links ) - fi - - COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) + if [[ "$cur" = -* ]]; then + COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) return 0 + fi + + if [[ -z $verb ]]; then + comps=${VERBS[*]} + elif __contains_word "$verb" ${VERBS[STANDALONE]}; then + comps='' + elif __contains_word "$verb" ${VERBS[LINKS]}; then + comps=$( __get_links ) + fi + + COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) + return 0 } complete -F _networkctl networkctl diff --git a/shell-completion/bash/portablectl b/shell-completion/bash/portablectl index 22455d2c1e..d20c9629b7 100644 --- a/shell-completion/bash/portablectl +++ b/shell-completion/bash/portablectl @@ -3,7 +3,6 @@ # # This file is part of systemd. # -# # systemd is free software; you can redistribute it and/or modify it # under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation; either version 2.1 of the License, or @@ -18,95 +17,95 @@ # along with systemd; If not, see . __contains_word () { - local w word=$1; shift - for w in "$@"; do - [[ $w = "$word" ]] && return - done + local w word=$1; shift + for w in "$@"; do + [[ $w = "$word" ]] && return + done } __get_machines() { - local a b - machinectl list --no-legend --no-pager 2>/dev/null | - { while read a b; do echo " $a"; done; }; + local a b + machinectl list --no-legend --no-pager 2>/dev/null | + { while read a b; do echo " $a"; done; }; } _portablectl() { - local i n comps verb - local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} - local -A OPTS=( - [STANDALONE]='-q --quiet --runtime --no-reload --cat --no-pager --no-legend + local i n comps verb + local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} + local -A OPTS=( + [STANDALONE]='-q --quiet --runtime --no-reload --cat --no-pager --no-legend --no-ask-password -h --help --version' - [ARG]='-p --profile --copy -H --host -M --machine' - ) + [ARG]='-p --profile --copy -H --host -M --machine' + ) - local -A VERBS=( - [STANDALONE]='list' - [IMAGE]='attach detach inspect is-attached set-limit' - [IMAGES]='remove' - [IMAGE_WITH_BOOL]='read-only' - ) + local -A VERBS=( + [STANDALONE]='list' + [IMAGE]='attach detach inspect is-attached set-limit' + [IMAGES]='remove' + [IMAGE_WITH_BOOL]='read-only' + ) - if __contains_word "$prev" ${OPTS[ARG]}; then - case $prev in - --profile|-p) - comps="default nonetwork strict trusted" - ;; - --copy) - comps="copy symlink auto" - ;; - --host|-H) - comps=$(compgen -A hostname) - ;; - --machine|-M) - comps=$( __get_machines ) - ;; - esac - COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) - return 0 - fi - - if [[ "$cur" = -* ]]; then - COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) - return 0 - fi - - for ((i=0; i < COMP_CWORD; i++)); do - if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]} && - ! __contains_word "${COMP_WORDS[i-1]}" ${OPTS[ARG]}; then - verb=${COMP_WORDS[i]} - break - fi - done - - n=$(($COMP_CWORD - $i)) - - if [[ -z $verb ]]; then - comps=${VERBS[*]} - elif __contains_word "$verb" ${VERBS[STANDALONE]}; then - comps='' - elif __contains_word "$verb" ${VERBS[IMAGE]}; then - if [[ $n == 1 ]]; then - comps=$( compgen -A file -- "$cur" ) - compopt -o filenames - else - comps='' - fi - elif __contains_word "$verb" ${VERBS[IMAGES]}; then - comps=$( compgen -A file -- "$cur" ) - compopt -o filenames - elif __contains_word "$verb" ${VERBS[IMAGE_WITH_BOOL]}; then - if [[ $n == 1 ]]; then - comps=$( compgen -A file -- "$cur" ) - compopt -o filenames - elif [[ $n == 2 ]]; then - comps='yes no' - else - comps='' - fi - fi - - COMPREPLY=( $(compgen -o filenames -W '$comps' -- "$cur") ) + if __contains_word "$prev" ${OPTS[ARG]}; then + case $prev in + --profile|-p) + comps="default nonetwork strict trusted" + ;; + --copy) + comps="copy symlink auto" + ;; + --host|-H) + comps=$(compgen -A hostname) + ;; + --machine|-M) + comps=$( __get_machines ) + ;; + esac + COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) return 0 + fi + + if [[ "$cur" = -* ]]; then + COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) + return 0 + fi + + for ((i=0; i < COMP_CWORD; i++)); do + if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]} && + ! __contains_word "${COMP_WORDS[i-1]}" ${OPTS[ARG]}; then + verb=${COMP_WORDS[i]} + break + fi + done + + n=$(($COMP_CWORD - $i)) + + if [[ -z $verb ]]; then + comps=${VERBS[*]} + elif __contains_word "$verb" ${VERBS[STANDALONE]}; then + comps='' + elif __contains_word "$verb" ${VERBS[IMAGE]}; then + if [[ $n == 1 ]]; then + comps=$( compgen -A file -- "$cur" ) + compopt -o filenames + else + comps='' + fi + elif __contains_word "$verb" ${VERBS[IMAGES]}; then + comps=$( compgen -A file -- "$cur" ) + compopt -o filenames + elif __contains_word "$verb" ${VERBS[IMAGE_WITH_BOOL]}; then + if [[ $n == 1 ]]; then + comps=$( compgen -A file -- "$cur" ) + compopt -o filenames + elif [[ $n == 2 ]]; then + comps='yes no' + else + comps='' + fi + fi + + COMPREPLY=( $(compgen -o filenames -W '$comps' -- "$cur") ) + return 0 } complete -F _portablectl portablectl diff --git a/shell-completion/bash/resolvectl b/shell-completion/bash/resolvectl index f8167c63d5..161ac4d3c5 100644 --- a/shell-completion/bash/resolvectl +++ b/shell-completion/bash/resolvectl @@ -3,7 +3,6 @@ # # This file is part of systemd. # -# # systemd is free software; you can redistribute it and/or modify it # under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation; either version 2.1 of the License, or @@ -18,165 +17,165 @@ # along with systemd; If not, see . __contains_word () { - local w word=$1; shift - for w in "$@"; do - [[ $w = "$word" ]] && return - done + local w word=$1; shift + for w in "$@"; do + [[ $w = "$word" ]] && return + done } __get_interfaces(){ - local name - for name in $(cd /sys/class/net && ls); do - [[ "$name" != "lo" ]] && echo "$name" - done + local name + for name in $(cd /sys/class/net && ls); do + [[ "$name" != "lo" ]] && echo "$name" + done } _resolvectl() { - local i comps verb name - local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} - local -A OPTS=( - [STANDALONE]='-h --help --version --no-pager -4 -6 - --service-address=no --service-txt=no - --cname=no --search=no --legend=no' - [ARG]='-i --interface -p --protocol -t --type -c --class --raw' - ) - local -A VERBS=( - [DOMAIN]='query service openpgp' - [FAMILY]='tlsa' - [STATUS]='status' - [LINK]='revert dns domain nta' - [RESOLVE]='llmnr mdns' - [DNSSEC]='dnssec' - [DNSOVERTLS]='dnsovertls' - [STANDALONE]='statistics reset-statistics flush-caches reset-server-features' - ) - local -A ARGS=( - [FAMILY]='tcp udp sctp' - [RESOLVE]='yes no resolve' - [DNSSEC]='yes no allow-downgrade' - [DNSOVERTLS]='no opportunistic' - ) - local interfaces=$( __get_interfaces ) + local i comps verb name + local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} + local -A OPTS=( + [STANDALONE]='-h --help --version --no-pager -4 -6 + --service-address=no --service-txt=no + --cname=no --search=no --legend=no' + [ARG]='-i --interface -p --protocol -t --type -c --class --raw' + ) + local -A VERBS=( + [DOMAIN]='query service openpgp' + [FAMILY]='tlsa' + [STATUS]='status' + [LINK]='revert dns domain nta' + [RESOLVE]='llmnr mdns' + [DNSSEC]='dnssec' + [DNSOVERTLS]='dnsovertls' + [STANDALONE]='statistics reset-statistics flush-caches reset-server-features' + ) + local -A ARGS=( + [FAMILY]='tcp udp sctp' + [RESOLVE]='yes no resolve' + [DNSSEC]='yes no allow-downgrade' + [DNSOVERTLS]='no opportunistic' + ) + local interfaces=$( __get_interfaces ) - if __contains_word "$prev" ${OPTS[ARG]}; then - case $prev in - --interface|-i) - comps="$interfaces" - ;; - --protocol|-p|--type|-t|--class|-c) - comps=$( resolvectl --legend=no "$prev" help; echo help ) - ;; - --raw) - comps="payload packet" - ;; - esac - COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) - return 0 - fi - - if [[ "$cur" = -* ]]; then - COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) - return 0 - fi - - for ((i=0; i < COMP_CWORD; i++)); do - if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]} && - ! __contains_word "${COMP_WORDS[i-1]}" ${OPTS[ARG]}; then - verb=${COMP_WORDS[i]} - break - fi - done - - if [[ -z $verb ]]; then - comps="${VERBS[*]}" - - elif __contains_word "$verb" ${VERBS[STANDALONE]} ${VERBS[DOMAIN]}; then - comps='' - - elif __contains_word "$verb" ${VERBS[STATUS]}; then + if __contains_word "$prev" ${OPTS[ARG]}; then + case $prev in + --interface|-i) comps="$interfaces" - - elif __contains_word "$verb" ${VERBS[FAMILY]}; then - for ((i++; i < COMP_CWORD; i++)); do - if __contains_word "${COMP_WORDS[i]}" ${ARGS[FAMILY]} && - ! __contains_word "${COMP_WORDS[i-1]}" ${OPTS[ARG]}; then - name=${COMP_WORDS[i]} - break; - fi - done - if [[ -z $name ]]; then - comps=${ARGS[FAMILY]} - else - comps="" - fi - - elif __contains_word "$verb" ${VERBS[LINK]} ${VERBS[RESOLVE]} ${VERBS[DNSSEC]} ${VERBS[DNSOVERTLS]}; then - for ((i++; i < COMP_CWORD; i++)); do - if __contains_word "${COMP_WORDS[i]}" $interfaces && - ! __contains_word "${COMP_WORDS[i-1]}" ${OPTS[ARG]}; then - name=${COMP_WORDS[i]} - break; - fi - done - - if [[ -z $name ]]; then - comps="$interfaces" - - elif __contains_word "$verb" ${VERBS[RESOLVE]}; then - name= - for ((i++; i < COMP_CWORD; i++)); do - if __contains_word "${COMP_WORDS[i]}" ${ARGS[RESOLVE]} && - ! __contains_word "${COMP_WORDS[i-1]}" ${OPTS[ARG]}; then - name=${COMP_WORDS[i]} - break; - fi - done - - if [[ -z $name ]]; then - comps=${ARGS[RESOLVE]} - else - comps='' - fi - - elif __contains_word "$verb" ${VERBS[DNSSEC]}; then - name= - for ((i++; i < COMP_CWORD; i++)); do - if __contains_word "${COMP_WORDS[i]}" ${ARGS[DNSSEC]} && - ! __contains_word "${COMP_WORDS[i-1]}" ${OPTS[ARG]}; then - name=${COMP_WORDS[i]} - break; - fi - done - - if [[ -z $name ]]; then - comps=${ARGS[DNSSEC]} - else - comps='' - fi - - elif __contains_word "$verb" ${VERBS[DNSOVERTLS]}; then - name= - for ((i++; i < COMP_CWORD; i++)); do - if __contains_word "${COMP_WORDS[i]}" ${ARGS[DNSOVERTLS]} && - ! __contains_word "${COMP_WORDS[i-1]}" ${OPTS[ARG]}; then - name=${COMP_WORDS[i]} - break; - fi - done - - if [[ -z $name ]]; then - comps=${ARGS[DNSOVERTLS]} - else - comps='' - fi - - else - comps='' - fi - fi - + ;; + --protocol|-p|--type|-t|--class|-c) + comps=$( resolvectl --legend=no "$prev" help; echo help ) + ;; + --raw) + comps="payload packet" + ;; + esac COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) return 0 + fi + + if [[ "$cur" = -* ]]; then + COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) + return 0 + fi + + for ((i=0; i < COMP_CWORD; i++)); do + if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]} && + ! __contains_word "${COMP_WORDS[i-1]}" ${OPTS[ARG]}; then + verb=${COMP_WORDS[i]} + break + fi + done + + if [[ -z $verb ]]; then + comps="${VERBS[*]}" + + elif __contains_word "$verb" ${VERBS[STANDALONE]} ${VERBS[DOMAIN]}; then + comps='' + + elif __contains_word "$verb" ${VERBS[STATUS]}; then + comps="$interfaces" + + elif __contains_word "$verb" ${VERBS[FAMILY]}; then + for ((i++; i < COMP_CWORD; i++)); do + if __contains_word "${COMP_WORDS[i]}" ${ARGS[FAMILY]} && + ! __contains_word "${COMP_WORDS[i-1]}" ${OPTS[ARG]}; then + name=${COMP_WORDS[i]} + break; + fi + done + if [[ -z $name ]]; then + comps=${ARGS[FAMILY]} + else + comps="" + fi + + elif __contains_word "$verb" ${VERBS[LINK]} ${VERBS[RESOLVE]} ${VERBS[DNSSEC]} ${VERBS[DNSOVERTLS]}; then + for ((i++; i < COMP_CWORD; i++)); do + if __contains_word "${COMP_WORDS[i]}" $interfaces && + ! __contains_word "${COMP_WORDS[i-1]}" ${OPTS[ARG]}; then + name=${COMP_WORDS[i]} + break; + fi + done + + if [[ -z $name ]]; then + comps="$interfaces" + + elif __contains_word "$verb" ${VERBS[RESOLVE]}; then + name= + for ((i++; i < COMP_CWORD; i++)); do + if __contains_word "${COMP_WORDS[i]}" ${ARGS[RESOLVE]} && + ! __contains_word "${COMP_WORDS[i-1]}" ${OPTS[ARG]}; then + name=${COMP_WORDS[i]} + break; + fi + done + + if [[ -z $name ]]; then + comps=${ARGS[RESOLVE]} + else + comps='' + fi + + elif __contains_word "$verb" ${VERBS[DNSSEC]}; then + name= + for ((i++; i < COMP_CWORD; i++)); do + if __contains_word "${COMP_WORDS[i]}" ${ARGS[DNSSEC]} && + ! __contains_word "${COMP_WORDS[i-1]}" ${OPTS[ARG]}; then + name=${COMP_WORDS[i]} + break; + fi + done + + if [[ -z $name ]]; then + comps=${ARGS[DNSSEC]} + else + comps='' + fi + + elif __contains_word "$verb" ${VERBS[DNSOVERTLS]}; then + name= + for ((i++; i < COMP_CWORD; i++)); do + if __contains_word "${COMP_WORDS[i]}" ${ARGS[DNSOVERTLS]} && + ! __contains_word "${COMP_WORDS[i-1]}" ${OPTS[ARG]}; then + name=${COMP_WORDS[i]} + break; + fi + done + + if [[ -z $name ]]; then + comps=${ARGS[DNSOVERTLS]} + else + comps='' + fi + + else + comps='' + fi + fi + + COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) + return 0 } complete -F _resolvectl resolvectl diff --git a/shell-completion/bash/systemctl.in b/shell-completion/bash/systemctl.in index d73f956a3f..8c86fed974 100644 --- a/shell-completion/bash/systemctl.in +++ b/shell-completion/bash/systemctl.in @@ -6,308 +6,308 @@ # Copyright © 2010 Ran Benita __systemctl() { - local mode=$1; shift 1 - systemctl $mode --full --no-legend --no-pager "$@" 2>/dev/null + local mode=$1; shift 1 + systemctl $mode --full --no-legend --no-pager "$@" 2>/dev/null } __systemd_properties() { - @rootlibexecdir@/systemd --dump-bus-properties + @rootlibexecdir@/systemd --dump-bus-properties } __contains_word () { - local w word=$1; shift - for w in "$@"; do - [[ $w = "$word" ]] && return - done + local w word=$1; shift + for w in "$@"; do + [[ $w = "$word" ]] && return + done } __filter_units_by_properties () { - local mode=$1 properties=$2; shift 2 - local units=("$@") - local props i p n - local names= count=0 + local mode=$1 properties=$2; shift 2 + local units=("$@") + local props i p n + local names= count=0 - IFS=$',' read -r -a p < <(echo "Names,$properties") - n=${#p[*]} - readarray -t props < \ - <(__systemctl $mode show --property "Names,$properties" -- "${units[@]}") + IFS=$',' read -r -a p < <(echo "Names,$properties") + n=${#p[*]} + readarray -t props < \ + <(__systemctl $mode show --property "Names,$properties" -- "${units[@]}") - for ((i=0; i < ${#props[*]}; i++)); do - if [[ -z ${props[i]} ]]; then - if (( count == n )) && [[ -n $names ]]; then - echo $names - fi - names= - count=0 - else - (( count++ )) - if [[ ${props[i]%%=*} == 'Names' ]]; then - names=${props[i]#*=} - fi - fi - done - if (( count == n )) && [[ -n $names ]]; then + for ((i=0; i < ${#props[*]}; i++)); do + if [[ -z ${props[i]} ]]; then + if (( count == n )) && [[ -n $names ]]; then echo $names + fi + names= + count=0 + else + (( count++ )) + if [[ ${props[i]%%=*} == 'Names' ]]; then + names=${props[i]#*=} + fi fi + done + if (( count == n )) && [[ -n $names ]]; then + echo $names + fi } __get_all_units () { { __systemctl $1 list-unit-files "$2*"; __systemctl $1 list-units --all "$2*"; } \ - | { while read -r a b; do echo " $a"; done; }; } + | { while read -r a b; do echo " $a"; done; }; } __get_non_template_units() { { __systemctl $1 list-unit-files "$2*"; __systemctl $1 list-units --all "$2*"; } \ - | { while read -r a b; do [[ $a =~ @\. ]] || echo " $a"; done; }; } + | { while read -r a b; do [[ $a =~ @\. ]] || echo " $a"; done; }; } __get_template_names () { __systemctl $1 list-unit-files "$2*" \ - | { while read -r a b; do [[ $a =~ @\. ]] && echo " ${a%%@.*}@"; done; }; } + | { while read -r a b; do [[ $a =~ @\. ]] && echo " ${a%%@.*}@"; done; }; } __get_active_units () { __systemctl $1 list-units "$2*" \ - | { while read -r a b; do echo " $a"; done; }; } + | { while read -r a b; do echo " $a"; done; }; } __get_not_masked_unit_files() { - # filter out masked, not-found, or template units. - __systemctl $1 list-unit-files --state enabled,enabled-runtime,linked,linked-runtime,static,indirect,disabled,generated,transient "$2*" | \ - { while read -r a b; do [[ $a =~ @\. ]] || echo " $a"; done; } + # filter out masked, not-found, or template units. + __systemctl $1 list-unit-files --state enabled,enabled-runtime,linked,linked-runtime,static,indirect,disabled,generated,transient "$2*" | \ + { while read -r a b; do [[ $a =~ @\. ]] || echo " $a"; done; } } __get_startable_units () { - __filter_units_by_properties $1 ActiveState=inactive,CanStart=yes $( - { __get_not_masked_unit_files $1 $2 - # get inactive template units - __systemctl $1 list-units --state inactive,failed "$2*" | \ - { while read -r a b c; do [[ $b == "loaded" ]] && echo " $a"; done; } - } | sort -u ) + __filter_units_by_properties $1 ActiveState=inactive,CanStart=yes $( + { __get_not_masked_unit_files $1 $2 + # get inactive template units + __systemctl $1 list-units --state inactive,failed "$2*" | \ + { while read -r a b c; do [[ $b == "loaded" ]] && echo " $a"; done; } + } | sort -u ) } __get_restartable_units () { - # filter out masked and not-found - __filter_units_by_properties $1 CanStart=yes $( - { __get_not_masked_unit_files $1 $2 - __get_active_units $1 $2 - } | sort -u ) + # filter out masked and not-found + __filter_units_by_properties $1 CanStart=yes $( + { __get_not_masked_unit_files $1 $2 + __get_active_units $1 $2 + } | sort -u ) } __get_stoppable_units () { - # filter out masked and not-found - local units=$( - { __get_not_masked_unit_files $1 $2 - __get_active_units $1 $2 - } | sort -u ) - __filter_units_by_properties $1 ActiveState=active,CanStop=yes $units - __filter_units_by_properties $1 ActiveState=reloading,CanStop=yes $units - __filter_units_by_properties $1 ActiveState=activating,CanStop=yes $units + # filter out masked and not-found + local units=$( + { __get_not_masked_unit_files $1 $2 + __get_active_units $1 $2 + } | sort -u ) + __filter_units_by_properties $1 ActiveState=active,CanStop=yes $units + __filter_units_by_properties $1 ActiveState=reloading,CanStop=yes $units + __filter_units_by_properties $1 ActiveState=activating,CanStop=yes $units } __get_reloadable_units () { - # filter out masked and not-found - __filter_units_by_properties $1 ActiveState=active,CanReload=yes $( - { __get_not_masked_unit_files $1 $2 - __get_active_units $1 $2 - } | sort -u ) + # filter out masked and not-found + __filter_units_by_properties $1 ActiveState=active,CanReload=yes $( + { __get_not_masked_unit_files $1 $2 + __get_active_units $1 $2 + } | sort -u ) } __get_failed_units () { __systemctl $1 list-units "$2*" \ - | { while read -r a b c d; do [[ $c == "failed" ]] && echo " $a"; done; }; } + | { while read -r a b c d; do [[ $c == "failed" ]] && echo " $a"; done; }; } __get_enabled_units () { __systemctl $1 list-unit-files "$2*" \ - | { while read -r a b c ; do [[ $b == "enabled" ]] && echo " $a"; done; }; } + | { while read -r a b c ; do [[ $b == "enabled" ]] && echo " $a"; done; }; } __get_disabled_units () { __systemctl $1 list-unit-files "$2*" \ - | { while read -r a b c ; do [[ $b == "disabled" ]] && echo " $a"; done; }; } + | { while read -r a b c ; do [[ $b == "disabled" ]] && echo " $a"; done; }; } __get_masked_units () { __systemctl $1 list-unit-files "$2*" \ - | { while read -r a b c ; do [[ $b == "masked" ]] && echo " $a"; done; }; } + | { while read -r a b c ; do [[ $b == "masked" ]] && echo " $a"; done; }; } __get_all_unit_files () { { __systemctl $1 list-unit-files "$2*"; } | { while read -r a b; do echo " $a"; done; }; } __get_machines() { - local a b - { machinectl list-images --no-legend --no-pager; machinectl list --no-legend --no-pager; } | \ - { while read a b; do echo " $a"; done; } + local a b + { machinectl list-images --no-legend --no-pager; machinectl list --no-legend --no-pager; } | \ + { while read a b; do echo " $a"; done; } } _systemctl () { - local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} - local i verb comps mode + local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} + local i verb comps mode - local -A OPTS=( - [STANDALONE]='--all -a --reverse --after --before --defaults --force -f --full -l --global + local -A OPTS=( + [STANDALONE]='--all -a --reverse --after --before --defaults --force -f --full -l --global --help -h --no-ask-password --no-block --no-legend --no-pager --no-reload --no-wall --now --quiet -q --system --user --version --runtime --recursive -r --firmware-setup --show-types -i --ignore-inhibitors --plain --failed --value --fail --dry-run --wait' - [ARG]='--host -H --kill-who --property -p --signal -s --type -t --state --job-mode --root + [ARG]='--host -H --kill-who --property -p --signal -s --type -t --state --job-mode --root --preset-mode -n --lines -o --output -M --machine --message' - ) + ) - if __contains_word "--user" ${COMP_WORDS[*]}; then - mode=--user - elif __contains_word "--global" ${COMP_WORDS[*]}; then - mode=--user - else - mode=--system - fi + if __contains_word "--user" ${COMP_WORDS[*]}; then + mode=--user + elif __contains_word "--global" ${COMP_WORDS[*]}; then + mode=--user + else + mode=--system + fi - if __contains_word "$prev" ${OPTS[ARG]}; then - case $prev in - --signal|-s) - _signals - return - ;; - --type|-t) - comps=$(__systemctl $mode -t help) - ;; - --state) - comps=$(__systemctl $mode --state=help) - ;; - --job-mode) - comps='fail replace replace-irreversibly isolate + if __contains_word "$prev" ${OPTS[ARG]}; then + case $prev in + --signal|-s) + _signals + return + ;; + --type|-t) + comps=$(__systemctl $mode -t help) + ;; + --state) + comps=$(__systemctl $mode --state=help) + ;; + --job-mode) + comps='fail replace replace-irreversibly isolate ignore-dependencies ignore-requirements flush' - ;; - --kill-who) - comps='all control main' - ;; - --root) - comps=$(compgen -A directory -- "$cur" ) - compopt -o filenames - ;; - --host|-H) - comps=$(compgen -A hostname) - ;; - --property|-p) - comps=$(__systemd_properties) - ;; - --preset-mode) - comps='full enable-only disable-only' - ;; - --output|-o) - comps=$( systemctl --output=help 2>/dev/null ) - ;; - --machine|-M) - comps=$( __get_machines ) - ;; - esac - COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) - return 0 - fi + ;; + --kill-who) + comps='all control main' + ;; + --root) + comps=$(compgen -A directory -- "$cur" ) + compopt -o filenames + ;; + --host|-H) + comps=$(compgen -A hostname) + ;; + --property|-p) + comps=$(__systemd_properties) + ;; + --preset-mode) + comps='full enable-only disable-only' + ;; + --output|-o) + comps=$( systemctl --output=help 2>/dev/null ) + ;; + --machine|-M) + comps=$( __get_machines ) + ;; + esac + COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) + return 0 + fi - if [[ "$cur" = -* ]]; then - COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) - return 0 - fi + if [[ "$cur" = -* ]]; then + COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) + return 0 + fi - local -A VERBS=( - [ALL_UNITS]='cat mask' + local -A VERBS=( + [ALL_UNITS]='cat mask' [NONTEMPLATE_UNITS]='is-active is-failed is-enabled status show preset help list-dependencies edit set-property revert' - [ENABLED_UNITS]='disable' - [DISABLED_UNITS]='enable' + [ENABLED_UNITS]='disable' + [DISABLED_UNITS]='enable' [REENABLABLE_UNITS]='reenable' - [FAILED_UNITS]='reset-failed' - [STARTABLE_UNITS]='start' - [STOPPABLE_UNITS]='stop condstop kill try-restart condrestart' - [ISOLATABLE_UNITS]='isolate' - [RELOADABLE_UNITS]='reload condreload try-reload-or-restart force-reload' + [FAILED_UNITS]='reset-failed' + [STARTABLE_UNITS]='start' + [STOPPABLE_UNITS]='stop condstop kill try-restart condrestart' + [ISOLATABLE_UNITS]='isolate' + [RELOADABLE_UNITS]='reload condreload try-reload-or-restart force-reload' [RESTARTABLE_UNITS]='restart reload-or-restart' - [TARGET_AND_UNITS]='add-wants add-requires' - [MASKED_UNITS]='unmask' - [JOBS]='cancel' - [ENVS]='set-environment unset-environment import-environment' - [STANDALONE]='daemon-reexec daemon-reload default + [TARGET_AND_UNITS]='add-wants add-requires' + [MASKED_UNITS]='unmask' + [JOBS]='cancel' + [ENVS]='set-environment unset-environment import-environment' + [STANDALONE]='daemon-reexec daemon-reload default emergency exit halt hibernate hybrid-sleep suspend-then-hibernate kexec list-jobs list-sockets list-timers list-units list-unit-files poweroff reboot rescue show-environment suspend get-default is-system-running preset-all' - [FILE]='link switch-root' - [TARGETS]='set-default' - [MACHINES]='list-machines' - ) + [FILE]='link switch-root' + [TARGETS]='set-default' + [MACHINES]='list-machines' + ) - for ((i=0; i < COMP_CWORD; i++)); do - if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]} && - ! __contains_word "${COMP_WORDS[i-1]}" ${OPTS[ARG]}; then - verb=${COMP_WORDS[i]} - break - fi - done - - if [[ -z $verb ]]; then - comps="${VERBS[*]}" - - elif __contains_word "$verb" ${VERBS[ALL_UNITS]}; then - comps=$( __get_all_units $mode "$cur" ) - compopt -o filenames - - elif __contains_word "$verb" ${VERBS[NONTEMPLATE_UNITS]}; then - comps=$( __get_non_template_units $mode "$cur" ) - compopt -o filenames - - elif __contains_word "$verb" ${VERBS[ENABLED_UNITS]}; then - comps=$( __get_enabled_units $mode "$cur" ) - compopt -o filenames - - elif __contains_word "$verb" ${VERBS[DISABLED_UNITS]}; then - comps=$( __get_disabled_units $mode "$cur"; - __get_template_names $mode "$cur") - compopt -o filenames - - elif __contains_word "$verb" ${VERBS[REENABLABLE_UNITS]}; then - comps=$( __get_disabled_units $mode "$cur"; - __get_enabled_units $mode "$cur"; - __get_template_names $mode "$cur") - compopt -o filenames - - elif __contains_word "$verb" ${VERBS[STARTABLE_UNITS]}; then - comps=$( __get_startable_units $mode "$cur" ) - compopt -o filenames - - elif __contains_word "$verb" ${VERBS[RESTARTABLE_UNITS]}; then - comps=$( __get_restartable_units $mode "$cur" ) - compopt -o filenames - - elif __contains_word "$verb" ${VERBS[STOPPABLE_UNITS]}; then - comps=$( __get_stoppable_units $mode "$cur" ) - compopt -o filenames - - elif __contains_word "$verb" ${VERBS[RELOADABLE_UNITS]}; then - comps=$( __get_reloadable_units $mode "$cur" ) - compopt -o filenames - - elif __contains_word "$verb" ${VERBS[ISOLATABLE_UNITS]}; then - comps=$( __filter_units_by_properties $mode AllowIsolate=yes \ - $( __get_all_units $mode "$cur" ) ) - compopt -o filenames - - elif __contains_word "$verb" ${VERBS[FAILED_UNITS]}; then - comps=$( __get_failed_units $mode "$cur" ) - compopt -o filenames - - elif __contains_word "$verb" ${VERBS[MASKED_UNITS]}; then - comps=$( __get_masked_units $mode "$cur" ) - compopt -o filenames - - elif __contains_word "$verb" ${VERBS[TARGET_AND_UNITS]}; then - if __contains_word "$prev" ${VERBS[TARGET_AND_UNITS]} \ - || __contains_word "$prev" ${OPTS[STANDALONE]}; then - comps=$( __systemctl $mode list-unit-files --type target --all "$cur*" \ - | { while read -r a b; do echo " $a"; done; } ) - else - comps=$( __get_all_unit_files $mode "$cur" ) - fi - compopt -o filenames - - elif __contains_word "$verb" ${VERBS[STANDALONE]}; then - comps='' - - elif __contains_word "$verb" ${VERBS[JOBS]}; then - comps=$( __systemctl $mode list-jobs | { while read -r a b; do echo " $a"; done; } ) - - elif __contains_word "$verb" ${VERBS[ENVS]}; then - comps=$( __systemctl $mode show-environment \ - | while read -r line; do echo " ${line%%=*}="; done ) - compopt -o nospace - - elif __contains_word "$verb" ${VERBS[FILE]}; then - comps=$( compgen -A file -- "$cur" ) - compopt -o filenames - - elif __contains_word "$verb" ${VERBS[TARGETS]}; then - comps=$( __systemctl $mode list-unit-files --type target --full --all "$cur*" \ - | { while read -r a b; do echo " $a"; done; } ) + for ((i=0; i < COMP_CWORD; i++)); do + if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]} && + ! __contains_word "${COMP_WORDS[i-1]}" ${OPTS[ARG]}; then + verb=${COMP_WORDS[i]} + break fi + done - COMPREPLY=( $(compgen -o filenames -W '$comps' -- "$cur") ) - return 0 + if [[ -z $verb ]]; then + comps="${VERBS[*]}" + + elif __contains_word "$verb" ${VERBS[ALL_UNITS]}; then + comps=$( __get_all_units $mode "$cur" ) + compopt -o filenames + + elif __contains_word "$verb" ${VERBS[NONTEMPLATE_UNITS]}; then + comps=$( __get_non_template_units $mode "$cur" ) + compopt -o filenames + + elif __contains_word "$verb" ${VERBS[ENABLED_UNITS]}; then + comps=$( __get_enabled_units $mode "$cur" ) + compopt -o filenames + + elif __contains_word "$verb" ${VERBS[DISABLED_UNITS]}; then + comps=$( __get_disabled_units $mode "$cur"; + __get_template_names $mode "$cur") + compopt -o filenames + + elif __contains_word "$verb" ${VERBS[REENABLABLE_UNITS]}; then + comps=$( __get_disabled_units $mode "$cur"; + __get_enabled_units $mode "$cur"; + __get_template_names $mode "$cur") + compopt -o filenames + + elif __contains_word "$verb" ${VERBS[STARTABLE_UNITS]}; then + comps=$( __get_startable_units $mode "$cur" ) + compopt -o filenames + + elif __contains_word "$verb" ${VERBS[RESTARTABLE_UNITS]}; then + comps=$( __get_restartable_units $mode "$cur" ) + compopt -o filenames + + elif __contains_word "$verb" ${VERBS[STOPPABLE_UNITS]}; then + comps=$( __get_stoppable_units $mode "$cur" ) + compopt -o filenames + + elif __contains_word "$verb" ${VERBS[RELOADABLE_UNITS]}; then + comps=$( __get_reloadable_units $mode "$cur" ) + compopt -o filenames + + elif __contains_word "$verb" ${VERBS[ISOLATABLE_UNITS]}; then + comps=$( __filter_units_by_properties $mode AllowIsolate=yes \ + $( __get_all_units $mode "$cur" ) ) + compopt -o filenames + + elif __contains_word "$verb" ${VERBS[FAILED_UNITS]}; then + comps=$( __get_failed_units $mode "$cur" ) + compopt -o filenames + + elif __contains_word "$verb" ${VERBS[MASKED_UNITS]}; then + comps=$( __get_masked_units $mode "$cur" ) + compopt -o filenames + + elif __contains_word "$verb" ${VERBS[TARGET_AND_UNITS]}; then + if __contains_word "$prev" ${VERBS[TARGET_AND_UNITS]} \ + || __contains_word "$prev" ${OPTS[STANDALONE]}; then + comps=$( __systemctl $mode list-unit-files --type target --all "$cur*" \ + | { while read -r a b; do echo " $a"; done; } ) + else + comps=$( __get_all_unit_files $mode "$cur" ) + fi + compopt -o filenames + + elif __contains_word "$verb" ${VERBS[STANDALONE]}; then + comps='' + + elif __contains_word "$verb" ${VERBS[JOBS]}; then + comps=$( __systemctl $mode list-jobs | { while read -r a b; do echo " $a"; done; } ) + + elif __contains_word "$verb" ${VERBS[ENVS]}; then + comps=$( __systemctl $mode show-environment \ + | while read -r line; do echo " ${line%%=*}="; done ) + compopt -o nospace + + elif __contains_word "$verb" ${VERBS[FILE]}; then + comps=$( compgen -A file -- "$cur" ) + compopt -o filenames + + elif __contains_word "$verb" ${VERBS[TARGETS]}; then + comps=$( __systemctl $mode list-unit-files --type target --full --all "$cur*" \ + | { while read -r a b; do echo " $a"; done; } ) + fi + + COMPREPLY=( $(compgen -o filenames -W '$comps' -- "$cur") ) + return 0 } complete -F _systemctl systemctl diff --git a/shell-completion/bash/systemd-analyze b/shell-completion/bash/systemd-analyze index a4e506d9df..b80e2260fc 100644 --- a/shell-completion/bash/systemd-analyze +++ b/shell-completion/bash/systemd-analyze @@ -19,168 +19,168 @@ # along with systemd; If not, see . __contains_word () { - local w word=$1; shift - for w in "$@"; do - [[ $w = "$word" ]] && return - done + local w word=$1; shift + for w in "$@"; do + [[ $w = "$word" ]] && return + done } __get_machines() { - local a b - machinectl list --no-legend --no-pager | { while read a b; do echo " $a"; done; }; + local a b + machinectl list --no-legend --no-pager | { while read a b; do echo " $a"; done; }; } __get_services() { - systemctl list-units --no-legend --no-pager -t service --all $1 | \ - { while read -r a b c; do [[ $b == "loaded" ]]; echo " $a"; done } + systemctl list-units --no-legend --no-pager -t service --all $1 | \ + { while read -r a b c; do [[ $b == "loaded" ]]; echo " $a"; done } } __get_syscall_sets() { - local line - systemd-analyze syscall-filter --no-pager | while IFS= read -r line; do - if [[ $line == @* ]]; then - printf '%s\n' "$line" - fi - done + local line + systemd-analyze syscall-filter --no-pager | while IFS= read -r line; do + if [[ $line == @* ]]; then + printf '%s\n' "$line" + fi + done } _systemd_analyze() { - local i verb comps mode - local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} + local i verb comps mode + local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} - local -A OPTS=( - [STANDALONE]='-h --help --version --system --user --global --order --require --no-pager + local -A OPTS=( + [STANDALONE]='-h --help --version --system --user --global --order --require --no-pager --man=no --generators=yes' - [ARG]='-H --host -M --machine --fuzz --from-pattern --to-pattern --root' - ) + [ARG]='-H --host -M --machine --fuzz --from-pattern --to-pattern --root' + ) - local -A VERBS=( - [STANDALONE]='time blame plot dump unit-paths calendar timespan' - [CRITICAL_CHAIN]='critical-chain' - [DOT]='dot' - [LOG_LEVEL]='log-level' - [LOG_TARGET]='log-target' - [VERIFY]='verify' - [SECCOMP_FILTER]='syscall-filter' - [SERVICE_WATCHDOGS]='service-watchdogs' - [CAT_CONFIG]='cat-config' - [SECURITY]='security' - ) + local -A VERBS=( + [STANDALONE]='time blame plot dump unit-paths calendar timespan' + [CRITICAL_CHAIN]='critical-chain' + [DOT]='dot' + [LOG_LEVEL]='log-level' + [LOG_TARGET]='log-target' + [VERIFY]='verify' + [SECCOMP_FILTER]='syscall-filter' + [SERVICE_WATCHDOGS]='service-watchdogs' + [CAT_CONFIG]='cat-config' + [SECURITY]='security' + ) - local CONFIGS='systemd/bootchart.conf systemd/coredump.conf systemd/journald.conf + local CONFIGS='systemd/bootchart.conf systemd/coredump.conf systemd/journald.conf systemd/journal-remote.conf systemd/journal-upload.conf systemd/logind.conf systemd/resolved.conf systemd/networkd.conf systemd/resolved.conf systemd/sleep.conf systemd/system.conf systemd/timedated.conf systemd/timesyncd.conf systemd/user.conf udev/udev.conf' - _init_completion || return + _init_completion || return - for ((i=0; i < COMP_CWORD; i++)); do - if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]} && - ! __contains_word "${COMP_WORDS[i-1]}" ${OPTS[ARG]}; then - verb=${COMP_WORDS[i]} - break - fi - done - - if __contains_word "$prev" ${OPTS[ARG]}; then - case $prev in - --host|-H) - comps=$(compgen -A hostname) - ;; - --machine|-M) - comps=$( __get_machines ) - ;; - esac - COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) - return 0 - fi - - if [[ -z $verb && $cur = -* ]]; then - COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) - return 0 - fi - - if [[ -z $verb ]]; then - comps=${VERBS[*]} - - elif __contains_word "$verb" ${VERBS[STANDALONE]}; then - if [[ $cur = -* ]]; then - comps='--help --version --system --user --global --no-pager' - fi - - elif __contains_word "$verb" ${VERBS[CRITICAL_CHAIN]}; then - if [[ $cur = -* ]]; then - comps='--help --version --system --user --fuzz --no-pager' - fi - - elif __contains_word "$verb" ${VERBS[DOT]}; then - if [[ $cur = -* ]]; then - comps='--help --version --system --user --global --from-pattern --to-pattern --order --require' - fi - - elif __contains_word "$verb" ${VERBS[LOG_LEVEL]}; then - if [[ $cur = -* ]]; then - comps='--help --version --system --user' - else - comps='debug info notice warning err crit alert emerg' - fi - - elif __contains_word "$verb" ${VERBS[LOG_TARGET]}; then - if [[ $cur = -* ]]; then - comps='--help --version --system --user' - else - comps='console journal kmsg journal-or-kmsg null' - fi - - elif __contains_word "$verb" ${VERBS[SECCOMP_FILTER]}; then - if [[ $cur = -* ]]; then - comps='--help --version --no-pager' - else - comps=$( __get_syscall_sets ) - fi - - elif __contains_word "$verb" ${VERBS[VERIFY]}; then - if [[ $cur = -* ]]; then - comps='--help --version --system --user --global --man=no --generators=yes' - else - comps=$( compgen -A file -- "$cur" ) - compopt -o filenames - fi - - elif __contains_word "$verb" ${VERBS[SERVICE_WATCHDOGS]}; then - if [[ $cur = -* ]]; then - comps='--help --version --system --user' - else - comps='on off' - fi - - elif __contains_word "$verb" ${VERBS[CAT_CONFIG]}; then - if [[ $cur = -* ]]; then - comps='--help --version --root --no-pager' - elif [[ -z $cur ]]; then - comps="$CONFIGS" - compopt -o filenames - else - comps="$CONFIGS $( compgen -A file -- "$cur" )" - compopt -o filenames - fi - - elif __contains_word "$verb" ${VERBS[SECURITY]}; then - if [[ $cur = -* ]]; then - comps='--help --version --no-pager --system --user -H --host -M --machine' - else - if __contains_word "--user" ${COMP_WORDS[*]}; then - mode=--user - else - mode=--system - fi - comps=$( __get_services $mode ) - fi + for ((i=0; i < COMP_CWORD; i++)); do + if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]} && + ! __contains_word "${COMP_WORDS[i-1]}" ${OPTS[ARG]}; then + verb=${COMP_WORDS[i]} + break fi + done + if __contains_word "$prev" ${OPTS[ARG]}; then + case $prev in + --host|-H) + comps=$(compgen -A hostname) + ;; + --machine|-M) + comps=$( __get_machines ) + ;; + esac COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) return 0 + fi + + if [[ -z $verb && $cur = -* ]]; then + COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) + return 0 + fi + + if [[ -z $verb ]]; then + comps=${VERBS[*]} + + elif __contains_word "$verb" ${VERBS[STANDALONE]}; then + if [[ $cur = -* ]]; then + comps='--help --version --system --user --global --no-pager' + fi + + elif __contains_word "$verb" ${VERBS[CRITICAL_CHAIN]}; then + if [[ $cur = -* ]]; then + comps='--help --version --system --user --fuzz --no-pager' + fi + + elif __contains_word "$verb" ${VERBS[DOT]}; then + if [[ $cur = -* ]]; then + comps='--help --version --system --user --global --from-pattern --to-pattern --order --require' + fi + + elif __contains_word "$verb" ${VERBS[LOG_LEVEL]}; then + if [[ $cur = -* ]]; then + comps='--help --version --system --user' + else + comps='debug info notice warning err crit alert emerg' + fi + + elif __contains_word "$verb" ${VERBS[LOG_TARGET]}; then + if [[ $cur = -* ]]; then + comps='--help --version --system --user' + else + comps='console journal kmsg journal-or-kmsg null' + fi + + elif __contains_word "$verb" ${VERBS[SECCOMP_FILTER]}; then + if [[ $cur = -* ]]; then + comps='--help --version --no-pager' + else + comps=$( __get_syscall_sets ) + fi + + elif __contains_word "$verb" ${VERBS[VERIFY]}; then + if [[ $cur = -* ]]; then + comps='--help --version --system --user --global --man=no --generators=yes' + else + comps=$( compgen -A file -- "$cur" ) + compopt -o filenames + fi + + elif __contains_word "$verb" ${VERBS[SERVICE_WATCHDOGS]}; then + if [[ $cur = -* ]]; then + comps='--help --version --system --user' + else + comps='on off' + fi + + elif __contains_word "$verb" ${VERBS[CAT_CONFIG]}; then + if [[ $cur = -* ]]; then + comps='--help --version --root --no-pager' + elif [[ -z $cur ]]; then + comps="$CONFIGS" + compopt -o filenames + else + comps="$CONFIGS $( compgen -A file -- "$cur" )" + compopt -o filenames + fi + + elif __contains_word "$verb" ${VERBS[SECURITY]}; then + if [[ $cur = -* ]]; then + comps='--help --version --no-pager --system --user -H --host -M --machine' + else + if __contains_word "--user" ${COMP_WORDS[*]}; then + mode=--user + else + mode=--system + fi + comps=$( __get_services $mode ) + fi + fi + + COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) + return 0 } complete -F _systemd_analyze systemd-analyze diff --git a/shell-completion/bash/systemd-cat b/shell-completion/bash/systemd-cat index c75871c482..62da65da7a 100644 --- a/shell-completion/bash/systemd-cat +++ b/shell-completion/bash/systemd-cat @@ -18,40 +18,40 @@ # along with systemd; If not, see . __contains_word() { - local w word=$1; shift - for w in "$@"; do - [[ $w = "$word" ]] && return - done + local w word=$1; shift + for w in "$@"; do + [[ $w = "$word" ]] && return + done } _systemd_cat() { - local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} - local i verb comps + local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} + local i verb comps - local -A OPTS=( - [STANDALONE]='-h --help --version' - [ARG]='-t --identifier -p --priority --level-prefix' - ) + local -A OPTS=( + [STANDALONE]='-h --help --version' + [ARG]='-t --identifier -p --priority --level-prefix' + ) - _init_completion || return + _init_completion || return - if __contains_word "$prev" ${OPTS[ARG]}; then - case $prev in - --identifier|-t) - comps='' - ;; - --priority|-p) - comps='emerg alert crit err warning notice info debug' - ;; - --level-prefix) - comps='yes no' - ;; - esac - COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) - return 0 - fi + if __contains_word "$prev" ${OPTS[ARG]}; then + case $prev in + --identifier|-t) + comps='' + ;; + --priority|-p) + comps='emerg alert crit err warning notice info debug' + ;; + --level-prefix) + comps='yes no' + ;; + esac + COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) + return 0 + fi - COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) + COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) } complete -F _systemd_cat systemd-cat diff --git a/shell-completion/bash/systemd-cgls b/shell-completion/bash/systemd-cgls index 1e2074a8cb..9a5969bee7 100644 --- a/shell-completion/bash/systemd-cgls +++ b/shell-completion/bash/systemd-cgls @@ -3,7 +3,6 @@ # # This file is part of systemd. # -# # systemd is free software; you can redistribute it and/or modify it # under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation; either version 2.1 of the License, or @@ -18,53 +17,53 @@ # along with systemd; If not, see . __contains_word() { - local w word=$1; shift - for w in "$@"; do - [[ $w = "$word" ]] && return - done + local w word=$1; shift + for w in "$@"; do + [[ $w = "$word" ]] && return + done } __get_machines() { - local a b - machinectl list --no-legend --no-pager | { while read a b; do echo " $a"; done; }; + local a b + machinectl list --no-legend --no-pager | { while read a b; do echo " $a"; done; }; } __get_units_have_cgroup() { - systemctl $1 list-units | { - while read -r a b c d; do - [[ $c == "active" && ${a##*.} =~ (service|socket|mount|swap|slice|scope) ]] && echo " $a" - done - }; + systemctl $1 list-units | { + while read -r a b c d; do + [[ $c == "active" && ${a##*.} =~ (service|socket|mount|swap|slice|scope) ]] && echo " $a" + done + }; } _systemd_cgls() { - local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} - local i verb comps + local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} + local i verb comps - local -A OPTS=( - [STANDALONE]='-h --help --version --all -l --full -k --no-pager' - [ARG]='-M --machine -u --unit --user-unit' - ) + local -A OPTS=( + [STANDALONE]='-h --help --version --all -l --full -k --no-pager' + [ARG]='-M --machine -u --unit --user-unit' + ) - _init_completion || return + _init_completion || return - if __contains_word "$prev" ${OPTS[ARG]}; then - case $prev in - --machine|-M) - comps=$( __get_machines ) - ;; - --unit|-u) - comps=$( __get_units_have_cgroup --system ) - ;; - --user-unit) - comps=$( __get_units_have_cgroup --user ) - ;; - esac - COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) - return 0 - fi + if __contains_word "$prev" ${OPTS[ARG]}; then + case $prev in + --machine|-M) + comps=$( __get_machines ) + ;; + --unit|-u) + comps=$( __get_units_have_cgroup --system ) + ;; + --user-unit) + comps=$( __get_units_have_cgroup --user ) + ;; + esac + COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) + return 0 + fi - COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) + COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) } complete -F _systemd_cgls systemd-cgls diff --git a/shell-completion/bash/systemd-cgtop b/shell-completion/bash/systemd-cgtop index 8bd83ca442..8689897130 100644 --- a/shell-completion/bash/systemd-cgtop +++ b/shell-completion/bash/systemd-cgtop @@ -3,7 +3,6 @@ # # This file is part of systemd. # -# # systemd is free software; you can redistribute it and/or modify it # under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation; either version 2.1 of the License, or @@ -18,45 +17,45 @@ # along with systemd; If not, see . __contains_word() { - local w word=$1; shift - for w in "$@"; do - [[ $w = "$word" ]] && return - done + local w word=$1; shift + for w in "$@"; do + [[ $w = "$word" ]] && return + done } __get_machines() { - local a b - machinectl list --no-legend --no-pager | { while read a b; do echo " $a"; done; }; + local a b + machinectl list --no-legend --no-pager | { while read a b; do echo " $a"; done; }; } _systemd_cgtop() { - local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} - local comps + local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} + local comps - local -A OPTS=( - [STANDALONE]='-h --help --version -p -t -c -m -i -b --batch -r --raw -k -P' - [ARG]='--cpu --depth -M --machine --recursive -n --iterations -d --delay --order' - ) + local -A OPTS=( + [STANDALONE]='-h --help --version -p -t -c -m -i -b --batch -r --raw -k -P' + [ARG]='--cpu --depth -M --machine --recursive -n --iterations -d --delay --order' + ) - _init_completion || return + _init_completion || return - if __contains_word "$prev" ${OPTS[ARG]}; then - case $prev in - --machine|-M) - comps=$( __get_machines ) - ;; - --recursive) - comps='yes no' - ;; - --order) - comps='path tasks cpu memory io' - ;; - esac - COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) - return 0 - fi + if __contains_word "$prev" ${OPTS[ARG]}; then + case $prev in + --machine|-M) + comps=$( __get_machines ) + ;; + --recursive) + comps='yes no' + ;; + --order) + comps='path tasks cpu memory io' + ;; + esac + COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) + return 0 + fi - COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) + COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) } complete -F _systemd_cgtop systemd-cgtop diff --git a/shell-completion/bash/systemd-delta b/shell-completion/bash/systemd-delta index 29f528cc7a..fcf27ba30e 100644 --- a/shell-completion/bash/systemd-delta +++ b/shell-completion/bash/systemd-delta @@ -3,7 +3,6 @@ # # This file is part of systemd. # -# # systemd is free software; you can redistribute it and/or modify it # under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation; either version 2.1 of the License, or @@ -18,44 +17,44 @@ # along with systemd; If not, see . __contains_word() { - local w word=$1; shift - for w in "$@"; do - [[ $w = "$word" ]] && return - done + local w word=$1; shift + for w in "$@"; do + [[ $w = "$word" ]] && return + done } _systemd-delta() { - local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} - local comps + local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} + local comps - local -A OPTS=( - [STANDALONE]='--help -h --no-pager --version' - [ARG]='--diff --type -t' - ) + local -A OPTS=( + [STANDALONE]='--help -h --no-pager --version' + [ARG]='--diff --type -t' + ) - _init_completion || return + _init_completion || return - if __contains_word "$prev" ${OPTS[ARG]}; then - case $prev in - --diff) - comps='yes no' - ;; - --type|-t) - comps='masked equivalent redirected overridden unchanged extended default' - ;; - esac - COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) - return 0 - fi - - if [[ "$cur" = -* ]]; then - COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) - return 0 - fi - + if __contains_word "$prev" ${OPTS[ARG]}; then + case $prev in + --diff) + comps='yes no' + ;; + --type|-t) + comps='masked equivalent redirected overridden unchanged extended default' + ;; + esac COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) return 0 + fi + + if [[ "$cur" = -* ]]; then + COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) + return 0 + fi + + COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) + return 0 } complete -F _systemd-delta systemd-delta diff --git a/shell-completion/bash/systemd-detect-virt b/shell-completion/bash/systemd-detect-virt index cdb516da64..bea00fc7ae 100644 --- a/shell-completion/bash/systemd-detect-virt +++ b/shell-completion/bash/systemd-detect-virt @@ -3,7 +3,6 @@ # # This file is part of systemd. # -# # systemd is free software; you can redistribute it and/or modify it # under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation; either version 2.1 of the License, or @@ -18,24 +17,24 @@ # along with systemd; If not, see . __contains_word() { - local w word=$1; shift - for w in "$@"; do - [[ $w = "$word" ]] && return - done + local w word=$1; shift + for w in "$@"; do + [[ $w = "$word" ]] && return + done } _systemd_detect_virt() { - local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} - local i verb comps + local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} + local i verb comps - local -A OPTS=( - [STANDALONE]='-h --help --version -c --container -v --vm -q --quiet + local -A OPTS=( + [STANDALONE]='-h --help --version -c --container -v --vm -q --quiet --private-users' - ) + ) - _init_completion || return + _init_completion || return - COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) + COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) } complete -F _systemd_detect_virt systemd-detect-virt diff --git a/shell-completion/bash/systemd-id128 b/shell-completion/bash/systemd-id128 index cfd5438cb4..f25848beba 100644 --- a/shell-completion/bash/systemd-id128 +++ b/shell-completion/bash/systemd-id128 @@ -17,58 +17,58 @@ # along with systemd; If not, see . __contains_word () { - local w word=$1; shift - for w in "$@"; do - [[ $w = "$word" ]] && return - done - return 1 + local w word=$1; shift + for w in "$@"; do + [[ $w = "$word" ]] && return + done + return 1 } _systemd_id128() { - local i verb comps - local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} - local -A OPTS=( - [STANDALONE]='-h --help --version -p --pretty' - [ARG]='-a --app-specific' - ) + local i verb comps + local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} + local -A OPTS=( + [STANDALONE]='-h --help --version -p --pretty' + [ARG]='-a --app-specific' + ) - local -A VERBS=( - [STANDALONE]='new machine-id boot-id invocation-id help' - ) + local -A VERBS=( + [STANDALONE]='new machine-id boot-id invocation-id help' + ) - _init_completion || return - - if __contains_word "$prev" ${OPTS[ARG]}; then - case $prev in - --app-specific|-a) - comps="" - ;; - esac - COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) - return 0 - fi - - if [[ "$cur" = -* ]]; then - COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) - return 0 - fi - - for ((i=0; i < COMP_CWORD; i++)); do - if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]} && - ! __contains_word "${COMP_WORDS[i-1]}" ${OPTS[ARG]}; then - verb=${COMP_WORDS[i]} - break - fi - done - - if [[ -z $verb ]]; then - comps=${VERBS[*]} - elif __contains_word "$verb" ${VERBS[STANDALONE]}; then - comps='' - fi + _init_completion || return + if __contains_word "$prev" ${OPTS[ARG]}; then + case $prev in + --app-specific|-a) + comps="" + ;; + esac COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) return 0 + fi + + if [[ "$cur" = -* ]]; then + COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) + return 0 + fi + + for ((i=0; i < COMP_CWORD; i++)); do + if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]} && + ! __contains_word "${COMP_WORDS[i-1]}" ${OPTS[ARG]}; then + verb=${COMP_WORDS[i]} + break + fi + done + + if [[ -z $verb ]]; then + comps=${VERBS[*]} + elif __contains_word "$verb" ${VERBS[STANDALONE]}; then + comps='' + fi + + COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) + return 0 } complete -F _systemd_id128 systemd-id128 diff --git a/shell-completion/bash/systemd-nspawn b/shell-completion/bash/systemd-nspawn index 3ba2cd6ec9..b4bcba8882 100644 --- a/shell-completion/bash/systemd-nspawn +++ b/shell-completion/bash/systemd-nspawn @@ -3,7 +3,6 @@ # # This file is part of systemd. # -# # systemd is free software; you can redistribute it and/or modify it # under the terms of the GNU Lesser General Public License as published by # the Free Software Foundation; either version 2.1 of the License, or @@ -18,176 +17,178 @@ # along with systemd; If not, see . __contains_word() { - local w word=$1; shift - for w in "$@"; do - [[ $w = "$word" ]] && return - done + local w word=$1; shift + for w in "$@"; do + [[ $w = "$word" ]] && return + done } __get_users() { - local a b - loginctl list-users --no-legend --no-pager | { while read a b; do echo " $b"; done; }; + local a b + loginctl list-users --no-legend --no-pager | { while read a b; do echo " $b"; done; }; } __get_slices() { - local a b - systemctl list-units -t slice --no-legend --no-pager | { while read a b; do echo " $a"; done; }; + local a b + systemctl list-units -t slice --no-legend --no-pager | { while read a b; do echo " $a"; done; }; } __get_machines() { - local a b - machinectl list --no-legend --no-pager | { while read a b; do echo " $a"; done; }; + local a b + machinectl list --no-legend --no-pager | { while read a b; do echo " $a"; done; }; } __get_env() { - local a - env | { while read a; do echo " ${a%%=*}"; done; }; + local a + env | { while read a; do echo " ${a%%=*}"; done; }; } __get_interfaces(){ - local name - for name in $(cd /sys/class/net && ls); do - [[ "$name" != "lo" ]] && echo "$name" - done + local name + for name in $(cd /sys/class/net && ls); do + [[ "$name" != "lo" ]] && echo "$name" + done } __get_rlimit() { - local i - for i in $(systemd-nspawn --rlimit=help 2>/dev/null); do - echo " ${i}=" - done + local i + for i in $(systemd-nspawn --rlimit=help 2>/dev/null); do + echo " ${i}=" + done } _systemd_nspawn() { - local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} - local i verb comps + local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} + local i verb comps - local -A OPTS=( - [STANDALONE]='-h --help --version --private-network -b --boot --read-only -q --quiet --share-system --keep-unit -n --network-veth - -j -x --ephemeral -a --as-pid2 --private-users-chown -U' - [ARG]='-D --directory -u --user --uuid --capability --drop-capability --link-journal --bind --bind-ro -M --machine - -S --slice -E --setenv -Z --selinux-context -L --selinux-apifs-context --register --network-interface --network-bridge - --personality -i --image --tmpfs --volatile --network-macvlan --kill-signal --template --notify-ready --root-hash - --chdir --pivot-root --property --private-users --network-namespace-path --network-ipvlan --network-veth-extra - --network-zone -p --port --system-call-filter --overlay --overlay-ro --settings - --rlimit --hostname --no-new-privileges --oom-score-adjust --cpu-affinity --resolv-conf --timezone' - ) + local -A OPTS=( + [STANDALONE]='-h --help --version --private-network -b --boot --read-only -q --quiet --share-system + --keep-unit -n --network-veth -j -x --ephemeral -a --as-pid2 --private-users-chown -U' + [ARG]='-D --directory -u --user --uuid --capability --drop-capability --link-journal --bind --bind-ro + -M --machine -S --slice -E --setenv -Z --selinux-context -L --selinux-apifs-context + --register --network-interface --network-bridge --personality -i --image --tmpfs + --volatile --network-macvlan --kill-signal --template --notify-ready --root-hash --chdir + --pivot-root --property --private-users --network-namespace-path --network-ipvlan + --network-veth-extra --network-zone -p --port --system-call-filter --overlay --overlay-ro + --settings --rlimit --hostname --no-new-privileges --oom-score-adjust --cpu-affinity + --resolv-conf --timezone' + ) - _init_completion || return + _init_completion || return - if __contains_word "$prev" ${OPTS[ARG]}; then - case $prev in - --directory|-D|--template) - compopt -o nospace - comps=$(compgen -S/ -A directory -- "$cur" ) - ;; - --user|-u) - comps=$( __get_users ) - ;; - --uuid|--root-hash) - comps='' - ;; - --capability) - comps='CAP_BLOCK_SUSPEND CAP_IPC_LOCK CAP_MAC_ADMIN CAP_MAC_OVERRIDE CAP_SYS_MODULE CAP_SYS_PACCT CAP_SYS_RAWIO - CAP_SYS_TIME CAP_SYSLOG CAP_WAKE_ALARM CAP_NET_ADMIN' - ;; - --drop-capability) - comps='CAP_AUDIT_CONTROL CAP_AUDIT_WRITE CAP_CHOWN CAP_DAC_OVERRIDE CAP_DAC_READ_SEARCH CAP_FOWNER CAP_FSETID - CAP_IPC_OWNER CAP_KILL CAP_LEASE CAP_LINUX_IMMUTABLE CAP_MKNOD CAP_NET_ADMIN CAP_NET_BIND_SERVICE - CAP_NET_BROADCAST CAP_NET_RAW CAP_SETFCAP CAP_SETGID CAP_SETPCAP CAP_SETUID CAP_SYS_ADMIN CAP_SYS_BOOT - CAP_SYS_CHROOT CAP_SYS_NICE CAP_SYS_PTRACE CAP_SYS_RESOURCE CAP_SYS_TTY_CONFIG' - ;; - --link-journal) - comps='no auto guest try-guest host try-host' - ;; - --bind|--bind-ro) - compopt -o nospace - comps=$(compgen -S/ -A directory -- "$cur" ) - ;; - --tmpfs) - compopt -o nospace - comps=$(compgen -S/ -A directory -- "$cur" ) - ;; - --machine|-M) - comps=$( __get_machines ) - ;; - --slice|-S) - comps=$( __get_slices ) - ;; - --setenv|-E) - comps=$( __get_env ) - ;; - --selinux-context|-Z) - comps='' - ;; - --selinux-apifs-context|-L) - comps='' - ;; - --register) - comps='yes no' - ;; - --network-interface) - comps=$(__get_interfaces) - ;; - --network-bridge) - comps='' - ;; - --network-macvlan) - comps='' - ;; - --personality) - comps='x86 x86-64' - ;; - --volatile) - comps=$( systemd-nspawn --volatile=help 2>/dev/null ) - ;; - --image|-i) - compopt -o nospace - comps=$( compgen -A file -- "$cur" ) - ;; - --kill-signal) - _signals - return - ;; - --notify-ready) - comps='yes no' - ;; - --private-users) - comps='yes no pick' - ;; - --network-namespace-path) - comps=$( compgen -A file -- "$cur" ) - ;; - --settings) - comps='yes no override trusted' - ;; - --rlimit) - comps=$( __get_rlimit ) - ;; - --hostname) - comps='' - ;; - --no-new-privileges) - comps='yes no' - ;; - --oom-score-adjust) - comps='' - ;; - --cpu-affinity) - comps='' - ;; - --resolv-conf) - comps=$( systemd-nspawn --resolv-conf=help 2>/dev/null ) - ;; - --timezone) - comps=$( systemd-nspawn --timezone=help 2>/dev/null ) - ;; - esac - COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) - return 0 - fi + if __contains_word "$prev" ${OPTS[ARG]}; then + case $prev in + --directory|-D|--template) + compopt -o nospace + comps=$(compgen -S/ -A directory -- "$cur" ) + ;; + --user|-u) + comps=$( __get_users ) + ;; + --uuid|--root-hash) + comps='' + ;; + --capability) + comps='CAP_BLOCK_SUSPEND CAP_IPC_LOCK CAP_MAC_ADMIN CAP_MAC_OVERRIDE CAP_SYS_MODULE CAP_SYS_PACCT CAP_SYS_RAWIO + CAP_SYS_TIME CAP_SYSLOG CAP_WAKE_ALARM CAP_NET_ADMIN' + ;; + --drop-capability) + comps='CAP_AUDIT_CONTROL CAP_AUDIT_WRITE CAP_CHOWN CAP_DAC_OVERRIDE CAP_DAC_READ_SEARCH CAP_FOWNER CAP_FSETID + CAP_IPC_OWNER CAP_KILL CAP_LEASE CAP_LINUX_IMMUTABLE CAP_MKNOD CAP_NET_ADMIN CAP_NET_BIND_SERVICE + CAP_NET_BROADCAST CAP_NET_RAW CAP_SETFCAP CAP_SETGID CAP_SETPCAP CAP_SETUID CAP_SYS_ADMIN CAP_SYS_BOOT + CAP_SYS_CHROOT CAP_SYS_NICE CAP_SYS_PTRACE CAP_SYS_RESOURCE CAP_SYS_TTY_CONFIG' + ;; + --link-journal) + comps='no auto guest try-guest host try-host' + ;; + --bind|--bind-ro) + compopt -o nospace + comps=$(compgen -S/ -A directory -- "$cur" ) + ;; + --tmpfs) + compopt -o nospace + comps=$(compgen -S/ -A directory -- "$cur" ) + ;; + --machine|-M) + comps=$( __get_machines ) + ;; + --slice|-S) + comps=$( __get_slices ) + ;; + --setenv|-E) + comps=$( __get_env ) + ;; + --selinux-context|-Z) + comps='' + ;; + --selinux-apifs-context|-L) + comps='' + ;; + --register) + comps='yes no' + ;; + --network-interface) + comps=$(__get_interfaces) + ;; + --network-bridge) + comps='' + ;; + --network-macvlan) + comps='' + ;; + --personality) + comps='x86 x86-64' + ;; + --volatile) + comps=$( systemd-nspawn --volatile=help 2>/dev/null ) + ;; + --image|-i) + compopt -o nospace + comps=$( compgen -A file -- "$cur" ) + ;; + --kill-signal) + _signals + return + ;; + --notify-ready) + comps='yes no' + ;; + --private-users) + comps='yes no pick' + ;; + --network-namespace-path) + comps=$( compgen -A file -- "$cur" ) + ;; + --settings) + comps='yes no override trusted' + ;; + --rlimit) + comps=$( __get_rlimit ) + ;; + --hostname) + comps='' + ;; + --no-new-privileges) + comps='yes no' + ;; + --oom-score-adjust) + comps='' + ;; + --cpu-affinity) + comps='' + ;; + --resolv-conf) + comps=$( systemd-nspawn --resolv-conf=help 2>/dev/null ) + ;; + --timezone) + comps=$( systemd-nspawn --timezone=help 2>/dev/null ) + ;; + esac + COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) + return 0 + fi - COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) + COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) } complete -F _systemd_nspawn systemd-nspawn diff --git a/shell-completion/bash/systemd-path b/shell-completion/bash/systemd-path index 5d99775c2d..189fec0933 100644 --- a/shell-completion/bash/systemd-path +++ b/shell-completion/bash/systemd-path @@ -17,45 +17,45 @@ # along with systemd; If not, see . __contains_word () { - local w word=$1; shift - for w in "$@"; do - [[ $w = "$word" ]] && return - done - return 1 + local w word=$1; shift + for w in "$@"; do + [[ $w = "$word" ]] && return + done + return 1 } __get_names() { - systemd-path | { while IFS=: read -r a b; do echo " $a"; done; } + systemd-path | { while IFS=: read -r a b; do echo " $a"; done; } } _systemd_path() { - local comps - local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} - local -A OPTS=( - [STANDALONE]='-h --help --version' - [ARG]='--suffix' - ) + local comps + local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} + local -A OPTS=( + [STANDALONE]='-h --help --version' + [ARG]='--suffix' + ) - _init_completion || return + _init_completion || return - if __contains_word "$prev" ${OPTS[ARG]}; then - case $prev in - --suffix) - comps='' - ;; - esac - COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) - return 0 - fi - - if [[ "$cur" = -* ]]; then - COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) - return 0 - fi - - comps=$( __get_names ) + if __contains_word "$prev" ${OPTS[ARG]}; then + case $prev in + --suffix) + comps='' + ;; + esac COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) return 0 + fi + + if [[ "$cur" = -* ]]; then + COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) + return 0 + fi + + comps=$( __get_names ) + COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) + return 0 } complete -F _systemd_path systemd-path diff --git a/shell-completion/bash/systemd-resolve b/shell-completion/bash/systemd-resolve index cd0231a6f4..84747b7462 100644 --- a/shell-completion/bash/systemd-resolve +++ b/shell-completion/bash/systemd-resolve @@ -17,64 +17,64 @@ # along with systemd; If not, see . __contains_word () { - local w word=$1; shift - for w in "$@"; do - [[ $w = "$word" ]] && return - done + local w word=$1; shift + for w in "$@"; do + [[ $w = "$word" ]] && return + done } __get_interfaces(){ - local name - for name in $(cd /sys/class/net && ls); do - [[ "$name" != "lo" ]] && echo "$name" - done + local name + for name in $(cd /sys/class/net && ls); do + [[ "$name" != "lo" ]] && echo "$name" + done } _systemd-resolve() { - local i comps - local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} - local -A OPTS=( - [STANDALONE]='-h --help --version --no-pager -4 -6 - --service --openpgp --tlsa --status --statistics - --reset-statistics --service-address=no --service-txt=no - --cname=no --search=no --legend=no --flush-caches - --reset-server-features --revert' - [ARG]='-i --interface -p --protocol -t --type -c --class --raw - --set-dns --set-domain --set-llmnr --set-mdns --set-dnssec --set-nta' - ) + local i comps + local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} + local -A OPTS=( + [STANDALONE]='-h --help --version --no-pager -4 -6 + --service --openpgp --tlsa --status --statistics + --reset-statistics --service-address=no --service-txt=no + --cname=no --search=no --legend=no --flush-caches + --reset-server-features --revert' + [ARG]='-i --interface -p --protocol -t --type -c --class --raw + --set-dns --set-domain --set-llmnr --set-mdns --set-dnssec --set-nta' + ) - if __contains_word "$prev" ${OPTS[ARG]}; then - case $prev in - --interface|-i) - comps=$( __get_interfaces ) - ;; - --protocol|-p|--type|-t|--class|-c) - comps=$( systemd-resolve --legend=no "$prev" help; echo help ) - ;; - --raw) - comps="payload packet" - ;; - --set-dns|--set-domain|--set-nta) - comps="" - ;; - --set-llmnr|--set-mdns) - comps="yes no resolve" - ;; - --set-dnssec) - comps="yes no allow-downgrade" - ;; - --set-dnsovertls) - comps="no opportunistic" - ;; - esac - COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) - return 0 - fi + if __contains_word "$prev" ${OPTS[ARG]}; then + case $prev in + --interface|-i) + comps=$( __get_interfaces ) + ;; + --protocol|-p|--type|-t|--class|-c) + comps=$( systemd-resolve --legend=no "$prev" help; echo help ) + ;; + --raw) + comps="payload packet" + ;; + --set-dns|--set-domain|--set-nta) + comps="" + ;; + --set-llmnr|--set-mdns) + comps="yes no resolve" + ;; + --set-dnssec) + comps="yes no allow-downgrade" + ;; + --set-dnsovertls) + comps="no opportunistic" + ;; + esac + COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) + return 0 + fi - if [[ "$cur" = -* ]]; then - COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) - return 0 - fi + if [[ "$cur" = -* ]]; then + COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) + return 0 + fi } complete -F _systemd-resolve systemd-resolve diff --git a/shell-completion/bash/systemd-run b/shell-completion/bash/systemd-run index 0908bd9334..4670973032 100644 --- a/shell-completion/bash/systemd-run +++ b/shell-completion/bash/systemd-run @@ -17,16 +17,16 @@ # along with systemd; If not, see . __systemctl() { - local mode=$1; shift 1 - systemctl $mode --full --no-legend "$@" + local mode=$1; shift 1 + systemctl $mode --full --no-legend "$@" } __get_slice_units () { __systemctl $1 list-units --all -t slice \ - | { while read -r a b c d; do echo " $a"; done; }; } + | { while read -r a b c d; do echo " $a"; done; }; } __get_machines() { - local a b - machinectl list --no-legend --no-pager | { while read a b; do echo " $a"; done; }; + local a b + machinectl list --no-legend --no-pager | { while read a b; do echo " $a"; done; }; } _systemd_run() { diff --git a/shell-completion/bash/timedatectl b/shell-completion/bash/timedatectl index b2dd1a88c4..75796ff382 100644 --- a/shell-completion/bash/timedatectl +++ b/shell-completion/bash/timedatectl @@ -19,68 +19,68 @@ # along with systemd; If not, see . __contains_word () { - local w word=$1; shift - for w in "$@"; do - [[ $w = "$word" ]] && return - done + local w word=$1; shift + for w in "$@"; do + [[ $w = "$word" ]] && return + done } __get_machines() { - local a b - machinectl list --no-legend --no-pager | { while read a b; do echo " $a"; done; }; + local a b + machinectl list --no-legend --no-pager | { while read a b; do echo " $a"; done; }; } _timedatectl() { - local i verb comps - local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} - local OPTS='-h --help --version --adjust-system-clock --no-pager - --no-ask-password -H --host -M --machine --monitor - -p --property -a --all --value' - - if __contains_word "$prev" $OPTS; then - case $prev in - --host|-H) - comps=$(compgen -A hostname) - ;; - --machine|-M) - comps=$( __get_machines ) - ;; - esac - COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) - return 0 - fi - - if [[ $cur = -* ]]; then - COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) - return 0 - fi - - local -A VERBS=( - [BOOLEAN]='set-local-rtc set-ntp' - [STANDALONE]='status show list-timezones timesync-status show-timesync' - [TIMEZONES]='set-timezone' - [TIME]='set-time' - ) - - for ((i=0; i < COMP_CWORD; i++)); do - if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]}; then - verb=${COMP_WORDS[i]} - break - fi - done - - if [[ -z $verb ]]; then - comps=${VERBS[*]} - elif __contains_word "$verb" ${VERBS[BOOLEAN]}; then - comps='true false' - elif __contains_word "$verb" ${VERBS[TIMEZONES]}; then - comps=$(command timedatectl list-timezones) - elif __contains_word "$verb" ${VERBS[STANDALONE]} ${VERBS[TIME]}; then - comps='' - fi + local i verb comps + local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} + local OPTS='-h --help --version --adjust-system-clock --no-pager + --no-ask-password -H --host -M --machine --monitor + -p --property -a --all --value' + if __contains_word "$prev" $OPTS; then + case $prev in + --host|-H) + comps=$(compgen -A hostname) + ;; + --machine|-M) + comps=$( __get_machines ) + ;; + esac COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) return 0 + fi + + if [[ $cur = -* ]]; then + COMPREPLY=( $(compgen -W '${OPTS[*]}' -- "$cur") ) + return 0 + fi + + local -A VERBS=( + [BOOLEAN]='set-local-rtc set-ntp' + [STANDALONE]='status show list-timezones timesync-status show-timesync' + [TIMEZONES]='set-timezone' + [TIME]='set-time' + ) + + for ((i=0; i < COMP_CWORD; i++)); do + if __contains_word "${COMP_WORDS[i]}" ${VERBS[*]}; then + verb=${COMP_WORDS[i]} + break + fi + done + + if [[ -z $verb ]]; then + comps=${VERBS[*]} + elif __contains_word "$verb" ${VERBS[BOOLEAN]}; then + comps='true false' + elif __contains_word "$verb" ${VERBS[TIMEZONES]}; then + comps=$(command timedatectl list-timezones) + elif __contains_word "$verb" ${VERBS[STANDALONE]} ${VERBS[TIME]}; then + comps='' + fi + + COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) + return 0 } complete -F _timedatectl timedatectl diff --git a/shell-completion/bash/udevadm b/shell-completion/bash/udevadm index 49db2904a4..0e9dbb0c4e 100644 --- a/shell-completion/bash/udevadm +++ b/shell-completion/bash/udevadm @@ -19,218 +19,225 @@ # along with systemd; If not, see . __contains_word () { - local w word=$1; shift - for w in "$@"; do - [[ $w = "$word" ]] && return - done + local w word=$1; shift + for w in "$@"; do + [[ $w = "$word" ]] && return + done } __get_all_sysdevs() { - local -a devs=(/sys/bus/*/devices/*/ /sys/class/*/*/) - printf '%s\n' "${devs[@]%/}" + local -a devs=(/sys/bus/*/devices/*/ /sys/class/*/*/) + printf '%s\n' "${devs[@]%/}" } __get_all_devs() { - local i - for i in /dev/* /dev/*/*; do - echo $i - done + local i + for i in /dev/* /dev/*/*; do + echo $i + done } __get_all_device_units() { - systemctl list-units -t device --full --no-legend --no-pager 2>/dev/null | \ - { while read -r a b; do echo "$a"; done; } + systemctl list-units -t device --full --no-legend --no-pager 2>/dev/null | \ + { while read -r a b; do echo "$a"; done; } } _udevadm() { - local i verb comps builtin - local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} - local -A OPTS=( - [COMMON]='-h --help -V --version' - [DEBUG]='-d --debug' - [INFO_STANDALONE]='-r --root -a --attribute-walk -x --export -e --export-db -c --cleanup-db' - [INFO_ARG]='-q --query -p --path -n --name -P --export-prefix -d --device-id-of-file' - [TRIGGER_STANDALONE]='-v --verbose -n --dry-run -w --settle --wait-daemon' - [TRIGGER_ARG]='-t --type -c --action -s --subsystem-match -S --subsystem-nomatch - -a --attr-match -A --attr-nomatch -p --property-match - -g --tag-match -y --sysname-match --name-match -b --parent-match' - [SETTLE]='-t --timeout -E --exit-if-exists' - [CONTROL_STANDALONE]='-e --exit -s --stop-exec-queue -S --start-exec-queue -R --reload --ping' - [CONTROL_ARG]='-l --log-priority -p --property -m --children-max -t --timeout' - [MONITOR_STANDALONE]='-k --kernel -u --udev -p --property' - [MONITOR_ARG]='-s --subsystem-match -t --tag-match' - [TEST]='-a --action -N --resolve-names' - ) + local i verb comps builtin + local cur=${COMP_WORDS[COMP_CWORD]} prev=${COMP_WORDS[COMP_CWORD-1]} + local -A OPTS=( + [COMMON]='-h --help -V --version' + [DEBUG]='-d --debug' + [INFO_STANDALONE]='-r --root -a --attribute-walk -x --export -e --export-db -c --cleanup-db' + [INFO_ARG]='-q --query -p --path -n --name -P --export-prefix -d --device-id-of-file' + [TRIGGER_STANDALONE]='-v --verbose -n --dry-run -w --settle --wait-daemon' + [TRIGGER_ARG]='-t --type -c --action -s --subsystem-match -S --subsystem-nomatch + -a --attr-match -A --attr-nomatch -p --property-match + -g --tag-match -y --sysname-match --name-match -b --parent-match' + [SETTLE]='-t --timeout -E --exit-if-exists' + [CONTROL_STANDALONE]='-e --exit -s --stop-exec-queue -S --start-exec-queue -R --reload --ping' + [CONTROL_ARG]='-l --log-priority -p --property -m --children-max -t --timeout' + [MONITOR_STANDALONE]='-k --kernel -u --udev -p --property' + [MONITOR_ARG]='-s --subsystem-match -t --tag-match' + [TEST]='-a --action -N --resolve-names' + ) - local verbs=(info trigger settle control monitor test-builtin test) - local builtins=(blkid btrfs hwdb input_id keyboard kmod net_id net_setup_link path_id usb_id uaccess) + local verbs=(info trigger settle control monitor test-builtin test) + local builtins=(blkid btrfs hwdb input_id keyboard kmod net_id net_setup_link path_id usb_id uaccess) - for ((i=0; i < COMP_CWORD; i++)); do - if __contains_word "${COMP_WORDS[i]}" "${verbs[@]}"; then - verb=${COMP_WORDS[i]} - break - fi - done - - if [[ -z $verb ]]; then - if [[ "$cur" = -* ]]; then - COMPREPLY=( $(compgen -W '${OPTS[COMMON]} ${OPTS[DEBUG]}' -- "$cur") ) - else - COMPREPLY=( $(compgen -W '${verbs[*]}' -- "$cur") ) - fi - return 0 + for ((i=0; i < COMP_CWORD; i++)); do + if __contains_word "${COMP_WORDS[i]}" "${verbs[@]}"; then + verb=${COMP_WORDS[i]} + break fi + done - case $verb in - 'info') - if __contains_word "$prev" ${OPTS[INFO_ARG]}; then - case $prev in - -q|--query) - comps='name symlink path property all' - ;; - -p|--path) - comps=$( __get_all_sysdevs ) - local IFS=$'\n' - ;; - -n|--name) - comps=$( __get_all_devs ) - ;; - *) - comps='' - ;; - esac - COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) - return 0 - fi - - if [[ $cur = -* ]]; then - comps="${OPTS[COMMON]} ${OPTS[INFO_STANDALONE]} ${OPTS[INFO_ARG]}" - else - comps=$( __get_all_sysdevs; __get_all_device_units ) - local IFS=$'\n' - fi - ;; - 'trigger') - if __contains_word "$prev" ${OPTS[TRIGGER_ARG]}; then - case $prev in - -t|--type) - comps='devices subsystems' - ;; - -c|--action) - comps='add change remove bind unbind' - ;; - -y|--sysname-match|-b|--parent-match) - comps=$( __get_all_sysdevs ) - local IFS=$'\n' - ;; - --name-match) - comps=$( __get_all_devs ) - ;; - *) - comps='' - ;; - esac - COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) - return 0 - fi - - if [[ $cur = -* ]]; then - comps="${OPTS[COMMON]} ${OPTS[TRIGGER_STANDALONE]} ${OPTS[TRIGGER_ARG]}" - else - comps=$( __get_all_sysdevs; __get_all_device_units ) - local IFS=$'\n' - fi - ;; - 'settle') - if __contains_word "$prev" ${OPTS[SETTLE]}; then - case $prev in - -E|--exit-if-exists) - comps=$( compgen -A file -- "$cur" ) - ;; - *) - comps='' - ;; - esac - COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) - return 0 - fi - - comps="${OPTS[COMMON]} ${OPTS[SETTLE]}" - ;; - 'control') - if __contains_word "$prev" ${OPTS[CONTROL_ARG]}; then - case $prev in - -l|--log-priority) - comps='alert crit debug emerg err info notice warning' - ;; - *) - comps='' - ;; - esac - COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) - return 0 - fi - - comps="${OPTS[COMMON]} ${OPTS[CONTROL_STANDALONE]} ${OPTS[CONTROL_ARG]}" - ;; - 'monitor') - if __contains_word "$prev" ${OPTS[MONITOR_ARG]}; then - case $prev in - *) - comps='' - ;; - esac - COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) - return 0 - fi - - comps="${OPTS[COMMON]} ${OPTS[MONITOR_STANDALONE]} ${OPTS[MONITOR_ARG]}" - ;; - 'test') - if __contains_word "$prev" ${OPTS[TEST]}; then - case $prev in - -a|--action) - comps='add change remove bind unbind' - ;; - -N|--resolve-names) - comps='early late never' - ;; - esac - COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) - return 0 - fi - - if [[ $cur = -* ]]; then - comps="${OPTS[COMMON]} ${OPTS[TEST]}" - else - comps=$( __get_all_sysdevs ) - local IFS=$'\n' - fi - ;; - 'test-builtin') - for ((i=0; i < COMP_CWORD; i++)); do - if __contains_word "${COMP_WORDS[i]}" "${builtins[@]}"; then - builtin=${COMP_WORDS[i]} - break - fi - done - - if [[ -z $builtin ]]; then - comps="${builtins[@]}" - elif [[ $cur = -* ]]; then - comps="${OPTS[COMMON]}" - else - comps=$( __get_all_sysdevs ) - local IFS=$'\n' - fi - ;; - *) - comps=${VERBS[*]} - ;; - esac - - COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) + if [[ -z $verb ]]; then + if [[ "$cur" = -* ]]; then + COMPREPLY=( $(compgen -W '${OPTS[COMMON]} ${OPTS[DEBUG]}' -- "$cur") ) + else + COMPREPLY=( $(compgen -W '${verbs[*]}' -- "$cur") ) + fi return 0 + fi + + case $verb in + 'info') + if __contains_word "$prev" ${OPTS[INFO_ARG]}; then + case $prev in + -q|--query) + comps='name symlink path property all' + ;; + -p|--path) + comps=$( __get_all_sysdevs ) + local IFS=$'\n' + ;; + -n|--name) + comps=$( __get_all_devs ) + ;; + *) + comps='' + ;; + esac + COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) + return 0 + fi + + if [[ $cur = -* ]]; then + comps="${OPTS[COMMON]} ${OPTS[INFO_STANDALONE]} ${OPTS[INFO_ARG]}" + else + comps=$( __get_all_sysdevs; __get_all_device_units ) + local IFS=$'\n' + fi + ;; + + 'trigger') + if __contains_word "$prev" ${OPTS[TRIGGER_ARG]}; then + case $prev in + -t|--type) + comps='devices subsystems' + ;; + -c|--action) + comps='add change remove bind unbind' + ;; + -y|--sysname-match|-b|--parent-match) + comps=$( __get_all_sysdevs ) + local IFS=$'\n' + ;; + --name-match) + comps=$( __get_all_devs ) + ;; + *) + comps='' + ;; + esac + COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) + return 0 + fi + + if [[ $cur = -* ]]; then + comps="${OPTS[COMMON]} ${OPTS[TRIGGER_STANDALONE]} ${OPTS[TRIGGER_ARG]}" + else + comps=$( __get_all_sysdevs; __get_all_device_units ) + local IFS=$'\n' + fi + ;; + + 'settle') + if __contains_word "$prev" ${OPTS[SETTLE]}; then + case $prev in + -E|--exit-if-exists) + comps=$( compgen -A file -- "$cur" ) + ;; + *) + comps='' + ;; + esac + COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) + return 0 + fi + + comps="${OPTS[COMMON]} ${OPTS[SETTLE]}" + ;; + + 'control') + if __contains_word "$prev" ${OPTS[CONTROL_ARG]}; then + case $prev in + -l|--log-priority) + comps='alert crit debug emerg err info notice warning' + ;; + *) + comps='' + ;; + esac + COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) + return 0 + fi + + comps="${OPTS[COMMON]} ${OPTS[CONTROL_STANDALONE]} ${OPTS[CONTROL_ARG]}" + ;; + + 'monitor') + if __contains_word "$prev" ${OPTS[MONITOR_ARG]}; then + case $prev in + *) + comps='' + ;; + esac + COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) + return 0 + fi + + comps="${OPTS[COMMON]} ${OPTS[MONITOR_STANDALONE]} ${OPTS[MONITOR_ARG]}" + ;; + + 'test') + if __contains_word "$prev" ${OPTS[TEST]}; then + case $prev in + -a|--action) + comps='add change remove bind unbind' + ;; + -N|--resolve-names) + comps='early late never' + ;; + esac + COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) + return 0 + fi + + if [[ $cur = -* ]]; then + comps="${OPTS[COMMON]} ${OPTS[TEST]}" + else + comps=$( __get_all_sysdevs ) + local IFS=$'\n' + fi + ;; + + 'test-builtin') + for ((i=0; i < COMP_CWORD; i++)); do + if __contains_word "${COMP_WORDS[i]}" "${builtins[@]}"; then + builtin=${COMP_WORDS[i]} + break + fi + done + + if [[ -z $builtin ]]; then + comps="${builtins[@]}" + elif [[ $cur = -* ]]; then + comps="${OPTS[COMMON]}" + else + comps=$( __get_all_sysdevs ) + local IFS=$'\n' + fi + ;; + + *) + comps=${VERBS[*]} + ;; + esac + + COMPREPLY=( $(compgen -W '$comps' -- "$cur") ) + return 0 } complete -F _udevadm udevadm diff --git a/shell-completion/zsh/_coredumpctl b/shell-completion/zsh/_coredumpctl index e446ad349c..74491626aa 100644 --- a/shell-completion/zsh/_coredumpctl +++ b/shell-completion/zsh/_coredumpctl @@ -5,10 +5,10 @@ _coredumpctl_commands(){ local -a _coredumpctl_cmds _coredumpctl_cmds=( - 'list:List available coredumps' - 'info:Show detailed information about one or more coredumps' - 'dump:Print coredump to stdout' - 'debug:Start debugger (gdb) on a coredump' + 'list:List available coredumps' + 'info:Show detailed information about one or more coredumps' + 'dump:Print coredump to stdout' + 'debug:Start debugger (gdb) on a coredump' ) if (( CURRENT == 1 )); then _describe -t commands 'coredumpctl command' _coredumpctl_cmds diff --git a/shell-completion/zsh/_kernel-install b/shell-completion/zsh/_kernel-install index 14793c2f3f..5be5c4c3f2 100644 --- a/shell-completion/zsh/_kernel-install +++ b/shell-completion/zsh/_kernel-install @@ -25,5 +25,3 @@ _arguments \ '1::add or remove:(add remove)' \ '2::kernel versions:_kernel-install_kernels' \ '3::kernel images:_kernel-install_images' - -#vim: set ft=zsh sw=4 ts=4 et diff --git a/shell-completion/zsh/_loginctl b/shell-completion/zsh/_loginctl index 44d6d08c98..c421a9b6c4 100644 --- a/shell-completion/zsh/_loginctl +++ b/shell-completion/zsh/_loginctl @@ -3,158 +3,158 @@ (( $+functions[_loginctl_all_sessions] )) || _loginctl_all_sessions() { - local session description - loginctl --no-legend list-sessions | while read -r session description; do - _sys_all_sessions+=( "$session" ) - _sys_all_sessions_descr+=( "${session}:$description" ) - done + local session description + loginctl --no-legend list-sessions | while read -r session description; do + _sys_all_sessions+=( "$session" ) + _sys_all_sessions_descr+=( "${session}:$description" ) + done } (( $+functions[_loginctl_all_users] )) || _loginctl_all_users() { - local uid description - loginctl --no-legend list-users | while read -r uid description; do - _sys_all_users+=( "$uid" ) - _sys_all_users_descr+=( "${uid}:$description" ) - done + local uid description + loginctl --no-legend list-users | while read -r uid description; do + _sys_all_users+=( "$uid" ) + _sys_all_users_descr+=( "${uid}:$description" ) + done } (( $+functions[_loginctl_all_seats] )) || _loginctl_all_seats() { - local seat description - loginctl --no-legend list-seats | while read -r seat description; do - _sys_all_seats+=( "$seat" ) - _sys_all_seats_descr+=( "${seat}:$description" ) - done + local seat description + loginctl --no-legend list-seats | while read -r seat description; do + _sys_all_seats+=( "$seat" ) + _sys_all_seats_descr+=( "${seat}:$description" ) + done } local fun # Completion functions for SESSIONS for fun in session-status show-session activate lock-session unlock-session terminate-session kill-session ; do - (( $+functions[_loginctl_$fun] )) || _loginctl_$fun() - { + (( $+functions[_loginctl_$fun] )) || +_loginctl_$fun() { local -a _sys_all_sessions{,_descr} _loginctl_all_sessions for _ignore in $words[2,-1]; do - _sys_all_sessions[(i)$_ignore]=() - _sys_all_sessions_descr[(i)$_ignore:*]=() + _sys_all_sessions[(i)$_ignore]=() + _sys_all_sessions_descr[(i)$_ignore:*]=() done if zstyle -T ":completion:${curcontext}:systemd-sessions" verbose; then - _describe -t systemd-sessions session _sys_all_sessions_descr _sys_all_sessions "$@" + _describe -t systemd-sessions session _sys_all_sessions_descr _sys_all_sessions "$@" else - local expl - _wanted systemd-sessions expl session compadd "$@" -a _sys_all_sessions + local expl + _wanted systemd-sessions expl session compadd "$@" -a _sys_all_sessions fi - } +} done # Completion functions for USERS for fun in user-status show-user enable-linger disable-linger terminate-user kill-user ; do - (( $+functions[_loginctl_$fun] )) || _loginctl_$fun() - { + (( $+functions[_loginctl_$fun] )) || +_loginctl_$fun() { local -a _sys_all_users{,_descr} zstyle -a ":completion:${curcontext}:users" users _sys_all_users if ! (( $#_sys_all_users )); then - _loginctl_all_users + _loginctl_all_users fi for _ignore in $words[2,-1]; do - _sys_all_users[(i)$_ignore]=() - _sys_all_users_descr[(i)$_ignore:*]=() + _sys_all_users[(i)$_ignore]=() + _sys_all_users_descr[(i)$_ignore:*]=() done # using the common tag `users' here, not rolling our own `systemd-users' tag if zstyle -T ":completion:${curcontext}:users" verbose; then - _describe -t users user ${_sys_all_users_descr:+_sys_all_users_descr} _sys_all_users "$@" + _describe -t users user ${_sys_all_users_descr:+_sys_all_users_descr} _sys_all_users "$@" else - local expl - _wanted users expl user compadd "$@" -a _sys_all_users + local expl + _wanted users expl user compadd "$@" -a _sys_all_users fi - } +} done # Completion functions for SEATS -(( $+functions[_loginctl_seats] )) || _loginctl_seats() -{ - local -a _sys_all_seats{,_descr} +(( $+functions[_loginctl_seats] )) || +_loginctl_seats() { + local -a _sys_all_seats{,_descr} - _loginctl_all_seats - for _ignore in $words[2,-1]; do - _sys_all_seats[(i)$_ignore]=() - _sys_all_seats_descr[(i)$_ignore:*]=() - done + _loginctl_all_seats + for _ignore in $words[2,-1]; do + _sys_all_seats[(i)$_ignore]=() + _sys_all_seats_descr[(i)$_ignore:*]=() + done - if zstyle -T ":completion:${curcontext}:systemd-seats" verbose; then - _describe -t systemd-seats seat _sys_all_seats_descr _sys_all_seats "$@" - else - local expl - _wanted systemd-seats expl seat compadd "$@" -a _sys_all_seats - fi + if zstyle -T ":completion:${curcontext}:systemd-seats" verbose; then + _describe -t systemd-seats seat _sys_all_seats_descr _sys_all_seats "$@" + else + local expl + _wanted systemd-seats expl seat compadd "$@" -a _sys_all_seats + fi } for fun in seat-status show-seat terminate-seat ; do - (( $+functions[_loginctl_$fun] )) || _loginctl_$fun() - { _loginctl_seats } + (( $+functions[_loginctl_$fun] )) || +_loginctl_$fun() { _loginctl_seats } done # Completion functions for ATTACH -(( $+functions[_loginctl_attach] )) || _loginctl_attach() -{ - _arguments -w -C -S -s \ - ':seat:_loginctl_seats' \ - '*:device:_files' +(( $+functions[_loginctl_attach] )) || +_loginctl_attach() { + _arguments -w -C -S -s \ + ':seat:_loginctl_seats' \ + '*:device:_files' } # no loginctl completion for: # [STANDALONE]='list-sessions list-users list-seats flush-devices' -(( $+functions[_loginctl_commands] )) || _loginctl_commands() -{ - local -a _loginctl_cmds - _loginctl_cmds=( - "list-sessions:List sessions" - "session-status:Show session status" - "show-session:Show properties of one or more sessions" - "activate:Activate a session" - "lock-session:Screen lock one or more sessions" - "unlock-session:Screen unlock one or more sessions" - "lock-sessions:Screen lock all current sessions" - "unlock-sessions:Screen unlock all current sessions" - "terminate-session:Terminate one or more sessions" - "kill-session:Send signal to processes of a session" - "list-users:List users" - "user-status:Show user status" - "show-user:Show properties of one or more users" - "enable-linger:Enable linger state of one or more users" - "disable-linger:Disable linger state of one or more users" - "terminate-user:Terminate all sessions of one or more users" - "kill-user:Send signal to processes of a user" - "list-seats:List seats" - "seat-status:Show seat status" - "show-seat:Show properties of one or more seats" - "attach:Attach one or more devices to a seat" - "flush-devices:Flush all device associations" - "terminate-seat:Terminate all sessions on one or more seats" - ) +(( $+functions[_loginctl_commands] )) || +_loginctl_commands() { + local -a _loginctl_cmds + _loginctl_cmds=( + "list-sessions:List sessions" + "session-status:Show session status" + "show-session:Show properties of one or more sessions" + "activate:Activate a session" + "lock-session:Screen lock one or more sessions" + "unlock-session:Screen unlock one or more sessions" + "lock-sessions:Screen lock all current sessions" + "unlock-sessions:Screen unlock all current sessions" + "terminate-session:Terminate one or more sessions" + "kill-session:Send signal to processes of a session" + "list-users:List users" + "user-status:Show user status" + "show-user:Show properties of one or more users" + "enable-linger:Enable linger state of one or more users" + "disable-linger:Disable linger state of one or more users" + "terminate-user:Terminate all sessions of one or more users" + "kill-user:Send signal to processes of a user" + "list-seats:List seats" + "seat-status:Show seat status" + "show-seat:Show properties of one or more seats" + "attach:Attach one or more devices to a seat" + "flush-devices:Flush all device associations" + "terminate-seat:Terminate all sessions on one or more seats" + ) - if (( CURRENT == 1 )); then - _describe -t commands 'loginctl command' _loginctl_cmds || compadd "$@" - else - local curcontext="$curcontext" _ignore - - cmd="${${_loginctl_cmds[(r)$words[1]:*]%%:*}}" - - if (( $#cmd )); then - curcontext="${curcontext%:*:*}:loginctl-${cmd}:" - - _call_function ret _loginctl_$cmd || _message 'no more arguments' + if (( CURRENT == 1 )); then + _describe -t commands 'loginctl command' _loginctl_cmds || compadd "$@" else - _message "unknown loginctl command: $words[1]" + local curcontext="$curcontext" _ignore + + cmd="${${_loginctl_cmds[(r)$words[1]:*]%%:*}}" + + if (( $#cmd )); then + curcontext="${curcontext%:*:*}:loginctl-${cmd}:" + + _call_function ret _loginctl_$cmd || _message 'no more arguments' + else + _message "unknown loginctl command: $words[1]" + fi + return ret fi - return ret - fi } diff --git a/shell-completion/zsh/_machinectl b/shell-completion/zsh/_machinectl index 4561e4db75..1590b9f1b9 100644 --- a/shell-completion/zsh/_machinectl +++ b/shell-completion/zsh/_machinectl @@ -2,104 +2,104 @@ # SPDX-License-Identifier: LGPL-2.1+ (( $+functions[__machinectl_get_machines] )) || -__machinectl_get_machines () { - machinectl --no-legend list-images | {while read -r a b; do echo $a; done;} -} + __machinectl_get_machines () { + machinectl --no-legend list-images | {while read -r a b; do echo $a; done;} + } (( $+functions[_machinectl_machines] )) || -_machinectl_machines() { - local -a _machines - _machines=("${(fo)$(__machinectl_get_machines)}") - typeset -U _machines - if [[ -n "$_machines" ]]; then - _describe 'machines' _machines - else - _message 'no machines' - fi -} + _machinectl_machines() { + local -a _machines + _machines=("${(fo)$(__machinectl_get_machines)}") + typeset -U _machines + if [[ -n "$_machines" ]]; then + _describe 'machines' _machines + else + _message 'no machines' + fi + } (( $+functions[_machinectl_commands] )) || _machinectl_commands() { - local -a _machinectl_cmds - _machinectl_cmds=( - "list:List currently running VMs/containers" - "status:Show VM/container status" - "show:Show properties of one or more VMs/containers" - "start:Start container as a service" - "stop:Stop container (equal to poweroff)" - "login:Get a login prompt on a VM/container" - "enable:Enable automatic container start at boot" - "disable:Disable automatic container start at boot" - "poweroff:Power off one or more VMs/containers" - "reboot:Reboot one or more VMs/containers" - "terminate:Terminate one or more VMs/containers" - "kill:Send signal to process or a VM/container" - "copy-to:Copy files from the host to a container" - "copy-from:Copy files from a container to the host" - "bind:Bind mount a path from the host into a container" + local -a _machinectl_cmds + _machinectl_cmds=( + "list:List currently running VMs/containers" + "status:Show VM/container status" + "show:Show properties of one or more VMs/containers" + "start:Start container as a service" + "stop:Stop container (equal to poweroff)" + "login:Get a login prompt on a VM/container" + "enable:Enable automatic container start at boot" + "disable:Disable automatic container start at boot" + "poweroff:Power off one or more VMs/containers" + "reboot:Reboot one or more VMs/containers" + "terminate:Terminate one or more VMs/containers" + "kill:Send signal to process or a VM/container" + "copy-to:Copy files from the host to a container" + "copy-from:Copy files from a container to the host" + "bind:Bind mount a path from the host into a container" - "list-images:Show available container and VM images" - "image-status:Show image details" - "show-image:Show properties of image" - "clone:Clone an image" - "rename:Rename an image" - "read-only:Mark or unmark image read-only" - "remove:Remove an image" + "list-images:Show available container and VM images" + "image-status:Show image details" + "show-image:Show properties of image" + "clone:Clone an image" + "rename:Rename an image" + "read-only:Mark or unmark image read-only" + "remove:Remove an image" - "pull-tar:Download a TAR container image" - "pull-raw:Download a RAW container or VM image" - "list-transfers:Show list of downloads in progress" - "cancel-transfer:Cancel a download" - ) + "pull-tar:Download a TAR container image" + "pull-raw:Download a RAW container or VM image" + "list-transfers:Show list of downloads in progress" + "cancel-transfer:Cancel a download" + ) - if (( CURRENT == 1 )); then - _describe -t commands 'machinectl command' _machinectl_cmds || compadd "$@" - else - local curcontext="$curcontext" - cmd="${${_machinectl_cmds[(r)$words[1]:*]%%:*}}" - if (( $#cmd )); then - if (( CURRENT == 2 )); then - case $cmd in - list*|cancel-transfer|pull-tar|pull-raw) - msg="no options" ;; - clone) - _machinectl_machines ;; - start) - _machinectl_machines ;; - *) - _sd_machines - esac - else - case $cmd in - copy-to|copy-from|bind) - _files ;; - *) msg="no options" - esac - fi + if (( CURRENT == 1 )); then + _describe -t commands 'machinectl command' _machinectl_cmds || compadd "$@" else - _message "no more options" + local curcontext="$curcontext" + cmd="${${_machinectl_cmds[(r)$words[1]:*]%%:*}}" + if (( $#cmd )); then + if (( CURRENT == 2 )); then + case $cmd in + list*|cancel-transfer|pull-tar|pull-raw) + msg="no options" ;; + clone) + _machinectl_machines ;; + start) + _machinectl_machines ;; + *) + _sd_machines + esac + else + case $cmd in + copy-to|copy-from|bind) + _files ;; + *) msg="no options" + esac + fi + else + _message "no more options" + fi fi - fi } _arguments \ - {-h,--help}'[Prints a short help text and exits.]' \ - '--version[Prints a short version string and exits.]' \ - '--no-pager[Do not pipe output into a pager.]' \ - '--no-legend[Do not show the headers and footers.]' \ - '--no-ask-password[Do not ask for system passwords.]' \ - {-H+,--host=}'[Operate on remote host.]:userathost:_sd_hosts_or_user_at_host' \ - {-M+,--machine=}'[Operate on local container.]:machine:_sd_machines' \ - {-p+,--property=}'[Limit output to specified property.]:property:(Name Id Timestamp TimestampMonotonic Service Scope Leader Class State RootDirectory)' \ - {-a,--all}'[Show all properties.]' \ - {-q,--quiet}'[Suppress output.]' \ - {-l,--full}'[Do not ellipsize cgroup members.]' \ - '--kill-who=[Who to send signal to.]:killwho:(leader all)' \ - {-s+,--signal=}'[Which signal to send.]:signal:_signals' \ - '--read-only[Create read-only bind mount.]' \ - '--mkdir[Create directory before bind mounting, if missing.]' \ - {-n+,--lines=}'[Number of journal entries to show.]:integer' \ - {-o+,--output=}'[Change journal output mode.]:output modes:_sd_outputmodes' \ - '--verify=[Verification mode for downloaded images.]:verify:(no checksum signature)' \ - '--force[Download image even if already exists.]' \ - '*::machinectl command:_machinectl_commands' + {-h,--help}'[Prints a short help text and exits.]' \ + '--version[Prints a short version string and exits.]' \ + '--no-pager[Do not pipe output into a pager.]' \ + '--no-legend[Do not show the headers and footers.]' \ + '--no-ask-password[Do not ask for system passwords.]' \ + {-H+,--host=}'[Operate on remote host.]:userathost:_sd_hosts_or_user_at_host' \ + {-M+,--machine=}'[Operate on local container.]:machine:_sd_machines' \ + {-p+,--property=}'[Limit output to specified property.]:property:(Name Id Timestamp TimestampMonotonic Service Scope Leader Class State RootDirectory)' \ + {-a,--all}'[Show all properties.]' \ + {-q,--quiet}'[Suppress output.]' \ + {-l,--full}'[Do not ellipsize cgroup members.]' \ + '--kill-who=[Who to send signal to.]:killwho:(leader all)' \ + {-s+,--signal=}'[Which signal to send.]:signal:_signals' \ + '--read-only[Create read-only bind mount.]' \ + '--mkdir[Create directory before bind mounting, if missing.]' \ + {-n+,--lines=}'[Number of journal entries to show.]:integer' \ + {-o+,--output=}'[Change journal output mode.]:output modes:_sd_outputmodes' \ + '--verify=[Verification mode for downloaded images.]:verify:(no checksum signature)' \ + '--force[Download image even if already exists.]' \ + '*::machinectl command:_machinectl_commands' diff --git a/shell-completion/zsh/_networkctl b/shell-completion/zsh/_networkctl index ab62a6d9bf..c9b730fbe3 100644 --- a/shell-completion/zsh/_networkctl +++ b/shell-completion/zsh/_networkctl @@ -2,32 +2,32 @@ # SPDX-License-Identifier: LGPL-2.1+ (( $+functions[_networkctl_commands] )) || -_networkctl_commands(){ - local -a _networkctl_cmds - _networkctl_cmds=( + _networkctl_commands() { + local -a _networkctl_cmds + _networkctl_cmds=( 'list:List existing links' 'status:Show information about the specified links' 'lldp:Show Link Layer Discovery Protocol status' 'label:Show address labels' - ) - if (( CURRENT == 1 )); then - _describe -t commands 'networkctl command' _networkctl_cmds - else - local curcontext="$curcontext" - local -a _links - cmd="${${_networkctl_cmds[(r)$words[1]:*]%%:*}}" - if [ $cmd = "status" ]; then - _links=( "${(foa)$(networkctl list --no-legend | awk 'BEGIN{OFS=":"} {sub(/[[ \t]+/, ""); print $2,$0}' 2>/dev/null)}" ) - if [[ -n "$_links" ]]; then - _describe -t links 'links' _links - else - _message "no links" - fi + ) + if (( CURRENT == 1 )); then + _describe -t commands 'networkctl command' _networkctl_cmds else - _message "no more options" + local curcontext="$curcontext" + local -a _links + cmd="${${_networkctl_cmds[(r)$words[1]:*]%%:*}}" + if [ $cmd = "status" ]; then + _links=( "${(foa)$(networkctl list --no-legend | awk 'BEGIN{OFS=":"} {sub(/[[ \t]+/, ""); print $2,$0}' 2>/dev/null)}" ) + if [[ -n "$_links" ]]; then + _describe -t links 'links' _links + else + _message "no links" + fi + else + _message "no more options" + fi fi - fi -} + } _arguments \ {-a,--all}'[Show all links with status]' \ diff --git a/shell-completion/zsh/_sd_hosts_or_user_at_host b/shell-completion/zsh/_sd_hosts_or_user_at_host index 11f94f1976..a510bf3cf1 100644 --- a/shell-completion/zsh/_sd_hosts_or_user_at_host +++ b/shell-completion/zsh/_sd_hosts_or_user_at_host @@ -2,5 +2,5 @@ # SPDX-License-Identifier: LGPL-2.1+ _alternative \ - 'users-hosts:: _user_at_host' \ - 'hosts:: _hosts' + 'users-hosts:: _user_at_host' \ + 'hosts:: _hosts' diff --git a/shell-completion/zsh/_sd_machines b/shell-completion/zsh/_sd_machines index e783620b97..30b7fd81a3 100644 --- a/shell-completion/zsh/_sd_machines +++ b/shell-completion/zsh/_sd_machines @@ -2,15 +2,15 @@ # SPDX-License-Identifier: LGPL-2.1+ (( $+functions[__sd_machines_get_machines] )) || -__sd_machines_get_machines () { + __sd_machines_get_machines () { machinectl --full --no-legend --no-pager list | {while read -r a b; do echo $a; done;}; -} + } local -a _machines _machines=("${(fo)$(__sd_machines_get_machines)}") typeset -U _machines if [[ -n "$_machines" ]]; then - _describe 'machines' _machines + _describe 'machines' _machines else - _message 'no machines' + _message 'no machines' fi diff --git a/shell-completion/zsh/_systemctl.in b/shell-completion/zsh/_systemctl.in index 590fc49604..0c86fec95c 100644 --- a/shell-completion/zsh/_systemctl.in +++ b/shell-completion/zsh/_systemctl.in @@ -3,197 +3,197 @@ (( $+functions[_systemctl_commands] )) || _systemctl_commands() { - local -a _systemctl_cmds - _systemctl_cmds=( - "list-sockets:List sockets" - "list-timers:List timers" - "list-units:List units" - "start:Start (activate) one or more units" - "stop:Stop (deactivate) one or more units" - "reload:Reload one or more units" - "restart:Start or restart one or more units" - "condrestart:Restart one or more units if active" - "try-restart:Restart one or more units if active" - "reload-or-restart:Reload one or more units if possible, otherwise start or restart" - "force-reload:Reload one or more units if possible, otherwise restart if active" - "hibernate:Hibernate the system" - "hybrid-sleep:Hibernate and suspend the system" - "suspend-then-hibernate:Suspend the system for a period of time, and then hibernate it" - "try-reload-or-restart:Reload one or more units if possible, otherwise restart if active" - "isolate:Start one unit and stop all others" - "kill:Send signal to processes of a unit" - "is-active:Check whether units are active" - "is-failed:Check whether units are failed" - "status:Show runtime status of one or more units" - "show:Show properties of one or more units/jobs or the manager" - "cat:Show the source unit files and drop-ins" - "reset-failed:Reset failed state for all, one, or more units" - "list-unit-files:List installed unit files" - "enable:Enable one or more unit files" - "disable:Disable one or more unit files" - "add-wants:Add Wants= dependencies to a unit" - "add-requires:Add Requires= dependencies to a unit" - "reenable:Reenable one or more unit files" - "preset:Enable/disable one or more unit files based on preset configuration" - "set-default:Set the default target" - "get-default:Query the default target" - "edit:Edit one or more unit files" - "is-system-running:Query overall status of the system" - "help:Show documentation for specified units" - "list-dependencies:Show unit dependency tree" - "mask:Mask one or more units" - "unmask:Unmask one or more units" - "link:Link one or more units files into the search path" - "is-enabled:Check whether unit files are enabled" - "list-jobs:List jobs" - "cancel:Cancel all, one, or more jobs" - "show-environment:Dump environment" - "set-environment:Set one or more environment variables" - "unset-environment:Unset one or more environment variables" - "daemon-reload:Reload systemd manager configuration" - "daemon-reexec:Reexecute systemd manager" - "default:Enter system default mode" - "rescue:Enter system rescue mode" - "emergency:Enter system emergency mode" - "halt:Shut down and halt the system" - "suspend:Suspend the system" - "poweroff:Shut down and power-off the system" - "reboot:Shut down and reboot the system" - "kexec:Shut down and reboot the system with kexec" - "exit:Ask for user instance termination" - "switch-root:Change root directory" - "revert:Revert unit files to their vendor versions" - "set-property:Sets one or more properties of a unit" - ) + local -a _systemctl_cmds + _systemctl_cmds=( + "list-sockets:List sockets" + "list-timers:List timers" + "list-units:List units" + "start:Start (activate) one or more units" + "stop:Stop (deactivate) one or more units" + "reload:Reload one or more units" + "restart:Start or restart one or more units" + "condrestart:Restart one or more units if active" + "try-restart:Restart one or more units if active" + "reload-or-restart:Reload one or more units if possible, otherwise start or restart" + "force-reload:Reload one or more units if possible, otherwise restart if active" + "hibernate:Hibernate the system" + "hybrid-sleep:Hibernate and suspend the system" + "suspend-then-hibernate:Suspend the system for a period of time, and then hibernate it" + "try-reload-or-restart:Reload one or more units if possible, otherwise restart if active" + "isolate:Start one unit and stop all others" + "kill:Send signal to processes of a unit" + "is-active:Check whether units are active" + "is-failed:Check whether units are failed" + "status:Show runtime status of one or more units" + "show:Show properties of one or more units/jobs or the manager" + "cat:Show the source unit files and drop-ins" + "reset-failed:Reset failed state for all, one, or more units" + "list-unit-files:List installed unit files" + "enable:Enable one or more unit files" + "disable:Disable one or more unit files" + "add-wants:Add Wants= dependencies to a unit" + "add-requires:Add Requires= dependencies to a unit" + "reenable:Reenable one or more unit files" + "preset:Enable/disable one or more unit files based on preset configuration" + "set-default:Set the default target" + "get-default:Query the default target" + "edit:Edit one or more unit files" + "is-system-running:Query overall status of the system" + "help:Show documentation for specified units" + "list-dependencies:Show unit dependency tree" + "mask:Mask one or more units" + "unmask:Unmask one or more units" + "link:Link one or more units files into the search path" + "is-enabled:Check whether unit files are enabled" + "list-jobs:List jobs" + "cancel:Cancel all, one, or more jobs" + "show-environment:Dump environment" + "set-environment:Set one or more environment variables" + "unset-environment:Unset one or more environment variables" + "daemon-reload:Reload systemd manager configuration" + "daemon-reexec:Reexecute systemd manager" + "default:Enter system default mode" + "rescue:Enter system rescue mode" + "emergency:Enter system emergency mode" + "halt:Shut down and halt the system" + "suspend:Suspend the system" + "poweroff:Shut down and power-off the system" + "reboot:Shut down and reboot the system" + "kexec:Shut down and reboot the system with kexec" + "exit:Ask for user instance termination" + "switch-root:Change root directory" + "revert:Revert unit files to their vendor versions" + "set-property:Sets one or more properties of a unit" + ) - if (( CURRENT == 1 )); then - _describe -t commands 'systemctl command' _systemctl_cmds || compadd "$@" - else - local curcontext="$curcontext" expl - - cmd="${${_systemctl_cmds[(r)$words[1]:*]%%:*}}" - # Deal with any aliases - case $cmd in - condrestart) cmd="try-restart";; - force-reload) cmd="try-reload-or-restart";; - esac - - if (( $#cmd )); then - curcontext="${curcontext%:*:*}:systemctl-${cmd}:" - - local update_policy - zstyle -s ":completion:${curcontext}:" cache-policy update_policy - if [[ -z "$update_policy" ]]; then - zstyle ":completion:${curcontext}:" cache-policy _systemctl_caching_policy - fi - - _call_function ret _systemctl_$cmd || _message 'no more arguments' + if (( CURRENT == 1 )); then + _describe -t commands 'systemctl command' _systemctl_cmds || compadd "$@" else - _message "unknown systemctl command: $words[1]" + local curcontext="$curcontext" expl + + cmd="${${_systemctl_cmds[(r)$words[1]:*]%%:*}}" + # Deal with any aliases + case $cmd in + condrestart) cmd="try-restart";; + force-reload) cmd="try-reload-or-restart";; + esac + + if (( $#cmd )); then + curcontext="${curcontext%:*:*}:systemctl-${cmd}:" + + local update_policy + zstyle -s ":completion:${curcontext}:" cache-policy update_policy + if [[ -z "$update_policy" ]]; then + zstyle ":completion:${curcontext}:" cache-policy _systemctl_caching_policy + fi + + _call_function ret _systemctl_$cmd || _message 'no more arguments' + else + _message "unknown systemctl command: $words[1]" + fi + return ret fi - return ret - fi } # @todo _systemd-run has a helper with the same name, so we must redefine __systemctl() { - systemctl $_sys_service_mgr --full --no-legend --no-pager "$@" 2>/dev/null + systemctl $_sys_service_mgr --full --no-legend --no-pager "$@" 2>/dev/null } # Fills the unit list (( $+functions[_systemctl_all_units] )) || -_systemctl_all_units() + _systemctl_all_units() { - if ( [[ ${+_sys_all_units} -eq 0 ]] || _cache_invalid SYS_ALL_UNITS$_sys_service_mgr ) || - ! _retrieve_cache SYS_ALL_UNITS$_sys_service_mgr; - then - _sys_all_units=( ${${(f)"$(__systemctl list-units --all "$PREFIX*" )"}%% *} ) - _store_cache SYS_ALL_UNITS$_sys_service_mgr _sys_all_units - fi + if ( [[ ${+_sys_all_units} -eq 0 ]] || _cache_invalid SYS_ALL_UNITS$_sys_service_mgr ) || + ! _retrieve_cache SYS_ALL_UNITS$_sys_service_mgr; + then + _sys_all_units=( ${${(f)"$(__systemctl list-units --all "$PREFIX*" )"}%% *} ) + _store_cache SYS_ALL_UNITS$_sys_service_mgr _sys_all_units + fi } # Fills the unit list including all file units (( $+functions[_systemctl_really_all_units] )) || -_systemctl_really_all_units() + _systemctl_really_all_units() { - local -a all_unit_files; - local -a really_all_units; - if ( [[ ${+_sys_really_all_units} -eq 0 ]] || _cache_invalid SYS_REALLY_ALL_UNITS$_sys_service_mgr ) || - ! _retrieve_cache SYS_REALLY_ALL_UNITS$_sys_service_mgr; - then - all_unit_files=( ${${(f)"$(__systemctl list-unit-files "$PREFIX*" )"}%% *} ) - _systemctl_all_units - really_all_units=($_sys_all_units $all_unit_files) - _sys_really_all_units=(${(u)really_all_units}) - _store_cache SYS_REALLY_ALL_UNITS$_sys_service_mgr _sys_really_all_units - fi + local -a all_unit_files; + local -a really_all_units; + if ( [[ ${+_sys_really_all_units} -eq 0 ]] || _cache_invalid SYS_REALLY_ALL_UNITS$_sys_service_mgr ) || + ! _retrieve_cache SYS_REALLY_ALL_UNITS$_sys_service_mgr; + then + all_unit_files=( ${${(f)"$(__systemctl list-unit-files "$PREFIX*" )"}%% *} ) + _systemctl_all_units + really_all_units=($_sys_all_units $all_unit_files) + _sys_really_all_units=(${(u)really_all_units}) + _store_cache SYS_REALLY_ALL_UNITS$_sys_service_mgr _sys_really_all_units + fi } (( $+functions[_filter_units_by_property] )) || -_filter_units_by_property() { - local property=$1 value=$2; shift 2 - local -a units; units=("${(q-)@}") - local -A props - props=(${(f)"$(_call_program units "$service $_sys_service_mgr show --no-pager --property=\"Id,$property\" -- ${units} 2>/dev/null")"}) - echo -E - "${(@g:o:)${(k@)props[(Re)$property=$value]}#Id=}" -} + _filter_units_by_property() { + local property=$1 value=$2; shift 2 + local -a units; units=("${(q-)@}") + local -A props + props=(${(f)"$(_call_program units "$service $_sys_service_mgr show --no-pager --property=\"Id,$property\" -- ${units} 2>/dev/null")"}) + echo -E - "${(@g:o:)${(k@)props[(Re)$property=$value]}#Id=}" + } (( $+functions[_systemctl_get_non_template_names] )) || -_systemctl_get_non_template_names() { echo -E - ${^${(R)${(f)"$( + _systemctl_get_non_template_names() { echo -E - ${^${(R)${(f)"$( __systemctl $mode list-unit-files "$PREFIX*" __systemctl $mode list-units --all "$PREFIX*" )"}:#*@.*}%%[[:space:]]*} } (( $+functions[_systemctl_get_template_names] )) || -_systemctl_get_template_names() { echo -E - ${^${(M)${(f)"$(__systemctl list-unit-files "$PREFIX*" )"}##*@.[^[:space:]]##}%%@.*}\@ } + _systemctl_get_template_names() { echo -E - ${^${(M)${(f)"$(__systemctl list-unit-files "$PREFIX*" )"}##*@.[^[:space:]]##}%%@.*}\@ } (( $+functions[_systemctl_active_units] )) || -_systemctl_active_units() {_sys_active_units=( ${${(f)"$(__systemctl list-units "$PREFIX*" )"}%% *} )} + _systemctl_active_units() {_sys_active_units=( ${${(f)"$(__systemctl list-units "$PREFIX*" )"}%% *} )} (( $+functions[_systemctl_startable_units] )) || -_systemctl_startable_units(){ - _sys_startable_units=( $( _filter_units_by_property ActiveState inactive $( - _filter_units_by_property CanStart yes ${${${(f)"$( + _systemctl_startable_units(){ + _sys_startable_units=( $( _filter_units_by_property ActiveState inactive $( + _filter_units_by_property CanStart yes ${${${(f)"$( __systemctl $mode list-unit-files --state enabled,enabled-runtime,linked,linked-runtime,static,indirect,disabled,generated,transient "$PREFIX*" __systemctl $mode list-units --state inactive,failed "$PREFIX*" )"}:#*@.*}%%[[:space:]]*} - )) ) -} + )) ) + } (( $+functions[_systemctl_restartable_units] )) || -_systemctl_restartable_units(){ - _sys_restartable_units=( $( _filter_units_by_property CanStart yes ${${${(f)"$( + _systemctl_restartable_units(){ + _sys_restartable_units=( $( _filter_units_by_property CanStart yes ${${${(f)"$( __systemctl $mode list-unit-files --state enabled,disabled,static "$PREFIX*" __systemctl $mode list-units "$PREFIX*" )"}:#*@.*}%%[[:space:]]*} ) ) -} + } (( $+functions[_systemctl_failed_units] )) || -_systemctl_failed_units() {_sys_failed_units=( ${${(f)"$(__systemctl list-units --state=failed "$PREFIX*" )"}%% *} ) } + _systemctl_failed_units() {_sys_failed_units=( ${${(f)"$(__systemctl list-units --state=failed "$PREFIX*" )"}%% *} ) } (( $+functions[_systemctl_unit_state] )) || -_systemctl_unit_state() { typeset -gA _sys_unit_state; _sys_unit_state=( $(__systemctl list-unit-files "$PREFIX*" ) ) } + _systemctl_unit_state() { typeset -gA _sys_unit_state; _sys_unit_state=( $(__systemctl list-unit-files "$PREFIX*" ) ) } local fun # Completion functions for ALL_UNITS for fun in cat mask ; do - (( $+functions[_systemctl_$fun] )) || _systemctl_$fun() - { - _systemctl_really_all_units - _wanted systemd-units expl unit \ - compadd "$@" -a - _sys_really_all_units - } + (( $+functions[_systemctl_$fun] )) || _systemctl_$fun() + { + _systemctl_really_all_units + _wanted systemd-units expl unit \ + compadd "$@" -a - _sys_really_all_units + } done # Completion functions for NONTEMPLATE_UNITS for fun in is-active is-failed is-enabled status show preset help list-dependencies edit revert add-wants add-requires set-property; do - (( $+functions[_systemctl_$fun] )) || _systemctl_$fun() - { - _wanted systemd-units expl unit \ - compadd "$@" - $(_systemctl_get_non_template_names) - } + (( $+functions[_systemctl_$fun] )) || _systemctl_$fun() + { + _wanted systemd-units expl unit \ + compadd "$@" - $(_systemctl_get_non_template_names) + } done # Completion functions for ENABLED_UNITS @@ -201,126 +201,126 @@ done { local _sys_unit_state; _systemctl_unit_state _wanted systemd-units expl 'enabled unit' \ - compadd "$@" - ${(k)_sys_unit_state[(R)enabled]} + compadd "$@" - ${(k)_sys_unit_state[(R)enabled]} } (( $+functions[_systemctl_reenable] )) || _systemctl_reenable() { local _sys_unit_state; _systemctl_unit_state _wanted systemd-units expl 'enabled/disabled unit' \ - compadd "$@" - ${(k)_sys_unit_state[(R)(enabled|disabled)]} $(_systemctl_get_template_names) + compadd "$@" - ${(k)_sys_unit_state[(R)(enabled|disabled)]} $(_systemctl_get_template_names) } # Completion functions for DISABLED_UNITS (( $+functions[_systemctl_enable] )) || _systemctl_enable() { - local _sys_unit_state; _systemctl_unit_state - _wanted systemd-units expl 'disabled unit' \ - compadd "$@" - ${(k)_sys_unit_state[(R)disabled]} $(_systemctl_get_template_names) + local _sys_unit_state; _systemctl_unit_state + _wanted systemd-units expl 'disabled unit' \ + compadd "$@" - ${(k)_sys_unit_state[(R)disabled]} $(_systemctl_get_template_names) } # Completion functions for FAILED_UNITS (( $+functions[_systemctl_reset-failed] )) || _systemctl_reset-failed() { - local _sys_failed_units; _systemctl_failed_units - _wanted systemd-units expl 'failed unit' \ - compadd "$@" -a - _sys_failed_units || _message "no failed unit found" + local _sys_failed_units; _systemctl_failed_units + _wanted systemd-units expl 'failed unit' \ + compadd "$@" -a - _sys_failed_units || _message "no failed unit found" } # Completion functions for STARTABLE_UNITS (( $+functions[_systemctl_start] )) || _systemctl_start() { - local _sys_startable_units; _systemctl_startable_units - _wanted systemd-units expl 'startable unit' \ - compadd "$@" - ${_sys_startable_units[*]} + local _sys_startable_units; _systemctl_startable_units + _wanted systemd-units expl 'startable unit' \ + compadd "$@" - ${_sys_startable_units[*]} } # Completion functions for STOPPABLE_UNITS for fun in stop kill try-restart condrestart ; do - (( $+functions[_systemctl_$fun] )) || _systemctl_$fun() - { - local _sys_active_units; _systemctl_active_units - _wanted systemd-units expl 'stoppable unit' \ - compadd "$@" - $( _filter_units_by_property CanStop yes \ - ${_sys_active_units[*]} ) - } + (( $+functions[_systemctl_$fun] )) || _systemctl_$fun() + { + local _sys_active_units; _systemctl_active_units + _wanted systemd-units expl 'stoppable unit' \ + compadd "$@" - $( _filter_units_by_property CanStop yes \ + ${_sys_active_units[*]} ) + } done # Completion functions for ISOLATABLE_UNITS (( $+functions[_systemctl_isolate] )) || _systemctl_isolate() { - _systemctl_all_units - _wanted systemd-units expl 'isolatable unit' \ - compadd "$@" - $( _filter_units_by_property AllowIsolate yes \ - ${_sys_all_units[*]} ) + _systemctl_all_units + _wanted systemd-units expl 'isolatable unit' \ + compadd "$@" - $( _filter_units_by_property AllowIsolate yes \ + ${_sys_all_units[*]} ) } # Completion functions for RELOADABLE_UNITS for fun in reload try-reload-or-restart force-reload ; do - (( $+functions[_systemctl_$fun] )) || _systemctl_$fun() - { - local _sys_active_units; _systemctl_active_units - _wanted systemd-units expl 'reloadable unit' \ - compadd "$@" - $( _filter_units_by_property CanReload yes \ - ${_sys_active_units[*]} ) - } + (( $+functions[_systemctl_$fun] )) || _systemctl_$fun() + { + local _sys_active_units; _systemctl_active_units + _wanted systemd-units expl 'reloadable unit' \ + compadd "$@" - $( _filter_units_by_property CanReload yes \ + ${_sys_active_units[*]} ) + } done # Completion functions for RESTARTABLE_UNITS for fun in restart reload-or-restart ; do - (( $+functions[_systemctl_$fun] )) || _systemctl_$fun() - { - local _sys_restartable_units; _systemctl_restartable_units - _wanted systemd-units expl 'restartable unit' \ - compadd "$@" - ${_sys_restartable_units[*]} - } + (( $+functions[_systemctl_$fun] )) || _systemctl_$fun() + { + local _sys_restartable_units; _systemctl_restartable_units + _wanted systemd-units expl 'restartable unit' \ + compadd "$@" - ${_sys_restartable_units[*]} + } done # Completion functions for MASKED_UNITS (( $+functions[_systemctl_unmask] )) || _systemctl_unmask() { - local _sys_unit_state; _systemctl_unit_state - _wanted systemd-units expl 'masked unit' \ - compadd "$@" - ${(k)_sys_unit_state[(R)masked]} || _message "no masked units found" + local _sys_unit_state; _systemctl_unit_state + _wanted systemd-units expl 'masked unit' \ + compadd "$@" - ${(k)_sys_unit_state[(R)masked]} || _message "no masked units found" } # Completion functions for JOBS (( $+functions[_systemctl_cancel] )) || _systemctl_cancel() { - _wanted systemd-jobs expl job \ - compadd "$@" - ${${(f)"$(__systemctl list-jobs)"}%% *} || - _message "no jobs found" + _wanted systemd-jobs expl job \ + compadd "$@" - ${${(f)"$(__systemctl list-jobs)"}%% *} || + _message "no jobs found" } # Completion functions for TARGETS (( $+functions[_systemctl_set-default] )) || _systemctl_set-default() { - _wanted systemd-targets expl target \ - compadd "$@" - ${${(f)"$(__systemctl list-unit-files --type target --all "$PREFIX*" )"}%% *} || - _message "no targets found" + _wanted systemd-targets expl target \ + compadd "$@" - ${${(f)"$(__systemctl list-unit-files --type target --all "$PREFIX*" )"}%% *} || + _message "no targets found" } # Completion functions for ENVS for fun in set-environment unset-environment ; do - (( $+functions[_systemctl_$fun] )) || _systemctl_$fun() - { - local fun=$0 ; fun=${fun##_systemctl_} - local suf - if [[ "${fun}" = "set-environment" ]]; then - suf='-S=' - fi - _wanted systemd-environment expl 'environment variable' \ - compadd "$@" ${suf} - ${${(f)"$(systemctl show-environment)"}%%=*} - } + (( $+functions[_systemctl_$fun] )) || _systemctl_$fun() + { + local fun=$0 ; fun=${fun##_systemctl_} + local suf + if [[ "${fun}" = "set-environment" ]]; then + suf='-S=' + fi + _wanted systemd-environment expl 'environment variable' \ + compadd "$@" ${suf} - ${${(f)"$(systemctl show-environment)"}%%=*} + } done (( $+functions[_systemctl_link] )) || _systemctl_link() { - _sd_unit_files -} + _sd_unit_files + } (( $+functions[_systemctl_switch-root] )) || _systemctl_switch-root() { - _files -} + _files + } # no systemctl completion for: # [STANDALONE]='daemon-reexec daemon-reload default @@ -328,57 +328,57 @@ done # list-unit-files poweroff reboot rescue show-environment' (( $+functions[_systemctl_caching_policy] )) || -_systemctl_caching_policy() + _systemctl_caching_policy() { - local _sysunits - local -a oldcache + local _sysunits + local -a oldcache - # rebuild if cache is more than a day old - oldcache=( "$1"(mh+1) ) - (( $#oldcache )) && return 0 + # rebuild if cache is more than a day old + oldcache=( "$1"(mh+1) ) + (( $#oldcache )) && return 0 - _sysunits=(${${(f)"$(__systemctl --all)"}%% *}) + _sysunits=(${${(f)"$(__systemctl --all)"}%% *}) - if (( $#_sysunits )); then - for unit in $_sysunits; do - [[ "$unit" -nt "$1" ]] && return 0 - done - fi + if (( $#_sysunits )); then + for unit in $_sysunits; do + [[ "$unit" -nt "$1" ]] && return 0 + done + fi - return 1 + return 1 } (( $+functions[_systemctl_unit_states] )) || -_systemctl_unit_states() { - local -a _states - _states=("${(fo)$(__systemctl --state=help)}") - _values -s , "${_states[@]}" -} + _systemctl_unit_states() { + local -a _states + _states=("${(fo)$(__systemctl --state=help)}") + _values -s , "${_states[@]}" + } (( $+functions[_systemctl_unit_types] )) || -_systemctl_unit_types() { - local -a _types - _types=("${(fo)$(__systemctl -t help)}") - _values -s , "${_types[@]}" -} + _systemctl_unit_types() { + local -a _types + _types=("${(fo)$(__systemctl -t help)}") + _values -s , "${_types[@]}" + } (( $+functions[_systemctl_unit_properties] )) || -_systemctl_unit_properties() { - if ( [[ ${+_sys_all_properties} -eq 0 ]] || _cache_invalid SYS_ALL_PROPERTIES$_sys_service_mgr ) || - ! _retrieve_cache SYS_ALL_PROPERTIES$_sys_service_mgr; - then - _sys_all_properties=( ${${(M)${(f)"$(@rootlibexecdir@/systemd --dump-bus-properties)"}}} ) - _store_cache SYS_ALL_PROPERTIES$_sys_service_mgr _sys_all_properties - fi - _values -s , "${_sys_all_properties[@]}" -} + _systemctl_unit_properties() { + if ( [[ ${+_sys_all_properties} -eq 0 ]] || _cache_invalid SYS_ALL_PROPERTIES$_sys_service_mgr ) || + ! _retrieve_cache SYS_ALL_PROPERTIES$_sys_service_mgr; + then + _sys_all_properties=( ${${(M)${(f)"$(@rootlibexecdir@/systemd --dump-bus-properties)"}}} ) + _store_cache SYS_ALL_PROPERTIES$_sys_service_mgr _sys_all_properties + fi + _values -s , "${_sys_all_properties[@]}" + } (( $+functions[_systemctl_job_modes] )) || -_systemctl_job_modes() { - local -a _modes - _modes=(fail replace replace-irreversibly isolate ignore-dependencies ignore-requirements flush) - _values -s , "${_modes[@]}" -} + _systemctl_job_modes() { + local -a _modes + _modes=(fail replace replace-irreversibly isolate ignore-dependencies ignore-requirements flush) + _values -s , "${_modes[@]}" + } # Build arguments for "systemctl" to be used in completion. local -a _modes; _modes=("--user" "--system") diff --git a/shell-completion/zsh/_systemd b/shell-completion/zsh/_systemd index ccac889244..cd674a71ea 100644 --- a/shell-completion/zsh/_systemd +++ b/shell-completion/zsh/_systemd @@ -11,7 +11,7 @@ case "$service" in '--no-tty[Ask question via agent even on TTY]' \ '--accept-cached[Accept cached passwords]' \ '--multiple[List multiple passwords if available]' - ;; + ;; systemd-cat) _arguments \ {-h,--help}'[Show this help]' \ @@ -20,7 +20,7 @@ case "$service" in {-p+,--priority=}'[Set priority value.]:value:({0..7})' \ '--level-prefix=[Control whether level prefix shall be parsed.]:boolean:(1 0)' \ ':Message' - ;; + ;; systemd-cgls) _arguments \ {-h,--help}'[Show this help]' \ @@ -29,7 +29,7 @@ case "$service" in {-a,--all}'[Show all groups, including empty]' \ '-k[Include kernel threads in output]' \ ':cgroups:(cpuset cpu cpuacct memory devices freezer blkio)' - ;; + ;; systemd-cgtop) _arguments \ {-h,--help}'[Show this help]' \ @@ -43,7 +43,7 @@ case "$service" in {-n+,--iterations=}'[Run for N iterations before exiting]:number of iterations:' \ {-b,--batch}'[Run in batch mode, accepting no input]' \ '--depth=[Maximum traversal depth]:maximum depth:' - ;; + ;; systemd-detect-virt) _arguments \ {-h,--help}'[Show this help]' \ @@ -51,12 +51,12 @@ case "$service" in {-c,--container}'[Only detect whether we are run in a container]' \ {-v,--vm}'[Only detect whether we are run in a VM]' \ {-q,--quiet}"[Don't output anything, just set return value]" - ;; + ;; systemd-machine-id-setup) _arguments \ {-h,--help}'[Show this help]' \ '--version[Show package version]' - ;; + ;; systemd-notify) _arguments \ {-h,--help}'[Show this help]' \ @@ -65,7 +65,7 @@ case "$service" in '--pid=[Inform the init system about the main PID of the daemon]:daemon main PID:_pids' \ '--status=[Send a free-form status string for the daemon to the init systemd]:status string:' \ '--booted[Returns 0 if the system was booted up with systemd]' - ;; + ;; systemd-tty-ask-password-agent) _arguments \ {-h,--help}'[Prints a short help text and exits.]' \ @@ -76,8 +76,6 @@ case "$service" in '--wall[Forward password requests to wall(1).]' \ '--plymouth[Ask question with plymouth(8).]' \ '--console[Ask question on /dev/console.]' - ;; + ;; *) _message 'eh?' ;; esac - -#vim: set ft=zsh sw=4 ts=4 et diff --git a/shell-completion/zsh/_systemd-analyze b/shell-completion/zsh/_systemd-analyze index 64d418e643..8a5fbb5124 100644 --- a/shell-completion/zsh/_systemd-analyze +++ b/shell-completion/zsh/_systemd-analyze @@ -2,67 +2,67 @@ # SPDX-License-Identifier: LGPL-2.1+ (( $+functions[_systemd-analyze_log-level] )) || -_systemd-analyze_log-level() { - local -a _levels - _levels=(debug info notice warning err crit alert emerg) - _describe -t level 'logging level' _levels || compadd "$@" -} + _systemd-analyze_log-level() { + local -a _levels + _levels=(debug info notice warning err crit alert emerg) + _describe -t level 'logging level' _levels || compadd "$@" + } (( $+functions[_systemd-analyze_log-target] )) || -_systemd-analyze_log-target() { - local -a _targets - _targets=(console journal kmsg journal-or-kmsg null) - _describe -t target 'logging target' _targets || compadd "$@" -} + _systemd-analyze_log-target() { + local -a _targets + _targets=(console journal kmsg journal-or-kmsg null) + _describe -t target 'logging target' _targets || compadd "$@" + } (( $+functions[_systemd-analyze_verify] )) || -_systemd-analyze_verify() { - _sd_unit_files -} + _systemd-analyze_verify() { + _sd_unit_files + } (( $+functions[_systemd-analyze_service-watchdogs] )) || -_systemd-analyze_service-watchdogs() { - local -a _states - _states=(on off) - _describe -t state 'state' _states || compadd "$@" -} + _systemd-analyze_service-watchdogs() { + local -a _states + _states=(on off) + _describe -t state 'state' _states || compadd "$@" + } (( $+functions[_systemd-analyze_commands] )) || -_systemd-analyze_commands(){ - local -a _systemd_analyze_cmds - # Descriptions taken from systemd-analyze --help. - _systemd_analyze_cmds=( - 'time:Print time spent in the kernel before reaching userspace' - 'blame:Print list of running units ordered by time to init' - 'critical-chain:Print a tree of the time critical chain of units' - 'plot:Output SVG graphic showing service initialization' - 'dot:Dump dependency graph (in dot(1) format)' - 'dump:Dump server status' - 'unit-paths:List unit load paths' - 'log-level:Get/set systemd log threshold' - 'log-target:Get/set systemd log target' - 'service-watchdogs:Get/set service watchdog status' - 'syscall-filter:List syscalls in seccomp filter' - 'verify:Check unit files for correctness' - 'calendar:Validate repetitive calendar time events' - ) + _systemd-analyze_commands(){ + local -a _systemd_analyze_cmds + # Descriptions taken from systemd-analyze --help. + _systemd_analyze_cmds=( + 'time:Print time spent in the kernel before reaching userspace' + 'blame:Print list of running units ordered by time to init' + 'critical-chain:Print a tree of the time critical chain of units' + 'plot:Output SVG graphic showing service initialization' + 'dot:Dump dependency graph (in dot(1) format)' + 'dump:Dump server status' + 'unit-paths:List unit load paths' + 'log-level:Get/set systemd log threshold' + 'log-target:Get/set systemd log target' + 'service-watchdogs:Get/set service watchdog status' + 'syscall-filter:List syscalls in seccomp filter' + 'verify:Check unit files for correctness' + 'calendar:Validate repetitive calendar time events' + ) - if (( CURRENT == 1 )); then - _describe "options" _systemd_analyze_cmds - else - local curcontext="$curcontext" - cmd="${${_systemd_analyze_cmds[(r)$words[1]:*]%%:*}}" - if (( $#cmd )); then - if (( $+functions[_systemd-analyze_$cmd] )) && (( CURRENT == 2 )); then - _systemd-analyze_$cmd - else - _message "no more options" - fi + if (( CURRENT == 1 )); then + _describe "options" _systemd_analyze_cmds else - _message "unknown systemd-analyze command: $words[1]" + local curcontext="$curcontext" + cmd="${${_systemd_analyze_cmds[(r)$words[1]:*]%%:*}}" + if (( $#cmd )); then + if (( $+functions[_systemd-analyze_$cmd] )) && (( CURRENT == 2 )); then + _systemd-analyze_$cmd + else + _message "no more options" + fi + else + _message "unknown systemd-analyze command: $words[1]" + fi fi - fi -} + } _arguments \ {-h,--help}'[Show help text]' \ diff --git a/shell-completion/zsh/_systemd-resolve b/shell-completion/zsh/_systemd-resolve index c4664422ec..07f6ad26b5 100644 --- a/shell-completion/zsh/_systemd-resolve +++ b/shell-completion/zsh/_systemd-resolve @@ -1,6 +1,5 @@ #compdef systemd-resolve # SPDX-License-Identifier: LGPL-2.1+ - # # This file is part of systemd. # @@ -18,32 +17,32 @@ # along with systemd; If not, see . (( $+functions[_systemd-resolve_protocols] )) || -_systemd-resolve_protocols() { - local -a _protocol - _protocol=( $(_call_program protocol ${service} --legend=no --protocol help; echo help) ) - _values 'protocol' "$_protocol[@]" -} + _systemd-resolve_protocols() { + local -a _protocol + _protocol=( $(_call_program protocol ${service} --legend=no --protocol help; echo help) ) + _values 'protocol' "$_protocol[@]" + } (( $+functions[_systemd-resolve_types] )) || -_systemd-resolve_types() { - local -a _type - _type=( $(_call_program type ${service} --legend=no --type help; echo help) ) - _values 'type' "$_type[@]" -} + _systemd-resolve_types() { + local -a _type + _type=( $(_call_program type ${service} --legend=no --type help; echo help) ) + _values 'type' "$_type[@]" + } (( $+functions[_systemd-resolve_classes] )) || -_systemd-resolve_classes() { - local -a _class - _class=( $(_call_program class ${service} --legend=no --class help; echo help) ) - _values 'class' "$_class[@]" -} + _systemd-resolve_classes() { + local -a _class + _class=( $(_call_program class ${service} --legend=no --class help; echo help) ) + _values 'class' "$_class[@]" + } (( $+functions[_systemd-resolve_none] )) || -_systemd-resolve_none() { - _alternative : \ - 'domain:DNS address:' \ - 'address:email address:' -} + _systemd-resolve_none() { + _alternative : \ + 'domain:DNS address:' \ + 'address:email address:' + } _arguments \ {-h,--help}'[Print a short help text and exit]' \ diff --git a/shell-completion/zsh/_systemd-run b/shell-completion/zsh/_systemd-run index 81017180a7..2e0b3d2cfd 100644 --- a/shell-completion/zsh/_systemd-run +++ b/shell-completion/zsh/_systemd-run @@ -3,34 +3,34 @@ # @todo _systemctl has a helper with the same name, so we must redefine __systemctl() { - local -a _modes - _modes=("--user" "--system") - systemctl ${words:*_modes} --full --no-legend --no-pager "$@" 2>/dev/null + local -a _modes + _modes=("--user" "--system") + systemctl ${words:*_modes} --full --no-legend --no-pager "$@" 2>/dev/null } (( $+functions[__systemd-run_get_slices] )) || -__systemd-run_get_slices () { + __systemd-run_get_slices () { __systemctl list-units --all -t slice \ - | { while read -r a b; do echo $a; done; }; -} + | { while read -r a b; do echo $a; done; }; + } (( $+functions[__systemd-run_slices] )) || -__systemd-run_slices () { + __systemd-run_slices () { local -a _slices _slices=(${(fo)"$(__systemd-run_get_slices)"}) typeset -U _slices _describe 'slices' _slices -} + } _arguments \ - {-h,--help}'[Show help message]' \ - '--version[Show package version]' \ - '--user[Run as user unit]' \ - {-H+,--host=}'[Operate on remote host]:[user@]host:_sd_hosts_or_user_at_host' \ - {-M+,--machine=}'[Operate on local container]:machines:_sd_machines' \ - '--scope[Run this as scope rather than service]' \ - '--unit=[Run under the specified unit name]:unit name' \ - {-p+,--property=}'[Set unit property]:NAME=VALUE:(( \ + {-h,--help}'[Show help message]' \ + '--version[Show package version]' \ + '--user[Run as user unit]' \ + {-H+,--host=}'[Operate on remote host]:[user@]host:_sd_hosts_or_user_at_host' \ + {-M+,--machine=}'[Operate on local container]:machines:_sd_machines' \ + '--scope[Run this as scope rather than service]' \ + '--unit=[Run under the specified unit name]:unit name' \ + {-p+,--property=}'[Set unit property]:NAME=VALUE:(( \ CPUAccounting= MemoryAccounting= BlockIOAccounting= SendSIGHUP= \ SendSIGKILL= MemoryLimit= CPUShares= BlockIOWeight= User= Group= \ DevicePolicy= KillMode= DeviceAllow= BlockIOReadBandwidth= \ @@ -45,21 +45,21 @@ _arguments \ ReadOnlyPaths= InaccessiblePaths= EnvironmentFile= \ ProtectSystem= ProtectHome= RuntimeDirectory= PassEnvironment= \ ))' \ - '--description=[Description for unit]:description' \ - '--slice=[Run in the specified slice]:slices:__systemd-run_slices' \ - {-r,--remain-after-exit}'[Leave service around until explicitly stopped]' \ - '--send-sighup[Send SIGHUP when terminating]' \ - '--service-type=[Service type]:type:(simple forking oneshot dbus notify idle)' \ - '--uid=[Run as system user]:user:_users' \ - '--gid=[Run as system group]:group:_groups' \ - '--nice=[Nice level]:nice level' \ - '--setenv=[Set environment]:NAME=VALUE' \ - '--on-active=[Run after SEC seconds]:SEC' \ - '--on-boot=[Run SEC seconds after machine was booted up]:SEC' \ - '--on-startup=[Run SEC seconds after systemd was first started]:SEC' \ - '--on-unit-active=[Run SEC seconds after the last activation]:SEC' \ - '--on-unit-inactive=[Run SEC seconds after the last deactivation]:SEC' \ - '--on-calendar=[Realtime timer]:SPEC' \ - '--timer-property=[Set timer unit property]:NAME=VALUE' \ - '--wait=[Wait until service stopped again]' \ - '*::command:_command' + '--description=[Description for unit]:description' \ + '--slice=[Run in the specified slice]:slices:__systemd-run_slices' \ + {-r,--remain-after-exit}'[Leave service around until explicitly stopped]' \ + '--send-sighup[Send SIGHUP when terminating]' \ + '--service-type=[Service type]:type:(simple forking oneshot dbus notify idle)' \ + '--uid=[Run as system user]:user:_users' \ + '--gid=[Run as system group]:group:_groups' \ + '--nice=[Nice level]:nice level' \ + '--setenv=[Set environment]:NAME=VALUE' \ + '--on-active=[Run after SEC seconds]:SEC' \ + '--on-boot=[Run SEC seconds after machine was booted up]:SEC' \ + '--on-startup=[Run SEC seconds after systemd was first started]:SEC' \ + '--on-unit-active=[Run SEC seconds after the last activation]:SEC' \ + '--on-unit-inactive=[Run SEC seconds after the last deactivation]:SEC' \ + '--on-calendar=[Realtime timer]:SPEC' \ + '--timer-property=[Set timer unit property]:NAME=VALUE' \ + '--wait=[Wait until service stopped again]' \ + '*::command:_command' diff --git a/shell-completion/zsh/_udevadm b/shell-completion/zsh/_udevadm index 020759b006..eb133a42a6 100644 --- a/shell-completion/zsh/_udevadm +++ b/shell-completion/zsh/_udevadm @@ -142,7 +142,6 @@ _udevadm_commands(){ fi } - _arguments \ '--debug[Print debug messages to stderr]' \ '--version[Print version number]' \ From c1072f6473bafa063cbf700c86524083d2857031 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Fri, 5 Apr 2019 11:41:35 +0200 Subject: [PATCH 4/5] shell-completion/zsh: add -*type*- headers Since there's no file extension, emacs and other editors do not know that this is supposed to be in shell syntax. --- shell-completion/zsh/_bootctl | 2 +- shell-completion/zsh/_busctl | 2 +- shell-completion/zsh/_coredumpctl | 2 +- shell-completion/zsh/_hostnamectl | 2 +- shell-completion/zsh/_journalctl | 2 +- shell-completion/zsh/_kernel-install | 2 +- shell-completion/zsh/_localectl | 2 +- shell-completion/zsh/_loginctl | 2 +- shell-completion/zsh/_machinectl | 2 +- shell-completion/zsh/_networkctl | 2 +- shell-completion/zsh/_systemctl.in | 2 +- shell-completion/zsh/_systemd | 2 +- shell-completion/zsh/_systemd-analyze | 2 +- shell-completion/zsh/_systemd-delta | 2 +- shell-completion/zsh/_systemd-inhibit | 2 +- shell-completion/zsh/_systemd-nspawn | 2 +- shell-completion/zsh/_systemd-resolve | 2 +- shell-completion/zsh/_systemd-run | 2 +- shell-completion/zsh/_systemd-tmpfiles | 2 +- shell-completion/zsh/_timedatectl | 2 +- shell-completion/zsh/_udevadm | 2 +- 21 files changed, 21 insertions(+), 21 deletions(-) diff --git a/shell-completion/zsh/_bootctl b/shell-completion/zsh/_bootctl index 0ffef94e4a..f0ac892521 100644 --- a/shell-completion/zsh/_bootctl +++ b/shell-completion/zsh/_bootctl @@ -1,4 +1,4 @@ -#compdef bootctl +#compdef bootctl -*- shell-script -*- # SPDX-License-Identifier: LGPL-2.1+ (( $+functions[_bootctl_commands] )) || _bootctl_commands() diff --git a/shell-completion/zsh/_busctl b/shell-completion/zsh/_busctl index d66ff3e0ce..4e0362423c 100644 --- a/shell-completion/zsh/_busctl +++ b/shell-completion/zsh/_busctl @@ -1,4 +1,4 @@ -#compdef busctl +#compdef busctl -*- shell-script -*- # SPDX-License-Identifier: LGPL-2.1+ # busctl(1) completion -*- shell-script -*- diff --git a/shell-completion/zsh/_coredumpctl b/shell-completion/zsh/_coredumpctl index 74491626aa..6b7d14a766 100644 --- a/shell-completion/zsh/_coredumpctl +++ b/shell-completion/zsh/_coredumpctl @@ -1,4 +1,4 @@ -#compdef coredumpctl +#compdef coredumpctl -*- shell-script -*- # SPDX-License-Identifier: LGPL-2.1+ (( $+functions[_coredumpctl_commands] )) || diff --git a/shell-completion/zsh/_hostnamectl b/shell-completion/zsh/_hostnamectl index a5c89306d1..d1ad85a18f 100644 --- a/shell-completion/zsh/_hostnamectl +++ b/shell-completion/zsh/_hostnamectl @@ -1,4 +1,4 @@ -#compdef hostnamectl +#compdef hostnamectl -*- shell-script -*- # SPDX-License-Identifier: LGPL-2.1+ (( $+functions[_hostnamectl_set-hostname] )) || diff --git a/shell-completion/zsh/_journalctl b/shell-completion/zsh/_journalctl index 0520e02de2..019ffbe87a 100644 --- a/shell-completion/zsh/_journalctl +++ b/shell-completion/zsh/_journalctl @@ -1,4 +1,4 @@ -#compdef journalctl +#compdef journalctl -*- shell-script -*- # SPDX-License-Identifier: LGPL-2.1+ (( $+functions[_journalctl_fields] )) || diff --git a/shell-completion/zsh/_kernel-install b/shell-completion/zsh/_kernel-install index 5be5c4c3f2..4b5dd89d43 100644 --- a/shell-completion/zsh/_kernel-install +++ b/shell-completion/zsh/_kernel-install @@ -1,4 +1,4 @@ -#compdef kernel-install +#compdef kernel-install -*- shell-script -*- # SPDX-License-Identifier: LGPL-2.1+ (( $+functions[_kernel-install_images] )) || diff --git a/shell-completion/zsh/_localectl b/shell-completion/zsh/_localectl index 569f4f294c..a712473ce2 100644 --- a/shell-completion/zsh/_localectl +++ b/shell-completion/zsh/_localectl @@ -1,4 +1,4 @@ -#compdef localectl +#compdef localectl -*- shell-script -*- # SPDX-License-Identifier: LGPL-2.1+ (( $+functions[_localectl_set-locale] )) || diff --git a/shell-completion/zsh/_loginctl b/shell-completion/zsh/_loginctl index c421a9b6c4..b9ccbedf75 100644 --- a/shell-completion/zsh/_loginctl +++ b/shell-completion/zsh/_loginctl @@ -1,4 +1,4 @@ -#compdef loginctl +#compdef loginctl -*- shell-script -*- # SPDX-License-Identifier: LGPL-2.1+ (( $+functions[_loginctl_all_sessions] )) || diff --git a/shell-completion/zsh/_machinectl b/shell-completion/zsh/_machinectl index 1590b9f1b9..5ffb7e8b9f 100644 --- a/shell-completion/zsh/_machinectl +++ b/shell-completion/zsh/_machinectl @@ -1,4 +1,4 @@ -#compdef machinectl +#compdef machinectl -*- shell-script -*- # SPDX-License-Identifier: LGPL-2.1+ (( $+functions[__machinectl_get_machines] )) || diff --git a/shell-completion/zsh/_networkctl b/shell-completion/zsh/_networkctl index c9b730fbe3..4995bd3d10 100644 --- a/shell-completion/zsh/_networkctl +++ b/shell-completion/zsh/_networkctl @@ -1,4 +1,4 @@ -#compdef networkctl +#compdef networkctl -*- shell-script -*- # SPDX-License-Identifier: LGPL-2.1+ (( $+functions[_networkctl_commands] )) || diff --git a/shell-completion/zsh/_systemctl.in b/shell-completion/zsh/_systemctl.in index 0c86fec95c..07db6d47ce 100644 --- a/shell-completion/zsh/_systemctl.in +++ b/shell-completion/zsh/_systemctl.in @@ -1,4 +1,4 @@ -#compdef systemctl +#compdef systemctl -*- shell-script -*- # SPDX-License-Identifier: LGPL-2.1+ (( $+functions[_systemctl_commands] )) || _systemctl_commands() diff --git a/shell-completion/zsh/_systemd b/shell-completion/zsh/_systemd index cd674a71ea..3550c15163 100644 --- a/shell-completion/zsh/_systemd +++ b/shell-completion/zsh/_systemd @@ -1,4 +1,4 @@ -#compdef systemd-cat systemd-ask-password systemd-cgls systemd-cgtop systemd-detect-virt systemd-machine-id-setup systemd-notify systemd-tty-ask-password-agent +#compdef systemd-cat systemd-ask-password systemd-cgls systemd-cgtop systemd-detect-virt systemd-machine-id-setup systemd-notify systemd-tty-ask-password-agent -*- shell-script -*- # SPDX-License-Identifier: LGPL-2.1+ local curcontext="$curcontext" state lstate line diff --git a/shell-completion/zsh/_systemd-analyze b/shell-completion/zsh/_systemd-analyze index 8a5fbb5124..89ba46c959 100644 --- a/shell-completion/zsh/_systemd-analyze +++ b/shell-completion/zsh/_systemd-analyze @@ -1,4 +1,4 @@ -#compdef systemd-analyze +#compdef systemd-analyze -*- shell-script -*- # SPDX-License-Identifier: LGPL-2.1+ (( $+functions[_systemd-analyze_log-level] )) || diff --git a/shell-completion/zsh/_systemd-delta b/shell-completion/zsh/_systemd-delta index e07bbc8b2b..b4361f7860 100644 --- a/shell-completion/zsh/_systemd-delta +++ b/shell-completion/zsh/_systemd-delta @@ -1,4 +1,4 @@ -#compdef systemd-delta +#compdef systemd-delta -*- shell-script -*- # SPDX-License-Identifier: LGPL-2.1+ (( $+functions[_systemd-delta_types] )) || diff --git a/shell-completion/zsh/_systemd-inhibit b/shell-completion/zsh/_systemd-inhibit index 7c40e49ae4..c51c485167 100644 --- a/shell-completion/zsh/_systemd-inhibit +++ b/shell-completion/zsh/_systemd-inhibit @@ -1,4 +1,4 @@ -#compdef systemd-inhibit +#compdef systemd-inhibit -*- shell-script -*- # SPDX-License-Identifier: LGPL-2.1+ (( $+functions[_systemd-inhibit_commands] )) || diff --git a/shell-completion/zsh/_systemd-nspawn b/shell-completion/zsh/_systemd-nspawn index abaabfc895..414d82e2ea 100644 --- a/shell-completion/zsh/_systemd-nspawn +++ b/shell-completion/zsh/_systemd-nspawn @@ -1,4 +1,4 @@ -#compdef systemd-nspawn +#compdef systemd-nspawn -*- shell-script -*- # SPDX-License-Identifier: LGPL-2.1+ (( $+functions[_systemd-nspawn_caps] )) || diff --git a/shell-completion/zsh/_systemd-resolve b/shell-completion/zsh/_systemd-resolve index 07f6ad26b5..3b0ce311f2 100644 --- a/shell-completion/zsh/_systemd-resolve +++ b/shell-completion/zsh/_systemd-resolve @@ -1,4 +1,4 @@ -#compdef systemd-resolve +#compdef systemd-resolve -*- shell-script -*- # SPDX-License-Identifier: LGPL-2.1+ # # This file is part of systemd. diff --git a/shell-completion/zsh/_systemd-run b/shell-completion/zsh/_systemd-run index 2e0b3d2cfd..6a703a075b 100644 --- a/shell-completion/zsh/_systemd-run +++ b/shell-completion/zsh/_systemd-run @@ -1,4 +1,4 @@ -#compdef systemd-run +#compdef systemd-run -*- shell-script -*- # SPDX-License-Identifier: LGPL-2.1+ # @todo _systemctl has a helper with the same name, so we must redefine diff --git a/shell-completion/zsh/_systemd-tmpfiles b/shell-completion/zsh/_systemd-tmpfiles index 0993bca5a4..8860dc797c 100644 --- a/shell-completion/zsh/_systemd-tmpfiles +++ b/shell-completion/zsh/_systemd-tmpfiles @@ -1,4 +1,4 @@ -#compdef systemd-tmpfiles +#compdef systemd-tmpfiles -*- shell-script -*- # SPDX-License-Identifier: LGPL-2.1+ _arguments \ diff --git a/shell-completion/zsh/_timedatectl b/shell-completion/zsh/_timedatectl index c1ed21e565..e2dabc79a7 100644 --- a/shell-completion/zsh/_timedatectl +++ b/shell-completion/zsh/_timedatectl @@ -1,4 +1,4 @@ -#compdef timedatectl +#compdef timedatectl -*- shell-script -*- # SPDX-License-Identifier: LGPL-2.1+ _timedatectl_set-timezone(){ diff --git a/shell-completion/zsh/_udevadm b/shell-completion/zsh/_udevadm index eb133a42a6..ad0b73d476 100644 --- a/shell-completion/zsh/_udevadm +++ b/shell-completion/zsh/_udevadm @@ -1,4 +1,4 @@ -#compdef udevadm +#compdef udevadm -*- shell-script -*- # SPDX-License-Identifier: LGPL-2.1+ (( $+functions[_udevadm_info] )) || From 3b69b18fbfc8dd5599bdb2d4654644a341046e3e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Zbigniew=20J=C4=99drzejewski-Szmek?= Date: Fri, 5 Apr 2019 14:14:45 +0200 Subject: [PATCH 5/5] CODING_STYLE: adjust indentation rules, and add note about config loading --- docs/CODING_STYLE.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/docs/CODING_STYLE.md b/docs/CODING_STYLE.md index 7bad3f5d2e..71642bdf9b 100644 --- a/docs/CODING_STYLE.md +++ b/docs/CODING_STYLE.md @@ -4,8 +4,8 @@ title: Coding Style # Coding Style -- 8ch indent, no tabs, except for files in `man/` which are 2ch indent, - and still no tabs. +- 8ch indent, no tabs, except for files in `man/` which are 2ch indent, and + still no tabs, and shell scripts, which are 4ch indent, and no tabs either. - We prefer `/* comments */` over `// comments` in code you commit, please. This way `// comments` are left for developers to use for local, temporary @@ -17,7 +17,9 @@ title: Coding Style all of today's screens should be much larger than that. But then again, don't overdo it, ~109ch should be enough really. The `.editorconfig`, `.vimrc` and `.dir-locals.el` files contained in the repository will set this limit up for - you automatically, if you let them (as well as a few other things). + you automatically, if you let them (as well as a few other things). Please + note that emacs loads `.dir-locals.el` automatically, but vim needs to be + configured to load `.vimrc`, see that file for instructions. - Variables and functions **must** be static, unless they have a prototype, and are supposed to be exported.