diff --git a/src/repository.ts b/src/repository.ts index 5bb8deb19..f1e7f369b 100644 --- a/src/repository.ts +++ b/src/repository.ts @@ -1,4 +1,4 @@ -import { ConfigurationError } from "./util"; +import { ConfigurationError, getRequiredEnvParam } from "./util"; // A repository name with owner, parsed into its two parts export interface RepositoryNwo { @@ -6,6 +6,36 @@ export interface RepositoryNwo { repo: string; } +/** + * Get the repository name with owner from the environment variable + * `GITHUB_REPOSITORY`. + * + * @returns The repository name with owner. + */ +export function getRepositoryNwo(): RepositoryNwo { + return getRepositoryNwoFromEnv("GITHUB_REPOSITORY"); +} + +/** + * Get the repository name with owner from the first environment variable that + * is set and non-empty. + * + * @param envVarNames The names of the environment variables to check. + * @returns The repository name with owner. + * @throws ConfigurationError if none of the environment variables are set. + */ +export function getRepositoryNwoFromEnv( + ...envVarNames: string[] +): RepositoryNwo { + const envVarName = envVarNames.find((name) => process.env[name]); + if (!envVarName) { + throw new ConfigurationError( + `None of the env vars ${envVarNames.join(", ")} are set`, + ); + } + return parseRepositoryNwo(getRequiredEnvParam(envVarName)); +} + export function parseRepositoryNwo(input: string): RepositoryNwo { const parts = input.split("/"); if (parts.length !== 2) {