mirror of
https://github.com/Matir/skel.git
synced 2026-05-25 21:19:09 -07:00
Add virsh completions from jplitza/zsh-virsh-autocomplete
This commit is contained in:
161
zsh_custom/plugins/virsh/_virsh
Normal file
161
zsh_custom/plugins/virsh/_virsh
Normal file
@@ -0,0 +1,161 @@
|
|||||||
|
#compdef virsh
|
||||||
|
|
||||||
|
# Copyright (c) 2015, Jan-Philipp Litza <janphilipp@litza.de>
|
||||||
|
# All rights reserved.
|
||||||
|
#
|
||||||
|
# Redistribution and use in source and binary forms, with or without
|
||||||
|
# modification, are permitted provided that the following conditions are met:
|
||||||
|
# * Redistributions of source code must retain the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer.
|
||||||
|
# * Redistributions in binary form must reproduce the above copyright
|
||||||
|
# notice, this list of conditions and the following disclaimer in the
|
||||||
|
# documentation and/or other materials provided with the distribution.
|
||||||
|
# * Neither the name of the <organization> nor the
|
||||||
|
# names of its contributors may be used to endorse or promote products
|
||||||
|
# derived from this software without specific prior written permission.
|
||||||
|
#
|
||||||
|
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||||
|
# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||||
|
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||||
|
# DISCLAIMED. IN NO EVENT SHALL <COPYRIGHT HOLDER> BE LIABLE FOR ANY
|
||||||
|
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||||
|
# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||||
|
# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
||||||
|
# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||||
|
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||||
|
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
|
local -a args reply
|
||||||
|
|
||||||
|
function _virsh_domains() {
|
||||||
|
local -a out
|
||||||
|
local description="${(P)#}"
|
||||||
|
shift -p
|
||||||
|
local domaintype="${description/running/}"
|
||||||
|
out=( ${(f)"$(_call_program commands virsh list --name ${domaintype:+--$domaintype} 2>&1)"} )
|
||||||
|
if (( $#out == 0 )); then
|
||||||
|
_message "No $description domains"
|
||||||
|
else
|
||||||
|
_describe "$description domains" out "$@"
|
||||||
|
fi
|
||||||
|
return $?
|
||||||
|
}
|
||||||
|
|
||||||
|
_virsh() {
|
||||||
|
_arguments \
|
||||||
|
{-c,--connect}':hypervisor connection URI:_files' \
|
||||||
|
{-d,--debug}':debug level:( 0 1 2 3 4 )' \
|
||||||
|
{-e,--escape}':escape character for console:' \
|
||||||
|
{-h,--help}'[show help]' \
|
||||||
|
{-k,--keepalive-interval}':keepalive interval in seconds, 0 for disable:' \
|
||||||
|
{-K,--keepalive-count}':number of possible missed keepalive messages:' \
|
||||||
|
{-l,--log}'[output logging to file]:logfile:_files' \
|
||||||
|
{-q,--quiet}'[quiet mode]' \
|
||||||
|
{-r,--readonly}'[connect readonly]' \
|
||||||
|
{-t,--timing}'[print timing information]' \
|
||||||
|
'-v:show version' \
|
||||||
|
'-V:long version' \
|
||||||
|
'--version[show version]:type:( short long )' \
|
||||||
|
'::virsh command:_virsh_subcommand' \
|
||||||
|
'*::virsh command arguments:_virsh_subcommand_args'
|
||||||
|
}
|
||||||
|
|
||||||
|
_virsh_domain_or_file() {
|
||||||
|
_alternative \
|
||||||
|
"domains:domains:_virsh_domains ${1:-all}" \
|
||||||
|
"files:files:_files"
|
||||||
|
}
|
||||||
|
|
||||||
|
_virsh_fallback_command() {
|
||||||
|
domains() {
|
||||||
|
echo "$1 domains:_virsh_domains $1"
|
||||||
|
}
|
||||||
|
local files="file:_files"
|
||||||
|
local -A cmd_args
|
||||||
|
cmd_args=(
|
||||||
|
attach-device "$files"
|
||||||
|
autostart "$(domains all)"
|
||||||
|
cd "dirs:_dirs"
|
||||||
|
console "$(domains running)"
|
||||||
|
cpu-baseline "$files"
|
||||||
|
cpu-compare "$files"
|
||||||
|
create "$files"
|
||||||
|
start "$(domains inactive)"
|
||||||
|
destroy "$(domains running)"
|
||||||
|
detach-device "$(domains all)"
|
||||||
|
define "$files"
|
||||||
|
domid "$(domains all)"
|
||||||
|
domuuid "$(domains all)"
|
||||||
|
dominfo "$(domains all)"
|
||||||
|
domjobinfo "$(domains all)"
|
||||||
|
domjobabort "$(domains all)"
|
||||||
|
domname "$(domains all)"
|
||||||
|
domstate "$(domains all)"
|
||||||
|
dommemstat "$(domains all)"
|
||||||
|
dumpxml "$(domains all)"
|
||||||
|
edit "$(domains all)"
|
||||||
|
list "$(domains all)"
|
||||||
|
net-create "$files"
|
||||||
|
net-define "$files"
|
||||||
|
managedsave "$(domains running)"
|
||||||
|
managedsave-remove "$(domains all)"
|
||||||
|
nwfilter-define "$files"
|
||||||
|
pool-create "$files"
|
||||||
|
pool-define "$files"
|
||||||
|
secret-define "$files"
|
||||||
|
reboot "$(domains running)"
|
||||||
|
reset "$(domains running)"
|
||||||
|
restore "$files"
|
||||||
|
resume "$(domains running)"
|
||||||
|
send-key "$(domains running)"
|
||||||
|
setmem "$(domains all)"
|
||||||
|
setmaxmem "$(domains all)"
|
||||||
|
setvcpus "$(domains all)"
|
||||||
|
shutdown "$(domains running)"
|
||||||
|
suspend "$(domains running)"
|
||||||
|
ttyconsole "$(domains running)"
|
||||||
|
undefine "$(domains inactive)"
|
||||||
|
vcpuinfo "$(domains running)"
|
||||||
|
vncdisplay "$(domains running)"
|
||||||
|
snapshot-current "$(domains all)"
|
||||||
|
snapshot-list "$(domains all)"
|
||||||
|
)
|
||||||
|
|
||||||
|
local cmd="$1"
|
||||||
|
local -a options
|
||||||
|
options=(
|
||||||
|
${${(M)${(f)"$(_call_program commands virsh help $cmd 2>&1)"}:# -*}/#(#b) ([a-z-]##) ##([^[:space:]]*)/$match[1]:$match[2]}
|
||||||
|
)
|
||||||
|
if (( $+cmd_args[$cmd] )); then
|
||||||
|
options+=( ":$cmd_args[$cmd]" )
|
||||||
|
else
|
||||||
|
options+=( ":$(domains all)" ":$files" )
|
||||||
|
fi
|
||||||
|
_arguments "$options[@]"
|
||||||
|
}
|
||||||
|
|
||||||
|
_virsh_build_cmds() {
|
||||||
|
(( $+_virsh_cmds )) || _virsh_cmds=(
|
||||||
|
${${(M)${(f)"$(_call_program commands virsh help 2>&1)"}:# *}/#(#b) ([a-z-]##) ##([^[:space:]])/$match[1]:$match[2]}
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
_virsh_subcommand() {
|
||||||
|
_virsh_build_cmds
|
||||||
|
_describe 'virsh command' _virsh_cmds
|
||||||
|
}
|
||||||
|
|
||||||
|
_virsh_subcommand_args() {
|
||||||
|
_virsh_build_cmds
|
||||||
|
local curcontext="$curcontext"
|
||||||
|
|
||||||
|
cmd="${${_virsh_cmds[(r)$words[1]:*]%%:*}:-${(k)_virsh_syns[(r)(*:|)$words[1](:*|)]}}"
|
||||||
|
if (( $#cmd )); then
|
||||||
|
curcontext="${curcontext%:*:*}:virsh-${cmd}:"
|
||||||
|
_virsh_fallback_command "$cmd"
|
||||||
|
else
|
||||||
|
_message "unknown virsh command; $words[1]"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
_virsh "$@"
|
||||||
2
zshrc
2
zshrc
@@ -33,7 +33,7 @@ if [ -d $HOME/.oh-my-zsh ] ; then
|
|||||||
ZSH=$HOME/.oh-my-zsh
|
ZSH=$HOME/.oh-my-zsh
|
||||||
ZSH_THEME="matir"
|
ZSH_THEME="matir"
|
||||||
ZSH_CUSTOM="$HOME/.zsh_custom"
|
ZSH_CUSTOM="$HOME/.zsh_custom"
|
||||||
plugins=(git encode64 gpg-agent pep8 pip python tmux urltools extract sudo)
|
plugins=(git encode64 gpg-agent pep8 pip python tmux urltools extract sudo virsh virtualenv)
|
||||||
source $ZSH/oh-my-zsh.sh
|
source $ZSH/oh-my-zsh.sh
|
||||||
unset ZSH_THEME
|
unset ZSH_THEME
|
||||||
fi
|
fi
|
||||||
|
|||||||
Reference in New Issue
Block a user