#compdef jekyll _jekyll() { local curcontext="${curcontext}" state line file typeset -A opt_args local -a _subcommands _subcommands=('docs:list documentation' 'import:import posts' 'serve:run server' 'help:get help' 'doctor:deprecation warnings' 'build:compile site' 'new:create new site' 'clean:clean output' 'draft:create new draft' 'post:create new post' 'publish:publish draft' 'edit:edit post') _arguments -C \ "(source)"{-s,--source}"[source]:source dir:_files -/" \ "(dest)"{-d,--destination}"[dest]:dest dir:_files -/" \ "--safe[safe mode]" \ "(plugins)"{-p,--plugins}"[plugins]:plugins dir:_files -/" \ "--layouts[layouts]:layouts dir:_files -/" \ "--profile[generate liquid profile]" \ "(help)"{-h,--help}"[help]" \ "(version)"{-v,--version}"[version]" \ "(trace)"{-t,--trace}"[trace]" \ "1:command:->command" \ "*: :->args" case $state in command) _describe -t commands "jekyll subcommand" _subcommands ;; args) case "$line[1]" in edit) # TODO: Fix to get --source argument local -a postpaths postpaths=("${JEKYLL_DIR}/_posts" "${JEKYLL_DIR}/_drafts") _files -W postpaths ;; publish) # TODO: Fix to get --source argument _files -W ${JEKYLL_DIR}/_drafts esac ;; esac }