fix: Correction finale de la résolution des chemins VAULT_CONFS_DIR
- Simplification de la logique de résolution des chemins - Suppression des cas spéciaux pour les chemins relatifs - Utilisation d'une logique universelle qui fonctionne pour tous les types de chemins - Le SDK respecte maintenant correctement VAULT_CONFS_DIR depuis le répertoire du fichier .env - Testé et validé avec VAULT_CONFS_DIR=../confs (78 fichiers synchronisés)
This commit is contained in:
parent
8dd9858576
commit
81b4648147
@ -391,21 +391,14 @@ export class SecureVaultClient {
|
||||
|
||||
try {
|
||||
// 1. Créer le dossier de destination s'il n'existe pas
|
||||
// Si c'est un chemin relatif, le résoudre par rapport au répertoire de base approprié
|
||||
// Résoudre le chemin par rapport au répertoire du fichier .env
|
||||
let targetDir;
|
||||
if (path.isAbsolute(localDir)) {
|
||||
targetDir = localDir;
|
||||
} else {
|
||||
const baseDir = this._getBaseDirectoryForRelativePaths();
|
||||
// Si le chemin commence par plusieurs ../, on part du répertoire du fichier .env
|
||||
// sinon on part du répertoire parent du SDK
|
||||
if (localDir.startsWith('../../../') && path.basename(baseDir) === 'sdk-client') {
|
||||
// Pour les chemins comme ../../../projects/..., partir du répertoire du fichier .env
|
||||
const envFileDir = path.dirname(path.resolve(path.join(__dirname, '.env')));
|
||||
targetDir = path.resolve(envFileDir, localDir);
|
||||
} else {
|
||||
targetDir = path.resolve(baseDir, localDir);
|
||||
}
|
||||
// Pour les chemins relatifs, partir du répertoire du fichier .env
|
||||
const envFileDir = this._getEnvFileDirectory();
|
||||
targetDir = path.resolve(envFileDir, localDir);
|
||||
}
|
||||
if (!fs.existsSync(targetDir)) {
|
||||
fs.mkdirSync(targetDir, { recursive: true });
|
||||
@ -627,28 +620,26 @@ export class SecureVaultClient {
|
||||
}
|
||||
|
||||
/**
|
||||
* Retourne le répertoire de base pour résoudre les chemins relatifs VAULT_CONFS_DIR
|
||||
* Pour les chemins avec plusieurs ../ (comme ../../../), on part du répertoire parent du SDK
|
||||
* Cela permet aux chemins relatifs de fonctionner correctement depuis le fichier .env
|
||||
* Retourne le répertoire du fichier .env trouvé
|
||||
*/
|
||||
private _getBaseDirectoryForRelativePaths(): string {
|
||||
private _getEnvFileDirectory(): string {
|
||||
// Chercher le fichier .env dans l'ordre de priorité
|
||||
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
|
||||
path.join(__dirname, '.env'), // Répertoire du SDK (priorité 1)
|
||||
path.join(process.cwd(), '.env'), // Répertoire de travail (priorité 2)
|
||||
'.env', // Répertoire courant (priorité 3)
|
||||
'../.env', // Répertoire parent (priorité 4)
|
||||
'../../.env', // Répertoire grand-parent (priorité 5)
|
||||
path.join(__dirname, '../.env'), // Parent du SDK (priorité 6)
|
||||
path.join(__dirname, '../../.env'), // Grand-parent du SDK (priorité 7)
|
||||
];
|
||||
|
||||
let envFileDir = null;
|
||||
|
||||
for (const envPath of possibleEnvPaths) {
|
||||
try {
|
||||
if (fs.existsSync(envPath)) {
|
||||
envFileDir = path.dirname(path.resolve(envPath));
|
||||
break;
|
||||
// Retourner le répertoire du fichier .env
|
||||
const envDir = path.dirname(path.resolve(envPath));
|
||||
return envDir;
|
||||
}
|
||||
} catch (error) {
|
||||
// Ignorer les erreurs et continuer avec le chemin suivant
|
||||
@ -656,18 +647,8 @@ export class SecureVaultClient {
|
||||
}
|
||||
}
|
||||
|
||||
// Fallback vers le répertoire de travail si aucun .env n'est trouvé
|
||||
if (!envFileDir) {
|
||||
envFileDir = process.cwd();
|
||||
}
|
||||
|
||||
// Si le fichier .env est dans sdk-client/, on part du répertoire parent
|
||||
// Cela permet aux chemins comme ../../../projects/... de fonctionner correctement
|
||||
if (path.basename(envFileDir) === 'sdk-client') {
|
||||
return path.dirname(envFileDir); // Remonter au répertoire parent du SDK
|
||||
}
|
||||
|
||||
return envFileDir;
|
||||
// Fallback vers le répertoire du SDK si aucun .env n'est trouvé
|
||||
return __dirname;
|
||||
}
|
||||
|
||||
/**
|
||||
|
Loading…
x
Reference in New Issue
Block a user