Browse Source

Creating an argparser early and add a "debug" option

Makes sure we don't log anything at the moment, when debug is passed. Otherwise early errors are not displayed and passed to log files.
Thomas Karl Pietrowski 7 years ago
parent
commit
ab6508657d
2 changed files with 29 additions and 17 deletions
  1. 4 3
      cura/CuraApplication.py
  2. 25 14
      cura_app.py

+ 4 - 3
cura/CuraApplication.py

@@ -628,13 +628,14 @@ class CuraApplication(QtApplication):
     #   This should be called directly before creating an instance of CuraApplication.
     #   \returns \type{bool} True if the whole Cura app should continue running.
     @classmethod
-    def preStartUp(cls):
+    def preStartUp(cls, parser = None, parsed_command_line = {}):
         # Peek the arguments and look for the 'single-instance' flag.
-        parser = argparse.ArgumentParser(prog = "cura", add_help = False)  # pylint: disable=bad-whitespace
+        if not parser:
+            parser = argparse.ArgumentParser(prog = "cura", add_help = False)  # pylint: disable=bad-whitespace
         CuraApplication.addCommandLineOptions(parser)
         # Important: It is important to keep this line here!
         #            In Uranium we allow to pass unknown arguments to the final executable or script.
-        parsed_command_line = vars(parser.parse_known_args()[0])
+        parsed_command_line.update(vars(parser.parse_known_args()[0]))
 
         if parsed_command_line["single_instance"]:
             Logger.log("i", "Checking for the presence of an ready running Cura instance.")

+ 25 - 14
cura_app.py

@@ -3,23 +3,34 @@
 # Copyright (c) 2015 Ultimaker B.V.
 # Cura is released under the terms of the LGPLv3 or higher.
 
+import argparse
 import os
 import sys
+
 from UM.Platform import Platform
 
-def get_cura_dir_path():
-    if Platform.isWindows():
-        return os.path.expanduser("~/AppData/Roaming/cura/")
-    elif Platform.isLinux():
-        return os.path.expanduser("~/.local/share/cura")
-    elif Platform.isOSX():
-        return os.path.expanduser("~/Library/Logs/cura")
+parser = argparse.ArgumentParser()
+parser.add_argument('--debug',
+                    action='store_true',
+                    default = False
+                    )
+known_args, unknown_args = parser.parse_known_args()
+known_args = vars(known_args)
 
-if hasattr(sys, "frozen"):
-    dirpath = get_cura_dir_path()
-    os.makedirs(dirpath, exist_ok = True)
-    sys.stdout = open(os.path.join(dirpath, "stdout.log"), "w")
-    sys.stderr = open(os.path.join(dirpath, "stderr.log"), "w")
+if known_args["debug"]:
+    def get_cura_dir_path():
+        if Platform.isWindows():
+            return os.path.expanduser("~/AppData/Roaming/cura/")
+        elif Platform.isLinux():
+            return os.path.expanduser("~/.local/share/cura")
+        elif Platform.isOSX():
+            return os.path.expanduser("~/Library/Logs/cura")
+    
+    if hasattr(sys, "frozen"):
+        dirpath = get_cura_dir_path()
+        os.makedirs(dirpath, exist_ok = True)
+        sys.stdout = open(os.path.join(dirpath, "stdout.log"), "w")
+        sys.stderr = open(os.path.join(dirpath, "stderr.log"), "w")
 
 import platform
 import faulthandler
@@ -78,8 +89,8 @@ faulthandler.enable()
 cura.Settings.CuraContainerRegistry.CuraContainerRegistry.getInstance()
 
 # This pre-start up check is needed to determine if we should start the application at all.
-if not cura.CuraApplication.CuraApplication.preStartUp():
+if not cura.CuraApplication.CuraApplication.preStartUp(parser = parser, parsed_command_line = known_args):
     sys.exit(0)
 
-app = cura.CuraApplication.CuraApplication.getInstance()
+app = cura.CuraApplication.CuraApplication.getInstance(parser = parser, parsed_command_line = known_args)
 app.run()