285 lines
		
	
	
		
			7.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			285 lines
		
	
	
		
			7.4 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
|  | #compdef _gh gh | ||
|  | 
 | ||
|  | 
 | ||
|  | function _gh { | ||
|  |   local -a commands | ||
|  | 
 | ||
|  |   _arguments -C \ | ||
|  |     '--help[Show help for command]' \ | ||
|  |     '(-R --repo)'{-R,--repo}'[Select another repository using the `OWNER/REPO` format]:' \ | ||
|  |     '--version[Show gh version]' \ | ||
|  |     "1: :->cmnds" \ | ||
|  |     "*::arg:->args" | ||
|  | 
 | ||
|  |   case $state in | ||
|  |   cmnds) | ||
|  |     commands=( | ||
|  |       "completion:Generate shell completion scripts" | ||
|  |       "help:Help about any command" | ||
|  |       "issue:Create and view issues" | ||
|  |       "pr:Create, view, and checkout pull requests" | ||
|  |       "repo:Create, clone, fork, and view repositories" | ||
|  |     ) | ||
|  |     _describe "command" commands | ||
|  |     ;; | ||
|  |   esac | ||
|  | 
 | ||
|  |   case "$words[1]" in | ||
|  |   completion) | ||
|  |     _gh_completion | ||
|  |     ;; | ||
|  |   help) | ||
|  |     _gh_help | ||
|  |     ;; | ||
|  |   issue) | ||
|  |     _gh_issue | ||
|  |     ;; | ||
|  |   pr) | ||
|  |     _gh_pr | ||
|  |     ;; | ||
|  |   repo) | ||
|  |     _gh_repo | ||
|  |     ;; | ||
|  |   esac | ||
|  | } | ||
|  | 
 | ||
|  | function _gh_completion { | ||
|  |   _arguments \ | ||
|  |     '(-s --shell)'{-s,--shell}'[Shell type: {bash|zsh|fish|powershell}]:' \ | ||
|  |     '--help[Show help for command]' \ | ||
|  |     '(-R --repo)'{-R,--repo}'[Select another repository using the `OWNER/REPO` format]:' | ||
|  | } | ||
|  | 
 | ||
|  | function _gh_help { | ||
|  |   _arguments \ | ||
|  |     '--help[Show help for command]' \ | ||
|  |     '(-R --repo)'{-R,--repo}'[Select another repository using the `OWNER/REPO` format]:' | ||
|  | } | ||
|  | 
 | ||
|  | 
 | ||
|  | function _gh_issue { | ||
|  |   local -a commands | ||
|  | 
 | ||
|  |   _arguments -C \ | ||
|  |     '--help[Show help for command]' \ | ||
|  |     '(-R --repo)'{-R,--repo}'[Select another repository using the `OWNER/REPO` format]:' \ | ||
|  |     "1: :->cmnds" \ | ||
|  |     "*::arg:->args" | ||
|  | 
 | ||
|  |   case $state in | ||
|  |   cmnds) | ||
|  |     commands=( | ||
|  |       "create:Create a new issue" | ||
|  |       "list:List and filter issues in this repository" | ||
|  |       "status:Show status of relevant issues" | ||
|  |       "view:View an issue" | ||
|  |     ) | ||
|  |     _describe "command" commands | ||
|  |     ;; | ||
|  |   esac | ||
|  | 
 | ||
|  |   case "$words[1]" in | ||
|  |   create) | ||
|  |     _gh_issue_create | ||
|  |     ;; | ||
|  |   list) | ||
|  |     _gh_issue_list | ||
|  |     ;; | ||
|  |   status) | ||
|  |     _gh_issue_status | ||
|  |     ;; | ||
|  |   view) | ||
|  |     _gh_issue_view | ||
|  |     ;; | ||
|  |   esac | ||
|  | } | ||
|  | 
 | ||
|  | function _gh_issue_create { | ||
|  |   _arguments \ | ||
|  |     '(-b --body)'{-b,--body}'[Supply a body. Will prompt for one otherwise.]:' \ | ||
|  |     '(-t --title)'{-t,--title}'[Supply a title. Will prompt for one otherwise.]:' \ | ||
|  |     '(-w --web)'{-w,--web}'[Open the browser to create an issue]' \ | ||
|  |     '--help[Show help for command]' \ | ||
|  |     '(-R --repo)'{-R,--repo}'[Select another repository using the `OWNER/REPO` format]:' | ||
|  | } | ||
|  | 
 | ||
|  | function _gh_issue_list { | ||
|  |   _arguments \ | ||
|  |     '(-a --assignee)'{-a,--assignee}'[Filter by assignee]:' \ | ||
|  |     '(-A --author)'{-A,--author}'[Filter by author]:' \ | ||
|  |     '(*-l *--label)'{\*-l,\*--label}'[Filter by label]:' \ | ||
|  |     '(-L --limit)'{-L,--limit}'[Maximum number of issues to fetch]:' \ | ||
|  |     '(-s --state)'{-s,--state}'[Filter by state: {open|closed|all}]:' \ | ||
|  |     '--help[Show help for command]' \ | ||
|  |     '(-R --repo)'{-R,--repo}'[Select another repository using the `OWNER/REPO` format]:' | ||
|  | } | ||
|  | 
 | ||
|  | function _gh_issue_status { | ||
|  |   _arguments \ | ||
|  |     '--help[Show help for command]' \ | ||
|  |     '(-R --repo)'{-R,--repo}'[Select another repository using the `OWNER/REPO` format]:' | ||
|  | } | ||
|  | 
 | ||
|  | function _gh_issue_view { | ||
|  |   _arguments \ | ||
|  |     '(-w --web)'{-w,--web}'[Open issue in browser]' \ | ||
|  |     '--help[Show help for command]' \ | ||
|  |     '(-R --repo)'{-R,--repo}'[Select another repository using the `OWNER/REPO` format]:' | ||
|  | } | ||
|  | 
 | ||
|  | 
 | ||
|  | function _gh_pr { | ||
|  |   local -a commands | ||
|  | 
 | ||
|  |   _arguments -C \ | ||
|  |     '--help[Show help for command]' \ | ||
|  |     '(-R --repo)'{-R,--repo}'[Select another repository using the `OWNER/REPO` format]:' \ | ||
|  |     "1: :->cmnds" \ | ||
|  |     "*::arg:->args" | ||
|  | 
 | ||
|  |   case $state in | ||
|  |   cmnds) | ||
|  |     commands=( | ||
|  |       "checkout:Check out a pull request in Git" | ||
|  |       "create:Create a pull request" | ||
|  |       "list:List and filter pull requests in this repository" | ||
|  |       "status:Show status of relevant pull requests" | ||
|  |       "view:View a pull request in the browser" | ||
|  |     ) | ||
|  |     _describe "command" commands | ||
|  |     ;; | ||
|  |   esac | ||
|  | 
 | ||
|  |   case "$words[1]" in | ||
|  |   checkout) | ||
|  |     _gh_pr_checkout | ||
|  |     ;; | ||
|  |   create) | ||
|  |     _gh_pr_create | ||
|  |     ;; | ||
|  |   list) | ||
|  |     _gh_pr_list | ||
|  |     ;; | ||
|  |   status) | ||
|  |     _gh_pr_status | ||
|  |     ;; | ||
|  |   view) | ||
|  |     _gh_pr_view | ||
|  |     ;; | ||
|  |   esac | ||
|  | } | ||
|  | 
 | ||
|  | function _gh_pr_checkout { | ||
|  |   _arguments \ | ||
|  |     '--help[Show help for command]' \ | ||
|  |     '(-R --repo)'{-R,--repo}'[Select another repository using the `OWNER/REPO` format]:' | ||
|  | } | ||
|  | 
 | ||
|  | function _gh_pr_create { | ||
|  |   _arguments \ | ||
|  |     '(-B --base)'{-B,--base}'[The branch into which you want your code merged]:' \ | ||
|  |     '(-b --body)'{-b,--body}'[Supply a body. Will prompt for one otherwise.]:' \ | ||
|  |     '(-d --draft)'{-d,--draft}'[Mark pull request as a draft]' \ | ||
|  |     '(-f --fill)'{-f,--fill}'[Do not prompt for title/body and just use commit info]' \ | ||
|  |     '(-t --title)'{-t,--title}'[Supply a title. Will prompt for one otherwise.]:' \ | ||
|  |     '(-w --web)'{-w,--web}'[Open the web browser to create a pull request]' \ | ||
|  |     '--help[Show help for command]' \ | ||
|  |     '(-R --repo)'{-R,--repo}'[Select another repository using the `OWNER/REPO` format]:' | ||
|  | } | ||
|  | 
 | ||
|  | function _gh_pr_list { | ||
|  |   _arguments \ | ||
|  |     '(-a --assignee)'{-a,--assignee}'[Filter by assignee]:' \ | ||
|  |     '(-B --base)'{-B,--base}'[Filter by base branch]:' \ | ||
|  |     '(*-l *--label)'{\*-l,\*--label}'[Filter by label]:' \ | ||
|  |     '(-L --limit)'{-L,--limit}'[Maximum number of items to fetch]:' \ | ||
|  |     '(-s --state)'{-s,--state}'[Filter by state: {open|closed|merged|all}]:' \ | ||
|  |     '--help[Show help for command]' \ | ||
|  |     '(-R --repo)'{-R,--repo}'[Select another repository using the `OWNER/REPO` format]:' | ||
|  | } | ||
|  | 
 | ||
|  | function _gh_pr_status { | ||
|  |   _arguments \ | ||
|  |     '--help[Show help for command]' \ | ||
|  |     '(-R --repo)'{-R,--repo}'[Select another repository using the `OWNER/REPO` format]:' | ||
|  | } | ||
|  | 
 | ||
|  | function _gh_pr_view { | ||
|  |   _arguments \ | ||
|  |     '(-w --web)'{-w,--web}'[Open pull request in browser]' \ | ||
|  |     '--help[Show help for command]' \ | ||
|  |     '(-R --repo)'{-R,--repo}'[Select another repository using the `OWNER/REPO` format]:' | ||
|  | } | ||
|  | 
 | ||
|  | 
 | ||
|  | function _gh_repo { | ||
|  |   local -a commands | ||
|  | 
 | ||
|  |   _arguments -C \ | ||
|  |     '--help[Show help for command]' \ | ||
|  |     '(-R --repo)'{-R,--repo}'[Select another repository using the `OWNER/REPO` format]:' \ | ||
|  |     "1: :->cmnds" \ | ||
|  |     "*::arg:->args" | ||
|  | 
 | ||
|  |   case $state in | ||
|  |   cmnds) | ||
|  |     commands=( | ||
|  |       "clone:Clone a repository locally" | ||
|  |       "create:Create a new repository" | ||
|  |       "fork:Create a fork of a repository" | ||
|  |       "view:View a repository in the browser" | ||
|  |     ) | ||
|  |     _describe "command" commands | ||
|  |     ;; | ||
|  |   esac | ||
|  | 
 | ||
|  |   case "$words[1]" in | ||
|  |   clone) | ||
|  |     _gh_repo_clone | ||
|  |     ;; | ||
|  |   create) | ||
|  |     _gh_repo_create | ||
|  |     ;; | ||
|  |   fork) | ||
|  |     _gh_repo_fork | ||
|  |     ;; | ||
|  |   view) | ||
|  |     _gh_repo_view | ||
|  |     ;; | ||
|  |   esac | ||
|  | } | ||
|  | 
 | ||
|  | function _gh_repo_clone { | ||
|  |   _arguments \ | ||
|  |     '--help[Show help for command]' \ | ||
|  |     '(-R --repo)'{-R,--repo}'[Select another repository using the `OWNER/REPO` format]:' | ||
|  | } | ||
|  | 
 | ||
|  | function _gh_repo_create { | ||
|  |   _arguments \ | ||
|  |     '(-d --description)'{-d,--description}'[Description of repository]:' \ | ||
|  |     '--enable-issues[Enable issues in the new repository]' \ | ||
|  |     '--enable-wiki[Enable wiki in the new repository]' \ | ||
|  |     '(-h --homepage)'{-h,--homepage}'[Repository home page URL]:' \ | ||
|  |     '--public[Make the new repository public]' \ | ||
|  |     '(-t --team)'{-t,--team}'[The name of the organization team to be granted access]:' \ | ||
|  |     '--help[Show help for command]' \ | ||
|  |     '(-R --repo)'{-R,--repo}'[Select another repository using the `OWNER/REPO` format]:' | ||
|  | } | ||
|  | 
 | ||
|  | function _gh_repo_fork { | ||
|  |   _arguments \ | ||
|  |     '--clone[Clone fork: {true|false|prompt}]' \ | ||
|  |     '--remote[Add remote for fork: {true|false|prompt}]' \ | ||
|  |     '--help[Show help for command]' \ | ||
|  |     '(-R --repo)'{-R,--repo}'[Select another repository using the `OWNER/REPO` format]:' | ||
|  | } | ||
|  | 
 | ||
|  | function _gh_repo_view { | ||
|  |   _arguments \ | ||
|  |     '(-w --web)'{-w,--web}'[Open repository in browser]' \ | ||
|  |     '--help[Show help for command]' \ | ||
|  |     '(-R --repo)'{-R,--repo}'[Select another repository using the `OWNER/REPO` format]:' | ||
|  | } | ||
|  | 
 |