UNPKG

@mesh-tech/mesh-cli

Version:

CLI for Mesh platform development utilities

47 lines (46 loc) 1.94 kB
import { detectContext, getDatabaseUrl, logInfo, logError, } from "../../utils/index.js"; export async function credentialsCommand(options) { let platformTenant; let platformEnv; if (options.tenant && options.env) { platformTenant = options.tenant; platformEnv = options.env; logInfo(`Platform: Tenant=${platformTenant}, Env=${platformEnv}`); } else if (options.tenant || options.env) { logError("Both --tenant and --env are required"); logInfo("Usage: mesh db credentials --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; logInfo(`Auto-detected: Tenant=${platformTenant}, Env=${platformEnv}`); } const appTenant = options.appTenant ?? platformTenant; const appStage = options.appStage ?? platformEnv; const appName = options.app; if (appName) { logInfo(`App credentials: tenant=${appTenant}, stage=${appStage}, app=${appName}`); } const databaseUrl = await getDatabaseUrl(appTenant, appStage, { app: appName }); const parsed = new URL(databaseUrl); console.log(""); console.log("Database Credentials:"); console.log(` Host: ${parsed.hostname}`); console.log(` Port: ${parsed.port || 5432}`); console.log(` Database: ${parsed.pathname.slice(1)}`); console.log(` Username: ${parsed.username}`); console.log(` Password: ${decodeURIComponent(parsed.password)}`); console.log(""); console.log("DATABASE_URL:"); console.log(` ${databaseUrl}`); console.log(""); console.log("For tunnel usage (localhost:5432):"); const tunnelUrl = new URL(databaseUrl); tunnelUrl.hostname = "localhost"; tunnelUrl.port = "5432"; console.log(` ${tunnelUrl.toString()}`); console.log(""); }