diff --git a/src/packaging/Makefile b/src/packaging/Makefile index 4f998c68a..4f0d51e3f 100644 --- a/src/packaging/Makefile +++ b/src/packaging/Makefile @@ -16,11 +16,13 @@ prepare: mkdir -p build/etc/init.d mkdir -p build/etc/cassandra-reaper mkdir -p build/etc/cassandra-reaper/configs + mkdir -p build/etc/bash_completion.d cp resource/cassandra-reaper.yaml build/etc/cassandra-reaper/ cp resource/shiro.ini build/etc/cassandra-reaper/configs cp resource/cassandra-reaper*.yaml build/etc/cassandra-reaper/configs cp ../server/target/cassandra-reaper-$(VERSION).jar build/usr/share/cassandra-reaper/ cp bin/* build/usr/local/bin/ + cp etc/bash_completion.d/spreaper build/etc/bash_completion.d/ cp debian/reaper.init build/etc/init.d/cassandra-reaper chmod 755 build/etc/init.d/cassandra-reaper diff --git a/src/packaging/debian/cassandra-reaper-cli.install b/src/packaging/debian/cassandra-reaper-cli.install index a70030159..057f1be8a 100644 --- a/src/packaging/debian/cassandra-reaper-cli.install +++ b/src/packaging/debian/cassandra-reaper-cli.install @@ -1 +1,2 @@ bin/spreaper usr/bin +etc/bash_completion.d/spreaper etc/bash_completion.d diff --git a/src/packaging/etc/bash_completion.d/spreaper b/src/packaging/etc/bash_completion.d/spreaper new file mode 100644 index 000000000..2ded95f0a --- /dev/null +++ b/src/packaging/etc/bash_completion.d/spreaper @@ -0,0 +1,113 @@ +# spreaper(1) completion + +_list_clusters() +{ + clusters=$(spreaper -q list-clusters) + COMPREPLY=( $(compgen -W "${clusters}" -- ${cur}) ) +} + +_list_run_ids() +{ + clusters=$(spreaper -q list-runs | jq -r '.[0].id') + COMPREPLY=( $(compgen -W "${clusters}" -- ${cur}) ) +} + +_list_schedule_ids() +{ + clusters=$(spreaper -q list-schedules | jq -r '.[0].id') + COMPREPLY=( $(compgen -W "${clusters}" -- ${cur}) ) +} + +_spreaper() +{ + COMPREPLY=() + local cur prev + _get_comp_words_by_ref cur prev + + case "$prev" in + -h|-v|-vv|-q|--verbose|--quiet|--reaper-port|--reaper-use-ssl) + ;; + --reaper-host) + _known_hosts_real "$cur" + ;; + list-clusters) + return 0 + ;; + list-runs) + _list_clusters "$cur" + return 0 + ;; + list-schedules) + _list_clusters "$cur" + return 0 + ;; + list-segments) + _list_run_ids "$cur" + return 0 + ;; + status-cluster) + _list_clusters "$cur" + return 0 + ;; + status-keyspace) + _list_clusters "$cur" + return 0 + ;; + status-repair) + _list_run_ids "$cur" + return 0 + ;; + status-schedule) + _list_schedule_ids "$cur" + return 0 + ;; + add-cluster) + _known_hosts_real "$cur" + return 0 + ;; + repair) + COMPREPLY=( $(compgen -W "" -- ${cur}) ) + return 0 + ;; + schedule) + return 0 + ;; + resume-repair) + _list_run_ids "$cur" + return 0 + ;; + pause-repair) + _list_run_ids "$cur" + return 0 + ;; + update-repair) + _list_run_ids "$cur" + return 0 + ;; + abort-repair) + _list_run_ids "$cur" + return 0 + ;; + abort-segment) + return 0 + ;; + start-schedule) + _list_schedule_ids "$cur" + return 0 + ;; + pause-schedule) + _list_schedule_ids "$cur" + return 0 + ;; + delete-schedule) + _list_schedule_ids "$cur" + return 0 + ;; + ping) + return 0 + ;; + esac + + COMPREPLY=( $( compgen -W ' -h -v --verbose -vv -q --quiet --reaper-host --reaper-port --reaper-use-ssl list-clusters list-runs list-schedules list-segments status-cluster status-keyspace status-repair status-schedule add-cluster repair schedule resume-repair pause-repair update-repair abort-repair abort-segment start-schedule pause-schedule delete-schedule ping' -- "$cur" ) ) +} && +complete -F _spreaper spreaper