aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEd Santiago <santiago@redhat.com>2021-02-01 13:37:05 -0700
committerEd Santiago <santiago@redhat.com>2021-02-01 13:47:54 -0700
commitee8ee651d523bd853ce0075ebd2bc02a02c4ed95 (patch)
tree64c26006f0c20934be8325e5a21e1c87f7307eee
parent182e8414d406d3058e985104af98f30a9e8f56fa (diff)
downloadpodman-ee8ee651d523bd853ce0075ebd2bc02a02c4ed95.tar.gz
podman-ee8ee651d523bd853ce0075ebd2bc02a02c4ed95.tar.bz2
podman-ee8ee651d523bd853ce0075ebd2bc02a02c4ed95.zip
New 'make completions' target
Generate shell completion files for podman and podman-remote and for all known shells (bash, fish, zsh). Fix Readme file in completions dir: it suggested running 'make completion', singular; no such target existed. Since the install target is plural, I choose to make the new target plural also. This is intended for use in CI some day, in a check such as: (in contrib/cirrus/runner.sh): make completions SUGGESTION="run 'make completions' and commit all changes" ./hack/tree_status.sh The goal would be to make sure that any new podman subcommands or flags are accompanied by their corresponding shell helpers on all commits. IT IS NOT POSSIBLE TO ENFORCE THIS NOW. As I understand it, Cobra is slow to incorporate community PRs, so the podman team has chosen to sneak in completion files generated by an unreleased and un-vendored version of Cobra. Running 'make completions' right now would clobber those and result in a diminished user experience. I'm submitting this anyway as a stepping-stone toward that future day when we can create such a CI hook. [NO TESTS NEEDED] Signed-off-by: Ed Santiago <santiago@redhat.com>
-rw-r--r--Makefile12
-rw-r--r--completions/Readme.md2
2 files changed, 13 insertions, 1 deletions
diff --git a/Makefile b/Makefile
index dfa36e3ef..a5e126176 100644
--- a/Makefile
+++ b/Makefile
@@ -639,6 +639,18 @@ install.libseccomp.sudo:
cd ../../seccomp/libseccomp && git checkout --detach $(LIBSECCOMP_COMMIT) && ./autogen.sh && ./configure --prefix=/usr && make all && make install
+.PHONY: completions
+completions: podman podman-remote
+ # key = shell, value = completion filename
+ declare -A outfiles=([bash]=%s [zsh]=_%s [fish]=%s.fish);\
+ for shell in $${!outfiles[*]}; do \
+ for remote in "" "-remote"; do \
+ podman="podman$$remote"; \
+ outfile=$$(printf "completions/$$shell/$${outfiles[$$shell]}" $$podman); \
+ ./bin/$$podman completion $$shell >| $$outfile; \
+ done;\
+ done
+
.PHONY: validate.completions
validate.completions: SHELL:=/usr/bin/env bash # Set shell to bash for this target
validate.completions:
diff --git a/completions/Readme.md b/completions/Readme.md
index 5c9d16f3c..132a38bbf 100644
--- a/completions/Readme.md
+++ b/completions/Readme.md
@@ -2,6 +2,6 @@
Podman offers shell completion scripts for bash, zsh and fish. The completion scripts are available for both `podman` and `podman-remote`.
-The shell completion scripts are generated by `make completion`, do not edit these files directly. To install them you can run `sudo make install.completions`.
+The shell completion scripts are generated by `make completions`; do not edit these files directly. To install them you can run `sudo make install.completions`.
For information about these scripts see [`man podman-completion`](../docs/source/markdown/podman-completion.1.md)