Search.psm1
|
function Search-Github { [CmdletBinding()] param( [Parameter(Mandatory, Position=0)] [Alias('Q')] [string] $Query, [Parameter()] [ValidateSet('code', 'commits', 'issues', 'repositories', 'users')] [string] $Scope = 'code', [Parameter()] [string] $Sort, [Parameter()] [ValidateSet('asc', 'desc')] [string] $Direction, [Parameter()] [uint] $MaxPages, [switch] [Parameter()] $All ) $MaxPages = Resolve-GithubMaxPages -MaxPages:$MaxPages -All:$All $ApiQuery = @{ q = $Query } if ($Sort) { $ApiQuery.sort = $Sort } if ($Direction) { $ApiQuery.order = $Direction } $TypeMap = @{ code = 'Github.SearchResult' commits = 'Github.Commit' issues = 'Github.Issue' repositories = 'Github.Repository' users = 'Github.User' } $ObjectType = $TypeMap[$Scope] $Result = Invoke-GithubApi GET "search/$Scope" $ApiQuery -MaxPages $MaxPages $Result.items | New-GithubObject $ObjectType } function Search-GithubRepository { [CmdletBinding()] param( [Parameter(ValueFromPipelineByPropertyName)] [string] $RepositoryId = '.', [Parameter(Mandatory, Position=0)] [string] $Query, [Parameter()] [ValidateSet('code', 'commits', 'issues')] [string] $Scope = 'code', [Parameter()] [uint] $MaxPages, [switch] [Parameter()] $All ) $Repo = Resolve-GithubRepository $RepositoryId $QualifiedQuery = "$Query repo:$Repo" Search-Github -Query $QualifiedQuery -Scope $Scope -MaxPages:$MaxPages -All:$All } |