#compdef middleman # ------------------------------------------------------------------------------ # Description # ----------- # # Completion script for middleman (http://middlemanapp.com/) # Includes commands from middleman-blog and middleman-deploy extesions. # # ------------------------------------------------------------------------------ # Authors # ------- # # * Jozef Izso (https://github.com/jozefizso) # # ------------------------------------------------------------------------------ local ret=1 state local -a common_ops common_ops=( "--help[Display help]" ) typeset -A opt_args _arguments \ ':subcommand:->subcommand' \ $common_ops \ '*::options:->options' && ret=0 case $state in subcommand) local -a subcommands subcommands=( "article:Create a new blog article" "build:Builds the static site for deployment" "console:Start an interactive console in the context of your Middleman application" "deploy:Deploy a middleman built site over rsync, ftp, sftp, or git (e.g. gh-pages on github)." "extension:Create Middleman extension scaffold" "init:Create new project" "server:Start the preview server" "upgrade:Upgrade installed bundle" "version:Show version" ) _describe -t subcommands 'middleman subcommand' subcommands && ret=0 ;; options) local -a args args=( $common_ops ) local -a help help=( "--help[Display help information]" ) case $words[1] in article) args=( {-d,--date}"[The date to create the post with (defaults to now)]:date" ) ;; build) args=( "--clean[Remove orphaned files from build (Default: true)]" "--no-clean[Disable removing orphaned files from build]" {-g,--glob}"[Build a subset of the project]:glob" "--verbose[Print debug messages]" "--instrument[Print instrument messages]:instrument" "--profile[Generate profiling report for the build]" ) ;; console) args=( {-e,--environment}"[The environment Middleman will run under (Default: development)]:environment" "--verbose[Print debug messages]" ) ;; deploy) args=( {-b,--build-before}"[Run \`middleman build\` before the deploy step]" ) ;; extension) args=( "--git[Default: true]" ) ;; init) args=( {-T,--template}"[Use a project template: default, html5, mobile, smacss, empty. (Default: default)]:template" "--css-dir [The path to the css files]:css_dir" "--js-dir [The path to the javascript files]:js_dir" "--images-dir [The path to the image files]:images_dir" "--rack [Include a config.ru file]" "--skip-gemfile [Don't create a Gemfile]" "--skip-bundle [Don't run bundle install]" "--skip-git [Skip Git ignores and keeps]" ) ;; server) args=( {-e,--environment}"[The environment Middleman will run under (Default: development)]:environment" {-h,--host}"[Bind to HOST address (Default: 0.0.0.0)]:host" {-p,--port}"[The port Middleman will listen on (Default: 4567)]:port" "--verbose [Print debug messages]" "--instrument [Print instrument messages]:instrument" "--disable-watcher [Disable the file change and delete watcher process]" "--profile [Generate profiling report for server startup]" "--reload-paths [Additional paths to auto-reload when files change]:reload_paths" "--force-polling [Force file watcher into polling mode]" ) ;; upgrade) args=() ;; version) args=() ;; esac _arguments $args && ret=0 ;; esac return ret