summaryrefslogtreecommitdiff
path: root/Makefile
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 /Makefile
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>
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile12
1 files changed, 12 insertions, 0 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: