123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- import * as assert from 'assert'
- import {URL} from 'url'
- import {IGitSourceSettings} from './git-source-settings'
- export function getFetchUrl(settings: IGitSourceSettings): string {
- assert.ok(
- settings.repositoryOwner,
- 'settings.repositoryOwner must be defined'
- )
- assert.ok(settings.repositoryName, 'settings.repositoryName must be defined')
- const serviceUrl = getServerUrl(settings.githubServerUrl)
- const encodedOwner = encodeURIComponent(settings.repositoryOwner)
- const encodedName = encodeURIComponent(settings.repositoryName)
- if (settings.sshKey) {
- return `git@${serviceUrl.hostname}:${encodedOwner}/${encodedName}.git`
- }
- // "origin" is SCHEME://HOSTNAME[:PORT]
- return `${serviceUrl.origin}/${encodedOwner}/${encodedName}`
- }
- export function getServerUrl(url?: string): URL {
- let urlValue =
- url && url.trim().length > 0
- ? url
- : process.env['GITHUB_SERVER_URL'] || 'https://github.com'
- return new URL(urlValue)
- }
- export function getServerApiUrl(url?: string): string {
- let apiUrl = 'https://api.github.com'
- if (isGhes(url)) {
- const serverUrl = getServerUrl(url)
- apiUrl = new URL(`${serverUrl.origin}/api/v3`).toString()
- }
- return apiUrl
- }
- export function isGhes(url?: string): boolean {
- const ghUrl = getServerUrl(url)
- return ghUrl.hostname.toUpperCase() !== 'GITHUB.COM'
- }
|