fix: Correction de la résolution des chemins relatifs VAULT_CONFS_DIR

- Ajout de la méthode _getEnvFileDirectory() pour trouver le répertoire du fichier .env
- Modification de syncLocalFiles() pour résoudre les chemins relatifs par rapport au répertoire du .env au lieu de process.cwd()
- Cela corrige le problème où VAULT_CONFS_DIR avec des chemins relatifs n'était pas respecté dans les projets clonés
- Les chemins relatifs comme '../../../projects/lecoffre/lecoffre_node/confs' sont maintenant correctement résolus
This commit is contained in:
4NK Dev 2025-10-01 14:53:08 +00:00
parent 84de922488
commit 21548dbdce

View File

@ -391,7 +391,10 @@ export class SecureVaultClient {
try {
// 1. Créer le dossier de destination s'il n'existe pas
const targetDir = path.resolve(localDir);
// Si c'est un chemin relatif, le résoudre par rapport au répertoire du fichier .env
const targetDir = path.isAbsolute(localDir)
? localDir
: path.resolve(this._getEnvFileDirectory(), localDir);
if (!fs.existsSync(targetDir)) {
fs.mkdirSync(targetDir, { recursive: true });
if (verbose) {
@ -611,6 +614,35 @@ export class SecureVaultClient {
}
}
/**
* Retourne le répertoire du fichier .env trouvé
*/
private _getEnvFileDirectory(): string {
const possibleEnvPaths = [
'.env', // Répertoire courant
'../.env', // Répertoire parent
'../../.env', // Répertoire grand-parent
path.join(__dirname, '.env'), // Répertoire du SDK
path.join(__dirname, '../.env'), // Parent du SDK
path.join(__dirname, '../../.env'), // Grand-parent du SDK
path.join(process.cwd(), '.env'), // Répertoire de travail
];
for (const envPath of possibleEnvPaths) {
try {
if (fs.existsSync(envPath)) {
return path.dirname(path.resolve(envPath));
}
} catch (error) {
// Ignorer les erreurs et continuer avec le chemin suivant
continue;
}
}
// Fallback vers le répertoire de travail si aucun .env n'est trouvé
return process.cwd();
}
/**
* Charge les variables d'environnement depuis plusieurs emplacements possibles
*/