#compdef jekyll # ------------------------------------------------------------------------------ # Description # ----------- # # Completion script for jekyll(http://jekyllrb.com) # # ------------------------------------------------------------------------------ # Authors # ------- # # * farseer90718 (https://github.com/farseer90718) # # ------------------------------------------------------------------------------ local ret=1 state local -a common_ops common_ops=( {-v,--version}"[Display version information]" {-h,--help}"[Display help documentation]" {-p,--plugins}"[Plugins directory (defautls to ./_plugins)]: :_directories" {-s,--source}"[Source directory (defaults to ./)]: :_directories" {-d,--destination}"[Destination directory (defautls to ./_site)]: :_directories" "--layouts=[Layouts directory (defaults to ./_layouts)]: :_directories" "--safe=[Safe mode (defaults to false)]" ) typeset -A opt_args _arguments \ ':subcommand:->subcommand' \ $common_ops \ '*::options:->options' && ret=0 case $state in subcommand) local -a subcommands subcommands=( "build:Build your site" "docs:Launch local server with docs for jekyll" "doctor:Search site and print specific deprecation warnings" "help:Dislplay global or [command] help documentation" "import:Import your old blog to Jekyll" "new:Creates a new Jekyll site scaffold in PATH" "serve:Serve your site locally" ) _describe -t subcommands 'jekyll subcommand' subcommands && ret=0 ;; options) local -a args args=( $common_ops ) local -a config config=( "--config[Custome configuration file]: :_files" ) local -a help help=( {-h,--help}"[Display help information]" ) local -a build build=( {-w,--watch}"[Watch for changes and rebuild]" "--limit_posts[Limits the number of posts to parse and publish]" "--future[Publishes posts with a future date]" "--lsi[Use LSI for improved related posts]" "--drafts[Render posts in the _drafts folder]" ) case $words[1] in help) args=() compadd "$@" build docs doctor help import new serve ;; build) args+=( $build $config ) ;; docs) args=( {-p,--port}"[Port to listen on]: :_ports" {-u,--host}"[Host to bind to]: :_hosts" $help ) ;; doctor) args+=( $config ) ;; import) args=( "--source[Source file or URL to migrate from]:url" "--file[File to migrate from]: :_files" "--dbname[Database name to migrate from]:database" "--user[Username to use when migrating]:user" "--pass[Password to use when migrating]:password" "--host[Host address to use when migrating]:url" $help ) ;; new) args=( ": :_directories" "--force[Force creation even if PATH already exists]" "--blank[Creates scaffolding but with empty files]" $help ) ;; serve) args+=( $build $config {-P,--port}"[Port to listen on]: :_posts" {-H,--host}"[Host to bind to]: :_hosts" {-b,--baseurl}"[Base URL]:url" ) esac _arguments $args && ret=0 ;; esac return ret # Local Variables: # mode: Shell-Script # sh-indentation: 2 # indent-tabs-mode: nil # sh-basic-offset: 2 # End: # vim: ft=zsh sw=2 ts=2 et