@dataroadinc/setup-auth
Version:
CLI tool and programmatic API for automated OAuth setup across cloud platforms
47 lines (46 loc) • 3.5 kB
JavaScript
import { Command } from "@commander-js/extra-typings";
import { addCommandAzureSetupOAuth } from "./commands/azure.js";
import { addCommandGcpSetupOAuth, addCommandGcpSetupServiceAccount, addCommandGcpView, } from "./commands/gcp/index.js";
import { addCommandGitHubSetupAuth } from "./commands/github.js";
import { addCommandLogin } from "./commands/login.js";
import { addCommandVercelSetupPostDeployWebhook } from "./commands/setup-webhook.js";
import { addCommandUpdateRedirectUrls } from "./commands/update-redirect-urls.js";
import { AZURE_AD_CLIENT_ID, AZURE_AD_CLIENT_SECRET, GCP_OAUTH_ORGANIZATION_ID, GCP_OAUTH_PROJECT_ID, GITHUB_OAUTH_ID, GITHUB_OAUTH_SECRET, loadEnvVariables, NEXTAUTH_URL, VERCEL_ACCESS_TOKEN, VERCEL_PROJECT_NAME, } from "./utils/env-handler.js";
process.on("unhandledRejection", (reason, promise) => {
console.error("Unhandled Rejection at:", promise, "reason:", reason);
});
process.on("uncaughtException", error => {
console.error("Uncaught Exception:", error);
});
await loadEnvVariables();
const program = new Command();
program
.name("setup-auth")
.version("0.0.1")
.showSuggestionAfterError(true)
.enablePositionalOptions()
.description("CLI tool and programmatic API for automated OAuth setup across cloud platforms")
.option("--platform <platform>", "Platform (vercel, opennext, netlify, custom)", "vercel")
.option("--vercel-project-name <name>", `Vercel project name, defaults to environment variable ${VERCEL_PROJECT_NAME}`, process.env.VERCEL_PROJECT_NAME)
.option("--vercel-access-token <token>", `Vercel access token, defaults to environment variable ${VERCEL_ACCESS_TOKEN}`, process.env.VERCEL_ACCESS_TOKEN)
.option("--azure-ad-client-id <id>", `Azure AD client ID, defaults to environment variable ${AZURE_AD_CLIENT_ID}`, process.env.AZURE_AD_CLIENT_ID)
.option("--azure-ad-client-secret <secret>", `Azure AD client secret, defaults to environment variable ${AZURE_AD_CLIENT_SECRET}`, process.env.AZURE_AD_CLIENT_SECRET)
.option("--gcp-oauth-project-id <id>", `GCP project ID, defaults to environment variable ${GCP_OAUTH_PROJECT_ID} or will be derived from project name`, process.env.GCP_OAUTH_PROJECT_ID)
.option("--gcp-oauth-organization-id <id>", `GCP organization ID, defaults to environment variable ${GCP_OAUTH_ORGANIZATION_ID}`, process.env.GCP_OAUTH_ORGANIZATION_ID)
.option("--github-oauth-id <id>", `GitHub OAuth ID, defaults to environment variable ${GITHUB_OAUTH_ID}`, process.env.GITHUB_OAUTH_ID)
.option("--github-oauth-secret <secret>", `GitHub OAuth secret, defaults to environment variable ${GITHUB_OAUTH_SECRET}`, process.env.GITHUB_OAUTH_SECRET)
.option("--nextauth-url <url>", `NextAuth URL, defaults to environment variable ${NEXTAUTH_URL}`, process.env.NEXTAUTH_URL)
.option("--deployment-url <url>", "Deployment URL to add to redirect URIs", process.env.VERCEL_URL)
.option("--callback-path <path>", "Custom callback path", "/api/auth/callback")
.option("--redirect-options <options>", "Redirect URL options as JSON string", "{}");
await addCommandAzureSetupOAuth(program);
await addCommandGcpSetupOAuth(program);
await addCommandGcpSetupServiceAccount(program);
await addCommandGcpView(program);
await addCommandGitHubSetupAuth(program);
await addCommandLogin(program);
await addCommandVercelSetupPostDeployWebhook(program);
await addCommandUpdateRedirectUrls(program);
await program.parseAsync();
export * from "./api/index.js";