fix: Amélioration de la résolution des chemins relatifs VAULT_CONFS_DIR
- Ajout de logique spéciale pour les chemins commençant par ../../../ - Détection automatique du répertoire du fichier .env - Support amélioré pour les chemins relatifs dans les projets clonés - Fallback vers le répertoire parent du SDK quand approprié
This commit is contained in:
parent
21548dbdce
commit
8dd9858576
@ -391,10 +391,22 @@ 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 du fichier .env
|
||||
const targetDir = path.isAbsolute(localDir)
|
||||
? localDir
|
||||
: path.resolve(this._getEnvFileDirectory(), localDir);
|
||||
// Si c'est un chemin relatif, le résoudre par rapport au répertoire de base approprié
|
||||
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);
|
||||
}
|
||||
}
|
||||
if (!fs.existsSync(targetDir)) {
|
||||
fs.mkdirSync(targetDir, { recursive: true });
|
||||
if (verbose) {
|
||||
@ -615,9 +627,11 @@ export class SecureVaultClient {
|
||||
}
|
||||
|
||||
/**
|
||||
* Retourne le répertoire du fichier .env trouvé
|
||||
* 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
|
||||
*/
|
||||
private _getEnvFileDirectory(): string {
|
||||
private _getBaseDirectoryForRelativePaths(): string {
|
||||
const possibleEnvPaths = [
|
||||
'.env', // Répertoire courant
|
||||
'../.env', // Répertoire parent
|
||||
@ -628,10 +642,13 @@ export class SecureVaultClient {
|
||||
path.join(process.cwd(), '.env'), // Répertoire de travail
|
||||
];
|
||||
|
||||
let envFileDir = null;
|
||||
|
||||
for (const envPath of possibleEnvPaths) {
|
||||
try {
|
||||
if (fs.existsSync(envPath)) {
|
||||
return path.dirname(path.resolve(envPath));
|
||||
envFileDir = path.dirname(path.resolve(envPath));
|
||||
break;
|
||||
}
|
||||
} catch (error) {
|
||||
// Ignorer les erreurs et continuer avec le chemin suivant
|
||||
@ -640,7 +657,17 @@ export class SecureVaultClient {
|
||||
}
|
||||
|
||||
// Fallback vers le répertoire de travail si aucun .env n'est trouvé
|
||||
return process.cwd();
|
||||
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;
|
||||
}
|
||||
|
||||
/**
|
||||
|
Loading…
x
Reference in New Issue
Block a user