From 9a9685202c3efbc5906b3ea65e1bc3004c0bc8f8 Mon Sep 17 00:00:00 2001 From: swiftycode <10752639+swiftycode@user.noreply.gitee.com> Date: Thu, 1 Feb 2024 18:43:57 +0800 Subject: [PATCH 1/3] Fix subsection parsing issue in frontend --- src/clitheme/frontend.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/clitheme/frontend.py b/src/clitheme/frontend.py index d71d176..83b2baa 100644 --- a/src/clitheme/frontend.py +++ b/src/clitheme/frontend.py @@ -174,9 +174,9 @@ class FetchDescriptor(): if self.debug_mode: print(f"[Debug] lang: {lang}\n[Debug] entry_path: {entry_path}") # just being lazy here I don't want to check the variables before using ಥ_ಥ (because it doesn't matter) - path=data_path+"/"+self.domain_name+"/"+self.app_name+"/"+self.subsections + path=data_path+"/"+self.domain_name+"/"+self.app_name+"/"+re.sub(" ",r"/", self.subsections) path2=None - if alt_path!=None: path2=alt_path+"/"+self.domain_name+"/"+self.app_name+"/"+self.subsections + if alt_path!=None: path2=alt_path+"/"+self.domain_name+"/"+self.app_name+"/"+re.sub(" ",r"/", self.subsections) for section in entry_path.split(): path+="/"+section if path2!=None: path2+="/"+section -- Gitee From 841221925fc36c3db1785a9d3b23ea28f5d6627d Mon Sep 17 00:00:00 2001 From: swiftycode <10752639+swiftycode@user.noreply.gitee.com> Date: Thu, 1 Feb 2024 20:55:33 +0800 Subject: [PATCH 2/3] Optimize local themedef functions --- src/clitheme/_generator.py | 3 ++- src/clitheme/frontend.py | 37 ++++++++++++++++++++++++++++++++++--- 2 files changed, 36 insertions(+), 4 deletions(-) diff --git a/src/clitheme/_generator.py b/src/clitheme/_generator.py index e927ffa..98becea 100644 --- a/src/clitheme/_generator.py +++ b/src/clitheme/_generator.py @@ -13,13 +13,14 @@ except ImportError: # for test program import frontend path="" # to be generated by function +silence_warn=False fd=frontend.FetchDescriptor(domain_name="swiftycode", app_name="clitheme", subsections="generator") def handle_error(message): raise SyntaxError(fd.feof("error-str", "Syntax error: {msg}", msg=message)) def handle_warning(message): - print(fd.feof("warning-str", "Warning: {msg}", msg=message)) + if not silence_warn: print(fd.feof("warning-str", "Warning: {msg}", msg=message)) def recursive_mkdir(path, entry_name, line_number_debug): # recursively generate directories (excluding file itself) current_path=path current_entry="" # for error output diff --git a/src/clitheme/frontend.py b/src/clitheme/frontend.py index 83b2baa..9e38072 100644 --- a/src/clitheme/frontend.py +++ b/src/clitheme/frontend.py @@ -7,6 +7,7 @@ import random import string import re import hashlib +import shutil from typing import Optional try: from . import _globalvar @@ -23,6 +24,7 @@ global_disablelang=False alt_path=None alt_path_dirname=None +alt_path_hash=None # Support for setting a local definition file # - Generate the data in a temporary directory named after content hash # - First try alt_path then data_path @@ -42,15 +44,43 @@ def set_local_themedef(file_content: str, overlay: bool=False) -> bool: except ImportError: import _generator # Determine directory name h=hashlib.shake_256(bytes(file_content, "utf-8")) + d=h.hexdigest(6) + global alt_path_hash + # if overlay, update hash with new contents of file + if alt_path_hash!=None and overlay==True: + newhash="" + for x in range(len(alt_path_hash)): + chart=string.ascii_uppercase+string.ascii_lowercase+string.digits + numorig=0 + numcur=0 + if d[x]>='A' and d[x]<='Z': #uppercase letters + numorig=ord(d[x])-ord('A') + elif d[x]>='a' and d[x]<='z': #lowercase letters + numorig=(ord(d[x])-ord('a'))+len(string.ascii_uppercase) + elif d[x]>='0' and d[x]<='9': #digit + numorig=ord(d[x])-ord('0')+len(string.ascii_uppercase+string.ascii_lowercase) + if alt_path_hash[x]>='A' and alt_path_hash[x]<='Z': #uppercase letters + numcur=ord(alt_path_hash[x])-ord('A') + elif alt_path_hash[x]>='a' and alt_path_hash[x]<='z': #lowercase letters + numcur=(ord(alt_path_hash[x])-ord('a'))+len(string.ascii_uppercase) + elif alt_path_hash[x]>='0' and alt_path_hash[x]<='9': #digit + numcur=ord(alt_path_hash[x])-ord('0')+len(string.ascii_uppercase+string.ascii_lowercase) + newhash+=chart[(numorig+numcur)%len(chart)] + alt_path_hash=newhash + else: alt_path_hash=d # else, use generated hash global alt_path_dirname - dir_name=f"clitheme-data-{h.hexdigest(6)}" # length of 12 (6*2) + dir_name=f"clitheme-data-{alt_path_hash}" # length of 12 (6*2) + overlay_cont=False if alt_path_dirname!=None and overlay==True: # overlay - dir_name=alt_path_dirname + if not os.path.exists(_globalvar.clitheme_temp_root+"/"+dir_name): + overlay_cont=True + shutil.copytree(_globalvar.clitheme_temp_root+"/"+alt_path_dirname, _globalvar.clitheme_temp_root+"/"+dir_name) path_name=_globalvar.clitheme_temp_root+"/"+dir_name if global_debugmode: print("[Debug] "+path_name) # Generate data hierarchy as needed - if not os.path.exists(path_name): + if overlay_cont or not os.path.exists(path_name): _generator.path=path_name + _generator.silence_warn=True try: _generator.generate_data_hierarchy(file_content, custom_path_gen=False) except SyntaxError: @@ -67,6 +97,7 @@ def unset_local_themedef(): """ global alt_path; alt_path=None global alt_path_dirname; alt_path_dirname=None + global alt_path_hash; alt_path_hash=None class FetchDescriptor(): """ -- Gitee From c0af5462e2b6bbd09f9bc5bf532d67409dd529df Mon Sep 17 00:00:00 2001 From: swiftycode <10752639+swiftycode@user.noreply.gitee.com> Date: Sat, 2 Mar 2024 23:50:20 +0800 Subject: [PATCH 3/3] Update version (1.1-r2) --- debian/changelog | 14 +++++++++++--- src/clitheme/_version.py | 4 ++-- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/debian/changelog b/debian/changelog index 37f8e4c..7037596 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,6 +1,14 @@ +clitheme (1.1-r2-1) unstable; urgency=medium + + * Version 1.1 release 2 + For more information please see: + https://gitee.com/swiftycode/clitheme/releases/tag/v1.1-r2 + + -- swiftycode <3291929745@qq.com> Sat, 02 Mar 2024 23:49:00 +0800 + clitheme (1.1-r1-1) unstable; urgency=medium - * Version 1.1-r1 in Debian package format + * Version 1.1 release 1 For more information please see: https://gitee.com/swiftycode/clitheme/releases/tag/v1.1-r1 @@ -8,7 +16,7 @@ clitheme (1.1-r1-1) unstable; urgency=medium clitheme (1.0-r2-1) unstable; urgency=medium - * Version 1.0-r2 in Debian package format + * Version 1.0 release 2 For more information please see: https://gitee.com/swiftycode/clitheme/releases/tag/v1.0-r2 @@ -16,6 +24,6 @@ clitheme (1.0-r2-1) unstable; urgency=medium clitheme (1.0-r1-1) unstable; urgency=medium - * Version 1.0_r1 in Debian package format + * Version 1.0 release 1 -- swiftycode <3291929745@qq.com> Wed, 13 Dec 2023 17:16:33 +0800 diff --git a/src/clitheme/_version.py b/src/clitheme/_version.py index 2c71ced..eaf05aa 100644 --- a/src/clitheme/_version.py +++ b/src/clitheme/_version.py @@ -1,10 +1,10 @@ # Version definition file; define the package version here # The __version__ variable must be a literal string; DO NOT use variables -__version__="1.1-r1" +__version__="1.1-r2" major=1 minor=1 release=1 # 0 stands for "dev" # For PKGBUILD # version_main CANNOT contain hyphens (-); use underscores (_) instead -version_main="1.1_r1" +version_main="1.1_r2" version_buildnumber=1 \ No newline at end of file -- Gitee