diff options
author | Ed Santiago <santiago@redhat.com> | 2021-02-01 13:37:05 -0700 |
---|---|---|
committer | Ed Santiago <santiago@redhat.com> | 2021-02-01 13:47:54 -0700 |
commit | ee8ee651d523bd853ce0075ebd2bc02a02c4ed95 (patch) | |
tree | 64c26006f0c20934be8325e5a21e1c87f7307eee /Makefile | |
parent | 182e8414d406d3058e985104af98f30a9e8f56fa (diff) | |
download | podman-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-- | Makefile | 12 |
1 files changed, 12 insertions, 0 deletions
@@ -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: |