summaryrefslogtreecommitdiff
path: root/src/resources/generate-img.py
diff options
context:
space:
mode:
authorJean-François Milants <jf@codingfield.com>2022-08-22 21:24:25 +0200
committerJF <JF002@users.noreply.github.com>2022-09-11 14:44:36 +0200
commitcfc055c978d98906a8090d092d4416cbfbd2bbce (patch)
tree1b92135e6717c8a56f57b2cc1474fe0d3f93ca5c /src/resources/generate-img.py
parentf53e75063b6ef618d65a1f287df52ba01c3351f5 (diff)
Package resources + a metadata file into a single .zip file.
Diffstat (limited to 'src/resources/generate-img.py')
-rwxr-xr-xsrc/resources/generate-img.py56
1 files changed, 56 insertions, 0 deletions
diff --git a/src/resources/generate-img.py b/src/resources/generate-img.py
new file mode 100755
index 00000000..cdbfc030
--- /dev/null
+++ b/src/resources/generate-img.py
@@ -0,0 +1,56 @@
+#!/usr/bin/env python
+
+import io
+import sys
+import json
+import shutil
+import typing
+import os.path
+import argparse
+import subprocess
+
+def gen_lvconv_line(lv_img_conv: str, dest: str, color_format: str, output_format: str, binary_format: str, sources: str):
+ args = [lv_img_conv, sources, '--force', '--output-file', dest, '--color-format', color_format, '--output-format', output_format, '--binary-format', binary_format]
+
+ return args
+
+def main():
+ ap = argparse.ArgumentParser(description='auto generate LVGL font files from fonts')
+ ap.add_argument('config', type=str, help='config file to use')
+ ap.add_argument('-i', '--image', type=str, action='append', help='Choose specific images to generate (default: all)', default=[])
+ ap.add_argument('--lv-img-conv', type=str, help='Path to "lv_img_conf" executable', default="lv_img_conv")
+ args = ap.parse_args()
+
+ if not shutil.which(args.lv_img_conv):
+ sys.exit(f"Missing lv_img_conv. Make sure it's findable (in PATH) or specify it manually")
+ if not os.path.exists(args.config):
+ sys.exit(f'Error: the config file {args.config} does not exist.')
+ if not os.access(args.config, os.R_OK):
+ sys.exit(f'Error: the config file {args.config} is not accessible (permissions?).')
+ with open(args.config, 'r') as fd:
+ data = json.load(fd)
+
+ images_to_run = set(data.keys())
+
+ if args.image:
+ enabled_images = set()
+ for image in args.image:
+ enabled_images.add(image[:-2] if image.endswith('.c') else image)
+ d = enabled_images.difference(images_to_run)
+ if d:
+ print(f'Warning: requested image{"s" if len(d)>1 else ""} missing: {" ".join(d)}')
+ images_to_run = images_to_run.intersection(enabled_images)
+
+ for name in images_to_run:
+ image = data[name]
+ if not os.path.exists(image['sources']):
+ image['sources'] = os.path.join(os.path.dirname(sys.argv[0]), image['sources'])
+ extension = 'bin'
+ image.pop('target_path')
+ line = gen_lvconv_line(args.lv_img_conv, f'{name}.{extension}', **image)
+ subprocess.check_call(line)
+
+
+
+if __name__ == '__main__':
+ main()