34 lines
764 B
TypeScript
34 lines
764 B
TypeScript
const namedBranches = ["release", "master", "test", "stage", "prod"] as const
|
|
|
|
type NamedBranch = (typeof namedBranches)[number] | (string & {})
|
|
|
|
export function getSemver(
|
|
packageName: string,
|
|
version: string | undefined,
|
|
branch: NamedBranch
|
|
): string | undefined {
|
|
if (!version || typeof version !== "string") {
|
|
return undefined
|
|
}
|
|
|
|
if (version.startsWith("v")) {
|
|
version = version.substring(1)
|
|
}
|
|
|
|
if (!/^\d+\.\d+\.\d+/.test(version)) {
|
|
return undefined
|
|
}
|
|
|
|
if (!namedBranches.includes(branch as any)) {
|
|
let cleanedBranch = branch
|
|
.substring(0, 20)
|
|
.trim()
|
|
.replace(/[^a-zA-Z0-9]/g, "-")
|
|
.toLowerCase()
|
|
|
|
return `${packageName}@${version}-${cleanedBranch}`
|
|
}
|
|
|
|
return `${packageName}@${version}`
|
|
}
|