# OpenIndiana zones(5) completion                           -*- shell-script -*-
# ------------------------------------------------------------------------------
# Copyright (c) 2013, Jonathan Perkin <jperkin@joyent.com>
# Copyright (c) 2018, Michal Nowak <mnowak@startmail.com>

_zlogin()
{
    local cur prev line
    cur="${COMP_WORDS[COMP_CWORD]}"
    prev="${COMP_WORDS[COMP_CWORD-1]}"
    line="${COMP_LINE}"

    # zlogin [-dCEQ] [-e c] [-l username] zonename
    # zlogin [-nEQS] [-e c] [-l username] zonename utility [argument]...
    local opts="-E -Q -e -l"
    local opts_interactive="-d -C"
    local opts_util="-n -S"

    if [[ "${cur}" == -* ]]
    then
      case "${line}" in
        *\ -n\ *|*\ -S\ *)
          COMPREPLY=( $(compgen -W "${opts} ${opts_util}" -- "${cur}") )
          ;;
        *\ -d\ *|*\ -C\ *)
          COMPREPLY=( $(compgen -W "${opts} ${opts_interactive}" -- "${cur}") )
          ;;
        *)
          COMPREPLY=( $(compgen -W "${opts} ${opts_util} ${opts_interactive}" -- "${cur}") )
          ;;
        esac
    else
      # Provide running zone names
      local zones=$(zoneadm list | grep -v '^global$')
      COMPREPLY=( $(compgen -W "${zones}" -- ${cur}) )
    fi
}

# Many illumos utilities are zone-aware through the -z option
_dash_z_zone()
{
    local cur prev
    cur="${COMP_WORDS[COMP_CWORD]}"
    prev="${COMP_WORDS[COMP_CWORD-1]}"

    if [[ ${prev} =~ "-z" ]]; then
      # Provide running zone names
      local zones="$(zoneadm list -c | grep -v '^global$')"
      COMPREPLY=( $(compgen -W "${zones}" -- ${cur}) )
    fi
}

complete -F _zlogin zlogin
complete -F _dash_z_zone allocate
complete -F _dash_z_zone auditreduce
complete -F _dash_z_zone deallocate
complete -F _dash_z_zone ipfs
complete -F _dash_z_zone ipfstat
complete -F _dash_z_zone ipmon
complete -F _dash_z_zone ipnat
complete -F _dash_z_zone ippool
complete -F _dash_z_zone pgrep
complete -F _dash_z_zone pkill
complete -F _dash_z_zone ps
complete -F _dash_z_zone psrset
complete -F _dash_z_zone ptree
complete -F _dash_z_zone svcprop
complete -F _dash_z_zone wall
complete -F _dash_z_zone zoneadm
complete -F _dash_z_zone zonecfg

# ex: filetype=sh
# vim: tabstop=2 shiftwidth=2 expandtab smartindent
