From 801dc825033672ca4665eeda8b73ac47b13e6301 Mon Sep 17 00:00:00 2001
From: Natoandro <anatoandro@hotmail.com>
Date: Wed, 28 Aug 2024 10:40:56 +0300
Subject: [PATCH] fix posix dir inheritance

---
 files/MergedEnvs.ts | 16 ++++++++++++++++
 files/mod.ts        |  6 ++++++
 2 files changed, 22 insertions(+)

diff --git a/files/MergedEnvs.ts b/files/MergedEnvs.ts
index 6b622ce..c158503 100644
--- a/files/MergedEnvs.ts
+++ b/files/MergedEnvs.ts
@@ -1,4 +1,8 @@
 import { deep_eql } from "../deps/common.ts";
+import {
+  DynamicPosixDirProvision,
+  PosixDirProvision,
+} from "../modules/envs/types.ts";
 import getLogger from "../utils/logger.ts";
 
 const logger = getLogger(import.meta);
@@ -10,6 +14,8 @@ type Var =
 export class ParentEnvs {
   #childName: string;
   #vars: Map<string, Var> = new Map();
+  #posixDirs: Array<PosixDirProvision> = [];
+  #dynamicPosixDirs: Array<DynamicPosixDirProvision> = [];
   #installs: Set<string> = new Set();
   #onEnterHooks: string[] = [];
   #onExitHooks: string[] = [];
@@ -68,6 +74,14 @@ export class ParentEnvs {
     }
   }
 
+  mergePosixDirs(
+    posixDirs: Array<PosixDirProvision>,
+    dynamicPosixDirs: Array<DynamicPosixDirProvision>,
+  ) {
+    this.#posixDirs.push(...posixDirs);
+    this.#dynamicPosixDirs.push(...dynamicPosixDirs);
+  }
+
   mergeInstalls(
     parentName: string,
     installs: Set<string>,
@@ -118,6 +132,8 @@ export class ParentEnvs {
       onExitHookTasks: this.#onExitHooks,
       vars,
       dynVars,
+      posixDirs: this.#posixDirs,
+      dynamicPosixDirs: this.#dynamicPosixDirs,
     };
   }
 }
diff --git a/files/mod.ts b/files/mod.ts
index d2f5887..5e26360 100644
--- a/files/mod.ts
+++ b/files/mod.ts
@@ -426,6 +426,10 @@ export class Ghjkfile {
       );
       parentEnvs.mergeVars(parentName, vars);
       parentEnvs.mergeDynVars(parentName, dynVars);
+      parentEnvs.mergePosixDirs(
+        finalized.posixDirs,
+        finalized.dynamicPosixDirs,
+      );
       if (installSetId) {
         const set = this.#installSets.get(installSetId)!;
         parentEnvs.mergeInstalls(
@@ -642,7 +646,9 @@ export class Ghjkfile {
               prov,
             );
           }),
+          ...base.posixDirs,
           ...final.posixDirs,
+          ...base.dynamicPosixDirs,
           ...final.dynamicPosixDirs,
           // env hooks
           ...hooks,