zsh-workers
 help / color / mirror / code / Atom feed
1b82bfa46b2bb84294451518e891f082e2d9e1e6 blob 7254 bytes (raw)

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
 
#compdef openstack aodh barbican ceilometer cinder cloudkitty designate glance gnocchi heat ironic keystone magnum manila mistral monasca murano neutron nova sahara senlin swift trove

# https://wiki.openstack.org/wiki/OpenStackClients
# http://docs.openstack.org/user-guide/common/cli-install-openstack-command-line-clients.html

local curcontext="$curcontext" state line expl ret=1

local -a clnts_compl_new clnts_compl_old clnts_swift_like

clnts_compl_new=( aodh barbican designate gnocchi openstack )
clnts_compl_old=( ceilometer cinder cloudkitty glance heat ironic keystone magnum manila mistral monasca murano neutron nova sahara senlin trove )
clnts_swift_like=( swift )

if (( ! $+_cache_openstack_clnt_opts )); then
  typeset -gA _cache_openstack_clnt_outputs
  typeset -gA _cache_openstack_clnt_opts
  typeset -gA _cache_openstack_clnt_cmds
  typeset -gA _cache_openstack_clnt_cmds_opts
  typeset -gA _cache_openstack_clnt_cmds_subcmds
  typeset -gA _cache_openstack_clnt_cmds_subcmd_opts
fi

local -a conn_opts
local opt arg word
if [[ $service == openstack && -n ${words[(r)--os-*]} ]]; then
  if (( ! $+_cache_openstack_conn_opts )); then
    _cache_openstack_conn_opts=( ${(M)${=${(f)"$($service help 2>/dev/null)"}}:#--os-*} )
  fi
  for opt in ${=_cache_openstack_conn_opts} --os-tenant-id --os-tenant-name; do
    arg=
    for word in ${words:1}; do
      [[ $word == $opt ]] && arg=$word && break
    done
    [[ -n $arg && -n ${arg##-*} ]] && conn_opts=( $conn_opts $opt $arg )
  done
fi

if [[ -n ${clnts_compl_new[(r)$service]} ]]; then
  if [[ -z $_cache_openstack_clnt_cmds[$service] ]]; then
    _cache_openstack_clnt_outputs[$service]=${:-"$($service ${(Q)conn_opts} complete 2>/dev/null)"}
    _cache_openstack_clnt_opts[$service]=${${${${(M)${${${${=${(f)"$($service help 2>/dev/null)"}}/\[}/\]}/\;}:#-[-0-9A-Za-z]*}/,}/\.}%--os-}
    _cache_openstack_clnt_cmds[$service]=${${${${_cache_openstack_clnt_outputs[$service]}/* cmds=\'}/\'*}/complete}
  fi
  local cmd subcmd
  for word in ${words:1}; do
    [[ $_cache_openstack_clnt_cmds[$service] != ${${${_cache_openstack_clnt_cmds[$service]#$word }% $word}/ $word } ]] && cmd=$word && break
  done
  if [[ -n $cmd && -z $_cache_openstack_clnt_cmds_subcmds[$service$cmd] ]]; then
      local t=cmds_${cmd//-/_}
      _cache_openstack_clnt_cmds_subcmds[$service$cmd]=${${${_cache_openstack_clnt_outputs[$service]}/* $t=\'}/\'*}
  fi
  if [[ -n $cmd ]]; then
    for word in ${words:2}; do
      [[ $_cache_openstack_clnt_cmds_subcmds[$service$cmd] != ${${${_cache_openstack_clnt_cmds_subcmds[$service$cmd]#$word }% $word}/ $word } ]] && subcmd=$word && break
    done
    if [[ -n $subcmd && -z $_cache_openstack_clnt_cmds_subcmd_opts[$service$cmd$subcmd] ]]; then
      local t=cmds_${cmd//-/_}_${subcmd//-/_}
      _cache_openstack_clnt_cmds_subcmd_opts[$service$cmd$subcmd]=${${${_cache_openstack_clnt_outputs[$service]}/* $t=\'}/\'*}
    fi
  fi
  if [[ $cmd == help ]]; then
      if [[ $words[CURRENT-1] == $cmd && $words[CURRENT] != -* ]]; then
        [[ -n $_cache_openstack_clnt_cmds[$service] ]] && _values -w option ${(u)=_cache_openstack_clnt_cmds[$service]} && ret=0
      elif [[ $words[CURRENT-2] == $cmd && $words[CURRENT-1] != -* && $words[CURRENT] != -* ]]; then
        local cmd=$words[CURRENT-1]
        local t=cmds_${cmd//-/_}
        [[ -z $_cache_openstack_clnt_cmds_subcmds[$service$cmd] ]] && _cache_openstack_clnt_cmds_subcmds[$service$cmd]=${${${_cache_openstack_clnt_outputs[$service]}/* $t=\'}/\'*}
        [[ -n $_cache_openstack_clnt_cmds_subcmds[$service$cmd] ]] && _values -w option ${(u)=_cache_openstack_clnt_cmds_subcmds[$service$cmd]} && ret=0
      else
        _values -w option help && ret=0
      fi
  elif [[ -z $cmd && $words[CURRENT] == -* ]]; then
    _values -w option ${(u)=_cache_openstack_clnt_opts[$service]} && ret=0
  elif [[ -z $cmd ]]; then
    if [[ -z $_cache_openstack_clnt_cmds[$service] ]]; then
      _message "missing authentication options"
    else
      _values -w option ${(u)=_cache_openstack_clnt_cmds[$service]} && ret=0
    fi
  elif [[ -z $subcmd ]]; then
    [[ -n $_cache_openstack_clnt_cmds_subcmds[$service$cmd] ]] && _values -w option ${(u)=_cache_openstack_clnt_cmds_subcmds[$service$cmd]} && ret=0
  else  
    [[ -n $_cache_openstack_clnt_cmds_subcmd_opts[$service$cmd$subcmd] ]] && _values -w option ${(u)=_cache_openstack_clnt_cmds_subcmd_opts[$service$cmd$subcmd]//\:/\\\:} && ret=0
  fi

elif [[ -n ${clnts_compl_old[(r)$service]} ]]; then
  if [[ -z $_cache_openstack_clnt_cmds[$service] ]]; then
    _cache_openstack_clnt_opts[$service]=${${${(M)${${${${=${(f)"$($service help 2>/dev/null)"}}/\[}/\]}/\;}:#-[-0-9A-Za-z]*}/,}/\.}
    _cache_openstack_clnt_cmds[$service]=${${(M)${=${(f)"$($service bash-completion 2>/dev/null)"}}:#[A-Za-z]*}/bash-completion}
  fi
  local cmd
  for word in ${words:1}; do
    [[ $_cache_openstack_clnt_cmds[$service] != ${${${_cache_openstack_clnt_cmds[$service]#$word }% $word}/ $word } ]] && cmd=$word && break
  done
  # Mostly no options for help, prevent consecutive calls with help here
  if [[ -n $cmd && $cmd != help && -z $_cache_openstack_clnt_cmds_opts[$service] ]]; then
    _cache_openstack_clnt_cmds_opts[$service$cmd]=${${${(M)${${${${=${(f)"$($service help $cmd 2>/dev/null)"}}/\[}/\]}/\;}:#-[-0-9A-Za-z]*}/,}/\.}
  fi
  if [[ $cmd == help ]]; then
      if [[ $words[CURRENT-1] == help && $words[CURRENT] != -* ]]; then
        _values -w option ${(u)=_cache_openstack_clnt_cmds[$service]} && ret=0
      else
        _values -w option help && ret=0
      fi
  elif [[ -z $cmd && $words[CURRENT] == -* ]]; then
    _values -w option ${(u)=_cache_openstack_clnt_opts[$service]} && ret=0
  elif [[ -z $cmd ]]; then
    _values -w option ${(u)=_cache_openstack_clnt_cmds[$service]} && ret=0
  else
    [[ -n $_cache_openstack_clnt_cmds_opts[$service$cmd] ]] && _values -w option ${(u)=_cache_openstack_clnt_cmds_opts[$service$cmd]//\:/\\\:} && ret=0
  fi

elif [[ -n ${clnts_swift_like[(r)$service]} ]]; then
  if [[ -z $_cache_openstack_clnt_cmds[$service] ]]; then
    _cache_openstack_clnt_outputs[$service]=${(f)"$($service --help 2>/dev/null)"}
    _cache_openstack_clnt_opts[$service]=${${${${(M)${${${${=_cache_openstack_clnt_outputs[$service]}/\[}/\]}/\;}:#-[-0-9A-Za-z]*}/,}/\.}/=*}
    _cache_openstack_clnt_cmds[$service]=${=${(M)${(M)${(f)_cache_openstack_clnt_outputs[$service]}:#    [a-z]*}/ [A-Z]*}}
  fi
  local cmd
  for word in ${words:1}; do
    [[ $_cache_openstack_clnt_cmds[$service] != ${${${_cache_openstack_clnt_cmds[$service]#$word }% $word}/ $word } ]] && cmd=$word && break
  done
  if [[ -n $cmd && -z $_cache_openstack_clnt_cmds_opts[$service] ]]; then
    _cache_openstack_clnt_cmds_opts[$service$cmd]=${${${(M)${${${${=${(f)"$($service $cmd --help 2>/dev/null)"}}/\[}/\]}/\;}:#-[-0-9A-Za-z]*}/,}/\.}
  fi
  if [[ -z $cmd && $words[CURRENT] == -* ]]; then
    _values -w option ${(u)=_cache_openstack_clnt_opts[$service]} && ret=0
  elif [[ -z $cmd ]]; then
    _values -w option ${(u)=_cache_openstack_clnt_cmds[$service]} && ret=0
  else
    [[ -n $_cache_openstack_clnt_cmds_opts[$service$cmd] ]] && _values -w option ${(u)=_cache_openstack_clnt_cmds_opts[$service$cmd]//\:/\\\:} && ret=0
  fi

fi

return ret
debug log:

solving 1b82bfa ...
found 1b82bfa in https://inbox.vuxu.org/zsh-workers/9361ff20-f0f2-9acd-e43e-4b1e2e203531@redhat.com/

applying [1/1] https://inbox.vuxu.org/zsh-workers/9361ff20-f0f2-9acd-e43e-4b1e2e203531@redhat.com/
diff --git a/Completion/Unix/Command/_openstack b/Completion/Unix/Command/_openstack
new file mode 100644
index 0000000..1b82bfa

1:88: trailing whitespace.
  else  
Checking patch Completion/Unix/Command/_openstack...
Applied patch Completion/Unix/Command/_openstack cleanly.
warning: 1 line adds whitespace errors.

index at:
100644 1b82bfa46b2bb84294451518e891f082e2d9e1e6	Completion/Unix/Command/_openstack

Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).