diff --git a/shell-completion/bash/systemd-analyze b/shell-completion/bash/systemd-analyze index b194c74b63..04b4e56e12 100644 --- a/shell-completion/bash/systemd-analyze +++ b/shell-completion/bash/systemd-analyze @@ -77,7 +77,8 @@ _systemd_analyze() { ) local -A VERBS=( - [STANDALONE]='time blame unit-files unit-paths exit-status compare-versions timestamp timespan pcrs nvpcrs srk has-tpm2 identify-tpm2 smbios11 chid image-policy' + [STANDALONE]='time unit-files unit-paths compare-versions timestamp timespan srk has-tpm2 smbios11 image-policy' + [STANDALONE_JSON]='blame exit-status pcrs nvpcrs identify-tpm2 chid' [CRITICAL_CHAIN]='critical-chain' [DOT]='dot' [DUMP]='dump' @@ -153,6 +154,11 @@ _systemd_analyze() { comps='--help --version --system --user --global --no-pager' fi + elif __contains_word "$verb" ${VERBS[STANDALONE_JSON]}; then + if [[ $cur = -* ]]; then + comps='--help --version --system --user --global --no-pager --json=off --json=pretty --json=short' + fi + elif __contains_word "$verb" ${VERBS[CRITICAL_CHAIN]}; then if [[ $cur = -* ]]; then comps='--help --version --system --user --fuzz --no-pager' diff --git a/src/analyze/analyze.c b/src/analyze/analyze.c index fbdbc83fe7..d6675f5eb0 100644 --- a/src/analyze/analyze.c +++ b/src/analyze/analyze.c @@ -625,9 +625,9 @@ static int parse_argv(int argc, char *argv[], char ***ret_args) { "Option --offline= requires one or more units to perform a security review."); if (arg_json_format_flags != SD_JSON_FORMAT_OFF && - !STRPTR_IN_SET(verb, "security", "inspect-elf", "dlopen-metadata", "plot", "fdstore", "pcrs", "nvpcrs", "architectures", "capability", "exit-status")) + !STRPTR_IN_SET(verb, "security", "inspect-elf", "dlopen-metadata", "plot", "fdstore", "pcrs", "nvpcrs", "architectures", "capability", "exit-status", "chid", "blame", "identify-tpm2")) return log_error_errno(SYNTHETIC_ERRNO(EINVAL), - "Option --json= is only supported for security, inspect-elf, dlopen-metadata, plot, fdstore, pcrs, nvpcrs, architectures, capability, exit-status right now."); + "Option --json= is only supported for security, inspect-elf, dlopen-metadata, plot, fdstore, pcrs, nvpcrs, architectures, capability, exit-status, chid, blame, identify-tpm2 right now."); if (arg_threshold != 100 && !streq_ptr(verb, "security")) return log_error_errno(SYNTHETIC_ERRNO(EINVAL), diff --git a/test/units/TEST-65-ANALYZE.sh b/test/units/TEST-65-ANALYZE.sh index a470883aff..05a7b7f0c1 100755 --- a/test/units/TEST-65-ANALYZE.sh +++ b/test/units/TEST-65-ANALYZE.sh @@ -18,6 +18,7 @@ systemd-analyze time || : systemd-analyze critical-chain || : # blame systemd-analyze blame +systemd-analyze blame --json=pretty systemd-run --wait --user --pipe -M testuser@.host systemd-analyze blame --no-pager (! systemd-analyze blame --global) # plot @@ -1139,6 +1140,8 @@ systemd-analyze security --instance=tmp systemd-growfs@.service systemd-analyze has-tpm2 ||: if systemd-analyze has-tpm2 -q ; then echo "have tpm2" + systemd-analyze identify-tpm2 + systemd-analyze identify-tpm2 --json=pretty else echo "have no tpm2" fi