AdoBauTaskGen.psm1
function ConvertFrom-MarkdownToHtml { [CmdletBinding()] param ( [Parameter(Mandatory)] [string] $Markdown ) $Uri = "https://api.github.com/markdown" $ApiRequestBody = @{ text = $Markdown mode = "markdown" } $Response = Invoke-WebRequest -Uri $Uri -Method Post -Body ($ApiRequestBody | ConvertTo-Json) if ($Response.StatusCode -eq 200) { return $Response.Content } else { return $Markdown } } function Get-FullTitle { [CmdletBinding(DefaultParameterSetName = "Frequency")] param ( [Parameter(Mandatory = $true, ParameterSetName = "Frequency")] [Parameter(Mandatory = $true, ParameterSetName = "Specific")] [string] $Title, [Parameter(Mandatory = $true, ParameterSetName = "Frequency")] [ValidateSet("Daily","Weekly","Monthly","Quarterly","Half-Yearly","Yearly")] [string] $Frequency, [Parameter(Mandatory = $true, ParameterSetName = "Specific")] [int] $RunDate ) $Today = Get-Date if ($RunDate) { $CompleteTitle ="$RunDate $(Get-Date $Today -UFormat %b): $Title" } elseif ($Frequency -eq "Daily") { $CompleteTitle = "$($Today.DayOfWeek): $Title" } elseif ($Frequency -eq "Weekly") { $CompleteTitle ="Week $(Get-Date $Today -UFormat %V): $Title" } elseif ($Frequency -eq "Monthly") { $CompleteTitle ="$(Get-Date $Today -UFormat %B): $Title" } elseif ($Frequency -eq "Quarterly") { $CompleteTitle ="Q$([math]::Ceiling($Today.Month / 3)): $Title" } elseif ($Frequency -eq "Half-Yearly") { $CompleteTitle ="H$([math]::Ceiling($Today.Month / 6)): $Title" } elseif ($Frequency -eq "Yearly") { $CompleteTitle ="$($Today.Year): $Title" } return $CompleteTitle } function Add-AdoBauTask { [CmdletBinding(DefaultParameterSetName = "Frequency")] param ( [Parameter(Mandatory = $true,ParameterSetName = "Frequency")] [Parameter(Mandatory = $true,ParameterSetName = "Specific")] [string] $Title, [Parameter(Mandatory = $true,ParameterSetName = "Frequency")] [Parameter(Mandatory = $true,ParameterSetName = "Specific")] [string] $Description, [Parameter(Mandatory = $true,ParameterSetName = "Frequency")] [Parameter(Mandatory = $true,ParameterSetName = "Specific")] [int] $ParentId, [Parameter(Mandatory = $true,ParameterSetName = "Frequency")] [ValidateSet("Daily","Weekly","Monthly","Quarterly","Half-Yearly","Yearly")] [string] $Frequency, [Parameter(Mandatory = $true,ParameterSetName = "Specific")] [int] $RunDate ) $ParentTask = Get-VSTeamWorkItem -Id $ParentId $AreaPath = $ParentTask.AreaPath $IterationPath = $ParentTask.IterationPath $ProjectName = $ParentTask.TeamProject $HtmlDescription = ConvertFrom-MarkdownToHtml -Markdown $Description $GetFullTitleArgs = @{ Title = $Title } if ($RunDate) { $GetFullTitleArgs.RunDate = $RunDate } else { $GetFullTitleArgs.Frequency = $Frequency } $FullTitle = Get-FullTitle @GetFullTitleArgs $AddVSTeamWorkItemArgs = @{ Title = $FullTitle Description = $HtmlDescription IterationPath = $IterationPath AdditionalFields = @{ "System.AreaPath" = $AreaPath } ParentId = $ParentId WorkItemType = "Task" ProjectName = $ProjectName } Add-VSTeamWorkItem @AddVSTeamWorkItemArgs } function Set-AdoConnection { [CmdletBinding(SupportsShouldProcess)] param ( [Parameter(Mandatory)] [string] $Url, [Parameter(Mandatory)] [string] $Project, [Parameter(Mandatory)] [string] $PersonalAccessToken ) Set-VSTeamAccount -Account $Url -PersonalAccessToken $PersonalAccessToken Set-VSTeamDefaultProject -Project $Project } |