# HG changeset patch # User Edouard Tisserant # Date 1644781980 -3600 # Node ID 84afcc0ebadde121dda41c859408b8143c6a1205 # Parent 700b39cb45257ead35edc325078c084c1b47a397 IDE: Add -l or --log command line parameter to give a file where all content witten to console window will be appended. File can be /dev/stdout. diff -r 700b39cb4525 -r 84afcc0ebadd Beremiz.py --- a/Beremiz.py Wed Feb 02 20:27:17 2022 +0100 +++ b/Beremiz.py Sun Feb 13 20:53:00 2022 +0100 @@ -50,6 +50,7 @@ self.modules = ["BeremizIDE"] self.debug = os.path.exists("BEREMIZ_DEBUG") self.handle_exception = None + self.logf = None def Bpath(self, *args): return os.path.join(self.app_dir, *args) @@ -62,12 +63,13 @@ print("-h --help Print this help") print("-u --updatecheck URL Retrieve update information by checking URL") print("-e --extend PathToExtension Extend IDE functionality by loading at start additional extensions") + print("-l --log path write content of console tab to given file") print("") print("") def SetCmdOptions(self): - self.shortCmdOpts = "hu:e:" - self.longCmdOpts = ["help", "updatecheck=", "extend="] + self.shortCmdOpts = "hu:e:l:" + self.longCmdOpts = ["help", "updatecheck=", "extend=", "log="] def ProcessOption(self, o, a): if o in ("-h", "--help"): @@ -77,6 +79,8 @@ self.updateinfo_url = a if o in ("-e", "--extend"): self.extensions.append(a) + if o in ("-l", "--log"): + self.logf = open(a, 'a') def ProcessCommandLineArgs(self): self.SetCmdOptions() @@ -185,7 +189,7 @@ self.handle_exception = util.ExceptionHandler.AddExceptHook(version.app_version) def CreateUI(self): - self.frame = self.BeremizIDE.Beremiz(None, self.projectOpen, self.buildpath) + self.frame = self.BeremizIDE.Beremiz(None, self.projectOpen, self.buildpath, logf=self.logf) def CloseSplash(self): if self.splash: diff -r 700b39cb4525 -r 84afcc0ebadd BeremizIDE.py --- a/BeremizIDE.py Wed Feb 02 20:27:17 2022 +0100 +++ b/BeremizIDE.py Sun Feb 13 20:53:00 2022 +0100 @@ -115,7 +115,7 @@ class LogPseudoFile(object): """ Base class for file like objects to facilitate StdOut for the Shell.""" - def __init__(self, output, risecall): + def __init__(self, output, risecall, logf): self.red_white = 1 self.red_yellow = 2 self.black_white = wx.stc.STC_STYLE_DEFAULT @@ -131,8 +131,11 @@ self.LastRefreshTime = gettime() self.LastRefreshTimer = None self.refreshPending = False + self.logf = logf def write(self, s, style=None): + if self.logf is not None: + self.logf.write(s) self.StackLock.acquire() self.stack.append((s, style)) self.StackLock.release() @@ -436,13 +439,13 @@ # found here. os.environ["PATH"] = os.getcwd()+';'+os.environ["PATH"] - def __init__(self, parent, projectOpen=None, buildpath=None, ctr=None, debug=True): + def __init__(self, parent, projectOpen=None, buildpath=None, ctr=None, debug=True, logf=None): # Add beremiz's icon in top left corner of the frame self.icon = wx.Icon(Bpath("images", "brz.ico"), wx.BITMAP_TYPE_ICO) self.__init_execute_path() IDEFrame.__init__(self, parent, debug) - self.Log = LogPseudoFile(self.LogConsole, self.SelectTab) + self.Log = LogPseudoFile(self.LogConsole, self.SelectTab, logf) self.local_runtime = None self.runtime_port = None