src/repos.psm1
Import-Module -Scope Local "$PSScriptRoot/api.psm1" $repositoryFields = Get-Content -Raw "$PSScriptRoot/../queries/RepositoryFields.graphql" $repositoryQuery = (Get-Content -Raw "$PSScriptRoot/../queries/Repository.graphql") + $repositoryFields $repositoriesQuery = (Get-Content -Raw "$PSScriptRoot/../queries/Repositories.graphql") + $repositoryFields function Get-Repository { <# .SYNOPSIS List all repositories known to a Sourcegraph instance .DESCRIPTION Lists all repositories known to a Sourcegraph instance by querying its API. .PARAMETER Id Get a repository by its ID .PARAMETER Name Return repositories with the given names .PARAMETER CloneUrl Get a repository by a git clone URL .PARAMETER Query Return repositories whose names match the query .PARAMETER SortBy By what to sort .PARAMETER Descending Sort descending .PARAMETER Endpoint The endpoint URL of the Sourcegraph instance (default https://sourcegraph.com) .PARAMETER Token The authentication token (if needed). Go to the settings page on Sourcegraph to generate one. #> [CmdletBinding(SupportsPaging)] param( [Parameter(ValueFromPipelineByPropertyName)] [string] $Id, [Parameter(ValueFromPipelineByPropertyName)] [string[]] $Name, [string] $CloneUrl, [string] $Query, [ValidateSet('REPOSITORY_NAME', 'REPOSITORY_CREATED_AT')] [string] $SortBy = 'REPOSITORY_NAME', [switch] $Descending, [Uri] $Endpoint = 'https://sourcegraph.com', [SecureString] $Token ) process { if ($Id -or $CloneUrl) { $vars = @{ id = $Id cloneUrl = $CloneUrl } $data = Invoke-ApiRequest -Query $repositoryQuery -Variables $vars -Endpoint $Endpoint -Token $Token $data.repository if ($PSCmdlet.PagingParameters.IncludeTotalCount) { $count = if ($data.repository) { 1 } else { 0 } $PSCmdlet.PagingParameters.NewTotalCount($count, 1) } } else { $first = if ($PSCmdlet.PagingParameters.First -eq [uint64]::MaxValue) { $null } else { $PSCmdlet.PagingParameters.Skip + $PSCmdlet.PagingParameters.First } $vars = @{ first = $first query = $Query names = $Name orderBy = $SortBy descending = [bool]$Descending } $data = Invoke-ApiRequest -Query $repositoriesQuery -Variables $vars -Endpoint $Endpoint -Token $Token if ($PSCmdlet.PagingParameters.IncludeTotalCount) { $PSCmdlet.PagingParameters.NewTotalCount($data.repositories.totalCount, 1) } $data.repositories.nodes | Select-Object -Skip $PSCmdlet.PagingParameters.Skip } } } Export-ModuleMember -Function Get-Repository |