From 43038b1bc8e0f825e8e066c3aeac07144dc61970 Mon Sep 17 00:00:00 2001 From: 0O0o0oOoO00 <11174151+0O0o0oOoO00@users.noreply.github.com> Date: Sun, 14 Sep 2025 15:40:40 +0800 Subject: [PATCH] add: extract prefix assets to single file --- dev_tools/button_extract.py | 50 +++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) diff --git a/dev_tools/button_extract.py b/dev_tools/button_extract.py index b966f1a77..111fb9a23 100644 --- a/dev_tools/button_extract.py +++ b/dev_tools/button_extract.py @@ -189,6 +189,56 @@ class ModuleExtractor: f.write(text + '\n') +class ModuleExtractor(ModuleExtractor): + @property + def expression(self): + exp = [] + prefix_assets = {} + for file in os.listdir(self.folder): + if file[0].isdigit(): + continue + maybe_prefix = file.split("_", 1)[0] + if maybe_prefix.islower(): + if maybe_prefix not in prefix_assets: + prefix_assets[maybe_prefix] = list() + prefix_assets[maybe_prefix].append(ImageExtractor(module=self.name, file=file).expression) + continue + if file.startswith('TEMPLATE_'): + exp.append(TemplateExtractor(module=self.name, file=file).expression) + continue + # if file.startswith('OCR_'): + # exp.append(OcrExtractor(module=self.name, file=file, config=self.config).expression) + # continue + if self.is_base_image(file): + exp.append(ImageExtractor(module=self.name, file=file).expression) + continue + + exp.sort() + for _, v in prefix_assets.items(): + v.sort() + + logger.info('Module: %s(%s)' % (self.name, len(exp))) + exp = IMPORT_EXP + exp + for prefix_name in prefix_assets.keys(): + prefix_assets[prefix_name] = IMPORT_EXP + prefix_assets[prefix_name] + return exp, prefix_assets + + def write_to_file(self, file, text): + with open(file, 'w', newline='') as f: + for line in text: + f.write(line + '\n') + + def write(self): + folder = os.path.join(MODULE_FOLDER, self.name) + if not os.path.exists(folder): + os.mkdir(folder) + text, prefix_assets = self.expression + + self.write_to_file(os.path.join(folder, BUTTON_FILE), text) + for prefix, content in prefix_assets.items(): + self.write_to_file(os.path.join(folder, f"{prefix}_{BUTTON_FILE}"), content) + + def worker(module): me = ModuleExtractor(name=module) me.write()