#compdef scrapy # zsh completion for the Scrapy command-line tool _scrapy() { local curcontext="$curcontext" cmd spiders typeset -A opt_args cmd=$words[2] local -a _1st_arguments _1st_arguments=( "check":"Check spider contracts", "crawl":"Run a spider", "edit":"Edit spider", "fetch":"Fetch a URL using the Scrapy downloader", "genspider":"Generate new spider using pre-defined templates", "list":"List available spiders", "parse":"Parse URL (using its spider) and print the results", "runspider":"Run a self-contained spider (without creating a project)", "settings":"Get settings values", "shell":"Interactive scraping console", "startproject":"Create new project", "version":"Print Scrapy version", "view":"Open URL in browser, as seen by Scrapy" ) case "$cmd" in crawl|edit|check) spiders=$(scrapy list 2>/dev/null) || spiders="" if [[ -n "$spiders" ]]; then compadd `echo $spiders` fi ;; *) if [[ CURRENT -eq 2 ]]; then _describe -t commands "scrapy commands" _1st_arguments fi ;; esac } _scrapy