Menuconfig Implementation and auto-qemu refactoring (#44)
[lunaix-os.git] / lunaix-os / scripts / build-tools / luna_build.py
index e3c6908672b0c148c83bc404b13ae84cae316510..ce3be825f5b9779cf1a188d62d51634d0dbb93cc 100755 (executable)
@@ -8,6 +8,7 @@ from integration.config_io import CHeaderConfigProvider
 from integration.lbuild_bridge import LConfigProvider
 from integration.render_ishell import InteractiveShell
 from integration.build_gen import MakefileBuildGen, install_lbuild_functions
+from integration.lunamenu import menuconfig, TerminalSizeCheckFailed
 
 import lcfg.types as lcfg_type
 import lcfg.builtins as builtin
@@ -37,12 +38,23 @@ def prepare_lconfig_env(out_dir):
 
 def do_config(opt, lcfg_env):
     redo_config = not exists(opt.config_save) or opt.force
-    if not redo_config:
+    if not redo_config or opt.quiet:
         return
+
+    try:
+        clean_quit = menuconfig(lcfg_env)
+    except TerminalSizeCheckFailed as e:
+        least = e.args[0]
+        current = e.args[1]
+        print(
+            f"Your terminal size: {current} is less than minimum requirement of {least}.\n"
+            "menuconfig will not function properly, switch to prompt based.\n")
+
+        shell = InteractiveShell(lcfg_env)
+        clean_quit = shell.render_loop()
     
-    shell = InteractiveShell(lcfg_env)
-    if not shell.render_loop():
-        print("Configuration aborted.")
+    if not clean_quit:
+        print("Configuration aborted. Nothing has been saved.")
         exit(-1)
 
 def do_buildfile_gen(opts, lcfg_env):
@@ -71,6 +83,7 @@ def do_buildfile_gen(opts, lcfg_env):
 def main():
     parser = ArgumentParser()
     parser.add_argument("--config", action="store_true", default=False)
+    parser.add_argument("--quiet", action="store_true", default=False)
     parser.add_argument("--lconfig-file", default="LConfig")
     parser.add_argument("--config-save", default=".config.json")
     parser.add_argument("--force", action="store_true", default=False)