From: Dietmar Maurer Date: Thu, 24 May 2018 08:26:29 +0000 (+0200) Subject: add simple bash completion code X-Git-Url: https://git.proxmox.com/?p=pve-client.git;a=commitdiff_plain;h=dce6ecbc505f8ea6f1231f5fd1fd9140636d7c2e add simple bash completion code --- diff --git a/Makefile b/Makefile index 6eccaec..d37025b 100644 --- a/Makefile +++ b/Makefile @@ -8,6 +8,7 @@ DESTDIR= LIB_DIR=${DESTDIR}/usr/share/${PACKAGE} DOCDIR=${DESTDIR}/usr/share/doc/${PACKAGE} +BASHCOMPLDIR=${DESTDIR}/usr/share/bash-completion/completions/ all: ${DEB} @@ -34,6 +35,8 @@ install: pve-api-definition.js install -D -m 0644 PVE/APIClient/Commands/lxc.pm ${LIB_DIR}/PVE/APIClient/Commands/lxc.pm install -D -m 0644 pve-api-definition.js ${LIB_DIR}/pve-api-definition.js install -D -m 0755 pveclient ${DESTDIR}/usr/bin/pveclient + install -D -m 0644 pveclient.bash-completion ${BASHCOMPLDIR}/pveclient.bash-completion + pve-api-definition.js: ./extractapi.pl > pve-api-definition.js.tmp diff --git a/debian/install b/debian/install index 5f25140..4079fc6 100644 --- a/debian/install +++ b/debian/install @@ -1,2 +1,3 @@ /usr/share -/usr/bin \ No newline at end of file +/usr/bin +/usr/share/bash-completion/completions diff --git a/pveclient b/pveclient index d24ec49..d8d4d15 100755 --- a/pveclient +++ b/pveclient @@ -80,6 +80,21 @@ if ($cmd eq 'get') { PVE::APIClient::Commands::lxc->run_cli_handler(); } elsif ($cmd eq 'remote') { PVE::APIClient::Commands::remote->run_cli_handler(); +} elsif ($cmd eq 'bashcomplete') { + + my $cmdline = substr($ENV{COMP_LINE}, 0, $ENV{COMP_POINT}); + $cmdline =~ s/$cur$//; + + my ($bash_command, $cur, $prev) = @ARGV; + + my $args = [split(/\s+/, $cmdline)]; + + if (scalar(@$args) == 1) { + foreach my $p (qw(get set create delete lxc remote)) { + print "$p\n" if $p =~ m/^$cur/; + } + } + } else { print_usage(); } diff --git a/pveclient.bash-completion b/pveclient.bash-completion new file mode 100644 index 0000000..983b432 --- /dev/null +++ b/pveclient.bash-completion @@ -0,0 +1,8 @@ +# pveclient bash completion + +# see http://tiswww.case.edu/php/chet/bash/FAQ +# and __ltrim_colon_completions() in /usr/share/bash-completion/bash_completion +# this modifies global var, but I found no better way +COMP_WORDBREAKS=${COMP_WORDBREAKS//:} + +complete -C 'pveclient bashcomplete' pveclient