# bash-completion # # container-tools - Manage systemd-nspawn containers # Copyright (C) 2016 Andreas Kreuzer # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . _container() { local cur prev cmd opts COMPREPLY=() cur="${COMP_WORDS[COMP_CWORD]}" prev="${COMP_WORDS[COMP_CWORD-1]}" if [ ${COMP_CWORD} -gt 0 ] then cmd="${COMP_WORDS[1]}" fi if [ "${prev}" = "--" ] then compopt -o bashdefault COMPREPLY=( $(compgen -c -- $cur) ) return 0 fi case "${cmd}" in console) case "${cur}" in -*) opts="-n --name" COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) return 0 ;; *) case "${prev}" in -n|--name) opts=$(container list -s -f short) COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) return 0 ;; esac ;; esac ;; create) case "${cur}" in -*) opts="-n --name -c --capability -d --drop-capability -s --script -b --bind" COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) return 0 ;; *) case "${prev}" in -n|--name) opts=$(cd /srv/container/container-tools/debconf 2>/dev/null && ls *.cfg 2>/dev/null | sed -e 's/.cfg$//g') COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) return 0 ;; -s|--script) opts=$(cd /usr/share/container-tools/scripts && find -maxdepth 1 -not -type d -and -not -name 'default' -and -not -name 'debconf' -and -not -name '*.d' -printf '%P\n' | sort) COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) return 0 ;; esac ;; esac ;; limit) case "${cur}" in -*) opts="-n --name --blockio-device-weight --blockio-read-bandwith -b --blockio-weight --blockio-write-bandwith -c --cpu-quota --cpu-shares -m --memory-limit -t --tasks-max" COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) return 0 ;; *) case "${prev}" in -n|--name) opts=$(container list -a -f short) COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) return 0 ;; esac ;; esac ;; list) case "${cur}" in -*) opts="-a --all -f --format -h --host -o --other -s --started -t --stopped" COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) return 0 ;; *) case "${prev}" in -h|--host) opts="true false $(hostname -f)" COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) return 0 ;; -f|--format) opts="short full" COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) return 0 ;; esac ;; esac ;; remove) case "${cur}" in -*) opts="-n --name -f --force" COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) return 0 ;; *) case "${prev}" in -n|--name) opts=$(container list -t -f short) COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) return 0 ;; esac ;; esac ;; restart) case "${cur}" in -*) opts="-n --name" COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) return 0 ;; *) case "${prev}" in -n|--name) opts=$(container list -s -f short) COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) return 0 ;; esac ;; esac ;; start) case "${cur}" in -*) opts="-n --name" COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) return 0 ;; *) case "${prev}" in -n|--name) opts=$(container list -t -f short) COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) return 0 ;; esac ;; esac ;; status) case "${cur}" in -*) opts="-n --name" COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) return 0 ;; *) case "${prev}" in -n|--name) opts=$(container list -t -f short) COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) return 0 ;; esac ;; esac ;; stop) case "${cur}" in -*) opts="-n --name -f --force" COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) return 0 ;; *) case "${prev}" in -n|--name) opts=$(container list -s -f short) COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) ) return 0 ;; esac ;; esac ;; *) local commands=$(cd /usr/lib/container-tools/container 2>/dev/null && ls) COMPREPLY=( $(compgen -W "${commands}" -- ${cur}) ) return 0 ;; esac compopt -o filenames COMPREPLY=( $(compgen -f -- $cur) ) return 0 } complete -F _container container cnt