Newer
Older
# This file is part of Installsystems.
#
# Installsystems is free software: you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# Installsystems is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU Lesser General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with Installsystems. If not, see <http://www.gnu.org/licenses/>.
Sebastien Luttringer
committed
_local_repo() {
COMPREPLY=("${COMPREPLY[@]}" $(compgen -W "$(is --quiet --no-color --no-sync repo --local 2>/dev/null)" -- "$cur"))
Sebastien Luttringer
committed
}
# list all defined repositories
COMPREPLY=("${COMPREPLY[@]}" $(compgen -W "$(is --quiet --no-color --no-sync repo 2>/dev/null)" -- "$cur"))
}
# list all images available in any online repositories
COMPREPLY=("${COMPREPLY[@]}" $(compgen -W "$(is --quiet --no-color --no-sync list '*/*:*' 2>/dev/null)" -- "$cur"))
}
# list all local (files) images
_local_image() {
COMPREPLY=("${COMPREPLY[@]}" $(compgen -f -X '!*.isimage' -- "$cur"))
_local_image
_remote_image
}
# generate completion from optional arguments
_opt() {
COMPREPLY=("${COMPREPLY[@]}" $(compgen -W "$*" -- "${cur}"))
local cur prev cword
local -a cmds opts
COMPREPLY=()
COMP_WORDBREAKS="${COMP_WORDBREAKS//:}"
_get_comp_words_by_ref cur prev cword
_get_first_arg
cmds=('add' 'build' 'cat' 'changelog' 'check' 'chroot' 'clean' 'copy' 'del'
'extract' 'get' 'help' 'info' 'init' 'install' 'list' 'motd' 'move'
'new' 'repo' 'search' 'version' 'diff' 'payload' 'prepare_chroot'
opts=('-h' '--help'
'-V' '--version'
'-d' '--debug'
'-q' '--quiet'
'-R' '--repo-config'
'-f' '--repo-filter'
'-s' '--repo-search'
'-r' '--repo-config'
'-c' '--config'
'-C' '--cache'
'-t' '--timeout'
'--no-cache'
'--no-color'
'--no-sync')
case "$arg" in
'')
[[ "$cur" == -* ]] && _opt "${opts[@]}" || _opt "${cmds[@]}"
;;
add)
[[ "$cur" == -* ]] && _opt "-h --help -p --preserve" && return 0
_count_args
Sebastien Luttringer
committed
(( args == 2 )) && _local_repo
(( args > 2 )) && _filedir '?(u)isimage'
;;
build)
[[ "$cur" == -* ]] && _opt '-h --help -f --force -p --payload -c --no-check -s --no-script -C --chdir' && return 0
(( args >= 2 )) && _filedir -d
[[ "$cur" == -* ]] && _opt '-h --help' && return 0
_count_args
(( args == 2 )) && _image
;;
changelog)
[[ "$cur" == -* ]] && _opt '-h --help -v --all-version' && return 0
_image
;;
check)
[[ "$cur" == -* ]] && _opt '-h --help' && return 0
Sebastien Luttringer
committed
_local_repo
;;
chroot)
[[ "$cur" == -* ]] && _opt '-h --help -m --no-mount -s --shell' && return 0
_filedir -d
;;
clean)
[[ "$cur" == -* ]] && _opt '-h --help -f --force' && return 0
Sebastien Luttringer
committed
_local_repo
[[ "$cur" == -* ]] && _opt '-h --help -f --force' && return 0
_count_args
(( args == 2 )) && _remote_image
Sebastien Luttringer
committed
(( args > 2 )) && _remote_image && _local_repo
[[ "$cur" == -* ]] && _opt '-h --help -f --force -p --preserve' && return 0
_remote_image
;;
diff)
[[ "$cur" == -* ]] && _opt '-h --help' && return 0
_count_args
(( args < 4 )) && _image
;;
extract)
[[ "$cur" == -* ]] && _opt '-h --help -f --force -p --payload -g --gen-description' && return 0
_count_args
(( args == 2 )) && _image
(( args == 3 )) && _filedir -d
;;
get)
[[ "$cur" == -* ]] && _opt '-h --help -f --force --payload -I --no-image' && return 0
_remote_image
;;
help)
_count_args
(( args == 2 )) && _opt "${cmds[@]}"
;;
info)
[[ "$cur" == -* ]] && _opt '-a --all -j --json -c --changelog -f --files -p --payloads' && return 0
_image
;;
init)
[[ "$cur" == -* ]] && _opt '-h --help' && return 0
Sebastien Luttringer
committed
_local_repo
[[ "$cur" == -* ]] && _opt '--dry-run' && return 0
_count_args
(( args == 2 )) && _image
(( args > 2 )) && _filedir
;;
list)
[[ "$cur" == -* ]] && _opt '-h --help -l --long -j --json -m --md5 -s --size -d --date -A --author -u --url -D --description -f --format -i --is-min-version' && return 0
[[ "$cur" == -* ]] && _opt '-h --help -r --remove -f --files -s --set' && return 0
[[ "$cur" == -* ]] && _opt '-h --help -f --force' && return 0
Sebastien Luttringer
committed
_count_args
(( args == 2 )) && _remote_image
(( args > 2 )) && _remote_image && _local_repo
;;
new)
[[ "$cur" == -* ]] && _opt '-h --help -f --force' && return 0
_filedir -d
;;
payload)
[[ "$cur" == -* ]] && _opt '-h --help -j --json -i --images' && return 0
;;
prepare_chroot)
[[ "$cur" == -* ]] && _opt '-h --help -m --no-mount' && return 0
_filedir -d
;;
[[ "$cur" == -* ]] && _opt '-h --help -l --local -r --remote -o --online -O --offline -s --state --force-offline --purge -u --url -U --uuid -j --json -v --version' && return 0
_repo
;;
search)
[[ "$cur" == -* ]] && _opt '-h --help' && return 0
;;
unprepare_chroot)
[[ "$cur" == -* ]] && _opt '-h --help -m --no-mount' && return 0
_filedir -d
;;
[[ "$cur" == -* ]] && _opt '-h --help' && return 0
_count_args
(( args == 2 )) && _local_repo
;;
version)
[[ "$cur" == -* ]] && _opt '-h --help' && return 0
;;
esac
return 0
# ex: ts=3 sw=3 et filetype=sh