app-wizard-cli
Version:
CLI pour gérer votre projet Nest/Angular
55 lines (54 loc) • 2.17 kB
JavaScript
import prompts from "prompts";
import chalk from "chalk";
import { loadEnvConfig, writeEnv } from "./env-utils.js";
/**
* Retourne true si POSTGRES_USER, POSTGRES_PASSWORD et POSTGRES_DB
* sont tous définis (non vides) dans .env.prod.
*/
export async function hasDbCredentialsInEnv() {
var _a, _b, _c;
const env = await loadEnvConfig();
return Boolean(((_a = env.POSTGRES_USER) === null || _a === void 0 ? void 0 : _a.trim()) &&
((_b = env.POSTGRES_PASSWORD) === null || _b === void 0 ? void 0 : _b.trim()) &&
((_c = env.POSTGRES_DB) === null || _c === void 0 ? void 0 : _c.trim()));
}
/**
* Invite l'utilisateur à saisir POSTGRES_USER / POSTGRES_PASSWORD / POSTGRES_DB
* et les enregistre dans .env.prod. En cas de saisie incomplète, quitte le process.
*/
export async function promptAndStoreDbCredentials() {
console.log(chalk.yellow("\n⚙️ Configuration des identifiants DB manquants dans .env.prod"));
// Charge l'existant (pour préserver les autres clés)
const env = await loadEnvConfig();
// On demande chaque valeur
const responses = await prompts([
{
type: "text",
name: "POSTGRES_USER",
message: "Nom d'utilisateur PostgreSQL",
initial: env.POSTGRES_USER || "",
},
{
type: "password",
name: "POSTGRES_PASSWORD",
message: "Mot de passe PostgreSQL",
},
{
type: "text",
name: "POSTGRES_DB",
message: "Nom de la base de données (POSTGRES_DB)",
initial: env.POSTGRES_DB || "",
}
]);
// Validation basique
if (!responses.POSTGRES_USER || !responses.POSTGRES_PASSWORD || !responses.POSTGRES_DB) {
console.error(chalk.red("✖ Toutes les informations DB sont requises. Abandon."));
process.exit(1);
}
// Mise à jour et sauvegarde
env.POSTGRES_USER = responses.POSTGRES_USER;
env.POSTGRES_PASSWORD = responses.POSTGRES_PASSWORD;
env.POSTGRES_DB = responses.POSTGRES_DB;
await writeEnv(env);
console.log(chalk.green("✓ .env.prod mis à jour avec les credentials DB."));
}