Skip to content
is 5.04 KiB
Newer Older
Sebastien Luttringer's avatar
Sebastien Luttringer committed
# bash completion for installsytems

# list local repositories
   COMPREPLY=("${COMPREPLY[@]}" $(compgen -W "$(is --quiet --no-color --no-sync repo --local)"  -- "$cur"))
Sebastien Luttringer's avatar
Sebastien Luttringer committed
_repo() {
   COMPREPLY=("${COMPREPLY[@]}" $(compgen -W "$(is --quiet --no-color --no-sync repo)"  -- "$cur"))
Sebastien Luttringer's avatar
Sebastien Luttringer committed
}

# list all images available in any online repositories
_remote_image() {
   COMPREPLY=("${COMPREPLY[@]}" $(compgen -W "$(is --quiet --no-color --no-sync list '*/*:*')" -- "$cur"))
}

# list all local (files) images
_local_image() {
   COMPREPLY=("${COMPREPLY[@]}" $(compgen -f -X '!*.isimage' -- "$cur"))
}

# list local and remote images
Sebastien Luttringer's avatar
Sebastien Luttringer committed
_image() {
   _local_image
   _remote_image
Sebastien Luttringer's avatar
Sebastien Luttringer committed
}

# 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' 'move' 'new' 'repo'
       'search' 'version' 'diff' 'prepare_chroot' 'unprepare_chroot')
   opts=('-h'  '--help'
   '-V'  '--version'
   '-v'  '--verbosity'
   '-d'  '--debug'
   '-q'  '--quiet'
   '-R'  '--repo-config'
   '-f'  '--repo-filter'
   '-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
         (( args > 2 )) && _filedir '?(u)isimage'
      ;;
      build)
         [[ "$cur" == -* ]] && _opt '-h --help -f --force -p --payload -c --no-check' && return 0
         _count_args
         (( args == 2 )) && _filedir -d
      ;;
      cat)
         [[ "$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
      ;;
      chroot)
         [[ "$cur" == -* ]] && _opt '-h --help -m --no-mount -s --shell' && return 0
         _filedir -d
      ;;
      clean)
         [[ "$cur" == -* ]] && _opt '-h --help -f --force' && return 0
         [[ "$cur" == -* ]] && _opt '-h --help' && return 0
         _count_args
         (( args == 2 )) && _remote_image
         (( args > 2 )) && _remote_image && _local_repo
         [[ "$cur" == -* ]] && _opt '-h --help -f --force -p --preserve' && return 0
         [[ "$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 '-v --verbose -c --changelog' && return 0
         _image
      ;;
      init)
         [[ "$cur" == -* ]] && _opt '-h --help' && return 0
         #[[ "$cur" == -* ]] && _opt '-b --best' && 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' && return 0
         [[ "$cur" == -* ]] && _opt '-h --help -f --force' && return 0
         _count_args
         (( args == 2 )) && _remote_image
         (( args > 2 )) && _remote_image && _local_repo
      ;;
      new)
         [[ "$cur" == -* ]] && _opt '-h --help -f --force' && return 0
         _filedir -d
      ;;
      prepare_chroot)
         [[ "$cur" == -* ]] && _opt '-h --help -m --no-mount' && return 0
         _filedir -d
      ;;
      repo)
         [[ "$cur" == -* ]] && _opt '-h --help -l --local -r --remote -o --online -O --offline -s --state --force-offline --purge -u --url' && return 0
         _repo
      ;;
      search)
         [[ "$cur" == -* ]] && _opt '-h --help' && return 0
      ;;
      unprepare_chroot)
         [[ "$cur" == -* ]] && _opt '-h --help -m --no-mount' && return 0
         _filedir -d
      ;;
      version)
         [[ "$cur" == -* ]] && _opt '-h --help' && return 0
      ;;
   esac
   return 0
Sebastien Luttringer's avatar
Sebastien Luttringer committed
}

complete -F _is is

# ex: ts=3 sw=3 et filetype=sh