@mesh-tech/mesh-cli
Version:
CLI for Mesh platform development utilities
37 lines (36 loc) • 1.71 kB
JavaScript
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)}"`);
}