Last active
June 5, 2024 00:18
-
-
Save jessenich/8475e3848edc8f515cffda7657e2effe to your computer and use it in GitHub Desktop.
GH CLI PowerShell Completions
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| using namespace System.Management.Automation | |
| using namespace System.Management.Automation.Language | |
| Register-ArgumentCompleter -Native -CommandName 'gh' -ScriptBlock { | |
| param($wordToComplete, $commandAst, $cursorPosition) | |
| $commandElements = $commandAst.CommandElements | |
| $command = @( | |
| 'gh' | |
| for ($i = 1; $i -lt $commandElements.Count; $i++) { | |
| $element = $commandElements[$i] | |
| if ($element -isnot [StringConstantExpressionAst] -or | |
| $element.StringConstantType -ne [StringConstantType]::BareWord -or | |
| $element.Value.StartsWith('-')) { | |
| break | |
| } | |
| $element.Value | |
| } | |
| ) -join ';' | |
| $completions = @(switch ($command) { | |
| 'gh' { | |
| [CompletionResult]::new('--help', 'help', [CompletionResultType]::ParameterName, 'Show help for command') | |
| [CompletionResult]::new('--version', 'version', [CompletionResultType]::ParameterName, 'Show gh version') | |
| [CompletionResult]::new('alias', 'alias', [CompletionResultType]::ParameterValue, 'Create command shortcuts') | |
| [CompletionResult]::new('api', 'api', [CompletionResultType]::ParameterValue, 'Make an authenticated GitHub API request') | |
| [CompletionResult]::new('auth', 'auth', [CompletionResultType]::ParameterValue, 'Login, logout, and refresh your authentication') | |
| [CompletionResult]::new('completion', 'completion', [CompletionResultType]::ParameterValue, 'Generate shell completion scripts') | |
| [CompletionResult]::new('config', 'config', [CompletionResultType]::ParameterValue, 'Manage configuration for gh') | |
| [CompletionResult]::new('credits', 'credits', [CompletionResultType]::ParameterValue, 'View credits for this tool') | |
| [CompletionResult]::new('environment', 'environment', [CompletionResultType]::ParameterValue, 'Environment variables that can be used with gh') | |
| [CompletionResult]::new('gist', 'gist', [CompletionResultType]::ParameterValue, 'Manage gists') | |
| [CompletionResult]::new('help', 'help', [CompletionResultType]::ParameterValue, 'Help about any command') | |
| [CompletionResult]::new('issue', 'issue', [CompletionResultType]::ParameterValue, 'Manage issues') | |
| [CompletionResult]::new('pr', 'pr', [CompletionResultType]::ParameterValue, 'Manage pull requests') | |
| [CompletionResult]::new('release', 'release', [CompletionResultType]::ParameterValue, 'Manage GitHub releases') | |
| [CompletionResult]::new('repo', 'repo', [CompletionResultType]::ParameterValue, 'Create, clone, fork, and view repositories') | |
| [CompletionResult]::new('version', 'version', [CompletionResultType]::ParameterValue, '') | |
| break | |
| } | |
| 'gh;alias' { | |
| [CompletionResult]::new('delete', 'delete', [CompletionResultType]::ParameterValue, 'Delete an alias') | |
| [CompletionResult]::new('list', 'list', [CompletionResultType]::ParameterValue, 'List your aliases') | |
| [CompletionResult]::new('set', 'set', [CompletionResultType]::ParameterValue, 'Create a shortcut for a gh command') | |
| break | |
| } | |
| 'gh;alias;delete' { | |
| break | |
| } | |
| 'gh;alias;list' { | |
| break | |
| } | |
| 'gh;alias;set' { | |
| [CompletionResult]::new('-s', 's', [CompletionResultType]::ParameterName, 'Declare an alias to be passed through a shell interpreter') | |
| [CompletionResult]::new('--shell', 'shell', [CompletionResultType]::ParameterName, 'Declare an alias to be passed through a shell interpreter') | |
| break | |
| } | |
| 'gh;api' { | |
| [CompletionResult]::new('-F', 'F', [CompletionResultType]::ParameterName, 'Add a parameter of inferred type') | |
| [CompletionResult]::new('--field', 'field', [CompletionResultType]::ParameterName, 'Add a parameter of inferred type') | |
| [CompletionResult]::new('-H', 'H', [CompletionResultType]::ParameterName, 'Add an additional HTTP request header') | |
| [CompletionResult]::new('--header', 'header', [CompletionResultType]::ParameterName, 'Add an additional HTTP request header') | |
| [CompletionResult]::new('--hostname', 'hostname', [CompletionResultType]::ParameterName, 'The GitHub hostname for the request (default "github.com")') | |
| [CompletionResult]::new('-i', 'i', [CompletionResultType]::ParameterName, 'Include HTTP response headers in the output') | |
| [CompletionResult]::new('--include', 'include', [CompletionResultType]::ParameterName, 'Include HTTP response headers in the output') | |
| [CompletionResult]::new('--input', 'input', [CompletionResultType]::ParameterName, 'The file to use as body for the HTTP request') | |
| [CompletionResult]::new('-X', 'X', [CompletionResultType]::ParameterName, 'The HTTP method for the request') | |
| [CompletionResult]::new('--method', 'method', [CompletionResultType]::ParameterName, 'The HTTP method for the request') | |
| [CompletionResult]::new('--paginate', 'paginate', [CompletionResultType]::ParameterName, 'Make additional HTTP requests to fetch all pages of results') | |
| [CompletionResult]::new('-f', 'f', [CompletionResultType]::ParameterName, 'Add a string parameter') | |
| [CompletionResult]::new('--raw-field', 'raw-field', [CompletionResultType]::ParameterName, 'Add a string parameter') | |
| [CompletionResult]::new('--silent', 'silent', [CompletionResultType]::ParameterName, 'Do not print the response body') | |
| break | |
| } | |
| 'gh;auth' { | |
| [CompletionResult]::new('login', 'login', [CompletionResultType]::ParameterValue, 'Authenticate with a GitHub host') | |
| [CompletionResult]::new('logout', 'logout', [CompletionResultType]::ParameterValue, 'Log out of a GitHub host') | |
| [CompletionResult]::new('refresh', 'refresh', [CompletionResultType]::ParameterValue, 'Refresh stored authentication credentials') | |
| [CompletionResult]::new('status', 'status', [CompletionResultType]::ParameterValue, 'View authentication status') | |
| break | |
| } | |
| 'gh;auth;login' { | |
| [CompletionResult]::new('-h', 'h', [CompletionResultType]::ParameterName, 'The hostname of the GitHub instance to authenticate with') | |
| [CompletionResult]::new('--hostname', 'hostname', [CompletionResultType]::ParameterName, 'The hostname of the GitHub instance to authenticate with') | |
| [CompletionResult]::new('-s', 's', [CompletionResultType]::ParameterName, 'Additional authentication scopes for gh to have') | |
| [CompletionResult]::new('--scopes', 'scopes', [CompletionResultType]::ParameterName, 'Additional authentication scopes for gh to have') | |
| [CompletionResult]::new('-w', 'w', [CompletionResultType]::ParameterName, 'Open a browser to authenticate') | |
| [CompletionResult]::new('--web', 'web', [CompletionResultType]::ParameterName, 'Open a browser to authenticate') | |
| [CompletionResult]::new('--with-token', 'with-token', [CompletionResultType]::ParameterName, 'Read token from standard input') | |
| break | |
| } | |
| 'gh;auth;logout' { | |
| [CompletionResult]::new('-h', 'h', [CompletionResultType]::ParameterName, 'The hostname of the GitHub instance to log out of') | |
| [CompletionResult]::new('--hostname', 'hostname', [CompletionResultType]::ParameterName, 'The hostname of the GitHub instance to log out of') | |
| break | |
| } | |
| 'gh;auth;refresh' { | |
| [CompletionResult]::new('-h', 'h', [CompletionResultType]::ParameterName, 'The GitHub host to use for authentication') | |
| [CompletionResult]::new('--hostname', 'hostname', [CompletionResultType]::ParameterName, 'The GitHub host to use for authentication') | |
| [CompletionResult]::new('-s', 's', [CompletionResultType]::ParameterName, 'Additional authentication scopes for gh to have') | |
| [CompletionResult]::new('--scopes', 'scopes', [CompletionResultType]::ParameterName, 'Additional authentication scopes for gh to have') | |
| break | |
| } | |
| 'gh;auth;status' { | |
| [CompletionResult]::new('-h', 'h', [CompletionResultType]::ParameterName, 'Check a specific hostname''s auth status') | |
| [CompletionResult]::new('--hostname', 'hostname', [CompletionResultType]::ParameterName, 'Check a specific hostname''s auth status') | |
| [CompletionResult]::new('-t', 't', [CompletionResultType]::ParameterName, 'Display the auth token') | |
| [CompletionResult]::new('--show-token', 'show-token', [CompletionResultType]::ParameterName, 'Display the auth token') | |
| break | |
| } | |
| 'gh;completion' { | |
| [CompletionResult]::new('--help', 'help', [CompletionResultType]::ParameterName, 'Show help for command') | |
| [CompletionResult]::new('-s', 's', [CompletionResultType]::ParameterName, 'Shell type: {bash|zsh|fish|powershell}') | |
| [CompletionResult]::new('--shell', 'shell', [CompletionResultType]::ParameterName, 'Shell type: {bash|zsh|fish|powershell}') | |
| break | |
| } | |
| 'gh;config' { | |
| [CompletionResult]::new('get', 'get', [CompletionResultType]::ParameterValue, 'Print the value of a given configuration key') | |
| [CompletionResult]::new('set', 'set', [CompletionResultType]::ParameterValue, 'Update configuration with a value for the given key') | |
| break | |
| } | |
| 'gh;config;get' { | |
| [CompletionResult]::new('-h', 'h', [CompletionResultType]::ParameterName, 'Get per-host setting') | |
| [CompletionResult]::new('--host', 'host', [CompletionResultType]::ParameterName, 'Get per-host setting') | |
| break | |
| } | |
| 'gh;config;set' { | |
| [CompletionResult]::new('-h', 'h', [CompletionResultType]::ParameterName, 'Set per-host setting') | |
| [CompletionResult]::new('--host', 'host', [CompletionResultType]::ParameterName, 'Set per-host setting') | |
| break | |
| } | |
| 'gh;credits' { | |
| [CompletionResult]::new('-s', 's', [CompletionResultType]::ParameterName, 'Print a static version of the credits') | |
| [CompletionResult]::new('--static', 'static', [CompletionResultType]::ParameterName, 'Print a static version of the credits') | |
| break | |
| } | |
| 'gh;environment' { | |
| break | |
| } | |
| 'gh;gist' { | |
| [CompletionResult]::new('create', 'create', [CompletionResultType]::ParameterValue, 'Create a new gist') | |
| [CompletionResult]::new('edit', 'edit', [CompletionResultType]::ParameterValue, 'Edit one of your gists') | |
| [CompletionResult]::new('list', 'list', [CompletionResultType]::ParameterValue, 'List your gists') | |
| [CompletionResult]::new('view', 'view', [CompletionResultType]::ParameterValue, 'View a gist') | |
| break | |
| } | |
| 'gh;gist;create' { | |
| [CompletionResult]::new('-d', 'd', [CompletionResultType]::ParameterName, 'A description for this gist') | |
| [CompletionResult]::new('--desc', 'desc', [CompletionResultType]::ParameterName, 'A description for this gist') | |
| [CompletionResult]::new('-f', 'f', [CompletionResultType]::ParameterName, 'Provide a filename to be used when reading from STDIN') | |
| [CompletionResult]::new('--filename', 'filename', [CompletionResultType]::ParameterName, 'Provide a filename to be used when reading from STDIN') | |
| [CompletionResult]::new('-p', 'p', [CompletionResultType]::ParameterName, 'List the gist publicly (default: private)') | |
| [CompletionResult]::new('--public', 'public', [CompletionResultType]::ParameterName, 'List the gist publicly (default: private)') | |
| break | |
| } | |
| 'gh;gist;edit' { | |
| [CompletionResult]::new('-f', 'f', [CompletionResultType]::ParameterName, 'a specific file to edit') | |
| [CompletionResult]::new('--filename', 'filename', [CompletionResultType]::ParameterName, 'a specific file to edit') | |
| break | |
| } | |
| 'gh;gist;list' { | |
| [CompletionResult]::new('-L', 'L', [CompletionResultType]::ParameterName, 'Maximum number of gists to fetch') | |
| [CompletionResult]::new('--limit', 'limit', [CompletionResultType]::ParameterName, 'Maximum number of gists to fetch') | |
| [CompletionResult]::new('--public', 'public', [CompletionResultType]::ParameterName, 'Show only public gists') | |
| [CompletionResult]::new('--secret', 'secret', [CompletionResultType]::ParameterName, 'Show only secret gists') | |
| break | |
| } | |
| 'gh;gist;view' { | |
| [CompletionResult]::new('-f', 'f', [CompletionResultType]::ParameterName, 'display a single file of the gist') | |
| [CompletionResult]::new('--filename', 'filename', [CompletionResultType]::ParameterName, 'display a single file of the gist') | |
| [CompletionResult]::new('-r', 'r', [CompletionResultType]::ParameterName, 'do not try and render markdown') | |
| [CompletionResult]::new('--raw', 'raw', [CompletionResultType]::ParameterName, 'do not try and render markdown') | |
| [CompletionResult]::new('-w', 'w', [CompletionResultType]::ParameterName, 'open gist in browser') | |
| [CompletionResult]::new('--web', 'web', [CompletionResultType]::ParameterName, 'open gist in browser') | |
| break | |
| } | |
| 'gh;help' { | |
| break | |
| } | |
| 'gh;issue' { | |
| [CompletionResult]::new('close', 'close', [CompletionResultType]::ParameterValue, 'Close issue') | |
| [CompletionResult]::new('create', 'create', [CompletionResultType]::ParameterValue, 'Create a new issue') | |
| [CompletionResult]::new('list', 'list', [CompletionResultType]::ParameterValue, 'List and filter issues in this repository') | |
| [CompletionResult]::new('reopen', 'reopen', [CompletionResultType]::ParameterValue, 'Reopen issue') | |
| [CompletionResult]::new('status', 'status', [CompletionResultType]::ParameterValue, 'Show status of relevant issues') | |
| [CompletionResult]::new('view', 'view', [CompletionResultType]::ParameterValue, 'View an issue') | |
| break | |
| } | |
| 'gh;issue;close' { | |
| break | |
| } | |
| 'gh;issue;create' { | |
| [CompletionResult]::new('-a', 'a', [CompletionResultType]::ParameterName, 'Assign people by their `login`') | |
| [CompletionResult]::new('--assignee', 'assignee', [CompletionResultType]::ParameterName, 'Assign people by their `login`') | |
| [CompletionResult]::new('-b', 'b', [CompletionResultType]::ParameterName, 'Supply a body. Will prompt for one otherwise.') | |
| [CompletionResult]::new('--body', 'body', [CompletionResultType]::ParameterName, 'Supply a body. Will prompt for one otherwise.') | |
| [CompletionResult]::new('-l', 'l', [CompletionResultType]::ParameterName, 'Add labels by `name`') | |
| [CompletionResult]::new('--label', 'label', [CompletionResultType]::ParameterName, 'Add labels by `name`') | |
| [CompletionResult]::new('-m', 'm', [CompletionResultType]::ParameterName, 'Add the issue to a milestone by `name`') | |
| [CompletionResult]::new('--milestone', 'milestone', [CompletionResultType]::ParameterName, 'Add the issue to a milestone by `name`') | |
| [CompletionResult]::new('-p', 'p', [CompletionResultType]::ParameterName, 'Add the issue to projects by `name`') | |
| [CompletionResult]::new('--project', 'project', [CompletionResultType]::ParameterName, 'Add the issue to projects by `name`') | |
| [CompletionResult]::new('-t', 't', [CompletionResultType]::ParameterName, 'Supply a title. Will prompt for one otherwise.') | |
| [CompletionResult]::new('--title', 'title', [CompletionResultType]::ParameterName, 'Supply a title. Will prompt for one otherwise.') | |
| [CompletionResult]::new('-w', 'w', [CompletionResultType]::ParameterName, 'Open the browser to create an issue') | |
| [CompletionResult]::new('--web', 'web', [CompletionResultType]::ParameterName, 'Open the browser to create an issue') | |
| break | |
| } | |
| 'gh;issue;list' { | |
| [CompletionResult]::new('-a', 'a', [CompletionResultType]::ParameterName, 'Filter by assignee') | |
| [CompletionResult]::new('--assignee', 'assignee', [CompletionResultType]::ParameterName, 'Filter by assignee') | |
| [CompletionResult]::new('-A', 'A', [CompletionResultType]::ParameterName, 'Filter by author') | |
| [CompletionResult]::new('--author', 'author', [CompletionResultType]::ParameterName, 'Filter by author') | |
| [CompletionResult]::new('-l', 'l', [CompletionResultType]::ParameterName, 'Filter by labels') | |
| [CompletionResult]::new('--label', 'label', [CompletionResultType]::ParameterName, 'Filter by labels') | |
| [CompletionResult]::new('-L', 'L', [CompletionResultType]::ParameterName, 'Maximum number of issues to fetch') | |
| [CompletionResult]::new('--limit', 'limit', [CompletionResultType]::ParameterName, 'Maximum number of issues to fetch') | |
| [CompletionResult]::new('--mention', 'mention', [CompletionResultType]::ParameterName, 'Filter by mention') | |
| [CompletionResult]::new('-m', 'm', [CompletionResultType]::ParameterName, 'Filter by milestone `number` or `title`') | |
| [CompletionResult]::new('--milestone', 'milestone', [CompletionResultType]::ParameterName, 'Filter by milestone `number` or `title`') | |
| [CompletionResult]::new('-s', 's', [CompletionResultType]::ParameterName, 'Filter by state: {open|closed|all}') | |
| [CompletionResult]::new('--state', 'state', [CompletionResultType]::ParameterName, 'Filter by state: {open|closed|all}') | |
| [CompletionResult]::new('-w', 'w', [CompletionResultType]::ParameterName, 'Open the browser to list the issue(s)') | |
| [CompletionResult]::new('--web', 'web', [CompletionResultType]::ParameterName, 'Open the browser to list the issue(s)') | |
| break | |
| } | |
| 'gh;issue;reopen' { | |
| break | |
| } | |
| 'gh;issue;status' { | |
| break | |
| } | |
| 'gh;issue;view' { | |
| [CompletionResult]::new('-w', 'w', [CompletionResultType]::ParameterName, 'Open an issue in the browser') | |
| [CompletionResult]::new('--web', 'web', [CompletionResultType]::ParameterName, 'Open an issue in the browser') | |
| break | |
| } | |
| 'gh;pr' { | |
| [CompletionResult]::new('checkout', 'checkout', [CompletionResultType]::ParameterValue, 'Check out a pull request in git') | |
| [CompletionResult]::new('checks', 'checks', [CompletionResultType]::ParameterValue, 'Show CI status for a single pull request') | |
| [CompletionResult]::new('close', 'close', [CompletionResultType]::ParameterValue, 'Close a pull request') | |
| [CompletionResult]::new('create', 'create', [CompletionResultType]::ParameterValue, 'Create a pull request') | |
| [CompletionResult]::new('diff', 'diff', [CompletionResultType]::ParameterValue, 'View changes in a pull request') | |
| [CompletionResult]::new('list', 'list', [CompletionResultType]::ParameterValue, 'List and filter pull requests in this repository') | |
| [CompletionResult]::new('merge', 'merge', [CompletionResultType]::ParameterValue, 'Merge a pull request') | |
| [CompletionResult]::new('ready', 'ready', [CompletionResultType]::ParameterValue, 'Mark a pull request as ready for review') | |
| [CompletionResult]::new('reopen', 'reopen', [CompletionResultType]::ParameterValue, 'Reopen a pull request') | |
| [CompletionResult]::new('review', 'review', [CompletionResultType]::ParameterValue, 'Add a review to a pull request') | |
| [CompletionResult]::new('status', 'status', [CompletionResultType]::ParameterValue, 'Show status of relevant pull requests') | |
| [CompletionResult]::new('view', 'view', [CompletionResultType]::ParameterValue, 'View a pull request') | |
| break | |
| } | |
| 'gh;pr;checkout' { | |
| [CompletionResult]::new('--recurse-submodules', 'recurse-submodules', [CompletionResultType]::ParameterName, 'Update all active submodules (recursively)') | |
| break | |
| } | |
| 'gh;pr;checks' { | |
| break | |
| } | |
| 'gh;pr;close' { | |
| [CompletionResult]::new('-d', 'd', [CompletionResultType]::ParameterName, 'Delete the local and remote branch after close') | |
| [CompletionResult]::new('--delete-branch', 'delete-branch', [CompletionResultType]::ParameterName, 'Delete the local and remote branch after close') | |
| break | |
| } | |
| 'gh;pr;create' { | |
| [CompletionResult]::new('-a', 'a', [CompletionResultType]::ParameterName, 'Assign people by their `login`') | |
| [CompletionResult]::new('--assignee', 'assignee', [CompletionResultType]::ParameterName, 'Assign people by their `login`') | |
| [CompletionResult]::new('-B', 'B', [CompletionResultType]::ParameterName, 'The `branch` into which you want your code merged') | |
| [CompletionResult]::new('--base', 'base', [CompletionResultType]::ParameterName, 'The `branch` into which you want your code merged') | |
| [CompletionResult]::new('-b', 'b', [CompletionResultType]::ParameterName, 'Body for the pull request') | |
| [CompletionResult]::new('--body', 'body', [CompletionResultType]::ParameterName, 'Body for the pull request') | |
| [CompletionResult]::new('-d', 'd', [CompletionResultType]::ParameterName, 'Mark pull request as a draft') | |
| [CompletionResult]::new('--draft', 'draft', [CompletionResultType]::ParameterName, 'Mark pull request as a draft') | |
| [CompletionResult]::new('-f', 'f', [CompletionResultType]::ParameterName, 'Do not prompt for title/body and just use commit info') | |
| [CompletionResult]::new('--fill', 'fill', [CompletionResultType]::ParameterName, 'Do not prompt for title/body and just use commit info') | |
| [CompletionResult]::new('-H', 'H', [CompletionResultType]::ParameterName, 'The `branch` that contains commits for your pull request (default: current branch)') | |
| [CompletionResult]::new('--head', 'head', [CompletionResultType]::ParameterName, 'The `branch` that contains commits for your pull request (default: current branch)') | |
| [CompletionResult]::new('-l', 'l', [CompletionResultType]::ParameterName, 'Add labels by `name`') | |
| [CompletionResult]::new('--label', 'label', [CompletionResultType]::ParameterName, 'Add labels by `name`') | |
| [CompletionResult]::new('-m', 'm', [CompletionResultType]::ParameterName, 'Add the pull request to a milestone by `name`') | |
| [CompletionResult]::new('--milestone', 'milestone', [CompletionResultType]::ParameterName, 'Add the pull request to a milestone by `name`') | |
| [CompletionResult]::new('-p', 'p', [CompletionResultType]::ParameterName, 'Add the pull request to projects by `name`') | |
| [CompletionResult]::new('--project', 'project', [CompletionResultType]::ParameterName, 'Add the pull request to projects by `name`') | |
| [CompletionResult]::new('-r', 'r', [CompletionResultType]::ParameterName, 'Request reviews from people by their `login`') | |
| [CompletionResult]::new('--reviewer', 'reviewer', [CompletionResultType]::ParameterName, 'Request reviews from people by their `login`') | |
| [CompletionResult]::new('-t', 't', [CompletionResultType]::ParameterName, 'Title for the pull request') | |
| [CompletionResult]::new('--title', 'title', [CompletionResultType]::ParameterName, 'Title for the pull request') | |
| [CompletionResult]::new('-w', 'w', [CompletionResultType]::ParameterName, 'Open the web browser to create a pull request') | |
| [CompletionResult]::new('--web', 'web', [CompletionResultType]::ParameterName, 'Open the web browser to create a pull request') | |
| break | |
| } | |
| 'gh;pr;diff' { | |
| [CompletionResult]::new('--color', 'color', [CompletionResultType]::ParameterName, 'Use color in diff output: {always|never|auto}') | |
| break | |
| } | |
| 'gh;pr;list' { | |
| [CompletionResult]::new('-a', 'a', [CompletionResultType]::ParameterName, 'Filter by assignee') | |
| [CompletionResult]::new('--assignee', 'assignee', [CompletionResultType]::ParameterName, 'Filter by assignee') | |
| [CompletionResult]::new('-B', 'B', [CompletionResultType]::ParameterName, 'Filter by base branch') | |
| [CompletionResult]::new('--base', 'base', [CompletionResultType]::ParameterName, 'Filter by base branch') | |
| [CompletionResult]::new('-l', 'l', [CompletionResultType]::ParameterName, 'Filter by labels') | |
| [CompletionResult]::new('--label', 'label', [CompletionResultType]::ParameterName, 'Filter by labels') | |
| [CompletionResult]::new('-L', 'L', [CompletionResultType]::ParameterName, 'Maximum number of items to fetch') | |
| [CompletionResult]::new('--limit', 'limit', [CompletionResultType]::ParameterName, 'Maximum number of items to fetch') | |
| [CompletionResult]::new('-s', 's', [CompletionResultType]::ParameterName, 'Filter by state: {open|closed|merged|all}') | |
| [CompletionResult]::new('--state', 'state', [CompletionResultType]::ParameterName, 'Filter by state: {open|closed|merged|all}') | |
| [CompletionResult]::new('-w', 'w', [CompletionResultType]::ParameterName, 'Open the browser to list the pull requests') | |
| [CompletionResult]::new('--web', 'web', [CompletionResultType]::ParameterName, 'Open the browser to list the pull requests') | |
| break | |
| } | |
| 'gh;pr;merge' { | |
| [CompletionResult]::new('-d', 'd', [CompletionResultType]::ParameterName, 'Delete the local and remote branch after merge') | |
| [CompletionResult]::new('--delete-branch', 'delete-branch', [CompletionResultType]::ParameterName, 'Delete the local and remote branch after merge') | |
| [CompletionResult]::new('-m', 'm', [CompletionResultType]::ParameterName, 'Merge the commits with the base branch') | |
| [CompletionResult]::new('--merge', 'merge', [CompletionResultType]::ParameterName, 'Merge the commits with the base branch') | |
| [CompletionResult]::new('-r', 'r', [CompletionResultType]::ParameterName, 'Rebase the commits onto the base branch') | |
| [CompletionResult]::new('--rebase', 'rebase', [CompletionResultType]::ParameterName, 'Rebase the commits onto the base branch') | |
| [CompletionResult]::new('-s', 's', [CompletionResultType]::ParameterName, 'Squash the commits into one commit and merge it into the base branch') | |
| [CompletionResult]::new('--squash', 'squash', [CompletionResultType]::ParameterName, 'Squash the commits into one commit and merge it into the base branch') | |
| break | |
| } | |
| 'gh;pr;ready' { | |
| break | |
| } | |
| 'gh;pr;reopen' { | |
| break | |
| } | |
| 'gh;pr;review' { | |
| [CompletionResult]::new('-a', 'a', [CompletionResultType]::ParameterName, 'Approve pull request') | |
| [CompletionResult]::new('--approve', 'approve', [CompletionResultType]::ParameterName, 'Approve pull request') | |
| [CompletionResult]::new('-b', 'b', [CompletionResultType]::ParameterName, 'Specify the body of a review') | |
| [CompletionResult]::new('--body', 'body', [CompletionResultType]::ParameterName, 'Specify the body of a review') | |
| [CompletionResult]::new('-c', 'c', [CompletionResultType]::ParameterName, 'Comment on a pull request') | |
| [CompletionResult]::new('--comment', 'comment', [CompletionResultType]::ParameterName, 'Comment on a pull request') | |
| [CompletionResult]::new('-r', 'r', [CompletionResultType]::ParameterName, 'Request changes on a pull request') | |
| [CompletionResult]::new('--request-changes', 'request-changes', [CompletionResultType]::ParameterName, 'Request changes on a pull request') | |
| break | |
| } | |
| 'gh;pr;status' { | |
| break | |
| } | |
| 'gh;pr;view' { | |
| [CompletionResult]::new('-w', 'w', [CompletionResultType]::ParameterName, 'Open a pull request in the browser') | |
| [CompletionResult]::new('--web', 'web', [CompletionResultType]::ParameterName, 'Open a pull request in the browser') | |
| break | |
| } | |
| 'gh;release' { | |
| [CompletionResult]::new('create', 'create', [CompletionResultType]::ParameterValue, 'Create a new release') | |
| [CompletionResult]::new('delete', 'delete', [CompletionResultType]::ParameterValue, 'Delete a release') | |
| [CompletionResult]::new('download', 'download', [CompletionResultType]::ParameterValue, 'Download release assets') | |
| [CompletionResult]::new('list', 'list', [CompletionResultType]::ParameterValue, 'List releases in a repository') | |
| [CompletionResult]::new('upload', 'upload', [CompletionResultType]::ParameterValue, 'Upload assets to a release') | |
| [CompletionResult]::new('view', 'view', [CompletionResultType]::ParameterValue, 'View information about a release') | |
| break | |
| } | |
| 'gh;release;create' { | |
| [CompletionResult]::new('-d', 'd', [CompletionResultType]::ParameterName, 'Save the release as a draft instead of publishing it') | |
| [CompletionResult]::new('--draft', 'draft', [CompletionResultType]::ParameterName, 'Save the release as a draft instead of publishing it') | |
| [CompletionResult]::new('-n', 'n', [CompletionResultType]::ParameterName, 'Release notes') | |
| [CompletionResult]::new('--notes', 'notes', [CompletionResultType]::ParameterName, 'Release notes') | |
| [CompletionResult]::new('-F', 'F', [CompletionResultType]::ParameterName, 'Read release notes from `file`') | |
| [CompletionResult]::new('--notes-file', 'notes-file', [CompletionResultType]::ParameterName, 'Read release notes from `file`') | |
| [CompletionResult]::new('-p', 'p', [CompletionResultType]::ParameterName, 'Mark the release as a prerelease') | |
| [CompletionResult]::new('--prerelease', 'prerelease', [CompletionResultType]::ParameterName, 'Mark the release as a prerelease') | |
| [CompletionResult]::new('--target', 'target', [CompletionResultType]::ParameterName, 'Target `branch` or commit SHA (default: main branch)') | |
| [CompletionResult]::new('-t', 't', [CompletionResultType]::ParameterName, 'Release title') | |
| [CompletionResult]::new('--title', 'title', [CompletionResultType]::ParameterName, 'Release title') | |
| break | |
| } | |
| 'gh;release;delete' { | |
| [CompletionResult]::new('-y', 'y', [CompletionResultType]::ParameterName, 'Skip the confirmation prompt') | |
| [CompletionResult]::new('--yes', 'yes', [CompletionResultType]::ParameterName, 'Skip the confirmation prompt') | |
| break | |
| } | |
| 'gh;release;download' { | |
| [CompletionResult]::new('-D', 'D', [CompletionResultType]::ParameterName, 'The directory to download files into') | |
| [CompletionResult]::new('--dir', 'dir', [CompletionResultType]::ParameterName, 'The directory to download files into') | |
| [CompletionResult]::new('-p', 'p', [CompletionResultType]::ParameterName, 'Download only assets that match a glob pattern') | |
| [CompletionResult]::new('--pattern', 'pattern', [CompletionResultType]::ParameterName, 'Download only assets that match a glob pattern') | |
| break | |
| } | |
| 'gh;release;list' { | |
| [CompletionResult]::new('-L', 'L', [CompletionResultType]::ParameterName, 'Maximum number of items to fetch') | |
| [CompletionResult]::new('--limit', 'limit', [CompletionResultType]::ParameterName, 'Maximum number of items to fetch') | |
| break | |
| } | |
| 'gh;release;upload' { | |
| [CompletionResult]::new('--clobber', 'clobber', [CompletionResultType]::ParameterName, 'Overwrite existing assets of the same name') | |
| break | |
| } | |
| 'gh;release;view' { | |
| [CompletionResult]::new('-w', 'w', [CompletionResultType]::ParameterName, 'Open the release in the browser') | |
| [CompletionResult]::new('--web', 'web', [CompletionResultType]::ParameterName, 'Open the release in the browser') | |
| break | |
| } | |
| 'gh;repo' { | |
| [CompletionResult]::new('clone', 'clone', [CompletionResultType]::ParameterValue, 'Clone a repository locally') | |
| [CompletionResult]::new('create', 'create', [CompletionResultType]::ParameterValue, 'Create a new repository') | |
| [CompletionResult]::new('credits', 'credits', [CompletionResultType]::ParameterValue, 'View credits for a repository') | |
| [CompletionResult]::new('fork', 'fork', [CompletionResultType]::ParameterValue, 'Create a fork of a repository') | |
| [CompletionResult]::new('garden', 'garden', [CompletionResultType]::ParameterValue, 'Explore a git repository as a garden') | |
| [CompletionResult]::new('view', 'view', [CompletionResultType]::ParameterValue, 'View a repository') | |
| break | |
| } | |
| 'gh;repo;clone' { | |
| break | |
| } | |
| 'gh;repo;create' { | |
| [CompletionResult]::new('-y', 'y', [CompletionResultType]::ParameterName, 'Confirm the submission directly') | |
| [CompletionResult]::new('--confirm', 'confirm', [CompletionResultType]::ParameterName, 'Confirm the submission directly') | |
| [CompletionResult]::new('-d', 'd', [CompletionResultType]::ParameterName, 'Description of repository') | |
| [CompletionResult]::new('--description', 'description', [CompletionResultType]::ParameterName, 'Description of repository') | |
| [CompletionResult]::new('--enable-issues', 'enable-issues', [CompletionResultType]::ParameterName, 'Enable issues in the new repository') | |
| [CompletionResult]::new('--enable-wiki', 'enable-wiki', [CompletionResultType]::ParameterName, 'Enable wiki in the new repository') | |
| [CompletionResult]::new('-h', 'h', [CompletionResultType]::ParameterName, 'Repository home page URL') | |
| [CompletionResult]::new('--homepage', 'homepage', [CompletionResultType]::ParameterName, 'Repository home page URL') | |
| [CompletionResult]::new('--internal', 'internal', [CompletionResultType]::ParameterName, 'Make the new repository internal') | |
| [CompletionResult]::new('--private', 'private', [CompletionResultType]::ParameterName, 'Make the new repository private') | |
| [CompletionResult]::new('--public', 'public', [CompletionResultType]::ParameterName, 'Make the new repository public') | |
| [CompletionResult]::new('-t', 't', [CompletionResultType]::ParameterName, 'The name of the organization team to be granted access') | |
| [CompletionResult]::new('--team', 'team', [CompletionResultType]::ParameterName, 'The name of the organization team to be granted access') | |
| [CompletionResult]::new('-p', 'p', [CompletionResultType]::ParameterName, 'Make the new repository based on a template repository') | |
| [CompletionResult]::new('--template', 'template', [CompletionResultType]::ParameterName, 'Make the new repository based on a template repository') | |
| break | |
| } | |
| 'gh;repo;credits' { | |
| [CompletionResult]::new('-s', 's', [CompletionResultType]::ParameterName, 'Print a static version of the credits') | |
| [CompletionResult]::new('--static', 'static', [CompletionResultType]::ParameterName, 'Print a static version of the credits') | |
| break | |
| } | |
| 'gh;repo;fork' { | |
| [CompletionResult]::new('--clone', 'clone', [CompletionResultType]::ParameterName, 'Clone the fork {true|false}') | |
| [CompletionResult]::new('--remote', 'remote', [CompletionResultType]::ParameterName, 'Add remote for fork {true|false}') | |
| break | |
| } | |
| 'gh;repo;garden' { | |
| break | |
| } | |
| 'gh;repo;view' { | |
| [CompletionResult]::new('-b', 'b', [CompletionResultType]::ParameterName, 'View a specific branch of the repository') | |
| [CompletionResult]::new('--branch', 'branch', [CompletionResultType]::ParameterName, 'View a specific branch of the repository') | |
| [CompletionResult]::new('-w', 'w', [CompletionResultType]::ParameterName, 'Open a repository in the browser') | |
| [CompletionResult]::new('--web', 'web', [CompletionResultType]::ParameterName, 'Open a repository in the browser') | |
| break | |
| } | |
| 'gh;version' { | |
| break | |
| } | |
| }) | |
| $completions.Where{ $_.CompletionText -like "$wordToComplete*" } | | |
| Sort-Object -Property ListItemText | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment