zsh-workers
 help / color / mirror / code / Atom feed
ba8b981b42a3c81e4f902e136e46454ee6d19336 blob 1958 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
 
#compdef ldap

local -a commands scopes
commands=(
  search:'search a directory'
)
scopes=(
  base:'base object only'
  one:'one level'
  sub:subtree
)

_ldap_url() {
  local -a expl protocols tags
  protocols=(
    ldap:'TCP in plaintext'
    ldaps:'TLS'
    ldap+tls:'TCP and use StartTLS'
    ldapi:'connect to a socket'
  )

  # [protocol://]host[:port][/basedn[?[attribute,...][?[scope][?[filter]]]]]
  if ! compset -P '*://'; then
    tags=(protocol)
  fi

  if ! compset -P '*/'; then
    if compset -P '*:'; then
      tags=(port)
    else
      tags+=(host)
    fi
  else
    case $PREFIX in
      *\?*\?*\?*) tags=(filter);;
      *\?*\?*) tags=(scope);;
      *\?*) tags=(attribute);;
      *) tags=(basedn);;
    esac
    compset -P '*\?'
  fi

  _tags $tags
  while _tags; do
    _requested protocol && _describe -t protocol protocol protocols -I ://
    _requested host && _hosts -S ''
    _requested port && _guard '|<1-65535>' port
    _requested basedn expl 'base DN'
    _requested attribute expl attribute
    _requested scope && _describe -t scope scope scopes
    _requested filter expl filter
  done
}

if (( CURRENT == 2 )); then
  _describe command commands
else
  shift words; (( CURRENT-- ))
  case $words[1] in
    search)
      _arguments -s -S -A '-*' \
        '-b+[specify base DN]:base DN:' \
        '-c+[specify CA file]:CA file:' \
        '-D+[specify bind DN]:bind DN:' \
        '-H+[specify URL]: :_ldap_url' \
        '-L[output in LDIF]' \
        '-l+[specify time limit or 0 for no limit]:time limit [0]:' \
        '-s+[specify scope]:scope [sub]:(($scopes))' \
        '-v[be verbose]' \
        '-W[prompt for bind secret]' \
        '-w+[specify bind secret]:bind secret:' \
        '-x[use simple authentication]' \
        '-Z[use StartTLS]' \
        '-z+[specify maximum number of results or 0 for no limit]:size limit [0]:' \
        ':: :_guard "*=*" "filter"' \
        '*:attribute:'
      ;;
  esac
fi
debug log:

solving ba8b981b4 ...
found ba8b981b4 in https://inbox.vuxu.org/zsh-workers/20180619125722.GA33230@CptOrmolo.darkstar/

applying [1/1] https://inbox.vuxu.org/zsh-workers/20180619125722.GA33230@CptOrmolo.darkstar/
diff --git a/Completion/BSD/Command/_ldap b/Completion/BSD/Command/_ldap
new file mode 100644
index 000000000..ba8b981b4

Checking patch Completion/BSD/Command/_ldap...
Applied patch Completion/BSD/Command/_ldap cleanly.

index at:
100644 ba8b981b42a3c81e4f902e136e46454ee6d19336	Completion/BSD/Command/_ldap

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