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 {
|
try {
|
||||||
// 1. Créer le dossier de destination s'il n'existe pas
|
// 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;
|
let targetDir;
|
||||||
if (path.isAbsolute(localDir)) {
|
if (path.isAbsolute(localDir)) {
|
||||||
targetDir = localDir;
|
targetDir = localDir;
|
||||||
} else {
|
} else {
|
||||||
const baseDir = this._getBaseDirectoryForRelativePaths();
|
// Pour les chemins relatifs, partir du répertoire du fichier .env
|
||||||
// Si le chemin commence par plusieurs ../, on part du répertoire du fichier .env
|
const envFileDir = this._getEnvFileDirectory();
|
||||||
// sinon on part du répertoire parent du SDK
|
targetDir = path.resolve(envFileDir, localDir);
|
||||||
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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (!fs.existsSync(targetDir)) {
|
if (!fs.existsSync(targetDir)) {
|
||||||
fs.mkdirSync(targetDir, { recursive: true });
|
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
|
* Retourne le répertoire du fichier .env trouvé
|
||||||
* 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
|
|
||||||
*/
|
*/
|
||||||
private _getBaseDirectoryForRelativePaths(): string {
|
private _getEnvFileDirectory(): string {
|
||||||
|
// Chercher le fichier .env dans l'ordre de priorité
|
||||||
const possibleEnvPaths = [
|
const possibleEnvPaths = [
|
||||||
'.env', // Répertoire courant
|
path.join(__dirname, '.env'), // Répertoire du SDK (priorité 1)
|
||||||
'../.env', // Répertoire parent
|
path.join(process.cwd(), '.env'), // Répertoire de travail (priorité 2)
|
||||||
'../../.env', // Répertoire grand-parent
|
'.env', // Répertoire courant (priorité 3)
|
||||||
path.join(__dirname, '.env'), // Répertoire du SDK
|
'../.env', // Répertoire parent (priorité 4)
|
||||||
path.join(__dirname, '../.env'), // Parent du SDK
|
'../../.env', // Répertoire grand-parent (priorité 5)
|
||||||
path.join(__dirname, '../../.env'), // Grand-parent du SDK
|
path.join(__dirname, '../.env'), // Parent du SDK (priorité 6)
|
||||||
path.join(process.cwd(), '.env'), // Répertoire de travail
|
path.join(__dirname, '../../.env'), // Grand-parent du SDK (priorité 7)
|
||||||
];
|
];
|
||||||
|
|
||||||
let envFileDir = null;
|
|
||||||
|
|
||||||
for (const envPath of possibleEnvPaths) {
|
for (const envPath of possibleEnvPaths) {
|
||||||
try {
|
try {
|
||||||
if (fs.existsSync(envPath)) {
|
if (fs.existsSync(envPath)) {
|
||||||
envFileDir = path.dirname(path.resolve(envPath));
|
// Retourner le répertoire du fichier .env
|
||||||
break;
|
const envDir = path.dirname(path.resolve(envPath));
|
||||||
|
return envDir;
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
// Ignorer les erreurs et continuer avec le chemin suivant
|
// 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é
|
// Fallback vers le répertoire du SDK si aucun .env n'est trouvé
|
||||||
if (!envFileDir) {
|
return __dirname;
|
||||||
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;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
Loading…
x
Reference in New Issue
Block a user