On Fri, May 24, 2019 at 2:15 AM Quentin Monnet <quentin.monnet@xxxxxxxxxxxxx> wrote: > > 2019-05-23 13:42 UTC-0700 ~ Andrii Nakryiko <andriin@xxxxxx> > > Add bash completion for new C btf dump option. > > > > Cc: Quentin Monnet <quentin.monnet@xxxxxxxxxxxxx> > > Signed-off-by: Andrii Nakryiko <andriin@xxxxxx> > > --- > > tools/bpf/bpftool/bash-completion/bpftool | 25 +++++++++++++++++++---- > > 1 file changed, 21 insertions(+), 4 deletions(-) > > > > diff --git a/tools/bpf/bpftool/bash-completion/bpftool b/tools/bpf/bpftool/bash-completion/bpftool > > index 50e402a5a9c8..5b65e0309d2a 100644 > > --- a/tools/bpf/bpftool/bash-completion/bpftool > > +++ b/tools/bpf/bpftool/bash-completion/bpftool > > @@ -638,11 +638,28 @@ _bpftool() > > esac > > return 0 > > ;; > > + format) > > + COMPREPLY=( $( compgen -W "c raw" -- "$cur" ) ) > > + ;; > > *) > > - if [[ $cword == 6 ]] && [[ ${words[3]} == "map" ]]; then > > - COMPREPLY+=( $( compgen -W 'key value kv all' -- \ > > - "$cur" ) ) > > - fi > > + # emit extra options > > + case ${words[3]} in > > + id|file) > > + if [[ $cword > 4 ]]; then > > Not sure if this "if" is necessary. It seems to me that if $cword is 4 > then we are just after "id" or "file" in the command line, in which case > we hit previous cases and never reach this point? Yep, you are right, removed. > > Also, reading the completion code I wonder, do we have completion for > BTF ids? It seems to me that we have nothing proposed to complete > "bpftool btf dump id <tab>". Any chance to get that in a follow-up patch? We currently don't have a way to iterate all BTFs in a system (neither in bpftool, nor in libbpf, AFAICT), but I can do that based on btf_id field, dumped as part of `bpftool prog list` command. Would that work? I'll post that as a separate patch. > > > + _bpftool_once_attr 'format' > > + fi > > + ;; > > + map|prog) > > + if [[ ${words[3]} == "map" ]] && [[ $cword == 6 ]]; then > > + COMPREPLY+=( $( compgen -W "key value kv all" -- "$cur" ) ) > > + fi > > + if [[ $cword > 5 ]]; then > > Same remark on the "if", I do not believe it is necessary? Yep, removed. > > > + _bpftool_once_attr 'format' > > + fi > > + ;; > > + *) > > + ;; > > + esac > > return 0 > > ;; > > esac > > >