Sha256: 18bf115f4487407f451d0d28f70c234727b122f555e5fe192c12866076abcfd3

Contents?: true

Size: 1.95 KB

Versions: 2

Compression:

Stored size: 1.95 KB

Contents

#compdef jkr

# Subcommand completion function
__jkr-execute-cmd() {
    local curcontext context state line
    local env_dir

    integer ret=1
    _arguments \
        -C -S \
        '--debug[enable debug mode]' \
        {-C,--directory}':Jkr directory:_directories' \
        '(-): :->jkr_plans' \
        && return

    case $state in
        (jkr_plans)
            if [[ -n ${opt_args[(I)-C|--directory]} ]]; then
                env_dir=${opt_args[${opt_args[(I)-C|--directory]}]}
            else
                env_dir=""
            fi

            __jkr_plans $env_dir && ret=0
            ;;
    esac
    return $ret
}

__jkr-list-cmd() {
    _arguments \
        -C -S \
        '--debug[enable debug mode]' \
        {-C,--directory}':Jkr directory:_directories' \
        && return
}

__jkr_plans() {
    local old_IFS="$IFS" # save IFS
    IFS=$'\n'
    if [[ -n $1 ]]; then
        _values "Available plans" $(JKR_ZSHCOMP_HELPER=y jkr list --directory=$1)
    else
        _values "Available plans" $(JKR_ZSHCOMP_HELPER=y jkr list)
    fi
    IFS="$old_IFS" # restore IFS
}

# Main completion function
_jkr() {
    local curcontext context state line
    declare -A opt_args
    integer ret=1

    _arguments \
        -C -S \
        '(-): :->subcmds' \
        '(-)*:: :->option-or-argument' \
        && return

    case $state in
        (subcmds)
            __jkr_subcmds && ret=0
            ;;
        (option-or-argument)
            if (( $+functions[__jkr-$words[1]-cmd] )); then
                _call_function ret __jkr-$words[1]-cmd
            else
                _message 'no completion'
            fi
            ;;
    esac

    return $ret
}

__jkr_subcmds() {
    _values 'Jkr command' \
            'init[Init a Jkr environment]' \
            'execute[Execute a plan]' \
            'resume[Resume in-progress execution]' \
            'list[List jkr plans]' \
            'analyze[Analyze a result]' \
            'query[Query interesting result]'
}

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
jkr-0.2.2 etc/zsh-comp.sh
jkr-0.2.1 etc/zsh-comp.sh