checkout/src/url-helper.ts

41 lines
1.2 KiB
TypeScript
Raw Normal View History

import * as assert from 'assert'
import {IGitSourceSettings} from './git-source-settings'
import {URL} from 'url'
export function getFetchUrl(settings: IGitSourceSettings): string {
assert.ok(
settings.repositoryOwner,
'settings.repositoryOwner must be defined'
)
assert.ok(settings.repositoryName, 'settings.repositoryName must be defined')
2020-05-30 06:57:30 +08:00
const serviceUrl = getServerUrl(settings.isGist)
const encodedOwner = encodeURIComponent(settings.repositoryOwner)
const encodedName = encodeURIComponent(settings.repositoryName)
2020-05-30 06:57:30 +08:00
let encodedNwo = `${encodedOwner}/${encodedName}`
if (settings.isGist) {
encodedNwo = encodedName
}
if (settings.sshKey) {
2020-05-30 06:57:30 +08:00
return `git@${serviceUrl.hostname}:${encodedNwo}.git`
}
// "origin" is SCHEME://HOSTNAME[:PORT]
2020-05-30 06:57:30 +08:00
return `${serviceUrl.origin}/${encodedNwo}`
}
2020-05-30 06:57:30 +08:00
export function getServerUrl(isGist: boolean): URL {
// todo: remove GITHUB_URL after support for GHES Alpha is no longer needed
2020-05-30 06:57:30 +08:00
let serverUrl = new URL(
process.env['GITHUB_SERVER_URL'] ||
process.env['GITHUB_URL'] ||
'https://github.com'
)
2020-05-30 06:57:30 +08:00
// todo: don't assume subdomain isolation
if (isGist) {
serverUrl.hostname = `gist.${serverUrl.hostname}`
}
return serverUrl
}