Add distrobox role for Debian
This commit is contained in:
parent
bcbaa9dfcf
commit
2eaf11b8a5
100
roles/distrobox/files/_distrobox
Normal file
100
roles/distrobox/files/_distrobox
Normal 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 "$@"
|
15
roles/distrobox/tasks/main.yaml
Normal file
15
roles/distrobox/tasks/main.yaml
Normal 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'
|
Loading…
x
Reference in New Issue
Block a user