Index: config.py ================================================================== --- config.py +++ config.py @@ -190,21 +190,26 @@ subdir = name[0:name.find("/")] subdir = self.dir + "/" + subdir if (not os.path.exists(subdir)): os.mkdir(subdir) open(subdir+"/.nobackup", "w").close() - # write + # target filename file = self.dir + "/" + name + # encode as JSON + try: + data = json.dumps(data, indent=(4 if nice else None)) + except Exception as e: + log.ERR("JSON encoding failed", e) + return # .gz or normal file if gz: f = gzip.open(file+".gz", "w") if os.path.exists(file): os.unlink(file) else: f = open(file, "w") - # encode - data = json.dumps(data, indent=(4 if nice else None)) + # write try: f.write(data.encode("utf-8")) except TypeError as e: f.write(data) # Python3 sometimes wants to write strings rather than bytes f.close() @@ -267,11 +272,11 @@ try: netrc = parser().hosts except: netrc = parser(self.xdg() + "/netrc").hosts except: - pass + log.STAT("No .netrc") for server in varhosts: if server in netrc: return netrc[server] @@ -353,11 +358,11 @@ if decode: return bin.decode("utf-8", errors='ignore') else: return str(bin) except: - pass + log.WARN("get_data() didn't find:", fn) # Search through ./channels/ and get module basenames. # (Reordering channel tabs is now done by uikit.apply_state.) # @@ -382,11 +387,11 @@ # try via pkgutil first if module: fn = module try: src = pkgutil.get_data(plugin_base, fn+".py") - except: pass + except: pass # Notice in plugin_meta_extract() is sufficient # get source directly from caller elif not src and not fn: module = inspect.getmodule(sys._getframe(frame)) fn = inspect.getsourcefile(module) @@ -496,21 +501,25 @@ # output print(method + " " + " ".join([str(a) for a in args]), file=sys.stderr) # Colors colors = { - "ERR": "31m", # red ERROR - "INIT": "31m", # red INIT ERROR - "PROC": "32m", # green PROCESS - "CONF": "33m", # brown CONFIG DATA - "DND": "1;33;41m", # DRAG'N'DROP - "UI": "34m", # blue USER INTERFACE BEHAVIOUR + "ERR": "31m", # red ERROR + "INIT": "38;5;196m", # red INIT ERROR + "WARN": "38;5;208m", # orange WARNING + "EXEC": "38;5;66m", # green EXEC + "PROC": "32m", # green PROCESS + "FAVICON":"58;5;119m", # green FAVICON + "CONF": "33m", # brown CONFIG DATA + "DND": "1;33;41m", # yl/red DRAG'N'DROP + "UI": "34m", # blue USER INTERFACE BEHAVIOUR "UIKIT":"38;5;222;48;5;235m", # THREAD/UIKIT/IDLE TASKS - "HTTP": "35m", # magenta HTTP REQUEST - "DATA": "36m", # cyan DATA - "INFO": "37m", # gray INFO - "STAT": "37m", # gray CONFIG STATE + "APPSTATE":"38;5;200m", # magenta APPSTATE RESTORE + "HTTP": "35m", # magenta HTTP REQUEST + "DATA": "36m", # cyan DATA + "INFO": "38;5;238m", # lgray INFO + "STAT": "37m", # gray CONFIG STATE } # instantiate right away log = log_printer()