#compdef skeleton

_skeleton() {
    typeset -A opt_args
    local ret=1

    local context curcontext="$curcontext" state line
    _arguments -s -S -C \
"-l+[Set language configuration]" \
"--lang+[Set language configuration]" \
"-h[Prints help information]" \
"--help[Prints help information]" \
"-V[Prints version information]" \
"--version[Prints version information]" \
"1:: :_skeleton_commands" \
"*:: :->Skeleton" \
&& ret=0
    case $state in
    (Skeleton)
        curcontext="${curcontext%:*:*}:skeleton-command-$words[1]:"
        case $line[1] in
            (new)
_arguments -s -S -C \
"-h[Prints help information]" \
"--help[Prints help information]" \
"-V[Prints version information]" \
"--version[Prints version information]" \
"1:: :_skeleton__new_commands" \
&& ret=0
;;
(init)
_arguments -s -S -C \
"-h[Prints help information]" \
"--help[Prints help information]" \
"-V[Prints version information]" \
"--version[Prints version information]" \
&& ret=0
;;
(help)
_arguments -s -S -C \
"-h[Prints help information]" \
"--help[Prints help information]" \
"-V[Prints version information]" \
"--version[Prints version information]" \
&& ret=0
;;
        esac
    ;;
esac
}

(( $+functions[_skeleton_commands] )) ||
_skeleton_commands() {
    local commands; commands=(
        "new:create new project" \
"init:initialize existing project" \
"help:Prints this message or the help of the given subcommand(s)" \
    )
    _describe -t commands 'skeleton commands' commands "$@"
}
(( $+functions[_skeleton__help_commands] )) ||
_skeleton__help_commands() {
    local commands; commands=(
        
    )
    _describe -t commands 'skeleton help commands' commands "$@"
}
(( $+functions[_skeleton__init_commands] )) ||
_skeleton__init_commands() {
    local commands; commands=(
        
    )
    _describe -t commands 'skeleton init commands' commands "$@"
}
(( $+functions[_skeleton__new_commands] )) ||
_skeleton__new_commands() {
    local commands; commands=(
        "NAME:The project name" \
    )
    _describe -t commands 'skeleton new commands' commands "$@"
}

_skeleton "$@"