Functions/Public/Get-GitHubRelease.ps1
function Get-GitHubRelease { <# .SYNOPSIS This command gets the github .DESCRIPTION This command gets the id of a release via the following 3 Parameter: 1. id -- the release id 2. tag name -- the release tag name 3. latest -- the latest release .PARAMETER Owner the Owner of the repo to retrieve the releases, defaults to the current authenticated user. .PARAMETER Repository The repo that you want to retrieve the release .PARAMETER Id the Id of the release to retrieve, optional (cannot be used together with 'Latest' or 'TagName') .PARAMETER TagName the TagName of the release to retrieve, optional (cannot be used together with 'Id' or 'Latest') .PARAMETER Latest when this switch is on, the command will retrieve the latest release, optional (cannot be used together with 'Id' or 'TagName') .EXAMPLE # get the latest release from soimort/you-get C:\PS> Get-GithubRelease -Owner soimort -Repository you-get -Latest # get all the release from PowerShell/vscode-powershell C:\PS> Get-GithubRelease -Owner Powershell -Repository vscode-powershell # get the version 'v0.1.0' release from PowerShell/vscode-powershell C:\PS> Get-GithubRelease -Owner Powershell -Repository vscode-powershell -TagName v0.1.0 # get the release with id 2161075 from PowerShell/vscode-powershell C:\PS> Get-GithubRelease -Owner Powershell -Repository vscode-powershell -Id 2161075 .NOTES you cannot use parameter 'Id', 'Latest', 'TagName' together #> [CmdletBinding(DefaultParameterSetName = '__AllParameterSets')] param( [Parameter(Mandatory = $false)] [String] $Owner, [Parameter(Mandatory = $true)] [string] $Repository, [Parameter(Mandatory=$false, ParameterSetName = 'Id')] [String] $Id, [Parameter(Mandatory=$false, ParameterSetName = 'TagName')] [String] $TagName, [Parameter(Mandatory=$false, ParameterSetName = 'Latest')] [Switch] $Latest ) begin { } process { # set the rest method switch ($PSCmdlet.ParameterSetName) { 'Id' { $restMethod = "repos/$Owner/$Repository/releases/$Id"; break; } 'TagName' { $restMethod = "repos/$Owner/$Repository/releases/tags/$TagName"; break; } 'Latest' { $restMethod = "repos/$Owner/$Repository/releases/latest"; break; } Default { $restMethod = "repos/$Owner/$Repository/releases"; break; } } # set the API call parameter $apiCall = @{ RestMethod = $restMethod Method = 'Get' } } end { # invoke the rest api call Invoke-GitHubApi @apiCall } } |