Add LED tool: device, CLI, web UI, build scripts, and tests
- device.py: device communication/handling - cli.py: CLI interface updates - web.py: web interface - build.py, build.sh, install.sh: build and install scripts - Pipfile: Python dependencies - lib/mpremote: mpremote library - test_*.py: import and LED tests - Updated .gitignore and README Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
76
build.py
Normal file
76
build.py
Normal file
@@ -0,0 +1,76 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Build script for creating binary executables from the CLI and web tools.
|
||||
"""
|
||||
|
||||
import subprocess
|
||||
import sys
|
||||
import os
|
||||
|
||||
def build_binary(script_name, output_name=None):
|
||||
"""Build a binary from a Python script using PyInstaller."""
|
||||
if output_name is None:
|
||||
output_name = script_name.replace('.py', '')
|
||||
|
||||
print(f"Building {script_name} -> {output_name}...")
|
||||
|
||||
cmd = [
|
||||
'pyinstaller',
|
||||
'--onefile', # Create a single executable file
|
||||
'--name', output_name,
|
||||
'--clean', # Clean PyInstaller cache
|
||||
script_name
|
||||
]
|
||||
|
||||
# Add hidden imports that might be needed
|
||||
hidden_imports = [
|
||||
'mpremote.transport_serial',
|
||||
'mpremote.transport',
|
||||
'mpremote.console',
|
||||
'mpremote.mp_errno',
|
||||
'serial',
|
||||
'serial.tools.list_ports',
|
||||
]
|
||||
|
||||
for imp in hidden_imports:
|
||||
cmd.extend(['--hidden-import', imp])
|
||||
|
||||
# Include the lib directory
|
||||
cmd.extend(['--add-data', 'lib:lib'])
|
||||
|
||||
result = subprocess.run(cmd, cwd=os.path.dirname(os.path.abspath(__file__)))
|
||||
|
||||
if result.returncode == 0:
|
||||
print(f"✓ Successfully built {output_name}")
|
||||
print(f" Binary location: dist/{output_name}")
|
||||
else:
|
||||
print(f"✗ Failed to build {output_name}")
|
||||
return False
|
||||
|
||||
return True
|
||||
|
||||
if __name__ == '__main__':
|
||||
print("Building binaries for led-tool...")
|
||||
print("=" * 60)
|
||||
|
||||
success = True
|
||||
|
||||
# Build CLI binary
|
||||
if build_binary('cli.py', 'led-cli'):
|
||||
print()
|
||||
else:
|
||||
success = False
|
||||
|
||||
# Optionally build web binary (commented out as it's less common)
|
||||
# if build_binary('web.py', 'led-tool-web'):
|
||||
# print()
|
||||
# else:
|
||||
# success = False
|
||||
|
||||
if success:
|
||||
print("=" * 60)
|
||||
print("Build complete! Binaries are in the 'dist' directory.")
|
||||
else:
|
||||
print("=" * 60)
|
||||
print("Build failed. Check errors above.")
|
||||
sys.exit(1)
|
||||
Reference in New Issue
Block a user