mirror of
git://git.code.sf.net/p/zsh/code
synced 2025-07-15 18:11:25 +02:00
49 lines
1.2 KiB
Text
49 lines
1.2 KiB
Text
#compdef mkdir gmkdir zf_mkdir
|
|
|
|
local curcontext="$curcontext" variant ret=1
|
|
local -a state line expl args aopts=( -A '-*' )
|
|
typeset -A opt_args
|
|
|
|
args=(
|
|
'(-m --mode)'{-m,--mode=}'[set permission mode]: :_file_modes'
|
|
'(-p --parents)'{-p,--parents}'[make parent directories as needed]'
|
|
'*: :->directories'
|
|
)
|
|
|
|
_pick_variant -r variant -b zsh gnu=gnu $OSTYPE --help
|
|
|
|
case $variant in
|
|
gnu|freebsd*|dragonfly*|darwin*)
|
|
args+=(
|
|
'(-v --verbose)'{-v,--verbose}'[print message for each created directory]'
|
|
)
|
|
;|
|
|
gnu)
|
|
aopts=()
|
|
if [[ $OSTYPE == linux* ]]; then
|
|
args+=(
|
|
'(--context)-Z[set SELinux context]'
|
|
'(-Z)--context=-[set SELinux context]::SELinux context:_selinux_contexts'
|
|
)
|
|
fi
|
|
args+=(
|
|
'(- :)--help[display help information]'
|
|
'(- :)--version[display version information]'
|
|
)
|
|
;;
|
|
*) # non-GNU: remove long options
|
|
args=( ${${${args:#(|*\))--*}//--[^ )]#/}/\( #\)/} )
|
|
;;
|
|
esac
|
|
|
|
_arguments -C -s -S $aopts $args && ret=0
|
|
|
|
case "$state" in
|
|
directories)
|
|
_wanted directories expl \
|
|
'parent directory or name of directory to create' \
|
|
_path_files -/ && ret=0
|
|
;;
|
|
esac
|
|
|
|
return ret
|