From 21548dbdceea1429d1b7ed923b332285edb7073b Mon Sep 17 00:00:00 2001 From: 4NK Dev Date: Wed, 1 Oct 2025 14:53:08 +0000 Subject: [PATCH] =?UTF-8?q?fix:=20Correction=20de=20la=20r=C3=A9solution?= =?UTF-8?q?=20des=20chemins=20relatifs=20VAULT=5FCONFS=5FDIR?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 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 --- sdk-client/src/index.ts | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/sdk-client/src/index.ts b/sdk-client/src/index.ts index eab3b3d..65cf3a8 100644 --- a/sdk-client/src/index.ts +++ b/sdk-client/src/index.ts @@ -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 */