Functions/Public/New-GitHubProjectCard.ps1
function New-GitHubProjectCard { <# .SYNOPSIS Creates a new GitHub project card. .INPUTS PSGitHub.Issue. You can pipe in an issue from e.g. Get-GitHubIssue. PSGitHub.PullRequest. You can pipe in an issue from e.g. Get-GitHubPullRequest. PSGitHub.ProjectColumn. You can pipe in a column from Get-GitHubProjectColumn. #> [CmdletBinding(SupportsShouldProcess)] [OutputType('PSGitHub.ProjectCard')] param( [Parameter(Mandatory, ValueFromPipelineByPropertyName)] [int] $ColumnId, # Creates a simple card with a note. [Parameter(Mandatory, ParameterSetName = 'Note')] [string] $Note, # Creates a card for an issue or pull request. [Parameter(Mandatory, ParameterSetName = 'ContentType', ValueFromPipelineByPropertyName)] [ValidateSet('Issue', 'PullRequest')] [Alias('Type')] [string] $ContentType, # The ID of the issue or pull request to create the card for. [Parameter(Mandatory, ParameterSetName = 'ContentType', ValueFromPipelineByPropertyName)] [Alias('Id')] [int] $ContentId, # Optional base URL of the GitHub API, for example "https://ghe.mycompany.com/api/v3/" (including the trailing slash). # Defaults to "https://api.github.com" [Uri] $BaseUri = [Uri]::new('https://api.github.com'), [Security.SecureString] $Token ) process { $body = switch ($PSCmdlet.ParameterSetName) { 'Note' { @{ note = $Note } } 'ContentType' { @{ content_type = $ContentType content_id = $ContentId } } } $headers = @{ Accept = 'application/vnd.github.inertia-preview+json' } $shouldProcessCaption = "Creating new GitHub project card" $shouldProcessDescription = "Creating new GitHub project card in column $ColumnId" $shouldProcessWarning = "Do you want to create a new GitHub project card in column $ColumnId?" if ($PSCmdlet.ShouldProcess($shouldProcessDescription, $shouldProcessWarning, $shouldProcessCaption)) { Invoke-GitHubApi -Method POST "projects/columns/$ColumnId/cards" -Headers $headers -Body ($body | ConvertTo-Json) -BaseUri $BaseUri -Token $Token | ForEach-Object { $_.PSTypeNames.Insert(0, 'PSGitHub.ProjectCard') $_.Creator.PSTypeNames.Insert(0, 'PSGitHub.User') $_ } } } } |