|

feat(cli): add --no-chroot-scripts flag

Author: Chris Tusa <chris.tusa@leafscale.com>
Date: Jul 05, 2026 17:14
Changeset: 4bd00dffc89ddd49517bcf576832a4042a35c10e
Branch: default

Diff

diff -r 4947137b7532 -r 4bd00dffc89d src/commands/build.reef
--- a/src/commands/build.reef	Sun Jul 05 17:13:28 2026 -0500
+++ b/src/commands/build.reef	Sun Jul 05 17:14:50 2026 -0500
@@ -98,6 +98,9 @@
         if arg == "--root" or arg == "--prefix"
             i = i + 2
             continue
+        elif arg == "--no-chroot-scripts"
+            i = i + 1  // valueless flag: skip only itself
+            continue
         end if
         if arg == "--noclean" or arg == "-n"
             noclean = true
diff -r 4947137b7532 -r 4bd00dffc89d src/commands/db.reef
--- a/src/commands/db.reef	Sun Jul 05 17:13:28 2026 -0500
+++ b/src/commands/db.reef	Sun Jul 05 17:14:50 2026 -0500
@@ -43,7 +43,7 @@
 
     // Load configuration and apply command-line overrides
     let base_cfg = config.load()
-    let cfg = config.apply_overrides(base_cfg, opts.root, opts.prefix)
+    let cfg = config.apply_overrides(base_cfg, opts.root, opts.prefix, opts.no_chroot)
     let root_path = config.get_root(cfg)
 
     // Show root if set (verbose mode)
diff -r 4947137b7532 -r 4bd00dffc89d src/commands/files.reef
--- a/src/commands/files.reef	Sun Jul 05 17:13:28 2026 -0500
+++ b/src/commands/files.reef	Sun Jul 05 17:14:50 2026 -0500
@@ -40,7 +40,7 @@
 
     // Load configuration and apply command-line overrides
     let base_cfg = config.load()
-    let cfg = config.apply_overrides(base_cfg, opts.root, opts.prefix)
+    let cfg = config.apply_overrides(base_cfg, opts.root, opts.prefix, opts.no_chroot)
     let root_path = config.get_root(cfg)
 
     // Show root if set (verbose mode)
diff -r 4947137b7532 -r 4bd00dffc89d src/commands/info.reef
--- a/src/commands/info.reef	Sun Jul 05 17:13:28 2026 -0500
+++ b/src/commands/info.reef	Sun Jul 05 17:14:50 2026 -0500
@@ -41,7 +41,7 @@
 
     // Load configuration and apply command-line overrides
     let base_cfg = config.load()
-    let cfg = config.apply_overrides(base_cfg, opts.root, opts.prefix)
+    let cfg = config.apply_overrides(base_cfg, opts.root, opts.prefix, opts.no_chroot)
     let root_path = config.get_root(cfg)
 
     // Show root if set (verbose mode)
diff -r 4947137b7532 -r 4bd00dffc89d src/commands/install.reef
--- a/src/commands/install.reef	Sun Jul 05 17:13:28 2026 -0500
+++ b/src/commands/install.reef	Sun Jul 05 17:14:50 2026 -0500
@@ -57,7 +57,7 @@
 
     // Load configuration and apply command-line overrides
     let base_cfg = config.load()
-    let cfg = config.apply_overrides(base_cfg, opts.root, opts.prefix)
+    let cfg = config.apply_overrides(base_cfg, opts.root, opts.prefix, opts.no_chroot)
     uhttp.enable_proxy(config.get_use_proxy(cfg))
 
     // Auto-refresh port index if configured
@@ -92,6 +92,9 @@
         if pkg_arg == "--root" or pkg_arg == "--prefix"
             i = i + 2  // Skip flag and its value
             continue
+        elif pkg_arg == "--no-chroot-scripts"
+            i = i + 1  // valueless flag: skip only itself
+            continue
         end if
         if str.starts_with(pkg_arg, "-")
             i = i + 1
diff -r 4947137b7532 -r 4bd00dffc89d src/commands/list.reef
--- a/src/commands/list.reef	Sun Jul 05 17:13:28 2026 -0500
+++ b/src/commands/list.reef	Sun Jul 05 17:14:50 2026 -0500
@@ -36,7 +36,7 @@
 
     // Load configuration and apply command-line overrides
     let base_cfg = config.load()
-    let cfg = config.apply_overrides(base_cfg, opts.root, opts.prefix)
+    let cfg = config.apply_overrides(base_cfg, opts.root, opts.prefix, opts.no_chroot)
     let root_path = config.get_root(cfg)
 
     // Show root if set (verbose mode)
diff -r 4947137b7532 -r 4bd00dffc89d src/commands/owner.reef
--- a/src/commands/owner.reef	Sun Jul 05 17:13:28 2026 -0500
+++ b/src/commands/owner.reef	Sun Jul 05 17:14:50 2026 -0500
@@ -41,7 +41,7 @@
 
     // Load configuration and apply command-line overrides
     let base_cfg = config.load()
-    let cfg = config.apply_overrides(base_cfg, opts.root, opts.prefix)
+    let cfg = config.apply_overrides(base_cfg, opts.root, opts.prefix, opts.no_chroot)
     let root_path = config.get_root(cfg)
 
     // Show root if set (verbose mode)
diff -r 4947137b7532 -r 4bd00dffc89d src/commands/remove.reef
--- a/src/commands/remove.reef	Sun Jul 05 17:13:28 2026 -0500
+++ b/src/commands/remove.reef	Sun Jul 05 17:14:50 2026 -0500
@@ -52,7 +52,7 @@
 
     // Load configuration and apply command-line overrides
     let base_cfg = config.load()
-    let cfg = config.apply_overrides(base_cfg, opts.root, opts.prefix)
+    let cfg = config.apply_overrides(base_cfg, opts.root, opts.prefix, opts.no_chroot)
     let root_path = config.get_root(cfg)
 
     // Show root if set (verbose mode)
@@ -72,6 +72,9 @@
         if pkg_name == "--root" or pkg_name == "--prefix"
             i = i + 2  // Skip flag and its value
             continue
+        elif pkg_name == "--no-chroot-scripts"
+            i = i + 1  // valueless flag: skip only itself
+            continue
         end if
         if str.starts_with(pkg_name, "-")
             i = i + 1
diff -r 4947137b7532 -r 4bd00dffc89d src/commands/upgrade.reef
--- a/src/commands/upgrade.reef	Sun Jul 05 17:13:28 2026 -0500
+++ b/src/commands/upgrade.reef	Sun Jul 05 17:14:50 2026 -0500
@@ -42,7 +42,7 @@
 
     // Load configuration and apply command-line overrides
     let base_cfg = config.load()
-    let cfg = config.apply_overrides(base_cfg, opts.root, opts.prefix)
+    let cfg = config.apply_overrides(base_cfg, opts.root, opts.prefix, opts.no_chroot)
     let root_path = config.get_root(cfg)
 
     // Auto-refresh port index if configured
@@ -64,6 +64,9 @@
         if arg == "--root" or arg == "--prefix"
             i = i + 2  // Skip flag and its value
             continue
+        elif arg == "--no-chroot-scripts"
+            i = i + 1  // valueless flag: skip only itself
+            continue
         end if
         if not str.starts_with(arg, "-")
             pkg_count = pkg_count + 1
@@ -85,6 +88,9 @@
             if pkg_name == "--root" or pkg_name == "--prefix"
                 i = i + 2  // Skip flag and its value
                 continue
+            elif pkg_name == "--no-chroot-scripts"
+                i = i + 1  // valueless flag: skip only itself
+                continue
             end if
             if str.starts_with(pkg_name, "-")
                 i = i + 1
diff -r 4947137b7532 -r 4bd00dffc89d src/commands/verify.reef
--- a/src/commands/verify.reef	Sun Jul 05 17:13:28 2026 -0500
+++ b/src/commands/verify.reef	Sun Jul 05 17:14:50 2026 -0500
@@ -46,7 +46,7 @@
 
     // Load configuration and apply command-line overrides
     let base_cfg = config.load()
-    let cfg = config.apply_overrides(base_cfg, opts.root, opts.prefix)
+    let cfg = config.apply_overrides(base_cfg, opts.root, opts.prefix, opts.no_chroot)
     let root_path = config.get_root(cfg)
 
     if opts.verbose and str.length(root_path) > 0
diff -r 4947137b7532 -r 4bd00dffc89d src/main.reef
--- a/src/main.reef	Sun Jul 05 17:13:28 2026 -0500
+++ b/src/main.reef	Sun Jul 05 17:14:50 2026 -0500
@@ -18,7 +18,6 @@
 import sys.args
 import sys.process
 import sys.env
-import io.file
 import io.dir
 import core.str
 import types
@@ -93,6 +92,7 @@
     println("    --no-color        Disable colored output")
     println("    --root <path>     Use alternative root directory")
     println("    --prefix <path>   Installation prefix (default: /usr)")
+    println("    --no-chroot-scripts  Run maintainer scripts on the host, not chrooted")
     println("")
     println("EXIT CODES:")
     println("    0                 Success")
@@ -120,7 +120,7 @@
         end if
 
         // Skip boolean flags
-        if arg == "-y" or arg == "--yes" or arg == "-f" or arg == "--force" or arg == "-v" or arg == "--verbose" or arg == "-n" or arg == "--dry-run" or arg == "-q" or arg == "--quiet" or arg == "--no-color"
+        if arg == "-y" or arg == "--yes" or arg == "-f" or arg == "--force" or arg == "-v" or arg == "--verbose" or arg == "-n" or arg == "--dry-run" or arg == "-q" or arg == "--quiet" or arg == "--no-color" or arg == "--no-chroot-scripts"
             i = i + 1
             continue
         end if
@@ -151,6 +151,9 @@
         opts.prefix = args.get_flag_value("prefix")
     end if
 
+    // Check for --no-chroot-scripts option (valueless)
+    opts.no_chroot = args.has_flag("no-chroot-scripts")
+
     return opts
 end parse_global_options
 
diff -r 4947137b7532 -r 4bd00dffc89d src/types.reef
--- a/src/types.reef	Sun Jul 05 17:13:28 2026 -0500
+++ b/src/types.reef	Sun Jul 05 17:14:50 2026 -0500
@@ -195,6 +195,7 @@
     quiet: bool
     root: string
     prefix: string
+    no_chroot: bool  // --no-chroot-scripts: run maintainer scripts on the host, not chrooted
     cmd_index: int  // Index of the command in args (for subcommand parsing)
 end GlobalOptions
 
@@ -255,6 +256,7 @@
         quiet: false,
         root: "",
         prefix: "",
+        no_chroot: false,
         cmd_index: 1
     }
 end new_global_options