#compdef exercism

_exercism() {
    local curcontext="$curcontext" state line
    typeset -A opt_args

    local -a options
    options=(configure:"Writes config values to a JSON file."
             download:"Downloads and saves a specified submission into the local system"
             open:"Opens a browser to exercism.io for the specified submission."
             submit:"Submits a new iteration to a problem on exercism.io."
             troubleshoot:"Outputs useful debug information."
             upgrade:"Upgrades to the latest available version."
             version:"Outputs version information."
             workspace:"Outputs the root directory for Exercism exercises."
             help:"Shows a list of commands or help for one command")

    _arguments -s -S \
        {-h,--help}"[show help]"                \
        {-t,--timeout}"[override default HTTP timeout]" \
        {-v,--verbose}"[turn on verbose logging]" \
        '(-): :->command'                       \
        '(-)*:: :->option-or-argument'          \
        && return 0;

    case $state in
        (command)
            _describe 'commands' options ;;
        (option-or-argument)
            case $words[1] in
                s*)
                    _files
                    ;;
            esac
    esac
}

_exercism "$@"

#compdef exercism

local curcontext="$curcontext" state line
typeset -A opt_args

local -a options
options=(configure:"Writes config values to a JSON file."
         download:"Downloads and saves a specified submission into the local system"
         open:"Opens a browser to exercism.io for the specified submission."
         submit:"Submits a new iteration to a problem on exercism.io."
         troubleshoot:"Outputs useful debug information."
         upgrade:"Upgrades to the latest available version."
         version:"Outputs version information."
         workspace:"Outputs the root directory for Exercism exercises."
         help:"Shows a list of commands or help for one command")

_arguments -s -S \
    {-h,--help}"[show help]"                \
    {-t,--timeout}"[override default HTTP timeout]" \
    {-v,--verbose}"[turn on verbose logging]" \
    '(-): :->command'                       \
    '(-)*:: :->option-or-argument'          \
    && return 0;

case $state in
    (command)
        _describe 'commands' options ;;
    (option-or-argument)
        case $words[1] in
            s*)
                _files
                ;;
        esac
esac

Remove extra function around zsh completion script.
Remove extra function around zsh completion script.
