Add distrobox role for Debian

This commit is contained in:
Kenneth Benzie 2022-05-21 23:34:02 +01:00
parent bcbaa9dfcf
commit 2eaf11b8a5
2 changed files with 115 additions and 0 deletions

View File

@ -0,0 +1,100 @@
#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 "$@"

View File

@ -0,0 +1,15 @@
---
- name: install apt package
when: ansible_distribution == "Debian" and
ansible_distribution_version == "unstable"
become: true
apt:
name: distrobox
state: latest
- name: install distrobox zsh completions
when: ansible_distribution == "Debian" and
ansible_distribution_version == "unstable"
copy:
src: _distrobox
dest: '{{ansible_env.HOME}}/.local/share/zsh/site-functions/_distrobox'