zsh-workers
 help / color / mirror / code / Atom feed
8c164f8b8e9222d4370bedd9bc761e9e755a1125 blob 6808 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
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
 
#compdef postconf postqueue postsuper

# Last updated from postfix 3.1.0.

local context state state_descr line
typeset -A opt_args
integer NORMARG

_postfix_queue_id() {
  local -a lines=( ${(f)"$(_call_program mailq 'mailq')"} )

  # $enable_long_queue_ids = no
  compadd "$@" -- ${${(M)lines:#(#s)([0-9A-F]##([*!]|) )*}/(#s)(#b)([0-9A-F]##)*/$match[1]}

  # $enable_long_queue_ids = yes
  compadd "$@" -- ${${${(M)lines:#(#s)[0-9bcdfghjklmnpqrstvwxyzBCDFGHJKLMNPQRSTVWXYZ](#c10)z*}%% *}%[*!]}
}

# The first argument must be either 'd' or 'n', to complete parameters in
# `postconf -d -H` or `postconf -n -H` output, respectively.
_postfix_main_cf_parameter() {
  local -a expl
  local kind

  kind=$1; shift
  case $kind in
    (d)
      # Note for the future: if $mail_version >= 3.1, we can pass -H instead of
      # stripping the = signs by hand.
      #
      # don't bother to add -c in this case: the defaults don't depend on the config dir.
      _wanted parameters expl 'main.cf parameter' compadd "$@" -- \
        ${${(f)"$(_call_program postconf_-d "${(q)words[1]} -$kind")"}%% =*}
      ;;
    (n)
      # Show the values too.
      local -a kv=( ${${(f)"$(_call_program postconf_-n "${(q)words[1]} ${opt_args[-c]+"-c ${(q)opt_args[-c]}"} -$kind")"}/ = /:} )
      _describe parameters kv
      ;;
    (*)
      return 1 # can't happen due to the guard above
      ;;
  esac
}

_postfix_main_cf_parameter_and_value() {
  # Note: be careful not to accidentally run 'postconf foo=bar' here.
  #
  # The '-P 1' syntax chooses the shortest match.  If the '1' were removed,
  # completing «postconf foo=bar=<TAB>» would change main.cf.  So, don't remove
  # it.
  if compset -P 1 '*='; then
    local value="`_call_program postconf-get-value-at-dir "${(q)words[1]} ${opt_args[-c]+"-c ${(q)opt_args[-c]}"} -h -- ${(q)IPREFIX%=}"`"
    [[ -n $value ]] && compadd "$@" -- $value
  else
    _postfix_main_cf_parameter d -S=
  fi
}

case $service in
	(postsuper)
	_arguments -C -s : \
	'-p[purge old tempfiles]' \
	'-s[structure check and repair]' \
	'*-v[verbose]' \
	'-c[configdir]:config dir:_files -/' \
	'-d[delete]:queue id:_postfix_queue_id' \
	'-h[hold]:queue id:_postfix_queue_id' \
	'-H[release]:queue id:_postfix_queue_id' \
	'*-r[requeue]:queue id, or "ALL":_postfix_queue_id' \
	'1:queue:(hold incoming active deferred)'
	;;
        (postqueue)
        _arguments -C -s : \
          '*-v[enable verbose logging]' \
          '-c[configdir]:config dir:_files -/' \
          '(-f -i -j -p -s)-f[flush the queue]' \
          '(-f -i -j -p -s)-i[immediately deliver one message]:queue id:_postfix_queue_id' \
          '(-f -i -j -p -s)-j[print the queue in json]' \
          '(-f -i -j -p -s)-p[print the queue in traditional format]' \
          '(-f -i -j -p -s)-s[immediately deliver messages to specified site]:site:_hosts' 
        ;;
        (postconf)
          local -a file_ops=(-b -t -a -A -l -m -T)
          local -a modes=(-F -M -P $file_ops -p)
          local -a only_for_p=(-C -d -h -n)
          local -a only_for_asterisk_dot_cf=(-e -f -o -x)
          local -a args=(
              # global
              '-c[configdir]:config dir:_files -/' \
              '*-v[enable verbose logging]'

              # mode selection
              "($modes $only_for_p                              -X -#)"'-F[operate on master.cf entry fields]'
              "($modes $only_for_p                           -H      )"'-M[operate on master.cf services entries]'
              "($modes $only_for_p                                 -#)"'-P[operate on master.cf parameter settings]'
              "($modes $only_for_p $only_for_asterisk_dot_cf -H -X -#)"'-b[display DSN text, expanded]'
              "($modes $only_for_p $only_for_asterisk_dot_cf -H -X -#)"'-t[display DSN text, unexpanded]'
              "($modes $only_for_p $only_for_asterisk_dot_cf -H -X -#)"'-a[list available SASL server plug-ins]'
              "($modes $only_for_p $only_for_asterisk_dot_cf -H -X -#)"'-A[list available SASL client plug-ins]'
              "($modes $only_for_p $only_for_asterisk_dot_cf -H -X -#)"'-l[list supported mailbox locking methods]'
              "($modes $only_for_p $only_for_asterisk_dot_cf -H -X -#)"'-m[list supported lookup table types]'
              "($modes                                               )"'-p[(default) print main.cf settings]'
              "($modes $only_for_p $only_for_asterisk_dot_cf -H -X -#)"'-T[print TLS information]:mode:((
                           compile-version\:"OpenSSL compile-time version"
                           run-version\:"OpenSSL run-time version"
                           public-key-algorithms\:"supported public-key algorithms"
                           ))'

              # other options; comments indicate modes:
              # -p only
              '-C[display parameters from the specified class]:parameter class:(builtin service user all)'
              '-d[print default values]'
              '-h[print value only]'
              '-n[show parameters changed in main.cf]'

              # all except $file_ops:
              '-e[change parameter values]'
              '-f[fold long output lines]'
              '-o[set parameter value for this operation]: :_postfix_main_cf_parameter_and_value'
              '-x[expand '\''$name'\'' in parameter values]'

              # -p -F -P only
              '-H[show parameter name only]'
              # -p -M -P only
              '-X[remove parameters from main.cf/master.cf]'
              # -p -M only
              '-#[comment out parameters in main.cf/master.cf]'

              # $state
              '*: :->positional'
          )
          _arguments -C -s -S -n : "$args[@]"

          case $state in
            (positional)
              # Simulate the default
              if [[ -z $opt_args[(i)${(j.|.)modes}] ]]; then
                opt_args[-p]=""
              fi
              if [[ -n $opt_args[(i)(-b|-t)] ]]; then
                local expl
                if (( CURRENT == NORMARG )); then
                  _wanted files expl 'template file, or "" for default' _files
                else
                  _nothing
                fi
              elif [[ -n $opt_args[(i)${(j.|.)file_ops}] ]]; then
                _nothing
              elif (( $+opt_args[-p] )); then
                if (( $+opt_args[-e] )); then
                  _postfix_main_cf_parameter_and_value
                elif [[ -n $opt_args[(i)(-X|-[#])] ]]; then
                  _postfix_main_cf_parameter n
                else
                  _postfix_main_cf_parameter d
                fi
              else # one of the master.cf modes: -M -F -P
                _message "arguments for $opt_args[(i)${(j.|.)modes}] mode"
              fi
          esac
        ;;
esac
debug log:

solving afd56b7 ...
found afd56b7 in https://inbox.vuxu.org/zsh-workers/1473830073-331-1-git-send-email-danielsh@fujitsu.shahaf.local2/
found 528034e in https://git.vuxu.org/mirror/zsh/
preparing index
index prepared:
100644 528034ef8b380d30df0ddd837e37a4965896c1b6	Completion/Unix/Command/_postfix

applying [1/1] https://inbox.vuxu.org/zsh-workers/1473830073-331-1-git-send-email-danielsh@fujitsu.shahaf.local2/
diff --git a/Completion/Unix/Command/_postfix b/Completion/Unix/Command/_postfix
index 528034e..afd56b7 100644

Checking patch Completion/Unix/Command/_postfix...
Applied patch Completion/Unix/Command/_postfix cleanly.

index at:
100644 8c164f8b8e9222d4370bedd9bc761e9e755a1125	Completion/Unix/Command/_postfix

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).