#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 "$@"