mirror of https://github.com/akelge/zsh
118 lines
6.1 KiB
Bash
118 lines
6.1 KiB
Bash
#compdef salt
|
|
# ------------------------------------------------------------------------------
|
|
# 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 zsh-users 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 ZSH-USERS 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.
|
|
# ------------------------------------------------------------------------------
|
|
# Description
|
|
# -----------
|
|
#
|
|
# Completion script for salt (http://saltstack.com/).
|
|
#
|
|
# ------------------------------------------------------------------------------
|
|
# Authors
|
|
# -------
|
|
#
|
|
# * Massimiliano Torromeo <massimiliano.torromeo@gmail.com>
|
|
#
|
|
# ------------------------------------------------------------------------------
|
|
|
|
_minions() {
|
|
ls /etc/salt/pki/master/minions | while read minion; do
|
|
_wanted 'target' expl 'target' compadd $minion
|
|
done
|
|
}
|
|
|
|
_modules() {
|
|
for module in $(salt-call sys.list_modules 2&>/dev/null --output=key | tail -n+2); do
|
|
_wanted 'module' expl 'module' compadd $module
|
|
done
|
|
}
|
|
|
|
_functions() {
|
|
for fn in $(salt-call sys.list_functions 2&>/dev/null --output=key | tail -n+2); do
|
|
_wanted 'function' expl 'function' compadd $fn
|
|
done
|
|
}
|
|
|
|
_salt() {
|
|
local _loglevels
|
|
_loglevels=(all garbage trace debug info warning error quiet)
|
|
|
|
_arguments -s \
|
|
"--version[show program's version number and exit]" \
|
|
"--versions-report[show program's dependencies version number and exit]" \
|
|
"(-h --help)"{-h,--help}"[show help message and exit]" \
|
|
"(-c --config-dir)"{-c+,--config-dir=}"[Pass in an alternative configuration directory.]:configuration directory:_files -/" \
|
|
"(-t --timeout)"{-t+,--timeout=}"[Change the timeout, if applicable, for the running command]:timeout" \
|
|
"(-s --static)"{-s,--static}"[Return the data from minions as a group after they all return]" \
|
|
"--async[Run the salt command but don't wait for a reply]" \
|
|
"(--state-output --state_output)"{--state-output=,--state_output=}"[Override the configured state_output value for minion output]:state output" \
|
|
"--subset=[Execute the routine on a random subset of the targeted minions]:subset" \
|
|
"(-v --verbose)"{-v,--verbose}"[Turn on command verbosity, display jid and active job queries]" \
|
|
"--show-timeout[Display minions that timeout]" \
|
|
"(-b --batch --batch-size)"{-b+,--batch=,--batch-size=}"[Execute the salt job in batch mode]:batch" \
|
|
"(-a --auth --eauth --extended-auth)"{-a+,--auth=,--eauth=,--extended--auth=}"[Specify an extended authentication system to use]:eauth" \
|
|
"(-T --make-token)"{-T,--make-token}"[Generate and save an authentication token for re-use]" \
|
|
"--return=[Set an alternative return method]:returner" \
|
|
"(-d --doc --documentation)"{-d,--doc,--documentation}"[Return the documentation for the specified module or for all modules]::function:_functions" \
|
|
"--args-separator=[Set the special argument used as a delimiter between command arguments of compound commands]:args separator" \
|
|
\
|
|
"(-l --log-level)"{-l+,--log-level=}"[Console logging log level]:level:($_loglevels[@])" \
|
|
"--log-file=[Log file path]:log file:_files" \
|
|
"--log-file-level=[Logfile logging log level]:level:($_loglevels[@])" \
|
|
\
|
|
"(-E --pcre)"{-E,--pcre}"[Target servers using pcre regular expressions]" \
|
|
"(-L --list)"{-L,--list}"[Target servers using a comma or space delimited list of servers]" \
|
|
"(-G --grain)"{-G,--grain}"[Target servers using a grain value]" \
|
|
"--grain-pcre[Target servers using a grain value matched by a pcre regular expression]" \
|
|
"(-N --nodegroup)"{-N,--nodegroup}"[Target servers using a predefined nodegroup]" \
|
|
"(-R --range)"{-R,--range}"[Target servers using range expression]" \
|
|
"(-C --compound)"{-C,--compound}"[Target servers using compound selectors]" \
|
|
"(-X --exsel)"{-X,--exsel}"[Target servers using the return code of a function]" \
|
|
"(-I --pillar)"{-I,--pillar}"[Target servers using a pillar value]" \
|
|
"(-S --ipcidr)"{-S,--ipcidr}"[Match servers based on subnet (CIDR or IPv4 address)]" \
|
|
\
|
|
"(--out --output)"{--out=,--output=}"[Print the output using the specified outputter]:outputter:(no_return grains yaml overstatestage json pprint nested raw highstate quiet key txt virt_query)" \
|
|
"(--out-indent --output-indent)"{--out-indent=,--output-indent=}"[Print the output indented by the provided value in spaces]:nr spaces" \
|
|
"(--out-file --output-file)"{--out-file=,--output-file=}"[Write the output to the specified file]:output:_files" \
|
|
"(--no-color --no-colour)"{--no-color,--no-colour}"[Disable all colored output]" \
|
|
"(--force-color --force-colour)"{--force-color,--force-colour}"[Force colored output]" \
|
|
\
|
|
'1:target:_minions' \
|
|
'2:function:_functions' \
|
|
'*::arguments'
|
|
}
|
|
|
|
case "$service" in
|
|
salt)
|
|
_salt "@"
|
|
;;
|
|
esac
|
|
|
|
# Local Variables:
|
|
# mode: Shell-Script
|
|
# sh-indentation: 2
|
|
# indent-tabs-mode: nil
|
|
# sh-basic-offset: 2
|
|
# End:
|
|
# vim: ft=zsh sw=2 ts=2 et
|