blob: 53536b01d1ed6533f710c9496798054842c28552 (
plain) (
blame)
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
|
#compdef mkdir gmkdir zf_mkdir
local curcontext="$curcontext" state line expl args variant ret=1
typeset -A opt_args
args=(
'(-m --mode)'{-m,--mode=}'[set permission mode]: :_file_modes'
'(-p --parents)'{-p,--parents}'[make parent directories as needed]'
'(-)*: :->directories'
)
# It can still happen that there is a precommand command or builtin in the line.
# In such cases, the variant has to be modified suitably, after further checking
# the variant of the _command_ mkdir.
#
# $precommands is defined in _main_complete
if (( ${+precommands[(r)command]} )); then
_mkdir_command () { command mkdir "$@" }
_pick_variant -c _mkdir_command -r variant gnu=gnu unix --help
unfunction _mkdir_command
elif (( ${+precommands[(r)builtin]} )) || (( ${+builtins[mkdir]} )) || [[ "$(type -w mkdir)" == "*: builtin" ]]; then
variant=zsh
else
_pick_variant -r variant gnu=gnu zsh='\(eval\)' $OSTYPE --help
fi
# Now $variant is set.
case $variant in
gnu|freebsd*|dragonfly*)
args+=(
'(-v --verbose)'{-v,--verbose}'[print message for each created directory]'
)
;|
gnu)
if [[ $OSTYPE == linux* ]]; then
args+=(
'(-Z --context)'{-Z,--context=}'[set SELinux context]:SELinux context'
)
fi
args+=(
'(- :)--help[display help information]'
'(- :)--version[display version information]'
)
;;
zsh) # remove all options
;;
*) # non-GNU: remove long options
args=( ${${${args:#(|*\))--*}//--[^ )]#/}/\( #\)/} )
;;
esac
_arguments -C -s $args && ret=0
case "$state" in
directories)
_wanted directories expl \
'parent directory (alternatively specify name of directory)' \
_path_files -/ && ret=0
;;
esac
return ret
|