fix: make script help paths lightweight (#1937)
## Summary Consolidate the script help/startup fixes so standalone helper commands can show usage without requiring runtime-only dependencies or generating files. ## Details Several helper scripts imported optional packages, evaluated newer annotations, or started generation before users could inspect CLI usage. On a fresh checkout, this made common help paths fail on missing packages such as `cairosvg`, `Pillow`, `freetype-py`, `fontTools`, `pyphen`, `pyserial`, or on Python 3.9 annotation evaluation. A few generators also treated `--help` as a normal output argument and wrote files instead of printing usage. This change keeps runtime dependencies on the code paths that need them, handles lightweight help/list commands first, and adds explicit `--help` handling for generator scripts that previously started work. ## Validation - `python3 <script> --help` across tracked Python scripts, excluding `scripts/patch_jpegdec.py` because it is a PlatformIO pre-build hook rather than a standalone CLI - `python3 scripts/convert_icon.py` still exits with usage for missing required arguments - `python3 lib/EpdFont/scripts/fontconvert_sdcard.py --list-presets` - `python3 -m py_compile` for the changed scripts
This commit is contained in:
+12
-6
@@ -1,18 +1,21 @@
|
||||
import sys
|
||||
import os
|
||||
from PIL import Image
|
||||
import cairosvg
|
||||
import io
|
||||
import sys
|
||||
|
||||
threshold = 128
|
||||
USAGE = 'Usage: python scripts/convert_icon.py input.png|input.svg output_name width height'
|
||||
|
||||
def svg_to_png_bytes(svg_path, width, height):
|
||||
import cairosvg
|
||||
|
||||
with open(svg_path, 'rb') as f:
|
||||
svg_data = f.read()
|
||||
png_bytes = cairosvg.svg2png(bytestring=svg_data, output_width=width, output_height=height)
|
||||
return png_bytes
|
||||
|
||||
def load_image(path, width, height):
|
||||
from PIL import Image
|
||||
|
||||
ext = os.path.splitext(path)[1].lower()
|
||||
if ext == '.svg':
|
||||
png_bytes = svg_to_png_bytes(path, width, height)
|
||||
@@ -58,8 +61,11 @@ def image_to_c_array(img, array_name):
|
||||
return c
|
||||
|
||||
def main():
|
||||
if len(sys.argv) < 5:
|
||||
print('Usage: python convert_image.py input.png output_name width height')
|
||||
if any(arg in ('-h', '--help') for arg in sys.argv[1:]):
|
||||
print(USAGE)
|
||||
sys.exit(0)
|
||||
if len(sys.argv) != 5:
|
||||
print(USAGE)
|
||||
sys.exit(1)
|
||||
input_path, output_name, width, height = sys.argv[1:5]
|
||||
array_name = output_name.capitalize() + 'Icon'
|
||||
@@ -77,4 +83,4 @@ def main():
|
||||
print(f'Wrote {output_path}')
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
main()
|
||||
|
||||
Reference in New Issue
Block a user