Get-GitPubRelease.ps.ps1
function Get-GitPubRelease { <# .SYNOPSIS Gets GitHub Releases as Posts .DESCRIPTION Gets GitHub Releases as Posts. The release content will be considered the body of the post. #> [Reflection.AssemblyMetaData("GitPub.Source",$true)] param( # The GitHub Username or Organization. [Alias('Owner')] [string] $UserName, # The repository [Parameter(Mandatory)] [Alias('Repo')] [string] $Repository, # One or more tags used for releases. # By default, `release`. [string[]] $ReleaseTag = 'release', # The GitHub Access token. # If this is not provided, $env:GITHUB_TOKEN is present, $env:GITHUB_TOKEN will be used. [Alias('PersonalAccessToken','GitHubPat', 'PAT')] [string] $GitHubAccessToken ) process { $invokeSplat = @{ Headers = @{} } if (-not $GitHubAccessToken -and $env:GITHUB_TOKEN) { $GitHubAccessToken = $env:GITHUB_TOKEN } if ($GitHubAccessToken) { $invokeSplat.Headers.Authentication = "Bearer $gitHubAccessToken" } if ($Repository -like '*/*' -and -not $UserName) { $UserName, $Repository = $Repository -split '\/', 2 } if (-not $UserName) { Write-Error "Must Provide -UserName or provide -Repository in the form username/repository" return } $releases = https://api.github.com/repos/$UserName/$repository/releases @invokeSplat foreach ($rel in $releases) { $rel | Add-Member NoteProperty 'Tags' @($ReleaseTag) -Force [decorate('GitPub.Post.Release',Clear)]$rel [decorate('GitPub.Post',PassThru)]$rel } } } |