2020-04-12 08:23:17 -04:00
|
|
|
import fs from 'fs'
|
|
|
|
import path from 'path'
|
2017-05-08 08:41:38 -04:00
|
|
|
|
2020-04-12 11:43:41 -04:00
|
|
|
export function toBooleanConfig (configValue: string | boolean | undefined): boolean | undefined {
|
2020-04-12 08:23:17 -04:00
|
|
|
if (typeof configValue === 'string') {
|
2017-05-08 08:41:38 -04:00
|
|
|
return (configValue === 'true')
|
|
|
|
}
|
2020-04-12 11:43:41 -04:00
|
|
|
return configValue
|
2017-05-08 08:41:38 -04:00
|
|
|
}
|
2017-12-09 14:21:50 -05:00
|
|
|
|
2020-05-24 12:41:15 -04:00
|
|
|
export function toArrayConfig (configValue: string | undefined, separator = ',', fallback = []): string[] {
|
2020-04-12 08:23:17 -04:00
|
|
|
if (configValue) {
|
2017-12-09 14:21:50 -05:00
|
|
|
return (configValue.split(separator).map(arrayItem => arrayItem.trim()))
|
|
|
|
}
|
|
|
|
return fallback
|
|
|
|
}
|
2018-03-16 15:36:04 -04:00
|
|
|
|
2020-04-12 08:23:17 -04:00
|
|
|
export function toIntegerConfig (configValue): number {
|
2018-03-16 15:36:04 -04:00
|
|
|
if (configValue && typeof configValue === 'string') {
|
|
|
|
return parseInt(configValue)
|
|
|
|
}
|
|
|
|
return configValue
|
|
|
|
}
|
2018-10-05 13:33:40 -04:00
|
|
|
|
2020-04-12 08:23:17 -04:00
|
|
|
export function getGitCommit (repodir): string {
|
2018-10-05 13:33:40 -04:00
|
|
|
if (!fs.existsSync(repodir + '/.git/HEAD')) {
|
2020-04-12 08:23:17 -04:00
|
|
|
return ''
|
2018-10-05 13:33:40 -04:00
|
|
|
}
|
|
|
|
let reference = fs.readFileSync(repodir + '/.git/HEAD', 'utf8')
|
|
|
|
if (reference.startsWith('ref: ')) {
|
|
|
|
reference = reference.substr(5).replace('\n', '')
|
|
|
|
reference = fs.readFileSync(path.resolve(repodir + '/.git', reference), 'utf8')
|
|
|
|
}
|
2018-11-12 05:17:36 -05:00
|
|
|
reference = reference.replace('\n', '')
|
2018-10-05 13:33:40 -04:00
|
|
|
return reference
|
|
|
|
}
|
|
|
|
|
2020-04-12 08:23:17 -04:00
|
|
|
export function getGitHubURL (repo, reference): string {
|
2018-10-05 13:33:40 -04:00
|
|
|
// if it's not a github reference, we handle handle that anyway
|
|
|
|
if (!repo.startsWith('https://github.com') && !repo.startsWith('git@github.com')) {
|
|
|
|
return repo
|
|
|
|
}
|
|
|
|
if (repo.startsWith('git@github.com') || repo.startsWith('ssh://git@github.com')) {
|
|
|
|
repo = repo.replace(/^(ssh:\/\/)?git@github.com:/, 'https://github.com/')
|
|
|
|
}
|
|
|
|
|
|
|
|
if (repo.endsWith('.git')) {
|
|
|
|
repo = repo.replace(/\.git$/, '/')
|
|
|
|
} else if (!repo.endsWith('/')) {
|
|
|
|
repo = repo + '/'
|
|
|
|
}
|
|
|
|
return repo + 'tree/' + reference
|
|
|
|
}
|