PowerShellForGitHub/GitHubIssues.ps1

863 строки
28 KiB
PowerShell
Исходник Обычный вид История

Module restructure to v0.2.0 + Significant restructing and refactoring of entire module to make future expansion easier. + Significant documentation updates ([CHANGELOG](./CHANGELOG.md), [CONTRIBUTING.md](./CONTRIBUTING.md), [GOVERNANCE.md](./GOVERNANCE.md), [README.md](./README.md), [USAGE.md](./USAGE.md)) + Added `Set-GitHubAuthentication` (and related methods) for securely caching the Access Token + Added `Set-GitHubConfiguration` (and related methods) to enable short and long-term configuration of the module. + Added ability to asynchronously see status update of REST requests. + Added logging and telemetry to the module (each can be disabled if desired). + Tests now auto-configure themselves across whatever account information is supplied in [Tests/Config/Settings.ps1](./Tests/Config/Settings.ps1) + Added support for a number of additional GitHub API's: + All [Miscellaneous API's](https://developer.github.com/v3/misc/) + Ability to fully query, update, remove, lock, and unlock Issues. + Enhanced pull request querying support + Ability tofully query, create, and remove Repositories, as well as transfer ownership, get tags, get/set topic and current used programming languages. + Enhanced user query support as well as being able update information for the current user. * Made parameter ordering consistent across all functions (OwnerName is now first, then RepositoryName) * Normalized all parameters to use SentenceCase * All functions that can take a Uri or OwnerName/RepositoryName now support both options. * Made all parameter names consistent across functions: * `GitHubAccessToken` -> `AccessToken` * `RepositoryUrl` -> `Uri` * `Organization` -> `OrganizationName` * `Repository` -> `RepositoryName` * `Owner` -> `OwnerName` * Normalized usage of Verbose, Info and Error streams - `New-GitHubLabels` was renamed to `Set-GitHubLabel` and can now optionally take in the labels to apply to the Repository. - `Get-GitHubIssueForRepository` has been removed and replaced with `Get-GitHubIssue`. The key difference between these two is that it no longer accepts multiple repositories as single input, and filtering on creation/closed date can be done after the fact piping the results into `Where-Object` now that the returned objects from `Get-GitHubIssue` have actual `[DateTime]` values for the date properties. For an updated example of doing this, refer to [example usage](USAGE.md#querying-issues). - `Get-GitHubWeeklyIssueForRepository` has been removed and functionally replaced by `Group-GitHubIssue`. For an updated example of using it, refer to [example usage](USAGE.md#querying-issues) - `Get-GitHubTopIssueRepository` has been removed. We have [updated examples](USAGE.md#querying-issues) for how to accomplish the same scenario. - `Get-GitHubPullRequestForRepository` has been removed and replaced with `Get-GitHubPullRequest`. The key difference between these two is that it no longer accepts multiple repositories as single input, and filtering on creation/merged date can be done after the fact piping the results into `Where-Object` now that the returned objects from `Get-GitHubPullRequest` have actual `[DateTime]` values for the date properties. For an updated example of doing this, refer to [example usage](USAGE.md#querying-pull-requests). - `Get-GitHubWeeklyPullRequestForRepository` has been removed and functionally replaced by `Group-GitHubPullRequest`. For an updated example of using it, refer to [example usage](USAGE.md#querying-pull-requests) - `Get-GitHubTopPullRequestRepository` has been removed. We have [updated examples](USAGE.md#querying-pull-requests) for how to accomplish the same scenario. - `Get-GitHubRepositoryNameFromUrl` and `GitHubRepositoryOwnerFromUrl` have been removed and functionally replaced by `Split-GitHubUri` - `Get-GitHubRepositoryUniqueContributor` has been removed. We have an [updated example](USAGE.md#querying-contributors) for how to accomplish the same scenario. - `GitHubOrganizationRepository` has been removed. You can now retrieve repositories for an organization via `Get-GitHubRepository -OrganizationName <name>`. - `Get-GitHubAuthenticatedUser` has been replaced with `Get-GitHubUser -Current`. Fixes Issue #34: Warning output on import is being written out twice Fixes Issue #33: TLS error in Get-GitHubIssueForRepository : Failed to execute query with exception Fixes Issue #26: Token in template file Fixes Issue #24: Add a command for configuration
2018-10-31 09:14:28 +03:00
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License.
function Get-GitHubIssue
{
<#
.SYNOPSIS
Retrieve Issues from GitHub.
.DESCRIPTION
Retrieve Issues from GitHub.
The Git repo for this module can be found here: http://aka.ms/PowerShellForGitHub
.PARAMETER OwnerName
Owner of the repository.
If not supplied here, the DefaultOwnerName configuration property value will be used.
.PARAMETER RepositoryName
Name of the repository.
If not supplied here, the DefaultRepositoryName configuration property value will be used.
.PARAMETER Uri
Uri for the repository.
The OwnerName and RepositoryName will be extracted from here instead of needing to provide
them individually.
.PARAMETER OrganizationName
The organization whose issues should be retrieved.
.PARAMETER RepositoryType
all: Retrieve issues across owned, member and org repositories
ownedAndMember: Retrieve issues across owned and member repositories
.PARAMETER Issue
The number of specic Issue to retrieve. If not supplied, will return back all
Issues for this Repository that match the specified criteria.
.PARAMETER IgnorePullRequests
GitHub treats Pull Requests as Issues. Specify this switch to skip over any
Issue that is actually a Pull Request.
.PARAMETER Filter
Indicates the type of Issues to return:
assigned: Issues assigned to the authenticated user.
created: Issues created by the authenticated user.
mentioned: Issues mentioning the authenticated user.
subscribed: Issues the authenticated user has been subscribed to updates for.
all: All issues the authenticated user can see, regardless of participation or creation.
.PARAMETER State
Indicates the state of the issues to return.
.PARAMETER Label
The label (or labels) that returned Issues should have.
.PARAMETER Sort
The property to sort the returned Issues by.
.PARAMETER Direction
The direction of the sort.
.PARAMETER Since
If specified, returns only issues updated at or after this time.
.PARAMETER MilestoneType
If specified, indicates what milestone Issues must be a part of to be returned:
specific: Only issues with the milestone specified via the Milestone parameter will be returned.
all: All milestones will be returned.
none: Only issues without milestones will be returned.
.PARAMETER Milestone
Only issues with this milestone will be returned.
.PARAMETER AssigneeType
If specified, indicates who Issues must be assigned to in order to be returned:
specific: Only issues assigned to the user specified by the Assignee parameter will be returned.
all: Issues assigned to any user will be returned.
none: Only issues without an assigned user will be returned.
.PARAMETER Assignee
Only issues assigned to this user will be returned.
.PARAMETER Creator
Only issues created by this specified user will be returned.
.PARAMETER Mentioned
Only issues that mention this specified user will be returned.
.PARAMETER AccessToken
If provided, this will be used as the AccessToken for authentication with the
REST Api. Otherwise, will attempt to use the configured value or will run unauthenticated.
.PARAMETER NoStatus
If this switch is specified, long-running commands will run on the main thread
with no commandline status update. When not specified, those commands run in
the background, enabling the command prompt to provide status information.
If not supplied here, the DefaultNoStatus configuration property value will be used.
.EXAMPLE
Get-GitHubIssue -OwnerName PowerShell -RepositoryName PowerShellForGitHub -State open
Gets all the currently open issues in the PowerShell\PowerShellForGitHub repository.
.EXAMPLE
Get-GitHubIssue -OwnerName PowerShell -RepositoryName PowerShellForGitHub -State all -Assignee Octocat
Gets every issue in the PowerShell\PowerShellForGitHub repository that is assigned to Octocat.
#>
[CmdletBinding(
SupportsShouldProcess,
DefaultParametersetName='Elements')]
[Diagnostics.CodeAnalysis.SuppressMessageAttribute("PSShouldProcess", "", Justification="Methods called within here make use of PSShouldProcess, and the switch is passed on to them inherently.")]
param(
[Parameter(ParameterSetName='Elements')]
[string] $OwnerName,
[Parameter(ParameterSetName='Elements')]
[string] $RepositoryName,
[Parameter(
Mandatory,
ParameterSetName='Uri')]
[string] $Uri,
[string] $OrganizationName,
[ValidateSet('all', 'ownedAndMember')]
[string] $RepositoryType = 'all',
[int] $Issue,
Module restructure to v0.2.0 + Significant restructing and refactoring of entire module to make future expansion easier. + Significant documentation updates ([CHANGELOG](./CHANGELOG.md), [CONTRIBUTING.md](./CONTRIBUTING.md), [GOVERNANCE.md](./GOVERNANCE.md), [README.md](./README.md), [USAGE.md](./USAGE.md)) + Added `Set-GitHubAuthentication` (and related methods) for securely caching the Access Token + Added `Set-GitHubConfiguration` (and related methods) to enable short and long-term configuration of the module. + Added ability to asynchronously see status update of REST requests. + Added logging and telemetry to the module (each can be disabled if desired). + Tests now auto-configure themselves across whatever account information is supplied in [Tests/Config/Settings.ps1](./Tests/Config/Settings.ps1) + Added support for a number of additional GitHub API's: + All [Miscellaneous API's](https://developer.github.com/v3/misc/) + Ability to fully query, update, remove, lock, and unlock Issues. + Enhanced pull request querying support + Ability tofully query, create, and remove Repositories, as well as transfer ownership, get tags, get/set topic and current used programming languages. + Enhanced user query support as well as being able update information for the current user. * Made parameter ordering consistent across all functions (OwnerName is now first, then RepositoryName) * Normalized all parameters to use SentenceCase * All functions that can take a Uri or OwnerName/RepositoryName now support both options. * Made all parameter names consistent across functions: * `GitHubAccessToken` -> `AccessToken` * `RepositoryUrl` -> `Uri` * `Organization` -> `OrganizationName` * `Repository` -> `RepositoryName` * `Owner` -> `OwnerName` * Normalized usage of Verbose, Info and Error streams - `New-GitHubLabels` was renamed to `Set-GitHubLabel` and can now optionally take in the labels to apply to the Repository. - `Get-GitHubIssueForRepository` has been removed and replaced with `Get-GitHubIssue`. The key difference between these two is that it no longer accepts multiple repositories as single input, and filtering on creation/closed date can be done after the fact piping the results into `Where-Object` now that the returned objects from `Get-GitHubIssue` have actual `[DateTime]` values for the date properties. For an updated example of doing this, refer to [example usage](USAGE.md#querying-issues). - `Get-GitHubWeeklyIssueForRepository` has been removed and functionally replaced by `Group-GitHubIssue`. For an updated example of using it, refer to [example usage](USAGE.md#querying-issues) - `Get-GitHubTopIssueRepository` has been removed. We have [updated examples](USAGE.md#querying-issues) for how to accomplish the same scenario. - `Get-GitHubPullRequestForRepository` has been removed and replaced with `Get-GitHubPullRequest`. The key difference between these two is that it no longer accepts multiple repositories as single input, and filtering on creation/merged date can be done after the fact piping the results into `Where-Object` now that the returned objects from `Get-GitHubPullRequest` have actual `[DateTime]` values for the date properties. For an updated example of doing this, refer to [example usage](USAGE.md#querying-pull-requests). - `Get-GitHubWeeklyPullRequestForRepository` has been removed and functionally replaced by `Group-GitHubPullRequest`. For an updated example of using it, refer to [example usage](USAGE.md#querying-pull-requests) - `Get-GitHubTopPullRequestRepository` has been removed. We have [updated examples](USAGE.md#querying-pull-requests) for how to accomplish the same scenario. - `Get-GitHubRepositoryNameFromUrl` and `GitHubRepositoryOwnerFromUrl` have been removed and functionally replaced by `Split-GitHubUri` - `Get-GitHubRepositoryUniqueContributor` has been removed. We have an [updated example](USAGE.md#querying-contributors) for how to accomplish the same scenario. - `GitHubOrganizationRepository` has been removed. You can now retrieve repositories for an organization via `Get-GitHubRepository -OrganizationName <name>`. - `Get-GitHubAuthenticatedUser` has been replaced with `Get-GitHubUser -Current`. Fixes Issue #34: Warning output on import is being written out twice Fixes Issue #33: TLS error in Get-GitHubIssueForRepository : Failed to execute query with exception Fixes Issue #26: Token in template file Fixes Issue #24: Add a command for configuration
2018-10-31 09:14:28 +03:00
[switch] $IgnorePullRequests,
[ValidateSet('assigned', 'created', 'mentioned', 'subscribed', 'all')]
[string] $Filter = 'assigned',
[ValidateSet('open', 'closed', 'all')]
[string] $State = 'open',
[string[]] $Label,
[ValidateSet('created', 'updated', 'comments')]
[string] $Sort = 'created',
[ValidateSet('asc', 'desc')]
[string] $Direction = 'desc',
[DateTime] $Since,
[ValidateSet('specific', 'all', 'none')]
[string] $MilestoneType,
[string] $Milestone,
[ValidateSet('specific', 'all', 'none')]
[string] $AssigneeType,
[string] $Assignee,
[string] $Creator,
[string] $Mentioned,
[string] $AccessToken,
[switch] $NoStatus
)
Write-InvocationLog
Module restructure to v0.2.0 + Significant restructing and refactoring of entire module to make future expansion easier. + Significant documentation updates ([CHANGELOG](./CHANGELOG.md), [CONTRIBUTING.md](./CONTRIBUTING.md), [GOVERNANCE.md](./GOVERNANCE.md), [README.md](./README.md), [USAGE.md](./USAGE.md)) + Added `Set-GitHubAuthentication` (and related methods) for securely caching the Access Token + Added `Set-GitHubConfiguration` (and related methods) to enable short and long-term configuration of the module. + Added ability to asynchronously see status update of REST requests. + Added logging and telemetry to the module (each can be disabled if desired). + Tests now auto-configure themselves across whatever account information is supplied in [Tests/Config/Settings.ps1](./Tests/Config/Settings.ps1) + Added support for a number of additional GitHub API's: + All [Miscellaneous API's](https://developer.github.com/v3/misc/) + Ability to fully query, update, remove, lock, and unlock Issues. + Enhanced pull request querying support + Ability tofully query, create, and remove Repositories, as well as transfer ownership, get tags, get/set topic and current used programming languages. + Enhanced user query support as well as being able update information for the current user. * Made parameter ordering consistent across all functions (OwnerName is now first, then RepositoryName) * Normalized all parameters to use SentenceCase * All functions that can take a Uri or OwnerName/RepositoryName now support both options. * Made all parameter names consistent across functions: * `GitHubAccessToken` -> `AccessToken` * `RepositoryUrl` -> `Uri` * `Organization` -> `OrganizationName` * `Repository` -> `RepositoryName` * `Owner` -> `OwnerName` * Normalized usage of Verbose, Info and Error streams - `New-GitHubLabels` was renamed to `Set-GitHubLabel` and can now optionally take in the labels to apply to the Repository. - `Get-GitHubIssueForRepository` has been removed and replaced with `Get-GitHubIssue`. The key difference between these two is that it no longer accepts multiple repositories as single input, and filtering on creation/closed date can be done after the fact piping the results into `Where-Object` now that the returned objects from `Get-GitHubIssue` have actual `[DateTime]` values for the date properties. For an updated example of doing this, refer to [example usage](USAGE.md#querying-issues). - `Get-GitHubWeeklyIssueForRepository` has been removed and functionally replaced by `Group-GitHubIssue`. For an updated example of using it, refer to [example usage](USAGE.md#querying-issues) - `Get-GitHubTopIssueRepository` has been removed. We have [updated examples](USAGE.md#querying-issues) for how to accomplish the same scenario. - `Get-GitHubPullRequestForRepository` has been removed and replaced with `Get-GitHubPullRequest`. The key difference between these two is that it no longer accepts multiple repositories as single input, and filtering on creation/merged date can be done after the fact piping the results into `Where-Object` now that the returned objects from `Get-GitHubPullRequest` have actual `[DateTime]` values for the date properties. For an updated example of doing this, refer to [example usage](USAGE.md#querying-pull-requests). - `Get-GitHubWeeklyPullRequestForRepository` has been removed and functionally replaced by `Group-GitHubPullRequest`. For an updated example of using it, refer to [example usage](USAGE.md#querying-pull-requests) - `Get-GitHubTopPullRequestRepository` has been removed. We have [updated examples](USAGE.md#querying-pull-requests) for how to accomplish the same scenario. - `Get-GitHubRepositoryNameFromUrl` and `GitHubRepositoryOwnerFromUrl` have been removed and functionally replaced by `Split-GitHubUri` - `Get-GitHubRepositoryUniqueContributor` has been removed. We have an [updated example](USAGE.md#querying-contributors) for how to accomplish the same scenario. - `GitHubOrganizationRepository` has been removed. You can now retrieve repositories for an organization via `Get-GitHubRepository -OrganizationName <name>`. - `Get-GitHubAuthenticatedUser` has been replaced with `Get-GitHubUser -Current`. Fixes Issue #34: Warning output on import is being written out twice Fixes Issue #33: TLS error in Get-GitHubIssueForRepository : Failed to execute query with exception Fixes Issue #26: Token in template file Fixes Issue #24: Add a command for configuration
2018-10-31 09:14:28 +03:00
$elements = Resolve-RepositoryElements -DisableValidation
Module restructure to v0.2.0 + Significant restructing and refactoring of entire module to make future expansion easier. + Significant documentation updates ([CHANGELOG](./CHANGELOG.md), [CONTRIBUTING.md](./CONTRIBUTING.md), [GOVERNANCE.md](./GOVERNANCE.md), [README.md](./README.md), [USAGE.md](./USAGE.md)) + Added `Set-GitHubAuthentication` (and related methods) for securely caching the Access Token + Added `Set-GitHubConfiguration` (and related methods) to enable short and long-term configuration of the module. + Added ability to asynchronously see status update of REST requests. + Added logging and telemetry to the module (each can be disabled if desired). + Tests now auto-configure themselves across whatever account information is supplied in [Tests/Config/Settings.ps1](./Tests/Config/Settings.ps1) + Added support for a number of additional GitHub API's: + All [Miscellaneous API's](https://developer.github.com/v3/misc/) + Ability to fully query, update, remove, lock, and unlock Issues. + Enhanced pull request querying support + Ability tofully query, create, and remove Repositories, as well as transfer ownership, get tags, get/set topic and current used programming languages. + Enhanced user query support as well as being able update information for the current user. * Made parameter ordering consistent across all functions (OwnerName is now first, then RepositoryName) * Normalized all parameters to use SentenceCase * All functions that can take a Uri or OwnerName/RepositoryName now support both options. * Made all parameter names consistent across functions: * `GitHubAccessToken` -> `AccessToken` * `RepositoryUrl` -> `Uri` * `Organization` -> `OrganizationName` * `Repository` -> `RepositoryName` * `Owner` -> `OwnerName` * Normalized usage of Verbose, Info and Error streams - `New-GitHubLabels` was renamed to `Set-GitHubLabel` and can now optionally take in the labels to apply to the Repository. - `Get-GitHubIssueForRepository` has been removed and replaced with `Get-GitHubIssue`. The key difference between these two is that it no longer accepts multiple repositories as single input, and filtering on creation/closed date can be done after the fact piping the results into `Where-Object` now that the returned objects from `Get-GitHubIssue` have actual `[DateTime]` values for the date properties. For an updated example of doing this, refer to [example usage](USAGE.md#querying-issues). - `Get-GitHubWeeklyIssueForRepository` has been removed and functionally replaced by `Group-GitHubIssue`. For an updated example of using it, refer to [example usage](USAGE.md#querying-issues) - `Get-GitHubTopIssueRepository` has been removed. We have [updated examples](USAGE.md#querying-issues) for how to accomplish the same scenario. - `Get-GitHubPullRequestForRepository` has been removed and replaced with `Get-GitHubPullRequest`. The key difference between these two is that it no longer accepts multiple repositories as single input, and filtering on creation/merged date can be done after the fact piping the results into `Where-Object` now that the returned objects from `Get-GitHubPullRequest` have actual `[DateTime]` values for the date properties. For an updated example of doing this, refer to [example usage](USAGE.md#querying-pull-requests). - `Get-GitHubWeeklyPullRequestForRepository` has been removed and functionally replaced by `Group-GitHubPullRequest`. For an updated example of using it, refer to [example usage](USAGE.md#querying-pull-requests) - `Get-GitHubTopPullRequestRepository` has been removed. We have [updated examples](USAGE.md#querying-pull-requests) for how to accomplish the same scenario. - `Get-GitHubRepositoryNameFromUrl` and `GitHubRepositoryOwnerFromUrl` have been removed and functionally replaced by `Split-GitHubUri` - `Get-GitHubRepositoryUniqueContributor` has been removed. We have an [updated example](USAGE.md#querying-contributors) for how to accomplish the same scenario. - `GitHubOrganizationRepository` has been removed. You can now retrieve repositories for an organization via `Get-GitHubRepository -OrganizationName <name>`. - `Get-GitHubAuthenticatedUser` has been replaced with `Get-GitHubUser -Current`. Fixes Issue #34: Warning output on import is being written out twice Fixes Issue #33: TLS error in Get-GitHubIssueForRepository : Failed to execute query with exception Fixes Issue #26: Token in template file Fixes Issue #24: Add a command for configuration
2018-10-31 09:14:28 +03:00
$OwnerName = $elements.ownerName
$RepositoryName = $elements.repositoryName
$telemetryProperties = @{
'OwnerName' = (Get-PiiSafeString -PlainText $OwnerName)
'RepositoryName' = (Get-PiiSafeString -PlainText $RepositoryName)
'ProvidedIssue' = $PSBoundParameters.ContainsKey('Issue')
}
$uriFragment = [String]::Empty
$description = [String]::Empty
if ($OwnerName -xor $RepositoryName)
{
$message = 'You must specify BOTH Owner Name and Repository Name when one is provided.'
Write-Log -Message $message -Level Error
throw $message
}
if (-not [String]::IsNullOrEmpty($RepositoryName))
{
$uriFragment = "/repos/$OwnerName/$RepositoryName/issues"
$description = "Getting issues for $RepositoryName"
2018-12-14 01:31:37 +03:00
if ($PSBoundParameters.ContainsKey('Issue'))
Module restructure to v0.2.0 + Significant restructing and refactoring of entire module to make future expansion easier. + Significant documentation updates ([CHANGELOG](./CHANGELOG.md), [CONTRIBUTING.md](./CONTRIBUTING.md), [GOVERNANCE.md](./GOVERNANCE.md), [README.md](./README.md), [USAGE.md](./USAGE.md)) + Added `Set-GitHubAuthentication` (and related methods) for securely caching the Access Token + Added `Set-GitHubConfiguration` (and related methods) to enable short and long-term configuration of the module. + Added ability to asynchronously see status update of REST requests. + Added logging and telemetry to the module (each can be disabled if desired). + Tests now auto-configure themselves across whatever account information is supplied in [Tests/Config/Settings.ps1](./Tests/Config/Settings.ps1) + Added support for a number of additional GitHub API's: + All [Miscellaneous API's](https://developer.github.com/v3/misc/) + Ability to fully query, update, remove, lock, and unlock Issues. + Enhanced pull request querying support + Ability tofully query, create, and remove Repositories, as well as transfer ownership, get tags, get/set topic and current used programming languages. + Enhanced user query support as well as being able update information for the current user. * Made parameter ordering consistent across all functions (OwnerName is now first, then RepositoryName) * Normalized all parameters to use SentenceCase * All functions that can take a Uri or OwnerName/RepositoryName now support both options. * Made all parameter names consistent across functions: * `GitHubAccessToken` -> `AccessToken` * `RepositoryUrl` -> `Uri` * `Organization` -> `OrganizationName` * `Repository` -> `RepositoryName` * `Owner` -> `OwnerName` * Normalized usage of Verbose, Info and Error streams - `New-GitHubLabels` was renamed to `Set-GitHubLabel` and can now optionally take in the labels to apply to the Repository. - `Get-GitHubIssueForRepository` has been removed and replaced with `Get-GitHubIssue`. The key difference between these two is that it no longer accepts multiple repositories as single input, and filtering on creation/closed date can be done after the fact piping the results into `Where-Object` now that the returned objects from `Get-GitHubIssue` have actual `[DateTime]` values for the date properties. For an updated example of doing this, refer to [example usage](USAGE.md#querying-issues). - `Get-GitHubWeeklyIssueForRepository` has been removed and functionally replaced by `Group-GitHubIssue`. For an updated example of using it, refer to [example usage](USAGE.md#querying-issues) - `Get-GitHubTopIssueRepository` has been removed. We have [updated examples](USAGE.md#querying-issues) for how to accomplish the same scenario. - `Get-GitHubPullRequestForRepository` has been removed and replaced with `Get-GitHubPullRequest`. The key difference between these two is that it no longer accepts multiple repositories as single input, and filtering on creation/merged date can be done after the fact piping the results into `Where-Object` now that the returned objects from `Get-GitHubPullRequest` have actual `[DateTime]` values for the date properties. For an updated example of doing this, refer to [example usage](USAGE.md#querying-pull-requests). - `Get-GitHubWeeklyPullRequestForRepository` has been removed and functionally replaced by `Group-GitHubPullRequest`. For an updated example of using it, refer to [example usage](USAGE.md#querying-pull-requests) - `Get-GitHubTopPullRequestRepository` has been removed. We have [updated examples](USAGE.md#querying-pull-requests) for how to accomplish the same scenario. - `Get-GitHubRepositoryNameFromUrl` and `GitHubRepositoryOwnerFromUrl` have been removed and functionally replaced by `Split-GitHubUri` - `Get-GitHubRepositoryUniqueContributor` has been removed. We have an [updated example](USAGE.md#querying-contributors) for how to accomplish the same scenario. - `GitHubOrganizationRepository` has been removed. You can now retrieve repositories for an organization via `Get-GitHubRepository -OrganizationName <name>`. - `Get-GitHubAuthenticatedUser` has been replaced with `Get-GitHubUser -Current`. Fixes Issue #34: Warning output on import is being written out twice Fixes Issue #33: TLS error in Get-GitHubIssueForRepository : Failed to execute query with exception Fixes Issue #26: Token in template file Fixes Issue #24: Add a command for configuration
2018-10-31 09:14:28 +03:00
{
$uriFragment = $uriFragment + "/$Issue"
$description = "Getting issue $Issue for $RepositoryName"
}
}
elseif (-not [String]::IsNullOrEmpty($OrganizationName))
{
$uriFragment = "/orgs/$OrganizationName/issues"
$description = "Getting issues for $OrganizationName"
}
elseif ($RepositoryType -eq 'all')
{
$uriFragment = "/issues"
$description = "Getting issues across owned, member and org repositories"
}
elseif ($RepositoryType -eq 'ownedAndMember')
{
$uriFragment = "/user/issues"
$description = "Getting issues across owned and member repositories"
}
else
{
throw "Parameter set not supported."
}
$getParams = @(
"filter=$Filter",
"state=$State",
"sort=$Sort",
"direction=$Direction"
)
if ($PSBoundParameters.ContainsKey('Label'))
{
$getParams += "labels=$($Label -join ',')"
}
if ($PSBoundParameters.ContainsKey('Since'))
{
$getParams += "since=$($Since.ToUniversalTime().ToString('o'))"
}
if ($PSBoundParameters.ContainsKey('Mentioned'))
{
$getParams += "mentioned=$Mentioned"
}
if ($PSBoundParameters.ContainsKey('MilestoneType'))
{
if ($MilestoneType -eq 'all')
{
$getParams += 'mentioned=*'
}
elseif ($MilestoneType -eq 'none')
{
$getParams += 'mentioned=none'
}
elseif ([String]::IsNullOrEmpty($Milestone))
{
$message = "MilestoneType was set to [$MilestoneType], but no value for Milestone was provided."
Write-Log -Message $message -Level Error
throw $message
}
}
if ($PSBoundParameters.ContainsKey('Milestone'))
{
$getParams += "milestone=$Milestone"
}
if ($PSBoundParameters.ContainsKey('AssigneeType'))
{
if ($AssigneeType -eq 'all')
{
$getParams += 'assignee=*'
}
elseif ($AssigneeType -eq 'none')
{
$getParams += 'assignee=none'
}
elseif ([String]::IsNullOrEmpty($Assignee))
{
$message = "AssigneeType was set to [$AssigneeType], but no value for Assignee was provided."
Write-Log -Message $message -Level Error
throw $message
}
}
if ($PSBoundParameters.ContainsKey('Assignee'))
{
$getParams += "assignee=$Assignee"
}
if ($PSBoundParameters.ContainsKey('Creator'))
{
$getParams += "creator=$Creator"
}
if ($PSBoundParameters.ContainsKey('Mentioned'))
{
$getParams += "mentioned=$Mentioned"
}
$params = @{
'UriFragment' = $uriFragment + '?' + ($getParams -join '&')
'Description' = $description
'AcceptHeader' = 'application/vnd.github.symmetra-preview+json'
'AccessToken' = $AccessToken
'TelemetryEventName' = $MyInvocation.MyCommand.Name
'TelemetryProperties' = $telemetryProperties
'NoStatus' = (Resolve-ParameterWithDefaultConfigurationValue -Name NoStatus -ConfigValueName DefaultNoStatus)
Module restructure to v0.2.0 + Significant restructing and refactoring of entire module to make future expansion easier. + Significant documentation updates ([CHANGELOG](./CHANGELOG.md), [CONTRIBUTING.md](./CONTRIBUTING.md), [GOVERNANCE.md](./GOVERNANCE.md), [README.md](./README.md), [USAGE.md](./USAGE.md)) + Added `Set-GitHubAuthentication` (and related methods) for securely caching the Access Token + Added `Set-GitHubConfiguration` (and related methods) to enable short and long-term configuration of the module. + Added ability to asynchronously see status update of REST requests. + Added logging and telemetry to the module (each can be disabled if desired). + Tests now auto-configure themselves across whatever account information is supplied in [Tests/Config/Settings.ps1](./Tests/Config/Settings.ps1) + Added support for a number of additional GitHub API's: + All [Miscellaneous API's](https://developer.github.com/v3/misc/) + Ability to fully query, update, remove, lock, and unlock Issues. + Enhanced pull request querying support + Ability tofully query, create, and remove Repositories, as well as transfer ownership, get tags, get/set topic and current used programming languages. + Enhanced user query support as well as being able update information for the current user. * Made parameter ordering consistent across all functions (OwnerName is now first, then RepositoryName) * Normalized all parameters to use SentenceCase * All functions that can take a Uri or OwnerName/RepositoryName now support both options. * Made all parameter names consistent across functions: * `GitHubAccessToken` -> `AccessToken` * `RepositoryUrl` -> `Uri` * `Organization` -> `OrganizationName` * `Repository` -> `RepositoryName` * `Owner` -> `OwnerName` * Normalized usage of Verbose, Info and Error streams - `New-GitHubLabels` was renamed to `Set-GitHubLabel` and can now optionally take in the labels to apply to the Repository. - `Get-GitHubIssueForRepository` has been removed and replaced with `Get-GitHubIssue`. The key difference between these two is that it no longer accepts multiple repositories as single input, and filtering on creation/closed date can be done after the fact piping the results into `Where-Object` now that the returned objects from `Get-GitHubIssue` have actual `[DateTime]` values for the date properties. For an updated example of doing this, refer to [example usage](USAGE.md#querying-issues). - `Get-GitHubWeeklyIssueForRepository` has been removed and functionally replaced by `Group-GitHubIssue`. For an updated example of using it, refer to [example usage](USAGE.md#querying-issues) - `Get-GitHubTopIssueRepository` has been removed. We have [updated examples](USAGE.md#querying-issues) for how to accomplish the same scenario. - `Get-GitHubPullRequestForRepository` has been removed and replaced with `Get-GitHubPullRequest`. The key difference between these two is that it no longer accepts multiple repositories as single input, and filtering on creation/merged date can be done after the fact piping the results into `Where-Object` now that the returned objects from `Get-GitHubPullRequest` have actual `[DateTime]` values for the date properties. For an updated example of doing this, refer to [example usage](USAGE.md#querying-pull-requests). - `Get-GitHubWeeklyPullRequestForRepository` has been removed and functionally replaced by `Group-GitHubPullRequest`. For an updated example of using it, refer to [example usage](USAGE.md#querying-pull-requests) - `Get-GitHubTopPullRequestRepository` has been removed. We have [updated examples](USAGE.md#querying-pull-requests) for how to accomplish the same scenario. - `Get-GitHubRepositoryNameFromUrl` and `GitHubRepositoryOwnerFromUrl` have been removed and functionally replaced by `Split-GitHubUri` - `Get-GitHubRepositoryUniqueContributor` has been removed. We have an [updated example](USAGE.md#querying-contributors) for how to accomplish the same scenario. - `GitHubOrganizationRepository` has been removed. You can now retrieve repositories for an organization via `Get-GitHubRepository -OrganizationName <name>`. - `Get-GitHubAuthenticatedUser` has been replaced with `Get-GitHubUser -Current`. Fixes Issue #34: Warning output on import is being written out twice Fixes Issue #33: TLS error in Get-GitHubIssueForRepository : Failed to execute query with exception Fixes Issue #26: Token in template file Fixes Issue #24: Add a command for configuration
2018-10-31 09:14:28 +03:00
}
$result = Invoke-GHRestMethodMultipleResult @params
if ($IgnorePullRequests)
{
return ($result | Where-Object { $null -eq (Get-Member -InputObject $_ -Name pull_request) })
}
else
{
return $result
}
}
function Get-GitHubIssueTimeline
{
<#
.SYNOPSIS
Retrieves various events that occur around an issue or pull request on GitHub.
.DESCRIPTION
Retrieves various events that occur around an issue or pull request on GitHub.
The Git repo for this module can be found here: http://aka.ms/PowerShellForGitHub
.PARAMETER OwnerName
Owner of the repository.
If not supplied here, the DefaultOwnerName configuration property value will be used.
.PARAMETER RepositoryName
Name of the repository.
If not supplied here, the DefaultRepositoryName configuration property value will be used.
.PARAMETER Uri
Uri for the repository.
The OwnerName and RepositoryName will be extracted from here instead of needing to provide
them individually.
.PARAMETER Issue
The Issue to get the timeline for.
.PARAMETER AccessToken
If provided, this will be used as the AccessToken for authentication with the
REST Api. Otherwise, will attempt to use the configured value or will run unauthenticated.
.PARAMETER NoStatus
If this switch is specified, long-running commands will run on the main thread
with no commandline status update. When not specified, those commands run in
the background, enabling the command prompt to provide status information.
If not supplied here, the DefaultNoStatus configuration property value will be used.
.EXAMPLE
Get-GitHubIssueTimeline -OwnerName PowerShell -RepositoryName PowerShellForGitHub -Issue 24
#>
[CmdletBinding(
SupportsShouldProcess,
DefaultParametersetName='Elements')]
[Diagnostics.CodeAnalysis.SuppressMessageAttribute("PSShouldProcess", "", Justification="Methods called within here make use of PSShouldProcess, and the switch is passed on to them inherently.")]
param(
[Parameter(ParameterSetName='Elements')]
[string] $OwnerName,
[Parameter(ParameterSetName='Elements')]
[string] $RepositoryName,
[Parameter(
Mandatory,
ParameterSetName='Uri')]
[string] $Uri,
[Parameter(Mandatory)]
[int] $Issue,
Module restructure to v0.2.0 + Significant restructing and refactoring of entire module to make future expansion easier. + Significant documentation updates ([CHANGELOG](./CHANGELOG.md), [CONTRIBUTING.md](./CONTRIBUTING.md), [GOVERNANCE.md](./GOVERNANCE.md), [README.md](./README.md), [USAGE.md](./USAGE.md)) + Added `Set-GitHubAuthentication` (and related methods) for securely caching the Access Token + Added `Set-GitHubConfiguration` (and related methods) to enable short and long-term configuration of the module. + Added ability to asynchronously see status update of REST requests. + Added logging and telemetry to the module (each can be disabled if desired). + Tests now auto-configure themselves across whatever account information is supplied in [Tests/Config/Settings.ps1](./Tests/Config/Settings.ps1) + Added support for a number of additional GitHub API's: + All [Miscellaneous API's](https://developer.github.com/v3/misc/) + Ability to fully query, update, remove, lock, and unlock Issues. + Enhanced pull request querying support + Ability tofully query, create, and remove Repositories, as well as transfer ownership, get tags, get/set topic and current used programming languages. + Enhanced user query support as well as being able update information for the current user. * Made parameter ordering consistent across all functions (OwnerName is now first, then RepositoryName) * Normalized all parameters to use SentenceCase * All functions that can take a Uri or OwnerName/RepositoryName now support both options. * Made all parameter names consistent across functions: * `GitHubAccessToken` -> `AccessToken` * `RepositoryUrl` -> `Uri` * `Organization` -> `OrganizationName` * `Repository` -> `RepositoryName` * `Owner` -> `OwnerName` * Normalized usage of Verbose, Info and Error streams - `New-GitHubLabels` was renamed to `Set-GitHubLabel` and can now optionally take in the labels to apply to the Repository. - `Get-GitHubIssueForRepository` has been removed and replaced with `Get-GitHubIssue`. The key difference between these two is that it no longer accepts multiple repositories as single input, and filtering on creation/closed date can be done after the fact piping the results into `Where-Object` now that the returned objects from `Get-GitHubIssue` have actual `[DateTime]` values for the date properties. For an updated example of doing this, refer to [example usage](USAGE.md#querying-issues). - `Get-GitHubWeeklyIssueForRepository` has been removed and functionally replaced by `Group-GitHubIssue`. For an updated example of using it, refer to [example usage](USAGE.md#querying-issues) - `Get-GitHubTopIssueRepository` has been removed. We have [updated examples](USAGE.md#querying-issues) for how to accomplish the same scenario. - `Get-GitHubPullRequestForRepository` has been removed and replaced with `Get-GitHubPullRequest`. The key difference between these two is that it no longer accepts multiple repositories as single input, and filtering on creation/merged date can be done after the fact piping the results into `Where-Object` now that the returned objects from `Get-GitHubPullRequest` have actual `[DateTime]` values for the date properties. For an updated example of doing this, refer to [example usage](USAGE.md#querying-pull-requests). - `Get-GitHubWeeklyPullRequestForRepository` has been removed and functionally replaced by `Group-GitHubPullRequest`. For an updated example of using it, refer to [example usage](USAGE.md#querying-pull-requests) - `Get-GitHubTopPullRequestRepository` has been removed. We have [updated examples](USAGE.md#querying-pull-requests) for how to accomplish the same scenario. - `Get-GitHubRepositoryNameFromUrl` and `GitHubRepositoryOwnerFromUrl` have been removed and functionally replaced by `Split-GitHubUri` - `Get-GitHubRepositoryUniqueContributor` has been removed. We have an [updated example](USAGE.md#querying-contributors) for how to accomplish the same scenario. - `GitHubOrganizationRepository` has been removed. You can now retrieve repositories for an organization via `Get-GitHubRepository -OrganizationName <name>`. - `Get-GitHubAuthenticatedUser` has been replaced with `Get-GitHubUser -Current`. Fixes Issue #34: Warning output on import is being written out twice Fixes Issue #33: TLS error in Get-GitHubIssueForRepository : Failed to execute query with exception Fixes Issue #26: Token in template file Fixes Issue #24: Add a command for configuration
2018-10-31 09:14:28 +03:00
[string] $AccessToken,
[switch] $NoStatus
)
Write-InvocationLog
Module restructure to v0.2.0 + Significant restructing and refactoring of entire module to make future expansion easier. + Significant documentation updates ([CHANGELOG](./CHANGELOG.md), [CONTRIBUTING.md](./CONTRIBUTING.md), [GOVERNANCE.md](./GOVERNANCE.md), [README.md](./README.md), [USAGE.md](./USAGE.md)) + Added `Set-GitHubAuthentication` (and related methods) for securely caching the Access Token + Added `Set-GitHubConfiguration` (and related methods) to enable short and long-term configuration of the module. + Added ability to asynchronously see status update of REST requests. + Added logging and telemetry to the module (each can be disabled if desired). + Tests now auto-configure themselves across whatever account information is supplied in [Tests/Config/Settings.ps1](./Tests/Config/Settings.ps1) + Added support for a number of additional GitHub API's: + All [Miscellaneous API's](https://developer.github.com/v3/misc/) + Ability to fully query, update, remove, lock, and unlock Issues. + Enhanced pull request querying support + Ability tofully query, create, and remove Repositories, as well as transfer ownership, get tags, get/set topic and current used programming languages. + Enhanced user query support as well as being able update information for the current user. * Made parameter ordering consistent across all functions (OwnerName is now first, then RepositoryName) * Normalized all parameters to use SentenceCase * All functions that can take a Uri or OwnerName/RepositoryName now support both options. * Made all parameter names consistent across functions: * `GitHubAccessToken` -> `AccessToken` * `RepositoryUrl` -> `Uri` * `Organization` -> `OrganizationName` * `Repository` -> `RepositoryName` * `Owner` -> `OwnerName` * Normalized usage of Verbose, Info and Error streams - `New-GitHubLabels` was renamed to `Set-GitHubLabel` and can now optionally take in the labels to apply to the Repository. - `Get-GitHubIssueForRepository` has been removed and replaced with `Get-GitHubIssue`. The key difference between these two is that it no longer accepts multiple repositories as single input, and filtering on creation/closed date can be done after the fact piping the results into `Where-Object` now that the returned objects from `Get-GitHubIssue` have actual `[DateTime]` values for the date properties. For an updated example of doing this, refer to [example usage](USAGE.md#querying-issues). - `Get-GitHubWeeklyIssueForRepository` has been removed and functionally replaced by `Group-GitHubIssue`. For an updated example of using it, refer to [example usage](USAGE.md#querying-issues) - `Get-GitHubTopIssueRepository` has been removed. We have [updated examples](USAGE.md#querying-issues) for how to accomplish the same scenario. - `Get-GitHubPullRequestForRepository` has been removed and replaced with `Get-GitHubPullRequest`. The key difference between these two is that it no longer accepts multiple repositories as single input, and filtering on creation/merged date can be done after the fact piping the results into `Where-Object` now that the returned objects from `Get-GitHubPullRequest` have actual `[DateTime]` values for the date properties. For an updated example of doing this, refer to [example usage](USAGE.md#querying-pull-requests). - `Get-GitHubWeeklyPullRequestForRepository` has been removed and functionally replaced by `Group-GitHubPullRequest`. For an updated example of using it, refer to [example usage](USAGE.md#querying-pull-requests) - `Get-GitHubTopPullRequestRepository` has been removed. We have [updated examples](USAGE.md#querying-pull-requests) for how to accomplish the same scenario. - `Get-GitHubRepositoryNameFromUrl` and `GitHubRepositoryOwnerFromUrl` have been removed and functionally replaced by `Split-GitHubUri` - `Get-GitHubRepositoryUniqueContributor` has been removed. We have an [updated example](USAGE.md#querying-contributors) for how to accomplish the same scenario. - `GitHubOrganizationRepository` has been removed. You can now retrieve repositories for an organization via `Get-GitHubRepository -OrganizationName <name>`. - `Get-GitHubAuthenticatedUser` has been replaced with `Get-GitHubUser -Current`. Fixes Issue #34: Warning output on import is being written out twice Fixes Issue #33: TLS error in Get-GitHubIssueForRepository : Failed to execute query with exception Fixes Issue #26: Token in template file Fixes Issue #24: Add a command for configuration
2018-10-31 09:14:28 +03:00
$elements = Resolve-RepositoryElements
Module restructure to v0.2.0 + Significant restructing and refactoring of entire module to make future expansion easier. + Significant documentation updates ([CHANGELOG](./CHANGELOG.md), [CONTRIBUTING.md](./CONTRIBUTING.md), [GOVERNANCE.md](./GOVERNANCE.md), [README.md](./README.md), [USAGE.md](./USAGE.md)) + Added `Set-GitHubAuthentication` (and related methods) for securely caching the Access Token + Added `Set-GitHubConfiguration` (and related methods) to enable short and long-term configuration of the module. + Added ability to asynchronously see status update of REST requests. + Added logging and telemetry to the module (each can be disabled if desired). + Tests now auto-configure themselves across whatever account information is supplied in [Tests/Config/Settings.ps1](./Tests/Config/Settings.ps1) + Added support for a number of additional GitHub API's: + All [Miscellaneous API's](https://developer.github.com/v3/misc/) + Ability to fully query, update, remove, lock, and unlock Issues. + Enhanced pull request querying support + Ability tofully query, create, and remove Repositories, as well as transfer ownership, get tags, get/set topic and current used programming languages. + Enhanced user query support as well as being able update information for the current user. * Made parameter ordering consistent across all functions (OwnerName is now first, then RepositoryName) * Normalized all parameters to use SentenceCase * All functions that can take a Uri or OwnerName/RepositoryName now support both options. * Made all parameter names consistent across functions: * `GitHubAccessToken` -> `AccessToken` * `RepositoryUrl` -> `Uri` * `Organization` -> `OrganizationName` * `Repository` -> `RepositoryName` * `Owner` -> `OwnerName` * Normalized usage of Verbose, Info and Error streams - `New-GitHubLabels` was renamed to `Set-GitHubLabel` and can now optionally take in the labels to apply to the Repository. - `Get-GitHubIssueForRepository` has been removed and replaced with `Get-GitHubIssue`. The key difference between these two is that it no longer accepts multiple repositories as single input, and filtering on creation/closed date can be done after the fact piping the results into `Where-Object` now that the returned objects from `Get-GitHubIssue` have actual `[DateTime]` values for the date properties. For an updated example of doing this, refer to [example usage](USAGE.md#querying-issues). - `Get-GitHubWeeklyIssueForRepository` has been removed and functionally replaced by `Group-GitHubIssue`. For an updated example of using it, refer to [example usage](USAGE.md#querying-issues) - `Get-GitHubTopIssueRepository` has been removed. We have [updated examples](USAGE.md#querying-issues) for how to accomplish the same scenario. - `Get-GitHubPullRequestForRepository` has been removed and replaced with `Get-GitHubPullRequest`. The key difference between these two is that it no longer accepts multiple repositories as single input, and filtering on creation/merged date can be done after the fact piping the results into `Where-Object` now that the returned objects from `Get-GitHubPullRequest` have actual `[DateTime]` values for the date properties. For an updated example of doing this, refer to [example usage](USAGE.md#querying-pull-requests). - `Get-GitHubWeeklyPullRequestForRepository` has been removed and functionally replaced by `Group-GitHubPullRequest`. For an updated example of using it, refer to [example usage](USAGE.md#querying-pull-requests) - `Get-GitHubTopPullRequestRepository` has been removed. We have [updated examples](USAGE.md#querying-pull-requests) for how to accomplish the same scenario. - `Get-GitHubRepositoryNameFromUrl` and `GitHubRepositoryOwnerFromUrl` have been removed and functionally replaced by `Split-GitHubUri` - `Get-GitHubRepositoryUniqueContributor` has been removed. We have an [updated example](USAGE.md#querying-contributors) for how to accomplish the same scenario. - `GitHubOrganizationRepository` has been removed. You can now retrieve repositories for an organization via `Get-GitHubRepository -OrganizationName <name>`. - `Get-GitHubAuthenticatedUser` has been replaced with `Get-GitHubUser -Current`. Fixes Issue #34: Warning output on import is being written out twice Fixes Issue #33: TLS error in Get-GitHubIssueForRepository : Failed to execute query with exception Fixes Issue #26: Token in template file Fixes Issue #24: Add a command for configuration
2018-10-31 09:14:28 +03:00
$OwnerName = $elements.ownerName
$RepositoryName = $elements.repositoryName
$telemetryProperties = @{
'OwnerName' = (Get-PiiSafeString -PlainText $OwnerName)
'RepositoryName' = (Get-PiiSafeString -PlainText $RepositoryName)
}
$params = @{
'UriFragment' = "repos/$OwnerName/$RepositoryName/issues/$Issue/timeline"
'Description' = "Getting timeline for Issue #$Issue in $RepositoryName"
'AcceptHeader' = 'application/vnd.github.mockingbird-preview'
'AccessToken' = $AccessToken
'TelemetryEventName' = $MyInvocation.MyCommand.Name
'TelemetryProperties' = $telemetryProperties
'NoStatus' = (Resolve-ParameterWithDefaultConfigurationValue -Name NoStatus -ConfigValueName DefaultNoStatus)
Module restructure to v0.2.0 + Significant restructing and refactoring of entire module to make future expansion easier. + Significant documentation updates ([CHANGELOG](./CHANGELOG.md), [CONTRIBUTING.md](./CONTRIBUTING.md), [GOVERNANCE.md](./GOVERNANCE.md), [README.md](./README.md), [USAGE.md](./USAGE.md)) + Added `Set-GitHubAuthentication` (and related methods) for securely caching the Access Token + Added `Set-GitHubConfiguration` (and related methods) to enable short and long-term configuration of the module. + Added ability to asynchronously see status update of REST requests. + Added logging and telemetry to the module (each can be disabled if desired). + Tests now auto-configure themselves across whatever account information is supplied in [Tests/Config/Settings.ps1](./Tests/Config/Settings.ps1) + Added support for a number of additional GitHub API's: + All [Miscellaneous API's](https://developer.github.com/v3/misc/) + Ability to fully query, update, remove, lock, and unlock Issues. + Enhanced pull request querying support + Ability tofully query, create, and remove Repositories, as well as transfer ownership, get tags, get/set topic and current used programming languages. + Enhanced user query support as well as being able update information for the current user. * Made parameter ordering consistent across all functions (OwnerName is now first, then RepositoryName) * Normalized all parameters to use SentenceCase * All functions that can take a Uri or OwnerName/RepositoryName now support both options. * Made all parameter names consistent across functions: * `GitHubAccessToken` -> `AccessToken` * `RepositoryUrl` -> `Uri` * `Organization` -> `OrganizationName` * `Repository` -> `RepositoryName` * `Owner` -> `OwnerName` * Normalized usage of Verbose, Info and Error streams - `New-GitHubLabels` was renamed to `Set-GitHubLabel` and can now optionally take in the labels to apply to the Repository. - `Get-GitHubIssueForRepository` has been removed and replaced with `Get-GitHubIssue`. The key difference between these two is that it no longer accepts multiple repositories as single input, and filtering on creation/closed date can be done after the fact piping the results into `Where-Object` now that the returned objects from `Get-GitHubIssue` have actual `[DateTime]` values for the date properties. For an updated example of doing this, refer to [example usage](USAGE.md#querying-issues). - `Get-GitHubWeeklyIssueForRepository` has been removed and functionally replaced by `Group-GitHubIssue`. For an updated example of using it, refer to [example usage](USAGE.md#querying-issues) - `Get-GitHubTopIssueRepository` has been removed. We have [updated examples](USAGE.md#querying-issues) for how to accomplish the same scenario. - `Get-GitHubPullRequestForRepository` has been removed and replaced with `Get-GitHubPullRequest`. The key difference between these two is that it no longer accepts multiple repositories as single input, and filtering on creation/merged date can be done after the fact piping the results into `Where-Object` now that the returned objects from `Get-GitHubPullRequest` have actual `[DateTime]` values for the date properties. For an updated example of doing this, refer to [example usage](USAGE.md#querying-pull-requests). - `Get-GitHubWeeklyPullRequestForRepository` has been removed and functionally replaced by `Group-GitHubPullRequest`. For an updated example of using it, refer to [example usage](USAGE.md#querying-pull-requests) - `Get-GitHubTopPullRequestRepository` has been removed. We have [updated examples](USAGE.md#querying-pull-requests) for how to accomplish the same scenario. - `Get-GitHubRepositoryNameFromUrl` and `GitHubRepositoryOwnerFromUrl` have been removed and functionally replaced by `Split-GitHubUri` - `Get-GitHubRepositoryUniqueContributor` has been removed. We have an [updated example](USAGE.md#querying-contributors) for how to accomplish the same scenario. - `GitHubOrganizationRepository` has been removed. You can now retrieve repositories for an organization via `Get-GitHubRepository -OrganizationName <name>`. - `Get-GitHubAuthenticatedUser` has been replaced with `Get-GitHubUser -Current`. Fixes Issue #34: Warning output on import is being written out twice Fixes Issue #33: TLS error in Get-GitHubIssueForRepository : Failed to execute query with exception Fixes Issue #26: Token in template file Fixes Issue #24: Add a command for configuration
2018-10-31 09:14:28 +03:00
}
return Invoke-GHRestMethodMultipleResult @params
}
function New-GitHubIssue
{
<#
.SYNOPSIS
Create a new Issue on GitHub.
.DESCRIPTION
Create a new Issue on GitHub.
The Git repo for this module can be found here: http://aka.ms/PowerShellForGitHub
.PARAMETER OwnerName
Owner of the repository.
If not supplied here, the DefaultOwnerName configuration property value will be used.
.PARAMETER RepositoryName
Name of the repository.
If not supplied here, the DefaultRepositoryName configuration property value will be used.
.PARAMETER Uri
Uri for the repository.
The OwnerName and RepositoryName will be extracted from here instead of needing to provide
them individually.
.PARAMETER Title
The title of the issue
.PARAMETER Body
The contents of the issue
.PARAMETER Assignee
Login(s) for Users to assign to the issue.
.PARAMETER Milestone
The number of the mileston to associate this issue with.
.PARAMETER Label
Label(s) to associate with this issue.
.PARAMETER AccessToken
If provided, this will be used as the AccessToken for authentication with the
REST Api. Otherwise, will attempt to use the configured value or will run unauthenticated.
.PARAMETER NoStatus
If this switch is specified, long-running commands will run on the main thread
with no commandline status update. When not specified, those commands run in
the background, enabling the command prompt to provide status information.
If not supplied here, the DefaultNoStatus configuration property value will be used.
.EXAMPLE
New-GitHubIssue -OwnerName PowerShell -RepositoryName PowerShellForGitHub -Title 'Test Issue'
#>
[CmdletBinding(
SupportsShouldProcess,
DefaultParametersetName='Elements')]
[Diagnostics.CodeAnalysis.SuppressMessageAttribute("PSShouldProcess", "", Justification="Methods called within here make use of PSShouldProcess, and the switch is passed on to them inherently.")]
param(
[Parameter(ParameterSetName='Elements')]
[string] $OwnerName,
[Parameter(ParameterSetName='Elements')]
[string] $RepositoryName,
[Parameter(
Mandatory,
ParameterSetName='Uri')]
[string] $Uri,
[Parameter(Mandatory)]
[ValidateNotNullOrEmpty()]
[string] $Title,
[string] $Body,
[string[]] $Assignee,
[int] $Milestone,
[string[]] $Label,
[string] $AccessToken,
[switch] $NoStatus
)
Write-InvocationLog
Module restructure to v0.2.0 + Significant restructing and refactoring of entire module to make future expansion easier. + Significant documentation updates ([CHANGELOG](./CHANGELOG.md), [CONTRIBUTING.md](./CONTRIBUTING.md), [GOVERNANCE.md](./GOVERNANCE.md), [README.md](./README.md), [USAGE.md](./USAGE.md)) + Added `Set-GitHubAuthentication` (and related methods) for securely caching the Access Token + Added `Set-GitHubConfiguration` (and related methods) to enable short and long-term configuration of the module. + Added ability to asynchronously see status update of REST requests. + Added logging and telemetry to the module (each can be disabled if desired). + Tests now auto-configure themselves across whatever account information is supplied in [Tests/Config/Settings.ps1](./Tests/Config/Settings.ps1) + Added support for a number of additional GitHub API's: + All [Miscellaneous API's](https://developer.github.com/v3/misc/) + Ability to fully query, update, remove, lock, and unlock Issues. + Enhanced pull request querying support + Ability tofully query, create, and remove Repositories, as well as transfer ownership, get tags, get/set topic and current used programming languages. + Enhanced user query support as well as being able update information for the current user. * Made parameter ordering consistent across all functions (OwnerName is now first, then RepositoryName) * Normalized all parameters to use SentenceCase * All functions that can take a Uri or OwnerName/RepositoryName now support both options. * Made all parameter names consistent across functions: * `GitHubAccessToken` -> `AccessToken` * `RepositoryUrl` -> `Uri` * `Organization` -> `OrganizationName` * `Repository` -> `RepositoryName` * `Owner` -> `OwnerName` * Normalized usage of Verbose, Info and Error streams - `New-GitHubLabels` was renamed to `Set-GitHubLabel` and can now optionally take in the labels to apply to the Repository. - `Get-GitHubIssueForRepository` has been removed and replaced with `Get-GitHubIssue`. The key difference between these two is that it no longer accepts multiple repositories as single input, and filtering on creation/closed date can be done after the fact piping the results into `Where-Object` now that the returned objects from `Get-GitHubIssue` have actual `[DateTime]` values for the date properties. For an updated example of doing this, refer to [example usage](USAGE.md#querying-issues). - `Get-GitHubWeeklyIssueForRepository` has been removed and functionally replaced by `Group-GitHubIssue`. For an updated example of using it, refer to [example usage](USAGE.md#querying-issues) - `Get-GitHubTopIssueRepository` has been removed. We have [updated examples](USAGE.md#querying-issues) for how to accomplish the same scenario. - `Get-GitHubPullRequestForRepository` has been removed and replaced with `Get-GitHubPullRequest`. The key difference between these two is that it no longer accepts multiple repositories as single input, and filtering on creation/merged date can be done after the fact piping the results into `Where-Object` now that the returned objects from `Get-GitHubPullRequest` have actual `[DateTime]` values for the date properties. For an updated example of doing this, refer to [example usage](USAGE.md#querying-pull-requests). - `Get-GitHubWeeklyPullRequestForRepository` has been removed and functionally replaced by `Group-GitHubPullRequest`. For an updated example of using it, refer to [example usage](USAGE.md#querying-pull-requests) - `Get-GitHubTopPullRequestRepository` has been removed. We have [updated examples](USAGE.md#querying-pull-requests) for how to accomplish the same scenario. - `Get-GitHubRepositoryNameFromUrl` and `GitHubRepositoryOwnerFromUrl` have been removed and functionally replaced by `Split-GitHubUri` - `Get-GitHubRepositoryUniqueContributor` has been removed. We have an [updated example](USAGE.md#querying-contributors) for how to accomplish the same scenario. - `GitHubOrganizationRepository` has been removed. You can now retrieve repositories for an organization via `Get-GitHubRepository -OrganizationName <name>`. - `Get-GitHubAuthenticatedUser` has been replaced with `Get-GitHubUser -Current`. Fixes Issue #34: Warning output on import is being written out twice Fixes Issue #33: TLS error in Get-GitHubIssueForRepository : Failed to execute query with exception Fixes Issue #26: Token in template file Fixes Issue #24: Add a command for configuration
2018-10-31 09:14:28 +03:00
$elements = Resolve-RepositoryElements
Module restructure to v0.2.0 + Significant restructing and refactoring of entire module to make future expansion easier. + Significant documentation updates ([CHANGELOG](./CHANGELOG.md), [CONTRIBUTING.md](./CONTRIBUTING.md), [GOVERNANCE.md](./GOVERNANCE.md), [README.md](./README.md), [USAGE.md](./USAGE.md)) + Added `Set-GitHubAuthentication` (and related methods) for securely caching the Access Token + Added `Set-GitHubConfiguration` (and related methods) to enable short and long-term configuration of the module. + Added ability to asynchronously see status update of REST requests. + Added logging and telemetry to the module (each can be disabled if desired). + Tests now auto-configure themselves across whatever account information is supplied in [Tests/Config/Settings.ps1](./Tests/Config/Settings.ps1) + Added support for a number of additional GitHub API's: + All [Miscellaneous API's](https://developer.github.com/v3/misc/) + Ability to fully query, update, remove, lock, and unlock Issues. + Enhanced pull request querying support + Ability tofully query, create, and remove Repositories, as well as transfer ownership, get tags, get/set topic and current used programming languages. + Enhanced user query support as well as being able update information for the current user. * Made parameter ordering consistent across all functions (OwnerName is now first, then RepositoryName) * Normalized all parameters to use SentenceCase * All functions that can take a Uri or OwnerName/RepositoryName now support both options. * Made all parameter names consistent across functions: * `GitHubAccessToken` -> `AccessToken` * `RepositoryUrl` -> `Uri` * `Organization` -> `OrganizationName` * `Repository` -> `RepositoryName` * `Owner` -> `OwnerName` * Normalized usage of Verbose, Info and Error streams - `New-GitHubLabels` was renamed to `Set-GitHubLabel` and can now optionally take in the labels to apply to the Repository. - `Get-GitHubIssueForRepository` has been removed and replaced with `Get-GitHubIssue`. The key difference between these two is that it no longer accepts multiple repositories as single input, and filtering on creation/closed date can be done after the fact piping the results into `Where-Object` now that the returned objects from `Get-GitHubIssue` have actual `[DateTime]` values for the date properties. For an updated example of doing this, refer to [example usage](USAGE.md#querying-issues). - `Get-GitHubWeeklyIssueForRepository` has been removed and functionally replaced by `Group-GitHubIssue`. For an updated example of using it, refer to [example usage](USAGE.md#querying-issues) - `Get-GitHubTopIssueRepository` has been removed. We have [updated examples](USAGE.md#querying-issues) for how to accomplish the same scenario. - `Get-GitHubPullRequestForRepository` has been removed and replaced with `Get-GitHubPullRequest`. The key difference between these two is that it no longer accepts multiple repositories as single input, and filtering on creation/merged date can be done after the fact piping the results into `Where-Object` now that the returned objects from `Get-GitHubPullRequest` have actual `[DateTime]` values for the date properties. For an updated example of doing this, refer to [example usage](USAGE.md#querying-pull-requests). - `Get-GitHubWeeklyPullRequestForRepository` has been removed and functionally replaced by `Group-GitHubPullRequest`. For an updated example of using it, refer to [example usage](USAGE.md#querying-pull-requests) - `Get-GitHubTopPullRequestRepository` has been removed. We have [updated examples](USAGE.md#querying-pull-requests) for how to accomplish the same scenario. - `Get-GitHubRepositoryNameFromUrl` and `GitHubRepositoryOwnerFromUrl` have been removed and functionally replaced by `Split-GitHubUri` - `Get-GitHubRepositoryUniqueContributor` has been removed. We have an [updated example](USAGE.md#querying-contributors) for how to accomplish the same scenario. - `GitHubOrganizationRepository` has been removed. You can now retrieve repositories for an organization via `Get-GitHubRepository -OrganizationName <name>`. - `Get-GitHubAuthenticatedUser` has been replaced with `Get-GitHubUser -Current`. Fixes Issue #34: Warning output on import is being written out twice Fixes Issue #33: TLS error in Get-GitHubIssueForRepository : Failed to execute query with exception Fixes Issue #26: Token in template file Fixes Issue #24: Add a command for configuration
2018-10-31 09:14:28 +03:00
$OwnerName = $elements.ownerName
$RepositoryName = $elements.repositoryName
$telemetryProperties = @{
'OwnerName' = (Get-PiiSafeString -PlainText $OwnerName)
'RepositoryName' = (Get-PiiSafeString -PlainText $RepositoryName)
}
$hashBody = @{
'title' = $Title
}
if ($PSBoundParameters.ContainsKey('Body')) { $hashBody['body'] = $Body }
if ($PSBoundParameters.ContainsKey('Assignee')) { $hashBody['assignees'] = @($Assignee) }
if ($PSBoundParameters.ContainsKey('Milestone')) { $hashBody['milestone'] = $Milestone }
if ($PSBoundParameters.ContainsKey('Label')) { $hashBody['label'] = @($Label) }
$params = @{
'UriFragment' = "/repos/$OwnerName/$RepositoryName/issues"
'Body' = (ConvertTo-Json -InputObject $hashBody)
Module restructure to v0.2.0 + Significant restructing and refactoring of entire module to make future expansion easier. + Significant documentation updates ([CHANGELOG](./CHANGELOG.md), [CONTRIBUTING.md](./CONTRIBUTING.md), [GOVERNANCE.md](./GOVERNANCE.md), [README.md](./README.md), [USAGE.md](./USAGE.md)) + Added `Set-GitHubAuthentication` (and related methods) for securely caching the Access Token + Added `Set-GitHubConfiguration` (and related methods) to enable short and long-term configuration of the module. + Added ability to asynchronously see status update of REST requests. + Added logging and telemetry to the module (each can be disabled if desired). + Tests now auto-configure themselves across whatever account information is supplied in [Tests/Config/Settings.ps1](./Tests/Config/Settings.ps1) + Added support for a number of additional GitHub API's: + All [Miscellaneous API's](https://developer.github.com/v3/misc/) + Ability to fully query, update, remove, lock, and unlock Issues. + Enhanced pull request querying support + Ability tofully query, create, and remove Repositories, as well as transfer ownership, get tags, get/set topic and current used programming languages. + Enhanced user query support as well as being able update information for the current user. * Made parameter ordering consistent across all functions (OwnerName is now first, then RepositoryName) * Normalized all parameters to use SentenceCase * All functions that can take a Uri or OwnerName/RepositoryName now support both options. * Made all parameter names consistent across functions: * `GitHubAccessToken` -> `AccessToken` * `RepositoryUrl` -> `Uri` * `Organization` -> `OrganizationName` * `Repository` -> `RepositoryName` * `Owner` -> `OwnerName` * Normalized usage of Verbose, Info and Error streams - `New-GitHubLabels` was renamed to `Set-GitHubLabel` and can now optionally take in the labels to apply to the Repository. - `Get-GitHubIssueForRepository` has been removed and replaced with `Get-GitHubIssue`. The key difference between these two is that it no longer accepts multiple repositories as single input, and filtering on creation/closed date can be done after the fact piping the results into `Where-Object` now that the returned objects from `Get-GitHubIssue` have actual `[DateTime]` values for the date properties. For an updated example of doing this, refer to [example usage](USAGE.md#querying-issues). - `Get-GitHubWeeklyIssueForRepository` has been removed and functionally replaced by `Group-GitHubIssue`. For an updated example of using it, refer to [example usage](USAGE.md#querying-issues) - `Get-GitHubTopIssueRepository` has been removed. We have [updated examples](USAGE.md#querying-issues) for how to accomplish the same scenario. - `Get-GitHubPullRequestForRepository` has been removed and replaced with `Get-GitHubPullRequest`. The key difference between these two is that it no longer accepts multiple repositories as single input, and filtering on creation/merged date can be done after the fact piping the results into `Where-Object` now that the returned objects from `Get-GitHubPullRequest` have actual `[DateTime]` values for the date properties. For an updated example of doing this, refer to [example usage](USAGE.md#querying-pull-requests). - `Get-GitHubWeeklyPullRequestForRepository` has been removed and functionally replaced by `Group-GitHubPullRequest`. For an updated example of using it, refer to [example usage](USAGE.md#querying-pull-requests) - `Get-GitHubTopPullRequestRepository` has been removed. We have [updated examples](USAGE.md#querying-pull-requests) for how to accomplish the same scenario. - `Get-GitHubRepositoryNameFromUrl` and `GitHubRepositoryOwnerFromUrl` have been removed and functionally replaced by `Split-GitHubUri` - `Get-GitHubRepositoryUniqueContributor` has been removed. We have an [updated example](USAGE.md#querying-contributors) for how to accomplish the same scenario. - `GitHubOrganizationRepository` has been removed. You can now retrieve repositories for an organization via `Get-GitHubRepository -OrganizationName <name>`. - `Get-GitHubAuthenticatedUser` has been replaced with `Get-GitHubUser -Current`. Fixes Issue #34: Warning output on import is being written out twice Fixes Issue #33: TLS error in Get-GitHubIssueForRepository : Failed to execute query with exception Fixes Issue #26: Token in template file Fixes Issue #24: Add a command for configuration
2018-10-31 09:14:28 +03:00
'Method' = 'Post'
'Description' = "Creating new Issue ""$Title"" on $RepositoryName"
'AcceptHeader' = 'application/vnd.github.symmetra-preview+json'
'AccessToken' = $AccessToken
'TelemetryEventName' = $MyInvocation.MyCommand.Name
'TelemetryProperties' = $telemetryProperties
'NoStatus' = (Resolve-ParameterWithDefaultConfigurationValue -Name NoStatus -ConfigValueName DefaultNoStatus)
Module restructure to v0.2.0 + Significant restructing and refactoring of entire module to make future expansion easier. + Significant documentation updates ([CHANGELOG](./CHANGELOG.md), [CONTRIBUTING.md](./CONTRIBUTING.md), [GOVERNANCE.md](./GOVERNANCE.md), [README.md](./README.md), [USAGE.md](./USAGE.md)) + Added `Set-GitHubAuthentication` (and related methods) for securely caching the Access Token + Added `Set-GitHubConfiguration` (and related methods) to enable short and long-term configuration of the module. + Added ability to asynchronously see status update of REST requests. + Added logging and telemetry to the module (each can be disabled if desired). + Tests now auto-configure themselves across whatever account information is supplied in [Tests/Config/Settings.ps1](./Tests/Config/Settings.ps1) + Added support for a number of additional GitHub API's: + All [Miscellaneous API's](https://developer.github.com/v3/misc/) + Ability to fully query, update, remove, lock, and unlock Issues. + Enhanced pull request querying support + Ability tofully query, create, and remove Repositories, as well as transfer ownership, get tags, get/set topic and current used programming languages. + Enhanced user query support as well as being able update information for the current user. * Made parameter ordering consistent across all functions (OwnerName is now first, then RepositoryName) * Normalized all parameters to use SentenceCase * All functions that can take a Uri or OwnerName/RepositoryName now support both options. * Made all parameter names consistent across functions: * `GitHubAccessToken` -> `AccessToken` * `RepositoryUrl` -> `Uri` * `Organization` -> `OrganizationName` * `Repository` -> `RepositoryName` * `Owner` -> `OwnerName` * Normalized usage of Verbose, Info and Error streams - `New-GitHubLabels` was renamed to `Set-GitHubLabel` and can now optionally take in the labels to apply to the Repository. - `Get-GitHubIssueForRepository` has been removed and replaced with `Get-GitHubIssue`. The key difference between these two is that it no longer accepts multiple repositories as single input, and filtering on creation/closed date can be done after the fact piping the results into `Where-Object` now that the returned objects from `Get-GitHubIssue` have actual `[DateTime]` values for the date properties. For an updated example of doing this, refer to [example usage](USAGE.md#querying-issues). - `Get-GitHubWeeklyIssueForRepository` has been removed and functionally replaced by `Group-GitHubIssue`. For an updated example of using it, refer to [example usage](USAGE.md#querying-issues) - `Get-GitHubTopIssueRepository` has been removed. We have [updated examples](USAGE.md#querying-issues) for how to accomplish the same scenario. - `Get-GitHubPullRequestForRepository` has been removed and replaced with `Get-GitHubPullRequest`. The key difference between these two is that it no longer accepts multiple repositories as single input, and filtering on creation/merged date can be done after the fact piping the results into `Where-Object` now that the returned objects from `Get-GitHubPullRequest` have actual `[DateTime]` values for the date properties. For an updated example of doing this, refer to [example usage](USAGE.md#querying-pull-requests). - `Get-GitHubWeeklyPullRequestForRepository` has been removed and functionally replaced by `Group-GitHubPullRequest`. For an updated example of using it, refer to [example usage](USAGE.md#querying-pull-requests) - `Get-GitHubTopPullRequestRepository` has been removed. We have [updated examples](USAGE.md#querying-pull-requests) for how to accomplish the same scenario. - `Get-GitHubRepositoryNameFromUrl` and `GitHubRepositoryOwnerFromUrl` have been removed and functionally replaced by `Split-GitHubUri` - `Get-GitHubRepositoryUniqueContributor` has been removed. We have an [updated example](USAGE.md#querying-contributors) for how to accomplish the same scenario. - `GitHubOrganizationRepository` has been removed. You can now retrieve repositories for an organization via `Get-GitHubRepository -OrganizationName <name>`. - `Get-GitHubAuthenticatedUser` has been replaced with `Get-GitHubUser -Current`. Fixes Issue #34: Warning output on import is being written out twice Fixes Issue #33: TLS error in Get-GitHubIssueForRepository : Failed to execute query with exception Fixes Issue #26: Token in template file Fixes Issue #24: Add a command for configuration
2018-10-31 09:14:28 +03:00
}
return Invoke-GHRestMethod @params
}
function Update-GitHubIssue
{
<#
.SYNOPSIS
Create a new Issue on GitHub.
.DESCRIPTION
Create a new Issue on GitHub.
The Git repo for this module can be found here: http://aka.ms/PowerShellForGitHub
.PARAMETER OwnerName
Owner of the repository.
If not supplied here, the DefaultOwnerName configuration property value will be used.
.PARAMETER RepositoryName
Name of the repository.
If not supplied here, the DefaultRepositoryName configuration property value will be used.
.PARAMETER Uri
Uri for the repository.
The OwnerName and RepositoryName will be extracted from here instead of needing to provide
them individually.
.PARAMETER Issue
The issue to be updated.
.PARAMETER Title
The title of the issue
.PARAMETER Body
The contents of the issue
.PARAMETER Assignee
Login(s) for Users to assign to the issue.
Provide an empty array to clear all existing assignees.
.PARAMETER Milestone
The number of the mileston to associate this issue with.
Set to 0/$null to remove current.
.PARAMETER Label
Label(s) to associate with this issue.
Provide an empty array to clear all existing labels.
.PARAMETER State
Modify the current state of the issue.
.PARAMETER AccessToken
If provided, this will be used as the AccessToken for authentication with the
REST Api. Otherwise, will attempt to use the configured value or will run unauthenticated.
.PARAMETER NoStatus
If this switch is specified, long-running commands will run on the main thread
with no commandline status update. When not specified, those commands run in
the background, enabling the command prompt to provide status information.
If not supplied here, the DefaultNoStatus configuration property value will be used.
.EXAMPLE
Update-GitHubIssue -OwnerName PowerShell -RepositoryName PowerShellForGitHub -Issue 4 -Title 'Test Issue' -State closed
#>
[CmdletBinding(
SupportsShouldProcess,
DefaultParametersetName='Elements')]
[Diagnostics.CodeAnalysis.SuppressMessageAttribute("PSShouldProcess", "", Justification="Methods called within here make use of PSShouldProcess, and the switch is passed on to them inherently.")]
param(
[Parameter(ParameterSetName='Elements')]
[string] $OwnerName,
[Parameter(ParameterSetName='Elements')]
[string] $RepositoryName,
[Parameter(
Mandatory,
ParameterSetName='Uri')]
[string] $Uri,
[Parameter(Mandatory)]
[int] $Issue,
[string] $Title,
[string] $Body,
[string[]] $Assignee,
[int] $Milestone,
[string[]] $Label,
[ValidateSet('open', 'closed')]
[string] $State,
[string] $AccessToken,
[switch] $NoStatus
)
Write-InvocationLog
Module restructure to v0.2.0 + Significant restructing and refactoring of entire module to make future expansion easier. + Significant documentation updates ([CHANGELOG](./CHANGELOG.md), [CONTRIBUTING.md](./CONTRIBUTING.md), [GOVERNANCE.md](./GOVERNANCE.md), [README.md](./README.md), [USAGE.md](./USAGE.md)) + Added `Set-GitHubAuthentication` (and related methods) for securely caching the Access Token + Added `Set-GitHubConfiguration` (and related methods) to enable short and long-term configuration of the module. + Added ability to asynchronously see status update of REST requests. + Added logging and telemetry to the module (each can be disabled if desired). + Tests now auto-configure themselves across whatever account information is supplied in [Tests/Config/Settings.ps1](./Tests/Config/Settings.ps1) + Added support for a number of additional GitHub API's: + All [Miscellaneous API's](https://developer.github.com/v3/misc/) + Ability to fully query, update, remove, lock, and unlock Issues. + Enhanced pull request querying support + Ability tofully query, create, and remove Repositories, as well as transfer ownership, get tags, get/set topic and current used programming languages. + Enhanced user query support as well as being able update information for the current user. * Made parameter ordering consistent across all functions (OwnerName is now first, then RepositoryName) * Normalized all parameters to use SentenceCase * All functions that can take a Uri or OwnerName/RepositoryName now support both options. * Made all parameter names consistent across functions: * `GitHubAccessToken` -> `AccessToken` * `RepositoryUrl` -> `Uri` * `Organization` -> `OrganizationName` * `Repository` -> `RepositoryName` * `Owner` -> `OwnerName` * Normalized usage of Verbose, Info and Error streams - `New-GitHubLabels` was renamed to `Set-GitHubLabel` and can now optionally take in the labels to apply to the Repository. - `Get-GitHubIssueForRepository` has been removed and replaced with `Get-GitHubIssue`. The key difference between these two is that it no longer accepts multiple repositories as single input, and filtering on creation/closed date can be done after the fact piping the results into `Where-Object` now that the returned objects from `Get-GitHubIssue` have actual `[DateTime]` values for the date properties. For an updated example of doing this, refer to [example usage](USAGE.md#querying-issues). - `Get-GitHubWeeklyIssueForRepository` has been removed and functionally replaced by `Group-GitHubIssue`. For an updated example of using it, refer to [example usage](USAGE.md#querying-issues) - `Get-GitHubTopIssueRepository` has been removed. We have [updated examples](USAGE.md#querying-issues) for how to accomplish the same scenario. - `Get-GitHubPullRequestForRepository` has been removed and replaced with `Get-GitHubPullRequest`. The key difference between these two is that it no longer accepts multiple repositories as single input, and filtering on creation/merged date can be done after the fact piping the results into `Where-Object` now that the returned objects from `Get-GitHubPullRequest` have actual `[DateTime]` values for the date properties. For an updated example of doing this, refer to [example usage](USAGE.md#querying-pull-requests). - `Get-GitHubWeeklyPullRequestForRepository` has been removed and functionally replaced by `Group-GitHubPullRequest`. For an updated example of using it, refer to [example usage](USAGE.md#querying-pull-requests) - `Get-GitHubTopPullRequestRepository` has been removed. We have [updated examples](USAGE.md#querying-pull-requests) for how to accomplish the same scenario. - `Get-GitHubRepositoryNameFromUrl` and `GitHubRepositoryOwnerFromUrl` have been removed and functionally replaced by `Split-GitHubUri` - `Get-GitHubRepositoryUniqueContributor` has been removed. We have an [updated example](USAGE.md#querying-contributors) for how to accomplish the same scenario. - `GitHubOrganizationRepository` has been removed. You can now retrieve repositories for an organization via `Get-GitHubRepository -OrganizationName <name>`. - `Get-GitHubAuthenticatedUser` has been replaced with `Get-GitHubUser -Current`. Fixes Issue #34: Warning output on import is being written out twice Fixes Issue #33: TLS error in Get-GitHubIssueForRepository : Failed to execute query with exception Fixes Issue #26: Token in template file Fixes Issue #24: Add a command for configuration
2018-10-31 09:14:28 +03:00
$elements = Resolve-RepositoryElements
Module restructure to v0.2.0 + Significant restructing and refactoring of entire module to make future expansion easier. + Significant documentation updates ([CHANGELOG](./CHANGELOG.md), [CONTRIBUTING.md](./CONTRIBUTING.md), [GOVERNANCE.md](./GOVERNANCE.md), [README.md](./README.md), [USAGE.md](./USAGE.md)) + Added `Set-GitHubAuthentication` (and related methods) for securely caching the Access Token + Added `Set-GitHubConfiguration` (and related methods) to enable short and long-term configuration of the module. + Added ability to asynchronously see status update of REST requests. + Added logging and telemetry to the module (each can be disabled if desired). + Tests now auto-configure themselves across whatever account information is supplied in [Tests/Config/Settings.ps1](./Tests/Config/Settings.ps1) + Added support for a number of additional GitHub API's: + All [Miscellaneous API's](https://developer.github.com/v3/misc/) + Ability to fully query, update, remove, lock, and unlock Issues. + Enhanced pull request querying support + Ability tofully query, create, and remove Repositories, as well as transfer ownership, get tags, get/set topic and current used programming languages. + Enhanced user query support as well as being able update information for the current user. * Made parameter ordering consistent across all functions (OwnerName is now first, then RepositoryName) * Normalized all parameters to use SentenceCase * All functions that can take a Uri or OwnerName/RepositoryName now support both options. * Made all parameter names consistent across functions: * `GitHubAccessToken` -> `AccessToken` * `RepositoryUrl` -> `Uri` * `Organization` -> `OrganizationName` * `Repository` -> `RepositoryName` * `Owner` -> `OwnerName` * Normalized usage of Verbose, Info and Error streams - `New-GitHubLabels` was renamed to `Set-GitHubLabel` and can now optionally take in the labels to apply to the Repository. - `Get-GitHubIssueForRepository` has been removed and replaced with `Get-GitHubIssue`. The key difference between these two is that it no longer accepts multiple repositories as single input, and filtering on creation/closed date can be done after the fact piping the results into `Where-Object` now that the returned objects from `Get-GitHubIssue` have actual `[DateTime]` values for the date properties. For an updated example of doing this, refer to [example usage](USAGE.md#querying-issues). - `Get-GitHubWeeklyIssueForRepository` has been removed and functionally replaced by `Group-GitHubIssue`. For an updated example of using it, refer to [example usage](USAGE.md#querying-issues) - `Get-GitHubTopIssueRepository` has been removed. We have [updated examples](USAGE.md#querying-issues) for how to accomplish the same scenario. - `Get-GitHubPullRequestForRepository` has been removed and replaced with `Get-GitHubPullRequest`. The key difference between these two is that it no longer accepts multiple repositories as single input, and filtering on creation/merged date can be done after the fact piping the results into `Where-Object` now that the returned objects from `Get-GitHubPullRequest` have actual `[DateTime]` values for the date properties. For an updated example of doing this, refer to [example usage](USAGE.md#querying-pull-requests). - `Get-GitHubWeeklyPullRequestForRepository` has been removed and functionally replaced by `Group-GitHubPullRequest`. For an updated example of using it, refer to [example usage](USAGE.md#querying-pull-requests) - `Get-GitHubTopPullRequestRepository` has been removed. We have [updated examples](USAGE.md#querying-pull-requests) for how to accomplish the same scenario. - `Get-GitHubRepositoryNameFromUrl` and `GitHubRepositoryOwnerFromUrl` have been removed and functionally replaced by `Split-GitHubUri` - `Get-GitHubRepositoryUniqueContributor` has been removed. We have an [updated example](USAGE.md#querying-contributors) for how to accomplish the same scenario. - `GitHubOrganizationRepository` has been removed. You can now retrieve repositories for an organization via `Get-GitHubRepository -OrganizationName <name>`. - `Get-GitHubAuthenticatedUser` has been replaced with `Get-GitHubUser -Current`. Fixes Issue #34: Warning output on import is being written out twice Fixes Issue #33: TLS error in Get-GitHubIssueForRepository : Failed to execute query with exception Fixes Issue #26: Token in template file Fixes Issue #24: Add a command for configuration
2018-10-31 09:14:28 +03:00
$OwnerName = $elements.ownerName
$RepositoryName = $elements.repositoryName
$telemetryProperties = @{
'OwnerName' = (Get-PiiSafeString -PlainText $OwnerName)
'RepositoryName' = (Get-PiiSafeString -PlainText $RepositoryName)
}
$hashBody = @{}
if ($PSBoundParameters.ContainsKey('Title')) { $hashBody['title'] = $Title }
if ($PSBoundParameters.ContainsKey('Body')) { $hashBody['body'] = $Body }
if ($PSBoundParameters.ContainsKey('Assignee')) { $hashBody['assignees'] = @($Assignee) }
if ($PSBoundParameters.ContainsKey('Label')) { $hashBody['label'] = @($Label) }
if ($PSBoundParameters.ContainsKey('State')) { $hashBody['state'] = $State }
if ($PSBoundParameters.ContainsKey('Milestone'))
{
$hashBody['milestone'] = $Milestone
if ($Milestone -in (0, $null))
{
$hashBody['milestone'] = $null
}
}
$params = @{
'UriFragment' = "/repos/$OwnerName/$RepositoryName/issues/$Issue"
'Body' = (ConvertTo-Json -InputObject $hashBody)
Module restructure to v0.2.0 + Significant restructing and refactoring of entire module to make future expansion easier. + Significant documentation updates ([CHANGELOG](./CHANGELOG.md), [CONTRIBUTING.md](./CONTRIBUTING.md), [GOVERNANCE.md](./GOVERNANCE.md), [README.md](./README.md), [USAGE.md](./USAGE.md)) + Added `Set-GitHubAuthentication` (and related methods) for securely caching the Access Token + Added `Set-GitHubConfiguration` (and related methods) to enable short and long-term configuration of the module. + Added ability to asynchronously see status update of REST requests. + Added logging and telemetry to the module (each can be disabled if desired). + Tests now auto-configure themselves across whatever account information is supplied in [Tests/Config/Settings.ps1](./Tests/Config/Settings.ps1) + Added support for a number of additional GitHub API's: + All [Miscellaneous API's](https://developer.github.com/v3/misc/) + Ability to fully query, update, remove, lock, and unlock Issues. + Enhanced pull request querying support + Ability tofully query, create, and remove Repositories, as well as transfer ownership, get tags, get/set topic and current used programming languages. + Enhanced user query support as well as being able update information for the current user. * Made parameter ordering consistent across all functions (OwnerName is now first, then RepositoryName) * Normalized all parameters to use SentenceCase * All functions that can take a Uri or OwnerName/RepositoryName now support both options. * Made all parameter names consistent across functions: * `GitHubAccessToken` -> `AccessToken` * `RepositoryUrl` -> `Uri` * `Organization` -> `OrganizationName` * `Repository` -> `RepositoryName` * `Owner` -> `OwnerName` * Normalized usage of Verbose, Info and Error streams - `New-GitHubLabels` was renamed to `Set-GitHubLabel` and can now optionally take in the labels to apply to the Repository. - `Get-GitHubIssueForRepository` has been removed and replaced with `Get-GitHubIssue`. The key difference between these two is that it no longer accepts multiple repositories as single input, and filtering on creation/closed date can be done after the fact piping the results into `Where-Object` now that the returned objects from `Get-GitHubIssue` have actual `[DateTime]` values for the date properties. For an updated example of doing this, refer to [example usage](USAGE.md#querying-issues). - `Get-GitHubWeeklyIssueForRepository` has been removed and functionally replaced by `Group-GitHubIssue`. For an updated example of using it, refer to [example usage](USAGE.md#querying-issues) - `Get-GitHubTopIssueRepository` has been removed. We have [updated examples](USAGE.md#querying-issues) for how to accomplish the same scenario. - `Get-GitHubPullRequestForRepository` has been removed and replaced with `Get-GitHubPullRequest`. The key difference between these two is that it no longer accepts multiple repositories as single input, and filtering on creation/merged date can be done after the fact piping the results into `Where-Object` now that the returned objects from `Get-GitHubPullRequest` have actual `[DateTime]` values for the date properties. For an updated example of doing this, refer to [example usage](USAGE.md#querying-pull-requests). - `Get-GitHubWeeklyPullRequestForRepository` has been removed and functionally replaced by `Group-GitHubPullRequest`. For an updated example of using it, refer to [example usage](USAGE.md#querying-pull-requests) - `Get-GitHubTopPullRequestRepository` has been removed. We have [updated examples](USAGE.md#querying-pull-requests) for how to accomplish the same scenario. - `Get-GitHubRepositoryNameFromUrl` and `GitHubRepositoryOwnerFromUrl` have been removed and functionally replaced by `Split-GitHubUri` - `Get-GitHubRepositoryUniqueContributor` has been removed. We have an [updated example](USAGE.md#querying-contributors) for how to accomplish the same scenario. - `GitHubOrganizationRepository` has been removed. You can now retrieve repositories for an organization via `Get-GitHubRepository -OrganizationName <name>`. - `Get-GitHubAuthenticatedUser` has been replaced with `Get-GitHubUser -Current`. Fixes Issue #34: Warning output on import is being written out twice Fixes Issue #33: TLS error in Get-GitHubIssueForRepository : Failed to execute query with exception Fixes Issue #26: Token in template file Fixes Issue #24: Add a command for configuration
2018-10-31 09:14:28 +03:00
'Method' = 'Patch'
'Description' = "Updating Issue #$Issue on $RepositoryName"
'AcceptHeader' = 'application/vnd.github.symmetra-preview+json'
'AccessToken' = $AccessToken
'TelemetryEventName' = $MyInvocation.MyCommand.Name
'TelemetryProperties' = $telemetryProperties
'NoStatus' = (Resolve-ParameterWithDefaultConfigurationValue -Name NoStatus -ConfigValueName DefaultNoStatus)
Module restructure to v0.2.0 + Significant restructing and refactoring of entire module to make future expansion easier. + Significant documentation updates ([CHANGELOG](./CHANGELOG.md), [CONTRIBUTING.md](./CONTRIBUTING.md), [GOVERNANCE.md](./GOVERNANCE.md), [README.md](./README.md), [USAGE.md](./USAGE.md)) + Added `Set-GitHubAuthentication` (and related methods) for securely caching the Access Token + Added `Set-GitHubConfiguration` (and related methods) to enable short and long-term configuration of the module. + Added ability to asynchronously see status update of REST requests. + Added logging and telemetry to the module (each can be disabled if desired). + Tests now auto-configure themselves across whatever account information is supplied in [Tests/Config/Settings.ps1](./Tests/Config/Settings.ps1) + Added support for a number of additional GitHub API's: + All [Miscellaneous API's](https://developer.github.com/v3/misc/) + Ability to fully query, update, remove, lock, and unlock Issues. + Enhanced pull request querying support + Ability tofully query, create, and remove Repositories, as well as transfer ownership, get tags, get/set topic and current used programming languages. + Enhanced user query support as well as being able update information for the current user. * Made parameter ordering consistent across all functions (OwnerName is now first, then RepositoryName) * Normalized all parameters to use SentenceCase * All functions that can take a Uri or OwnerName/RepositoryName now support both options. * Made all parameter names consistent across functions: * `GitHubAccessToken` -> `AccessToken` * `RepositoryUrl` -> `Uri` * `Organization` -> `OrganizationName` * `Repository` -> `RepositoryName` * `Owner` -> `OwnerName` * Normalized usage of Verbose, Info and Error streams - `New-GitHubLabels` was renamed to `Set-GitHubLabel` and can now optionally take in the labels to apply to the Repository. - `Get-GitHubIssueForRepository` has been removed and replaced with `Get-GitHubIssue`. The key difference between these two is that it no longer accepts multiple repositories as single input, and filtering on creation/closed date can be done after the fact piping the results into `Where-Object` now that the returned objects from `Get-GitHubIssue` have actual `[DateTime]` values for the date properties. For an updated example of doing this, refer to [example usage](USAGE.md#querying-issues). - `Get-GitHubWeeklyIssueForRepository` has been removed and functionally replaced by `Group-GitHubIssue`. For an updated example of using it, refer to [example usage](USAGE.md#querying-issues) - `Get-GitHubTopIssueRepository` has been removed. We have [updated examples](USAGE.md#querying-issues) for how to accomplish the same scenario. - `Get-GitHubPullRequestForRepository` has been removed and replaced with `Get-GitHubPullRequest`. The key difference between these two is that it no longer accepts multiple repositories as single input, and filtering on creation/merged date can be done after the fact piping the results into `Where-Object` now that the returned objects from `Get-GitHubPullRequest` have actual `[DateTime]` values for the date properties. For an updated example of doing this, refer to [example usage](USAGE.md#querying-pull-requests). - `Get-GitHubWeeklyPullRequestForRepository` has been removed and functionally replaced by `Group-GitHubPullRequest`. For an updated example of using it, refer to [example usage](USAGE.md#querying-pull-requests) - `Get-GitHubTopPullRequestRepository` has been removed. We have [updated examples](USAGE.md#querying-pull-requests) for how to accomplish the same scenario. - `Get-GitHubRepositoryNameFromUrl` and `GitHubRepositoryOwnerFromUrl` have been removed and functionally replaced by `Split-GitHubUri` - `Get-GitHubRepositoryUniqueContributor` has been removed. We have an [updated example](USAGE.md#querying-contributors) for how to accomplish the same scenario. - `GitHubOrganizationRepository` has been removed. You can now retrieve repositories for an organization via `Get-GitHubRepository -OrganizationName <name>`. - `Get-GitHubAuthenticatedUser` has been replaced with `Get-GitHubUser -Current`. Fixes Issue #34: Warning output on import is being written out twice Fixes Issue #33: TLS error in Get-GitHubIssueForRepository : Failed to execute query with exception Fixes Issue #26: Token in template file Fixes Issue #24: Add a command for configuration
2018-10-31 09:14:28 +03:00
}
return Invoke-GHRestMethod @params
}
function Lock-GitHubIssue
{
<#
.SYNOPSIS
Lock an Issue or Pull Request conversation on GitHub.
.DESCRIPTION
Lock an Issue or Pull Request conversation on GitHub.
The Git repo for this module can be found here: http://aka.ms/PowerShellForGitHub
.PARAMETER OwnerName
Owner of the repository.
If not supplied here, the DefaultOwnerName configuration property value will be used.
.PARAMETER RepositoryName
Name of the repository.
If not supplied here, the DefaultRepositoryName configuration property value will be used.
.PARAMETER Uri
Uri for the repository.
The OwnerName and RepositoryName will be extracted from here instead of needing to provide
them individually.
.PARAMETER Issue
The issue to be locked.
.PARAMETER Reason
The reason for locking the issue or pull request conversation.
.PARAMETER AccessToken
If provided, this will be used as the AccessToken for authentication with the
REST Api. Otherwise, will attempt to use the configured value or will run unauthenticated.
.PARAMETER NoStatus
If this switch is specified, long-running commands will run on the main thread
with no commandline status update. When not specified, those commands run in
the background, enabling the command prompt to provide status information.
If not supplied here, the DefaultNoStatus configuration property value will be used.
.EXAMPLE
Lock-GitHubIssue -OwnerName PowerShell -RepositoryName PowerShellForGitHub -Issue 4 -Title 'Test Issue' -Reason spam
#>
[CmdletBinding(
SupportsShouldProcess,
DefaultParametersetName='Elements')]
[Diagnostics.CodeAnalysis.SuppressMessageAttribute("PSShouldProcess", "", Justification="Methods called within here make use of PSShouldProcess, and the switch is passed on to them inherently.")]
param(
[Parameter(ParameterSetName='Elements')]
[string] $OwnerName,
[Parameter(ParameterSetName='Elements')]
[string] $RepositoryName,
[Parameter(
Mandatory,
ParameterSetName='Uri')]
[string] $Uri,
[Parameter(Mandatory)]
[int] $Issue,
[ValidateSet('off-topic', 'too heated', 'resolved', 'spam')]
[string] $Reason,
[string] $AccessToken,
[switch] $NoStatus
)
Write-InvocationLog
Module restructure to v0.2.0 + Significant restructing and refactoring of entire module to make future expansion easier. + Significant documentation updates ([CHANGELOG](./CHANGELOG.md), [CONTRIBUTING.md](./CONTRIBUTING.md), [GOVERNANCE.md](./GOVERNANCE.md), [README.md](./README.md), [USAGE.md](./USAGE.md)) + Added `Set-GitHubAuthentication` (and related methods) for securely caching the Access Token + Added `Set-GitHubConfiguration` (and related methods) to enable short and long-term configuration of the module. + Added ability to asynchronously see status update of REST requests. + Added logging and telemetry to the module (each can be disabled if desired). + Tests now auto-configure themselves across whatever account information is supplied in [Tests/Config/Settings.ps1](./Tests/Config/Settings.ps1) + Added support for a number of additional GitHub API's: + All [Miscellaneous API's](https://developer.github.com/v3/misc/) + Ability to fully query, update, remove, lock, and unlock Issues. + Enhanced pull request querying support + Ability tofully query, create, and remove Repositories, as well as transfer ownership, get tags, get/set topic and current used programming languages. + Enhanced user query support as well as being able update information for the current user. * Made parameter ordering consistent across all functions (OwnerName is now first, then RepositoryName) * Normalized all parameters to use SentenceCase * All functions that can take a Uri or OwnerName/RepositoryName now support both options. * Made all parameter names consistent across functions: * `GitHubAccessToken` -> `AccessToken` * `RepositoryUrl` -> `Uri` * `Organization` -> `OrganizationName` * `Repository` -> `RepositoryName` * `Owner` -> `OwnerName` * Normalized usage of Verbose, Info and Error streams - `New-GitHubLabels` was renamed to `Set-GitHubLabel` and can now optionally take in the labels to apply to the Repository. - `Get-GitHubIssueForRepository` has been removed and replaced with `Get-GitHubIssue`. The key difference between these two is that it no longer accepts multiple repositories as single input, and filtering on creation/closed date can be done after the fact piping the results into `Where-Object` now that the returned objects from `Get-GitHubIssue` have actual `[DateTime]` values for the date properties. For an updated example of doing this, refer to [example usage](USAGE.md#querying-issues). - `Get-GitHubWeeklyIssueForRepository` has been removed and functionally replaced by `Group-GitHubIssue`. For an updated example of using it, refer to [example usage](USAGE.md#querying-issues) - `Get-GitHubTopIssueRepository` has been removed. We have [updated examples](USAGE.md#querying-issues) for how to accomplish the same scenario. - `Get-GitHubPullRequestForRepository` has been removed and replaced with `Get-GitHubPullRequest`. The key difference between these two is that it no longer accepts multiple repositories as single input, and filtering on creation/merged date can be done after the fact piping the results into `Where-Object` now that the returned objects from `Get-GitHubPullRequest` have actual `[DateTime]` values for the date properties. For an updated example of doing this, refer to [example usage](USAGE.md#querying-pull-requests). - `Get-GitHubWeeklyPullRequestForRepository` has been removed and functionally replaced by `Group-GitHubPullRequest`. For an updated example of using it, refer to [example usage](USAGE.md#querying-pull-requests) - `Get-GitHubTopPullRequestRepository` has been removed. We have [updated examples](USAGE.md#querying-pull-requests) for how to accomplish the same scenario. - `Get-GitHubRepositoryNameFromUrl` and `GitHubRepositoryOwnerFromUrl` have been removed and functionally replaced by `Split-GitHubUri` - `Get-GitHubRepositoryUniqueContributor` has been removed. We have an [updated example](USAGE.md#querying-contributors) for how to accomplish the same scenario. - `GitHubOrganizationRepository` has been removed. You can now retrieve repositories for an organization via `Get-GitHubRepository -OrganizationName <name>`. - `Get-GitHubAuthenticatedUser` has been replaced with `Get-GitHubUser -Current`. Fixes Issue #34: Warning output on import is being written out twice Fixes Issue #33: TLS error in Get-GitHubIssueForRepository : Failed to execute query with exception Fixes Issue #26: Token in template file Fixes Issue #24: Add a command for configuration
2018-10-31 09:14:28 +03:00
$elements = Resolve-RepositoryElements
Module restructure to v0.2.0 + Significant restructing and refactoring of entire module to make future expansion easier. + Significant documentation updates ([CHANGELOG](./CHANGELOG.md), [CONTRIBUTING.md](./CONTRIBUTING.md), [GOVERNANCE.md](./GOVERNANCE.md), [README.md](./README.md), [USAGE.md](./USAGE.md)) + Added `Set-GitHubAuthentication` (and related methods) for securely caching the Access Token + Added `Set-GitHubConfiguration` (and related methods) to enable short and long-term configuration of the module. + Added ability to asynchronously see status update of REST requests. + Added logging and telemetry to the module (each can be disabled if desired). + Tests now auto-configure themselves across whatever account information is supplied in [Tests/Config/Settings.ps1](./Tests/Config/Settings.ps1) + Added support for a number of additional GitHub API's: + All [Miscellaneous API's](https://developer.github.com/v3/misc/) + Ability to fully query, update, remove, lock, and unlock Issues. + Enhanced pull request querying support + Ability tofully query, create, and remove Repositories, as well as transfer ownership, get tags, get/set topic and current used programming languages. + Enhanced user query support as well as being able update information for the current user. * Made parameter ordering consistent across all functions (OwnerName is now first, then RepositoryName) * Normalized all parameters to use SentenceCase * All functions that can take a Uri or OwnerName/RepositoryName now support both options. * Made all parameter names consistent across functions: * `GitHubAccessToken` -> `AccessToken` * `RepositoryUrl` -> `Uri` * `Organization` -> `OrganizationName` * `Repository` -> `RepositoryName` * `Owner` -> `OwnerName` * Normalized usage of Verbose, Info and Error streams - `New-GitHubLabels` was renamed to `Set-GitHubLabel` and can now optionally take in the labels to apply to the Repository. - `Get-GitHubIssueForRepository` has been removed and replaced with `Get-GitHubIssue`. The key difference between these two is that it no longer accepts multiple repositories as single input, and filtering on creation/closed date can be done after the fact piping the results into `Where-Object` now that the returned objects from `Get-GitHubIssue` have actual `[DateTime]` values for the date properties. For an updated example of doing this, refer to [example usage](USAGE.md#querying-issues). - `Get-GitHubWeeklyIssueForRepository` has been removed and functionally replaced by `Group-GitHubIssue`. For an updated example of using it, refer to [example usage](USAGE.md#querying-issues) - `Get-GitHubTopIssueRepository` has been removed. We have [updated examples](USAGE.md#querying-issues) for how to accomplish the same scenario. - `Get-GitHubPullRequestForRepository` has been removed and replaced with `Get-GitHubPullRequest`. The key difference between these two is that it no longer accepts multiple repositories as single input, and filtering on creation/merged date can be done after the fact piping the results into `Where-Object` now that the returned objects from `Get-GitHubPullRequest` have actual `[DateTime]` values for the date properties. For an updated example of doing this, refer to [example usage](USAGE.md#querying-pull-requests). - `Get-GitHubWeeklyPullRequestForRepository` has been removed and functionally replaced by `Group-GitHubPullRequest`. For an updated example of using it, refer to [example usage](USAGE.md#querying-pull-requests) - `Get-GitHubTopPullRequestRepository` has been removed. We have [updated examples](USAGE.md#querying-pull-requests) for how to accomplish the same scenario. - `Get-GitHubRepositoryNameFromUrl` and `GitHubRepositoryOwnerFromUrl` have been removed and functionally replaced by `Split-GitHubUri` - `Get-GitHubRepositoryUniqueContributor` has been removed. We have an [updated example](USAGE.md#querying-contributors) for how to accomplish the same scenario. - `GitHubOrganizationRepository` has been removed. You can now retrieve repositories for an organization via `Get-GitHubRepository -OrganizationName <name>`. - `Get-GitHubAuthenticatedUser` has been replaced with `Get-GitHubUser -Current`. Fixes Issue #34: Warning output on import is being written out twice Fixes Issue #33: TLS error in Get-GitHubIssueForRepository : Failed to execute query with exception Fixes Issue #26: Token in template file Fixes Issue #24: Add a command for configuration
2018-10-31 09:14:28 +03:00
$OwnerName = $elements.ownerName
$RepositoryName = $elements.repositoryName
$telemetryProperties = @{
'OwnerName' = (Get-PiiSafeString -PlainText $OwnerName)
'RepositoryName' = (Get-PiiSafeString -PlainText $RepositoryName)
}
$hashBody = @{
'locked' = $true
}
if ($PSBoundParameters.ContainsKey('Reason'))
{
$telemetryProperties['Reason'] = $Reason
$hashBody['active_lock_reason'] = $Reason
}
$params = @{
'UriFragment' = "/repos/$OwnerName/$RepositoryName/issues/$Issue/lock"
'Body' = (ConvertTo-Json -InputObject $hashBody)
Module restructure to v0.2.0 + Significant restructing and refactoring of entire module to make future expansion easier. + Significant documentation updates ([CHANGELOG](./CHANGELOG.md), [CONTRIBUTING.md](./CONTRIBUTING.md), [GOVERNANCE.md](./GOVERNANCE.md), [README.md](./README.md), [USAGE.md](./USAGE.md)) + Added `Set-GitHubAuthentication` (and related methods) for securely caching the Access Token + Added `Set-GitHubConfiguration` (and related methods) to enable short and long-term configuration of the module. + Added ability to asynchronously see status update of REST requests. + Added logging and telemetry to the module (each can be disabled if desired). + Tests now auto-configure themselves across whatever account information is supplied in [Tests/Config/Settings.ps1](./Tests/Config/Settings.ps1) + Added support for a number of additional GitHub API's: + All [Miscellaneous API's](https://developer.github.com/v3/misc/) + Ability to fully query, update, remove, lock, and unlock Issues. + Enhanced pull request querying support + Ability tofully query, create, and remove Repositories, as well as transfer ownership, get tags, get/set topic and current used programming languages. + Enhanced user query support as well as being able update information for the current user. * Made parameter ordering consistent across all functions (OwnerName is now first, then RepositoryName) * Normalized all parameters to use SentenceCase * All functions that can take a Uri or OwnerName/RepositoryName now support both options. * Made all parameter names consistent across functions: * `GitHubAccessToken` -> `AccessToken` * `RepositoryUrl` -> `Uri` * `Organization` -> `OrganizationName` * `Repository` -> `RepositoryName` * `Owner` -> `OwnerName` * Normalized usage of Verbose, Info and Error streams - `New-GitHubLabels` was renamed to `Set-GitHubLabel` and can now optionally take in the labels to apply to the Repository. - `Get-GitHubIssueForRepository` has been removed and replaced with `Get-GitHubIssue`. The key difference between these two is that it no longer accepts multiple repositories as single input, and filtering on creation/closed date can be done after the fact piping the results into `Where-Object` now that the returned objects from `Get-GitHubIssue` have actual `[DateTime]` values for the date properties. For an updated example of doing this, refer to [example usage](USAGE.md#querying-issues). - `Get-GitHubWeeklyIssueForRepository` has been removed and functionally replaced by `Group-GitHubIssue`. For an updated example of using it, refer to [example usage](USAGE.md#querying-issues) - `Get-GitHubTopIssueRepository` has been removed. We have [updated examples](USAGE.md#querying-issues) for how to accomplish the same scenario. - `Get-GitHubPullRequestForRepository` has been removed and replaced with `Get-GitHubPullRequest`. The key difference between these two is that it no longer accepts multiple repositories as single input, and filtering on creation/merged date can be done after the fact piping the results into `Where-Object` now that the returned objects from `Get-GitHubPullRequest` have actual `[DateTime]` values for the date properties. For an updated example of doing this, refer to [example usage](USAGE.md#querying-pull-requests). - `Get-GitHubWeeklyPullRequestForRepository` has been removed and functionally replaced by `Group-GitHubPullRequest`. For an updated example of using it, refer to [example usage](USAGE.md#querying-pull-requests) - `Get-GitHubTopPullRequestRepository` has been removed. We have [updated examples](USAGE.md#querying-pull-requests) for how to accomplish the same scenario. - `Get-GitHubRepositoryNameFromUrl` and `GitHubRepositoryOwnerFromUrl` have been removed and functionally replaced by `Split-GitHubUri` - `Get-GitHubRepositoryUniqueContributor` has been removed. We have an [updated example](USAGE.md#querying-contributors) for how to accomplish the same scenario. - `GitHubOrganizationRepository` has been removed. You can now retrieve repositories for an organization via `Get-GitHubRepository -OrganizationName <name>`. - `Get-GitHubAuthenticatedUser` has been replaced with `Get-GitHubUser -Current`. Fixes Issue #34: Warning output on import is being written out twice Fixes Issue #33: TLS error in Get-GitHubIssueForRepository : Failed to execute query with exception Fixes Issue #26: Token in template file Fixes Issue #24: Add a command for configuration
2018-10-31 09:14:28 +03:00
'Method' = 'Put'
'Description' = "Locking Issue #$Issue on $RepositoryName"
'AcceptHeader' = 'application/vnd.github.sailor-v-preview+json'
'AccessToken' = $AccessToken
'TelemetryEventName' = $MyInvocation.MyCommand.Name
'TelemetryProperties' = $telemetryProperties
'NoStatus' = (Resolve-ParameterWithDefaultConfigurationValue -Name NoStatus -ConfigValueName DefaultNoStatus)
Module restructure to v0.2.0 + Significant restructing and refactoring of entire module to make future expansion easier. + Significant documentation updates ([CHANGELOG](./CHANGELOG.md), [CONTRIBUTING.md](./CONTRIBUTING.md), [GOVERNANCE.md](./GOVERNANCE.md), [README.md](./README.md), [USAGE.md](./USAGE.md)) + Added `Set-GitHubAuthentication` (and related methods) for securely caching the Access Token + Added `Set-GitHubConfiguration` (and related methods) to enable short and long-term configuration of the module. + Added ability to asynchronously see status update of REST requests. + Added logging and telemetry to the module (each can be disabled if desired). + Tests now auto-configure themselves across whatever account information is supplied in [Tests/Config/Settings.ps1](./Tests/Config/Settings.ps1) + Added support for a number of additional GitHub API's: + All [Miscellaneous API's](https://developer.github.com/v3/misc/) + Ability to fully query, update, remove, lock, and unlock Issues. + Enhanced pull request querying support + Ability tofully query, create, and remove Repositories, as well as transfer ownership, get tags, get/set topic and current used programming languages. + Enhanced user query support as well as being able update information for the current user. * Made parameter ordering consistent across all functions (OwnerName is now first, then RepositoryName) * Normalized all parameters to use SentenceCase * All functions that can take a Uri or OwnerName/RepositoryName now support both options. * Made all parameter names consistent across functions: * `GitHubAccessToken` -> `AccessToken` * `RepositoryUrl` -> `Uri` * `Organization` -> `OrganizationName` * `Repository` -> `RepositoryName` * `Owner` -> `OwnerName` * Normalized usage of Verbose, Info and Error streams - `New-GitHubLabels` was renamed to `Set-GitHubLabel` and can now optionally take in the labels to apply to the Repository. - `Get-GitHubIssueForRepository` has been removed and replaced with `Get-GitHubIssue`. The key difference between these two is that it no longer accepts multiple repositories as single input, and filtering on creation/closed date can be done after the fact piping the results into `Where-Object` now that the returned objects from `Get-GitHubIssue` have actual `[DateTime]` values for the date properties. For an updated example of doing this, refer to [example usage](USAGE.md#querying-issues). - `Get-GitHubWeeklyIssueForRepository` has been removed and functionally replaced by `Group-GitHubIssue`. For an updated example of using it, refer to [example usage](USAGE.md#querying-issues) - `Get-GitHubTopIssueRepository` has been removed. We have [updated examples](USAGE.md#querying-issues) for how to accomplish the same scenario. - `Get-GitHubPullRequestForRepository` has been removed and replaced with `Get-GitHubPullRequest`. The key difference between these two is that it no longer accepts multiple repositories as single input, and filtering on creation/merged date can be done after the fact piping the results into `Where-Object` now that the returned objects from `Get-GitHubPullRequest` have actual `[DateTime]` values for the date properties. For an updated example of doing this, refer to [example usage](USAGE.md#querying-pull-requests). - `Get-GitHubWeeklyPullRequestForRepository` has been removed and functionally replaced by `Group-GitHubPullRequest`. For an updated example of using it, refer to [example usage](USAGE.md#querying-pull-requests) - `Get-GitHubTopPullRequestRepository` has been removed. We have [updated examples](USAGE.md#querying-pull-requests) for how to accomplish the same scenario. - `Get-GitHubRepositoryNameFromUrl` and `GitHubRepositoryOwnerFromUrl` have been removed and functionally replaced by `Split-GitHubUri` - `Get-GitHubRepositoryUniqueContributor` has been removed. We have an [updated example](USAGE.md#querying-contributors) for how to accomplish the same scenario. - `GitHubOrganizationRepository` has been removed. You can now retrieve repositories for an organization via `Get-GitHubRepository -OrganizationName <name>`. - `Get-GitHubAuthenticatedUser` has been replaced with `Get-GitHubUser -Current`. Fixes Issue #34: Warning output on import is being written out twice Fixes Issue #33: TLS error in Get-GitHubIssueForRepository : Failed to execute query with exception Fixes Issue #26: Token in template file Fixes Issue #24: Add a command for configuration
2018-10-31 09:14:28 +03:00
}
return Invoke-GHRestMethod @params
}
function Unlock-GitHubIssue
{
<#
.SYNOPSIS
Unlocks an Issue or Pull Request conversation on GitHub.
.DESCRIPTION
Unlocks an Issue or Pull Request conversation on GitHub.
The Git repo for this module can be found here: http://aka.ms/PowerShellForGitHub
.PARAMETER OwnerName
Owner of the repository.
If not supplied here, the DefaultOwnerName configuration property value will be used.
.PARAMETER RepositoryName
Name of the repository.
If not supplied here, the DefaultRepositoryName configuration property value will be used.
.PARAMETER Uri
Uri for the repository.
The OwnerName and RepositoryName will be extracted from here instead of needing to provide
them individually.
.PARAMETER Issue
The issue to be unlocked.
.PARAMETER AccessToken
If provided, this will be used as the AccessToken for authentication with the
REST Api. Otherwise, will attempt to use the configured value or will run unauthenticated.
.PARAMETER NoStatus
If this switch is specified, long-running commands will run on the main thread
with no commandline status update. When not specified, those commands run in
the background, enabling the command prompt to provide status information.
If not supplied here, the DefaultNoStatus configuration property value will be used.
.EXAMPLE
Unlock-GitHubIssue -OwnerName PowerShell -RepositoryName PowerShellForGitHub -Issue 4
#>
[CmdletBinding(
SupportsShouldProcess,
DefaultParametersetName='Elements')]
[Diagnostics.CodeAnalysis.SuppressMessageAttribute("PSShouldProcess", "", Justification="Methods called within here make use of PSShouldProcess, and the switch is passed on to them inherently.")]
param(
[Parameter(ParameterSetName='Elements')]
[string] $OwnerName,
[Parameter(ParameterSetName='Elements')]
[string] $RepositoryName,
[Parameter(
Mandatory,
ParameterSetName='Uri')]
[string] $Uri,
[Parameter(Mandatory)]
[int] $Issue,
[string] $AccessToken,
[switch] $NoStatus
)
Write-InvocationLog
Module restructure to v0.2.0 + Significant restructing and refactoring of entire module to make future expansion easier. + Significant documentation updates ([CHANGELOG](./CHANGELOG.md), [CONTRIBUTING.md](./CONTRIBUTING.md), [GOVERNANCE.md](./GOVERNANCE.md), [README.md](./README.md), [USAGE.md](./USAGE.md)) + Added `Set-GitHubAuthentication` (and related methods) for securely caching the Access Token + Added `Set-GitHubConfiguration` (and related methods) to enable short and long-term configuration of the module. + Added ability to asynchronously see status update of REST requests. + Added logging and telemetry to the module (each can be disabled if desired). + Tests now auto-configure themselves across whatever account information is supplied in [Tests/Config/Settings.ps1](./Tests/Config/Settings.ps1) + Added support for a number of additional GitHub API's: + All [Miscellaneous API's](https://developer.github.com/v3/misc/) + Ability to fully query, update, remove, lock, and unlock Issues. + Enhanced pull request querying support + Ability tofully query, create, and remove Repositories, as well as transfer ownership, get tags, get/set topic and current used programming languages. + Enhanced user query support as well as being able update information for the current user. * Made parameter ordering consistent across all functions (OwnerName is now first, then RepositoryName) * Normalized all parameters to use SentenceCase * All functions that can take a Uri or OwnerName/RepositoryName now support both options. * Made all parameter names consistent across functions: * `GitHubAccessToken` -> `AccessToken` * `RepositoryUrl` -> `Uri` * `Organization` -> `OrganizationName` * `Repository` -> `RepositoryName` * `Owner` -> `OwnerName` * Normalized usage of Verbose, Info and Error streams - `New-GitHubLabels` was renamed to `Set-GitHubLabel` and can now optionally take in the labels to apply to the Repository. - `Get-GitHubIssueForRepository` has been removed and replaced with `Get-GitHubIssue`. The key difference between these two is that it no longer accepts multiple repositories as single input, and filtering on creation/closed date can be done after the fact piping the results into `Where-Object` now that the returned objects from `Get-GitHubIssue` have actual `[DateTime]` values for the date properties. For an updated example of doing this, refer to [example usage](USAGE.md#querying-issues). - `Get-GitHubWeeklyIssueForRepository` has been removed and functionally replaced by `Group-GitHubIssue`. For an updated example of using it, refer to [example usage](USAGE.md#querying-issues) - `Get-GitHubTopIssueRepository` has been removed. We have [updated examples](USAGE.md#querying-issues) for how to accomplish the same scenario. - `Get-GitHubPullRequestForRepository` has been removed and replaced with `Get-GitHubPullRequest`. The key difference between these two is that it no longer accepts multiple repositories as single input, and filtering on creation/merged date can be done after the fact piping the results into `Where-Object` now that the returned objects from `Get-GitHubPullRequest` have actual `[DateTime]` values for the date properties. For an updated example of doing this, refer to [example usage](USAGE.md#querying-pull-requests). - `Get-GitHubWeeklyPullRequestForRepository` has been removed and functionally replaced by `Group-GitHubPullRequest`. For an updated example of using it, refer to [example usage](USAGE.md#querying-pull-requests) - `Get-GitHubTopPullRequestRepository` has been removed. We have [updated examples](USAGE.md#querying-pull-requests) for how to accomplish the same scenario. - `Get-GitHubRepositoryNameFromUrl` and `GitHubRepositoryOwnerFromUrl` have been removed and functionally replaced by `Split-GitHubUri` - `Get-GitHubRepositoryUniqueContributor` has been removed. We have an [updated example](USAGE.md#querying-contributors) for how to accomplish the same scenario. - `GitHubOrganizationRepository` has been removed. You can now retrieve repositories for an organization via `Get-GitHubRepository -OrganizationName <name>`. - `Get-GitHubAuthenticatedUser` has been replaced with `Get-GitHubUser -Current`. Fixes Issue #34: Warning output on import is being written out twice Fixes Issue #33: TLS error in Get-GitHubIssueForRepository : Failed to execute query with exception Fixes Issue #26: Token in template file Fixes Issue #24: Add a command for configuration
2018-10-31 09:14:28 +03:00
$elements = Resolve-RepositoryElements
Module restructure to v0.2.0 + Significant restructing and refactoring of entire module to make future expansion easier. + Significant documentation updates ([CHANGELOG](./CHANGELOG.md), [CONTRIBUTING.md](./CONTRIBUTING.md), [GOVERNANCE.md](./GOVERNANCE.md), [README.md](./README.md), [USAGE.md](./USAGE.md)) + Added `Set-GitHubAuthentication` (and related methods) for securely caching the Access Token + Added `Set-GitHubConfiguration` (and related methods) to enable short and long-term configuration of the module. + Added ability to asynchronously see status update of REST requests. + Added logging and telemetry to the module (each can be disabled if desired). + Tests now auto-configure themselves across whatever account information is supplied in [Tests/Config/Settings.ps1](./Tests/Config/Settings.ps1) + Added support for a number of additional GitHub API's: + All [Miscellaneous API's](https://developer.github.com/v3/misc/) + Ability to fully query, update, remove, lock, and unlock Issues. + Enhanced pull request querying support + Ability tofully query, create, and remove Repositories, as well as transfer ownership, get tags, get/set topic and current used programming languages. + Enhanced user query support as well as being able update information for the current user. * Made parameter ordering consistent across all functions (OwnerName is now first, then RepositoryName) * Normalized all parameters to use SentenceCase * All functions that can take a Uri or OwnerName/RepositoryName now support both options. * Made all parameter names consistent across functions: * `GitHubAccessToken` -> `AccessToken` * `RepositoryUrl` -> `Uri` * `Organization` -> `OrganizationName` * `Repository` -> `RepositoryName` * `Owner` -> `OwnerName` * Normalized usage of Verbose, Info and Error streams - `New-GitHubLabels` was renamed to `Set-GitHubLabel` and can now optionally take in the labels to apply to the Repository. - `Get-GitHubIssueForRepository` has been removed and replaced with `Get-GitHubIssue`. The key difference between these two is that it no longer accepts multiple repositories as single input, and filtering on creation/closed date can be done after the fact piping the results into `Where-Object` now that the returned objects from `Get-GitHubIssue` have actual `[DateTime]` values for the date properties. For an updated example of doing this, refer to [example usage](USAGE.md#querying-issues). - `Get-GitHubWeeklyIssueForRepository` has been removed and functionally replaced by `Group-GitHubIssue`. For an updated example of using it, refer to [example usage](USAGE.md#querying-issues) - `Get-GitHubTopIssueRepository` has been removed. We have [updated examples](USAGE.md#querying-issues) for how to accomplish the same scenario. - `Get-GitHubPullRequestForRepository` has been removed and replaced with `Get-GitHubPullRequest`. The key difference between these two is that it no longer accepts multiple repositories as single input, and filtering on creation/merged date can be done after the fact piping the results into `Where-Object` now that the returned objects from `Get-GitHubPullRequest` have actual `[DateTime]` values for the date properties. For an updated example of doing this, refer to [example usage](USAGE.md#querying-pull-requests). - `Get-GitHubWeeklyPullRequestForRepository` has been removed and functionally replaced by `Group-GitHubPullRequest`. For an updated example of using it, refer to [example usage](USAGE.md#querying-pull-requests) - `Get-GitHubTopPullRequestRepository` has been removed. We have [updated examples](USAGE.md#querying-pull-requests) for how to accomplish the same scenario. - `Get-GitHubRepositoryNameFromUrl` and `GitHubRepositoryOwnerFromUrl` have been removed and functionally replaced by `Split-GitHubUri` - `Get-GitHubRepositoryUniqueContributor` has been removed. We have an [updated example](USAGE.md#querying-contributors) for how to accomplish the same scenario. - `GitHubOrganizationRepository` has been removed. You can now retrieve repositories for an organization via `Get-GitHubRepository -OrganizationName <name>`. - `Get-GitHubAuthenticatedUser` has been replaced with `Get-GitHubUser -Current`. Fixes Issue #34: Warning output on import is being written out twice Fixes Issue #33: TLS error in Get-GitHubIssueForRepository : Failed to execute query with exception Fixes Issue #26: Token in template file Fixes Issue #24: Add a command for configuration
2018-10-31 09:14:28 +03:00
$OwnerName = $elements.ownerName
$RepositoryName = $elements.repositoryName
$telemetryProperties = @{
'OwnerName' = (Get-PiiSafeString -PlainText $OwnerName)
'RepositoryName' = (Get-PiiSafeString -PlainText $RepositoryName)
}
$params = @{
'UriFragment' = "/repos/$OwnerName/$RepositoryName/issues/$Issue/lock"
'Method' = 'Delete'
'Description' = "Unlocking Issue #$Issue on $RepositoryName"
'AcceptHeader' = 'application/vnd.github.sailor-v-preview+json'
'AccessToken' = $AccessToken
'TelemetryEventName' = $MyInvocation.MyCommand.Name
'TelemetryProperties' = $telemetryProperties
'NoStatus' = (Resolve-ParameterWithDefaultConfigurationValue -Name NoStatus -ConfigValueName DefaultNoStatus)
Module restructure to v0.2.0 + Significant restructing and refactoring of entire module to make future expansion easier. + Significant documentation updates ([CHANGELOG](./CHANGELOG.md), [CONTRIBUTING.md](./CONTRIBUTING.md), [GOVERNANCE.md](./GOVERNANCE.md), [README.md](./README.md), [USAGE.md](./USAGE.md)) + Added `Set-GitHubAuthentication` (and related methods) for securely caching the Access Token + Added `Set-GitHubConfiguration` (and related methods) to enable short and long-term configuration of the module. + Added ability to asynchronously see status update of REST requests. + Added logging and telemetry to the module (each can be disabled if desired). + Tests now auto-configure themselves across whatever account information is supplied in [Tests/Config/Settings.ps1](./Tests/Config/Settings.ps1) + Added support for a number of additional GitHub API's: + All [Miscellaneous API's](https://developer.github.com/v3/misc/) + Ability to fully query, update, remove, lock, and unlock Issues. + Enhanced pull request querying support + Ability tofully query, create, and remove Repositories, as well as transfer ownership, get tags, get/set topic and current used programming languages. + Enhanced user query support as well as being able update information for the current user. * Made parameter ordering consistent across all functions (OwnerName is now first, then RepositoryName) * Normalized all parameters to use SentenceCase * All functions that can take a Uri or OwnerName/RepositoryName now support both options. * Made all parameter names consistent across functions: * `GitHubAccessToken` -> `AccessToken` * `RepositoryUrl` -> `Uri` * `Organization` -> `OrganizationName` * `Repository` -> `RepositoryName` * `Owner` -> `OwnerName` * Normalized usage of Verbose, Info and Error streams - `New-GitHubLabels` was renamed to `Set-GitHubLabel` and can now optionally take in the labels to apply to the Repository. - `Get-GitHubIssueForRepository` has been removed and replaced with `Get-GitHubIssue`. The key difference between these two is that it no longer accepts multiple repositories as single input, and filtering on creation/closed date can be done after the fact piping the results into `Where-Object` now that the returned objects from `Get-GitHubIssue` have actual `[DateTime]` values for the date properties. For an updated example of doing this, refer to [example usage](USAGE.md#querying-issues). - `Get-GitHubWeeklyIssueForRepository` has been removed and functionally replaced by `Group-GitHubIssue`. For an updated example of using it, refer to [example usage](USAGE.md#querying-issues) - `Get-GitHubTopIssueRepository` has been removed. We have [updated examples](USAGE.md#querying-issues) for how to accomplish the same scenario. - `Get-GitHubPullRequestForRepository` has been removed and replaced with `Get-GitHubPullRequest`. The key difference between these two is that it no longer accepts multiple repositories as single input, and filtering on creation/merged date can be done after the fact piping the results into `Where-Object` now that the returned objects from `Get-GitHubPullRequest` have actual `[DateTime]` values for the date properties. For an updated example of doing this, refer to [example usage](USAGE.md#querying-pull-requests). - `Get-GitHubWeeklyPullRequestForRepository` has been removed and functionally replaced by `Group-GitHubPullRequest`. For an updated example of using it, refer to [example usage](USAGE.md#querying-pull-requests) - `Get-GitHubTopPullRequestRepository` has been removed. We have [updated examples](USAGE.md#querying-pull-requests) for how to accomplish the same scenario. - `Get-GitHubRepositoryNameFromUrl` and `GitHubRepositoryOwnerFromUrl` have been removed and functionally replaced by `Split-GitHubUri` - `Get-GitHubRepositoryUniqueContributor` has been removed. We have an [updated example](USAGE.md#querying-contributors) for how to accomplish the same scenario. - `GitHubOrganizationRepository` has been removed. You can now retrieve repositories for an organization via `Get-GitHubRepository -OrganizationName <name>`. - `Get-GitHubAuthenticatedUser` has been replaced with `Get-GitHubUser -Current`. Fixes Issue #34: Warning output on import is being written out twice Fixes Issue #33: TLS error in Get-GitHubIssueForRepository : Failed to execute query with exception Fixes Issue #26: Token in template file Fixes Issue #24: Add a command for configuration
2018-10-31 09:14:28 +03:00
}
return Invoke-GHRestMethod @params
}