101 lines
4.3 KiB
Plaintext
101 lines
4.3 KiB
Plaintext
#compdef distrobox
|
|
|
|
_distrobox() {
|
|
local context curcontext="$curcontext" state line ret=1
|
|
typeset -A opt_args
|
|
|
|
_arguments -C \
|
|
'(-h --help)'{-h,--help}'[show help]' \
|
|
'(-V --version)'{-V,--version}'[show version]' \
|
|
'1: :->command' \
|
|
'*:: :->arguments'
|
|
|
|
case $state in;
|
|
(command)
|
|
local commands;
|
|
commands=(
|
|
'create:create the distrobox'
|
|
'enter:enter the distrobox'
|
|
'export:application and service exporting'
|
|
'list:list containers'
|
|
'rm:remove containers'
|
|
'stop:stop containers'
|
|
)
|
|
_describe -t commands 'distrobox command' commands "$@" \
|
|
&& ret=0 ;;
|
|
|
|
(arguments)
|
|
case $line[1] in
|
|
(create)
|
|
_arguments \
|
|
'(-h --help)'{-h,--help}'[show this message]' \
|
|
'(-v --verbose)'{-v,--verbose}'[show more verbosity]' \
|
|
'(-V --version)'{-V,--version}'[show version]' \
|
|
'(-i --image)'{-i,--image}'[image to use for the container]: :' \
|
|
'(-n --name)'{-n,--name}'[name for the distrobox]: :' \
|
|
'(-H --home)'{-H,--home}'[select a custom HOME directory for the container]: :' \
|
|
'*--volume[additional volumes to add to the container]: :_directories' \
|
|
'(-a --additional-flags)'{-a,--additional-flags}'[additional flags to pass to the container manager command]: :' \
|
|
'(-I --init)'{-I,--init}'[use init system (like systemd) inside the container]: :' \
|
|
'(-d --dry-run)'{-d,--dry-run}'[only print the container manager command generated]' \
|
|
&& ret=0 ;;
|
|
|
|
(enter)
|
|
_arguments -S \
|
|
'(-h --help)'{-h,--help}'[show this message]' \
|
|
'(-v --verbose)'{-v,--verbose}'[show more verbosity]' \
|
|
'(-V --version)'{-V,--version}'[show version]' \
|
|
'(-n --name)'{-n,--name}'[name for the distrobox]: :' \
|
|
'(-T --no-tty)'{-T,--no-tty}'[do not instantiate a tty]' \
|
|
'(-a --additional-flags)'{-a,--additional-flags}'[additional flags to pass to the container manager command]: :' \
|
|
'(-d --dry-run)'{-d,--dry-run}'[only print the container manager command generated]' \
|
|
'(-e --)'{-e,--}'[end arguments execute the rest as command to execute at login]:*:' \
|
|
&& ret=0 ;;
|
|
|
|
(export)
|
|
_arguments -S \
|
|
'(-h --help)'{-h,--help}'[show this message]' \
|
|
'(-v --verbose)'{-v,--verbose}'[show more verbosity]' \
|
|
'(-V --version)'{-V,--version}'[show version]' \
|
|
'(-a --app)'{-a,--app}'[name of the application to export]: :' \
|
|
'(-b --bin)'{-b,--bin}'[absolute path of the binary to export]: :' \
|
|
'(-s --service)'{-s,--service}'[name of the service to export]: :' \
|
|
'(-d --delete)'{-d,--delete}'[delete exported application or service]: :' \
|
|
'(-el --export-label)'{-el,--export-label}'[label to add to exported application name]: :' \
|
|
'(-ep --export-path)'{-ep,--export-path}'[path where to export the binary]: :' \
|
|
'(-ef --extra-flags)'{-ef,--export-flags}'[extra flags to add to the command]: :' \
|
|
'(-S --sudo)'{-S,--sudo}'[specify if the exported item should be run as sudo]' \
|
|
&& ret=0 ;;
|
|
|
|
(list)
|
|
_arguments -S \
|
|
'(-h --help)'{-h,--help}'[show this message]' \
|
|
'(-v --verbose)'{-v,--verbose}'[show more verbosity]' \
|
|
'(-V --version)'{-V,--version}'[show version]' \
|
|
&& ret=0 ;;
|
|
|
|
(rm)
|
|
_arguments -S \
|
|
'(-h --help)'{-h,--help}'[show this message]' \
|
|
'(-v --verbose)'{-v,--verbose}'[show more verbosity]' \
|
|
'(-V --version)'{-V,--version}'[show version]' \
|
|
'(-n --name)'{-n,--name}'[name for the distrobox]: :' \
|
|
'(-f --force)'{-f,--force}'[force deletion]' \
|
|
&& ret=0 ;;
|
|
|
|
(stop)
|
|
_arguments -S \
|
|
'(-h --help)'{-h,--help}'[show this message]' \
|
|
'(-v --verbose)'{-v,--verbose}'[show more verbosity]' \
|
|
'(-V --version)'{-V,--version}'[show version]' \
|
|
'(-n --name)'{-n,--name}'[name for the distrobox]: :' \
|
|
'(-Y --yes)'{-Y,--yes}'[non-interactive, stop without asking]' \
|
|
&& ret=0 ;;
|
|
esac ;;
|
|
esac
|
|
|
|
return $ret
|
|
}
|
|
|
|
_distrobox "$@"
|