X-Git-Url: https://us-delaporte.pagekite.me/gitweb/dotfiles.git/blobdiff_plain/9ae21ab320e7b5b57c562ddce26d173da12d1cfa..d182fb2cf69c77df54912299bd3bf1e3f48d10c8:/psmodules/edgithub.psm1?ds=sidebyside diff --git a/psmodules/edgithub.psm1 b/psmodules/edgithub.psm1 index 2ccb330..f24fcfa 100644 --- a/psmodules/edgithub.psm1 +++ b/psmodules/edgithub.psm1 @@ -3,13 +3,20 @@ Fetch closed GitHub issues that were updated in the last 14 days. +.NOTES + +Thism modules requires the following in your PowerShell profile: +$env:GITHUB_USERNAME = 'github_username' +$env:GITHUB_ORG = 'github_organization_name' +$env:GITHUB_REPOS = @('repository1', 'repository2', 'repository3') + #> function Get-GHClosed { param( [int]$days = -14 ) - $repos = @('SecOps-Tools', 'secdev-job-aids', 'awscli-login') - $issueSearchParams = @{ State = 'closed'; OwnerName = 'techservicesillinois' } + $repos = $env:GITHUB_REPOS.split(" ") + $issueSearchParams = @{ State = 'closed'; OwnerName = $env:GITHUB_ORG } $closed = @() $repos | ForEach-Object { $closed += Get-GitHubIssue -RepositoryName $_ @issueSearchParams @@ -21,6 +28,28 @@ function Get-GHClosed { } +<# +.SYNPOSIS + +Fetch GitHub issues that are tagged to discuss this morning. + +#> +function Get-GHToDiscuss { + param( + [int]$days = -14 + ) + $repos = $env:GITHUB_REPOS.split(" ") + $issueSearchParams = @{ State = 'open'; OwnerName = $env:GITHUB_ORG } + $closed = @() + $repos | ForEach-Object { + $closed += Get-GitHubIssue -RepositoryName $_ @issueSearchParams + } + $issues = $issues | Where-Object { $_.labels -Contains 'DiscussAtStandUp' } + + return $issues +} + + <# .SYNOPSIS @@ -46,8 +75,9 @@ Fetch GitHub issues I am working on. #> function Get-GHMine() { - $repos = @('SecOps-Tools', 'secdev-job-aids', 'awscli-login') - $issueSearchParams = @{ Assignee = 'edthedev'; State = 'open'; OwnerName = 'techservicesillinois' } + $repos = $env:GITHUB_REPOS.split(" ") + $issueSearchParams = @{ Assignee = $env:GITHUB_USERNAME; + State = 'open'; OwnerName = $env:GITHUB_ORG } $issues = @() $repos | ForEach-Object { $issues += Get-GitHubIssue -RepositoryName $_ @issueSearchParams @@ -72,8 +102,102 @@ function Show-GHMine() { } } +<# +.SYNOPSIS + +Get GitHub issues that need sized. + +.DESCRIPTION + +Runs this GitHub search: +is:open is:issue -label:M -label:L -label:S -label:XL -label:XS + +#> +function Get-GHUnsized() { + $repos = $env:GITHUB_REPOS.split(" ") + $issueSearchParams = @{ State = 'open'; OwnerName = 'techservicesillinois' } + $issues = @() + $repos | ForEach-Object { + $issues += Get-GitHubIssue -RepositoryName $_ @issueSearchParams + } + + # Ignore issues that have been updated in the last day. + $issues = $issues | Where-Object { -Not $_.labels -Contains 'XS' } + $issues = $issues | Where-Object { -Not $_.labels -Contains 'S' } + $issues = $issues | Where-Object { -Not $_.labels -Contains 'M' } + $issues = $issues | Where-Object { -Not $_.labels -Contains 'L' } + # Leave XL issues, as they need split. + + return $issues +} + +function Get-GHNoMilestone() { + param( + [string]$repository + ) + $repos = $env:GITHUB_REPOS.split(" ") + if($repository){ + $repos = @($repository) + } + $issueSearchParams = @{ State = 'open'; OwnerName = 'techservicesillinois' } + $issues = @() + $repos | ForEach-Object { + $issues += Get-GitHubIssue -RepositoryName $_ @issueSearchParams + } + + # Get open issues with empty milestone + $issues = $issues | Where-Object { $null -eq $_.milestone } + return $issues +} +function Show-GHNoMilestone(){ + param( + [string]$repository + ) + Get-GHNoMilestone -Repository $repository | Show-GHIssuesAsMarkdown +} + +function Show-GHUnsized() { + Get-GHUnsized | ForEach-Object { + # Markdown output + " + [" + $_.Title + " (" + $_.Number + ")](" + $_.html_url + ")" + $_.labels + } +} + +function Show-GHByAssignee() { + $repos = $env:GITHUB_REPOS.split(" ") + $issueSearchParams = @{ State = 'open'; OwnerName = 'techservicesillinois' } + $issues = @() + $repos | ForEach-Object { + $issues += Get-GitHubIssue -RepositoryName $_ @issueSearchParams + } + + # TODO: Group output by assignee. + + return $issues +} + + + +function Show-GHToDiscuss() { + Get-GHToDiscuss | Show-GHIssuesAsMarkdown +} + + +function Show-GHIssuesAsMarkdown() { + process + { + # Markdown output + " + [" + $_.Title + " (" + $_.Number + ")](" + $_.html_url + ")" + } +} + Export-ModuleMember -Function Get-GHClosed Export-ModuleMember -Function Show-GHClosed Export-ModuleMember -Function Get-GHMine -Export-ModuleMember -Function Show-GHMine \ No newline at end of file +Export-ModuleMember -Function Show-GHMine +Export-ModuleMember -Function Get-GHUnsized +Export-ModuleMember -Function Show-GHUnsized +Export-ModuleMember -Function Show-GHToDiscuss +Export-ModuleMember -Function Get-GHNoMilestone +Export-ModuleMember -Function Show-GHNoMilestone \ No newline at end of file