Switches to completion file from the iocage project (https://github.com/iocage/iocage/blob/master/zsh-completion/_iocage)
This commit is contained in:
parent
0e015b8e46
commit
d8bccfb8aa
3
.gitmodules
vendored
3
.gitmodules
vendored
@ -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
324
.zsh/comp/_iocage
Normal 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
|
@ -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
|
|
Loading…
Reference in New Issue
Block a user