@dataroadinc/setup-auth
Version:
CLI tool and programmatic API for automated OAuth setup across cloud platforms
56 lines (55 loc) • 2.87 kB
JavaScript
import { EKG_PROJECT_LONG, GCP_OAUTH_BRAND_NAME, } from "../../../utils/env-handler.js";
import { SetupAuthError } from "../../../utils/error.js";
export async function checkOptions(options) {
const platform = options.platform || process.env.PLATFORM;
if (!platform) {
throw new SetupAuthError("Platform type must be provided via --platform or PLATFORM env var.");
}
if (!["vercel", "netlify", "opennext"].includes(platform)) {
throw new SetupAuthError(`Invalid platform specified: ${platform}. Valid options are 'vercel', 'netlify', 'opennext'.`);
}
options.platform = platform;
console.log(`Platform: ${platform}`);
const projectId = options.gcpOauthProjectId || process.env.GCP_PROJECT_ID;
if (!projectId) {
throw new SetupAuthError("GCP Project ID must be provided via --gcp-oauth-project-id or GCP_PROJECT_ID env var.");
}
options.gcpOauthProjectId = projectId;
console.log(`Using explicitly provided GCP project ID: ${projectId}`);
const organizationId = options.gcpOauthOrganizationId || process.env.GCP_ORGANIZATION_ID;
if (!organizationId) {
throw new SetupAuthError("GCP Organization ID must be provided via --gcp-oauth-organization-id or GCP_ORGANIZATION_ID env var.");
}
options.gcpOauthOrganizationId = organizationId;
console.log(`Using explicitly provided GCP organization ID: ${organizationId}`);
let oauthBrandName = options.oauthBrandName;
if (!oauthBrandName) {
oauthBrandName = process.env[GCP_OAUTH_BRAND_NAME];
if (oauthBrandName) {
console.log(`Using GCP OAuth Brand Name from environment variable ${GCP_OAUTH_BRAND_NAME}: ${oauthBrandName}`);
}
else {
oauthBrandName = process.env[EKG_PROJECT_LONG];
if (oauthBrandName) {
console.log(`Using Brand Name from environment variable ${EKG_PROJECT_LONG}: ${oauthBrandName}`);
}
else {
throw new SetupAuthError(`Could not determine brand name. Please set --oauth-brand-name option, ` +
`or set ${GCP_OAUTH_BRAND_NAME} or ${EKG_PROJECT_LONG} in your environment.`);
}
}
}
options.oauthBrandName = oauthBrandName;
console.log(`Using OAuth Brand Name: ${oauthBrandName}`);
if (options.platform === "vercel") {
const vercelProjectName = options.vercelProjectName || process.env.VERCEL_PROJECT_NAME;
if (!vercelProjectName) {
throw new SetupAuthError("Vercel project name must be provided via --vercel-project-name or VERCEL_PROJECT_NAME env var for Vercel platform.");
}
options.vercelProjectName = vercelProjectName;
console.log(`Using specified Vercel project name: ${vercelProjectName}`);
}
else {
options.vercelProjectName = undefined;
}
}