Switches to completion file from the iocage project (https://github.com/iocage/iocage/blob/master/zsh-completion/_iocage)

This commit is contained in:
Christian Busch 2018-01-21 01:53:38 +01:00
parent 0e015b8e46
commit d8bccfb8aa
5 changed files with 326 additions and 6 deletions

3
.gitmodules vendored
View File

@ -50,6 +50,3 @@
[submodule "init/Smyck-Color-Scheme"] [submodule "init/Smyck-Color-Scheme"]
path = init/Smyck-Color-Scheme path = init/Smyck-Color-Scheme
url = https://github.com/hukl/Smyck-Color-Scheme.git url = https://github.com/hukl/Smyck-Color-Scheme.git
[submodule "init/iocage_zsh-completion"]
path = init/iocage_zsh-completion
url = https://github.com/varpon/iocage_zsh-completion.git

324
.zsh/comp/_iocage Normal file
View File

@ -0,0 +1,324 @@
#compdef iocage
## Written by Clément 'wxcafe' Hertling <clement.hertling@wxcafe.net>
## on Oct-15-2017. Feel free to improve on this
_iocage_list_jails() {
local -a jails
jails=($(iocage list -H | cut -f 2))
_describe 'jail' jails
}
_iocage_list_releases() {
local -a releases
releases=($(iocage list -H -b))
_describe 'release' releases
}
_iocage_list_templates() {
local -a templates
templates=($(iocage list -H -t | cut -f 2))
_describe 'template' templates
}
_iocage_list_potential_releases(){
local -a releases
releases=($(iocage list -R | grep '^\[' | cut -d ' ' -f 2))
_describe 'release' releases
}
_iocage_list_jails_or_releases() {
local -a releases jails
releases=($(iocage list -H -b))
jails=($(iocage list -H | cut -f 2))
_describe 'jail_or_release' jails -- releases
}
_iocage_list_zpools() {
zpool list -H | cut -f 1 | while read zpool; do
_wanted 'zpools' expl 'zpools' compadd $zpool
done
}
_iocage_complete_pkg() {
((CURRENT=2))
_normal
}
_iocage() {
local context state cmds line
typeset -A opt_args
_arguments -C \
'(-v --version)'{-v,--version}'[display version information]' \
'--help[display iocage help text]' \
'1: :->cmds' \
'*:: :->args'
case $state in
cmds)
_values "iocage command" \
"activate[activate zpool]" \
"chroot[chroot into a jail]" \
"clean[destroy zfs datasets]" \
"clone[clone a jail]" \
"console[open a shell inside the jail]" \
"create[deploy a new jail]" \
"destroy[destroy the specified jail]" \
"df[show resource usage of all jails]" \
"exec[execute a command inside specified jail]" \
"export[exports the specified jail]" \
"fetch[downloads and/or updates releases]" \
"fstab[manipulates fstab of a specific jail]" \
"get[display the specified property]" \
"import[import a specific jail image]" \
"list[list the specified dataset type]" \
"migrate[migrate from iocage-legacy]" \
"pkg[run pkg commands in the specified jail]" \
"rename[rename the specified jail]" \
"restart[restart the specified jail]" \
"rollback[roll back jail to a snapshot]" \
"set[set specified properties in desired jail]" \
"snaplist[list snapshots of a jail]" \
"snapremove[delete snapshots of the specified jail]" \
"snapshot[create a zfs snapshot of the specified jail]" \
"start[start a jail]" \
"stop[stop a jail]" \
"update[updates jail to latest patch level]" \
"upgrade[updates jail from release to release]"
;;
args)
case $line[1] in
activate)
_arguments \
:zpool:_iocage_list_zpools
;;
chroot)
_arguments \
:jail:_iocage_list_jails
;;
clean)
_arguments \
'(-a --all)'{-a,--all}'[destroy all iocage data]' \
'(-b -r --base)'{-b,-r,--base}'[destroy all fetched RELEASE jails]' \
'(-f --force)'{-f,--force}'[run without further interaction]' \
'(-j --jail)'{-j,--jail}'[destroy all created jails]' \
'(-t --template)'{-t,--template}'[destroy all templates]'
;;
clone)
_arguments \
:jail:_iocage_list_jails \
'(-c --count)'{-c,--count}'[number of jails to create]':count
;;
create)
_arguments \
'(-n --name)'{-n,--name}'[provide a name for the new jail]':name \
'(-b --basejail)'{-b,--basejail}'[create a new basejail]' \
'(-c --count)'{-c,--count}'[number of jails to create]':count \
'(-e --empty)'{-e,--empty}'[create an empty jail]' \
'(-f --force)'{-f,--force}'[skip prompts]' \
'(-p --pkglist)'{-p,--pkglist}'[JSON list of packages to install]':pkglist:_files \
'(-r --release)'{-r,--release}'[RELEASE to use for the new jail]:release:_iocage_list_releases' \
'(-s --short)'{-s,--short}'[use a short UUID (8 chars)]' \
'(-t --template)'{-t,--template}'[create jail from specified template]:template:_iocage_list_templates' \
'(-u --uuid)'{-u,--uuid}'[specify a UUID]':uuid
;;
destroy)
_arguments \
:jail_or_release:_iocage_list_jails_or_releases \
'(-R --recursive)'{-r,--recursive}'[skip the destroy children prompt]' \
'(-d --download)'{-d,--download}'[also destroy specified RELEASE download]' \
'(-f --force)'{-f,--force}'[skip prompts]' \
'(-r --release)'{-r,--release}'[destroy a specified RELEASE dataset]'
;;
df)
_arguments \
'(-H -h --header)'{-H,-h,--header}'[simple output for scripting]' \
'(-l --long)'{-l,--long}'[show the full UUID]' \
'(-s --sort)'{-s,--sort}'[sort the list by the named type]:sort:((
UUID\:"Jail UUID"
CRT\:"Compression ratio"
RES\:"Reserved space"
QTA\:"Disk quota"
USE\:"Used space"
AVA\:"Available space"
NAME\:"Jail name"))'
;;
exec)
_arguments \
:jail:_iocage_list_jails \
'(-U --jail_user)'{-U,--jail_user}'[user in jail to run command as]':name \
'(-u --host_user)'{-u,--host_user}'[user on host to run command as]':name:_users
;;
export)
_arguments \
:jail:_iocage_list_jails
;;
fetch)
_arguments \
"--accept[accept the plugin's LICENCE agreement]" \
"--noaccept[don't accept the plugin's LICENCE agreement]" \
'--plugins[list all available plugins for creation]':properties \
'(-E --eol)'{-e,--eol}'[enable End Of Lofe checking]' \
'(-F --files)'{-f,--files}'[specify the files to fetch from the mirror]':files \
'(-NE --noeol)'{-NE,--noeol}'[disable EOL checking]' \
'(-NU --noupdate)'{-NU,--noupdate}'[disable updating to the latest patch level]' \
'(-NV --noverify)'{-NV,--noverify}'[disable SSL certificate verification]' \
'(-P --plugin-file)'{-P,--plugin-file}'[specify which plugin file to use]':file \
'(-U --update)'{-U,--update}'[update to the latest patch level]' \
'(-V --verify)'{-V,--verify}'[enable SSL certificate verification]' \
'(-a --auth)'{-a,--auth}'[specifies HTTP authentication method]:auth:(basic digest)' \
'(-c --count)'{-c,--count}'[number of jails to create]':count \
'(-d --root-dir)'{-d,--root-dir}'[specify the directory containing RELEASE files]:root_dir:_files -/' \
'(-f --file)'{-f,--file}'[use local file directory for the root directory]' \
'(-h --http)'{-h,--http}'[change -s | --server to use HTTP instead of FTP]' \
'(-p --password)'{-p,--password}'[add a password if required]':password \
'(-r --release)'{-r,--release}'[define the FreeBSD release to fetch]':release:_iocage_list_potential_releases \
'(-s --server)'{-s,--server}'[define which server to use]':server \
'(-u --user)'{-u,--user}'[define the user]':user:_users
;;
fstab)
_arguments \
:jail:_iocage_list_jails \
'(-H -h --header)'{-H,-h,--header}'[simple output for scripting]' \
'(-a --add)'{-a,--add}'[adds an entry to the jails fstab and mounts it]' \
'(-r --remove)'{-r,--remove}'[removes an entry from the jails fstab and unmounts it]' \
'(-l --list)'{-l,--list}'[lists the jails fstab]' \
'(-e --edit)'{-e,--edit}'[open the fstab file in EDITOR]'
;;
get)
_arguments \
- pool \
'(-p --pool)'{-p,--pool}'[get the currently activated zpool]' \
- jails \
1:property:'((
ip4_addr\:"IPv4 address"
ip6_addr\:"IPv6 address"
basejail
release\:"FreeBSD RELEASE jail is running"
comment\:"short comment"
notes\:"longer notes"
defaultrouter\:"IPv4 gateway"
defaultrouter6\:"IPv6 gateway"
dhcp
exec_jail_user\:"user to run commands with"
hostid\:"jail UUID"
owner\:"owner of the jail"
quota\:"disk quota"
all\:"get all properties"))' \
2:jail:_iocage_list_jails \
'(-P --plugin)'{-P,--plugin}'[get the specified key for a plugin jail]' \
'(-r --recursive)'{-r,--recursive}'[get the specified property for all jails]' \
'(-H -h --header)'{-H,-h,--header}'[simple output for scripting]' \
;;
import)
_arguments \
:uuid:
;;
list)
_arguments \
'--http[changes -R | --remote to use HTTP]' \
'(-H -h --header)'{-H,-h,--header}'[simple output for scripting]' \
'(-P --plugins)'{-P,--plugins}'[show available plugins]' \
'(-R --remote)'{-R,--remote}'[show available RELEASE options for remote]' \
'(-b -r --base --release)'{-b,-r,--base,--release}'[list all bases]' \
'(-l --long)'{-l,--long}'[show full UUID and ip4 address]' \
'(-q --quick)'{-q,--quick}'[list all jails with less fields]' \
'(-s --sort)'{-s,--sort}'[sorts the list by the given type]':sort:'((
JID\:"Jail Identifier"
UUID\:"Jail UUID"
STATE\:"Active state of the jail"
NAME\:"User assigned NAME"
RELEASE\:"FreeBSD RELEASE installed on the jail"
IP4\:"IPv4 address"
))' \
'(-t --template)'{-t,--template}'[lists all templates]'
;;
migrate)
_arguments \
'(-d --delete)'{-d,--delete}'[destroy the old dataset after migration]' \
'(-f --force)'{-f,--force}'[bypass warnings or user interaction]'
;;
pkg)
_arguments \
1:jail:_iocage_list_jails \
:subcommands:_iocage_complete_pkg
;;
rename)
_arguments \
1:jail:_iocage_list_jails \
2:name:
;;
restart)
_arguments \
'(-s --soft)'{-s,--soft}'[restart jail, but keep network stack running]' \
:jail:_iocage_list_jails
;;
rollback)
_arguments \
'(-f --force)'{-f,--force}'[bypass warnings or user interaction]' \
'(-n --name)'{-n,--name}'[snapshot name]':name::jail:_iocage_list_jails
;;
set)
_arguments \
1:property:'((
ip4_addr=\:"IPv4 address"
ip6_addr=\:"IPv6 address"
basejail=
release=\:"FreeBSD RELEASE jail is running"
comment=\:"short comment"
notes=\:"longer notes"
defaultrouter=\:"IPv4 gateway"
defaultrouter6=\:"IPv6 gateway"
dhcp=
exec_jail_user=\:"user to run commands with"
owner=\:"owner of the jail"
quota=\:"disk quota"))' \
2:jail:_iocage_list_jails \
'(-P --plugin)'{-p,--plugin}'[set the specified key for a plugin jail]':plugin:
;;
snaplist)
_arguments \
'(-H -h --header)'{-H,-h,--header}'[simple output for scripting]' \
'(-l --long)'{-l,--long}'[show full dataset path]' \
'(-s --sort)'{-s,--sort}'[sorts the list by the given type]':sort:'((
NAME\:"snapshot name"
CREATED\:"creation time"
RSIZE\:"referenced size"
USED\:"used space"
))' \
:jail:_iocage_list_jails
;;
snapremove)
_arguments \
'(-n --name)'{-n,--name}'[snapshot name]':name::jail:_iocage_list_jails
;;
snapshot)
_arguments \
'(-n --name)'{-n,--name}'[snapshot name]' \
:jail:_iocage_list_jails
;;
start)
_arguments \
'--rc[start all jails with boot=on in priority order (lower->higher)]' \
::jail:_iocage_list_jails
;;
stop)
_arguments \
'--rc[stop all jails with boot=on in priority order (higher->lower)]' \
::jail:_iocage_list_jails
;;
update)
_arguments \
:jail:_iocage_list_jails
;;
upgrade)
_arguments \
'(-r --release)'{-r,--release}'[RELEASE to upgrade the jail to]':release:_iocage_list_releases:jail:_iocage_list_jails
;;
esac
;;
esac
}
_iocage "$@"
# vim: ft=zsh sw=2 ts=2 et

View File

@ -9,7 +9,7 @@ setopt always_to_end
WORDCHARS='' WORDCHARS=''
zmodload -i zsh/complist zmodload -i zsh/complist
source ~/.zsh/comp/_* fpath=(~/.zsh/comp/ $fpath)
## case-insensitive (all),partial-word and then substring completion ## case-insensitive (all),partial-word and then substring completion
if [ "x$CASE_SENSITIVE" = "xtrue" ]; then if [ "x$CASE_SENSITIVE" = "xtrue" ]; then

@ -1 +1 @@
Subproject commit fc16622be1bf2366bd0fa5113b49ee2b8261335f Subproject commit c9cedcba463263ac5cd0433374f5d72799d96142

@ -1 +0,0 @@
Subproject commit bedd0c9e8c9673b8399edb3fd1340d0940de77d6