UNPKG

@mesh-tech/mesh-cli

Version:

CLI for Mesh platform development utilities

37 lines (36 loc) 1.71 kB
import { detectContext, getDatabaseUrl, rewriteDatabaseUrl, logInfo, logError, } from "../../utils/index.js"; export async function envCommand(options) { let platformTenant; let platformEnv; if (options.tenant && options.env) { platformTenant = options.tenant; platformEnv = options.env; console.error(`ℹ Platform: Tenant=${platformTenant}, Env=${platformEnv}`); } else if (options.tenant || options.env) { logError("Both --tenant and --env are required"); logInfo("Usage: eval $(mesh db env --tenant mesh --env dev-temporal --app rdc --app-tenant encore --app-stage dev)"); process.exit(1); } else { const ctx = detectContext(); platformTenant = ctx.tenant; platformEnv = ctx.platformEnv; console.error(`ℹ Auto-detected: Tenant=${platformTenant}, Env=${platformEnv}`); } const appTenant = options.appTenant ?? platformTenant; const appStage = options.appStage ?? platformEnv; const appName = options.app; if (appName) { console.error(`ℹ App credentials: tenant=${appTenant}, stage=${appStage}, app=${appName}`); } const rawUrl = await getDatabaseUrl(appTenant, appStage, { app: appName }); const tunnelUrl = rewriteDatabaseUrl(rawUrl, { endpoint: "localhost:5432" }); const parsed = new URL(tunnelUrl); console.log(`export DATABASE_URL="${tunnelUrl}"`); console.log('export DB_HOST="localhost"'); console.log('export DB_PORT="5432"'); console.log(`export DB_NAME="${parsed.pathname.slice(1)}"`); console.log(`export DB_USERNAME="${parsed.username}"`); console.log(`export DB_PASSWORD="${decodeURIComponent(parsed.password)}"`); }