app-wizard-cli
Version:
CLI pour gérer votre projet Nest/Angular
81 lines (80 loc) • 2.64 kB
JavaScript
/**
* @module services/config-service
* Gère la lecture/écriture de ~/.appwizard
*/
import fs from 'fs-extra';
import * as path from 'path';
const CONFIG_FILE = '.appwizard';
export class ConfigService {
constructor(targetDir = process.cwd()) {
this.targetDir = targetDir;
this.defaultConfig = {
endpoints: {
backendUrl: 'https://ycgusiyjqf.eu-west-3.awsapprunner.com',
frontendUrl: 'https://bjmr5kcium.eu-west-3.awsapprunner.com',
},
version: {
backend: '1.0.0',
frontend: '1.0.0',
},
};
this.configPath = path.join(this.targetDir, CONFIG_FILE);
}
/**
* Lit la config, et applique les valeurs par défaut pour
* les parties manquantes (endpoints ou version).
*/
async getConfig() {
let fileData = {};
if (await fs.pathExists(this.configPath)) {
try {
fileData = await fs.readJSON(this.configPath);
}
catch {
// ignore malformed file
}
}
const endpoints = {
...this.defaultConfig.endpoints,
...(fileData.endpoints || {}),
};
const version = {
...this.defaultConfig.version,
...(fileData.version || {}),
};
return { endpoints, version };
}
/**
* Met à jour uniquement la section `endpoints`, en
* conservant la version existante (ou la valeur par défaut).
*/
async setEndpointsConfig(endpoints) {
let fileData = {};
if (await fs.pathExists(this.configPath)) {
try {
fileData = await fs.readJSON(this.configPath);
}
catch { }
}
const version = fileData.version || this.defaultConfig.version;
const newConfig = { endpoints, version };
await fs.writeJSON(this.configPath, newConfig, { spaces: 2 });
console.log('✅ Endpoints mis à jour dans', this.configPath);
}
/**
* Supprime le fichier de configuration.
* Utilisé pour réinitialiser la config.
*/
async clear() {
await fs.remove(this.configPath);
console.log('⚠️ Configuration supprimée.');
}
/**
* Réinitialise la configuration aux valeurs par défaut.
* Utilisé pour réinitialiser la config.
*/
async resetToDefault() {
await fs.writeJSON(this.configPath, this.defaultConfig, { spaces: 2 });
console.log('⚠️ Configuration réinitialisée aux valeurs par défaut.');
}
}