app-wizard-cli
Version:
CLI pour gérer votre projet Nest/Angular
67 lines (66 loc) • 2.77 kB
JavaScript
import fs from 'fs-extra';
import * as path from 'path';
import os from 'os';
/**
* Retourne le chemin absolu par défaut vers la clé privée incluse dans le package.
* Le chemin est nettoyé pour retirer tout caractère indésirable (par exemple, un slash initial sur Windows).
*
* @returns {string} Le chemin absolu vers la clé privée par défaut.
*/
function getDefaultKeyPath() {
let p = path.join(path.dirname(new URL(import.meta.url).pathname), '..', 'secrets', 'deploy_key_auth_boilerplate');
p = p.replace(/^[/\\]+/, '');
return p;
}
/**
* Service de gestion des templates.
*
* Ce service assure :
* - Le clonage d’un template depuis un dépôt Git privé via la clé privée par défaut incluse dans le package.
* - L’enregistrement et la récupération des credentials utilisateur.
* - La fourniture (fictive) d’une liste de templates disponibles.
*
* Pour le clonage, le service utilise toujours la clé privée par défaut, quelle que soient les valeurs saisies par l'utilisateur.
*/
export class CredentialsService {
/**
* Enregistre les credentials utilisateur dans le fichier de configuration.
*
* @param credential - Les credentials à enregistrer.
* @returns {Promise<void>}
* @throws Une erreur en cas d'échec d'écriture.
*/
static async saveCredential(credential) {
try {
await fs.writeFile(CredentialsService.CREDENTIAL_FILE, JSON.stringify(credential, null, 2));
console.log('✅ Credential utilisateur enregistré avec succès.');
}
catch (error) {
console.error('❌ Erreur lors de l’enregistrement du credential utilisateur:', error);
throw error;
}
}
/**
* Récupère les credentials utilisateur enregistrés.
*
* @returns {Promise<Credential | undefined>} Les credentials ou undefined s'ils n'existent pas.
*/
static async getCredential() {
if (await fs.pathExists(CredentialsService.CREDENTIAL_FILE)) {
const data = await fs.readFile(CredentialsService.CREDENTIAL_FILE, 'utf8');
try {
const json = JSON.parse(data);
return json;
}
catch (error) {
console.error('❌ Erreur lors de la lecture du fichier de credential utilisateur.', error);
return undefined;
}
}
return undefined;
}
}
/** Chemin vers le fichier de credentials utilisateur (stocké dans le dossier personnel). */
CredentialsService.CREDENTIAL_FILE = path.join(os.homedir(), '.appwizard-credentials.json');
/** Chemin par défaut vers la clé privée incluse dans le package. */
CredentialsService.DEFAULT_KEY_PATH = getDefaultKeyPath();