Functions/Public/Repositories/Get-GitHubRepository.ps1
function Get-GitHubRepository { <# .SYNOPSIS This cmdlet will get the information about a GitHub repo. .DESCRIPTION This cmdlet can get the information for one or more github repos you specify with owner and GitHub repo name See https://developer.github.com/v3/repos/#get for detail .PARAMETER Owner The owner of the repo, default to be the authenticated user. When used by itself, retrieves the information for all (public - unless the authenticated user is specified) repos for the specified owner. .PARAMETER Repository The name of the GitHub repository (not full name) .PARAMETER License When this switch is turned on, you will only get the info about the license of the repository. Can be used only when specifying the Respository Parameter. .PARAMETER ReadMe When this switch is turned on, you will only get the info about the README of the repository. Can be used only when specifying hte Repository Parameter. .OUTPUTS Return a PSCustomObject. See the return in https://developer.github.com/v3/repos/#get for detail .EXAMPLE PS C:\> Get-GitHubRepository -Owner octocat -RepositoryName Hello-World the return of this statement is shown in https://developer.github.com/v3/repos/#get .EXAMPLE PS C:\> Get-GitHubRepository Returns all respositories for the authenticated user .EXAMPLE PS C:\> Get-GitHubRepository -Owner exactmike Returns all respositories for the specified user .EXAMPLE PS C:\> Get-GitHubRepository -Owner exactmike -RepositoryName OutSpeech -License Returns the license information for the specified owner's repository .EXAMPLE PS C:\> Get-GitHubRepository -Owner exactmike -RepositoryName OutSpeech -ReadMe Returns the ReadMe information for the specified owner's repository #> [CmdletBinding()] [OutputType('PSGitHub.Repository')] param( [Parameter(ValueFromPipelineByPropertyName)] [string] $Owner, [Parameter(ValueFromPipelineByPropertyName)] [ValidateNotNullOrEmpty()] [ValidatePattern('^[\w-\.]+$')] [Alias('Repository')] [string] $RepositoryName, # Optional base URL of the GitHub API, for example "https://ghe.mycompany.com/api/v3/" (including the trailing slash). # Defaults to "https://api.github.com" [Uri] $BaseUri = [Uri]::new('https://api.github.com'), [Security.SecureString] $Token = (Get-GitHubToken) ) process { $uri = if ($RepositoryName) { "repos/$Owner/$RepositoryName" } elseif ($Owner) { "users/$Owner/repos" } else { 'user/repos' } $templatePreview = 'application/vnd.github.baptiste-preview+json' # expand arrays Invoke-GitHubApi $uri -Accept $templatePreview -BaseUri $BaseUri -Token $Token | ForEach-Object { $_ } | ForEach-Object { $_.PSTypeNames.Insert(0, 'PSGitHub.Repository') $_.Owner.PSTypeNames.Insert(0, 'PSGitHub.User') if ($_.License) { $_.License.PSTypeNames.Insert(0, 'PSGitHub.License') } $_ } } } |