#!/usr/bin/env python3 import subprocess import serial import sys print(sys.argv) # Extract port (first arg if it's not a command) commands = ["src", "lib", "ls", "reset", "follow", "db"] port = None if len(sys.argv) > 1 and sys.argv[1] not in commands: port = sys.argv[1] for cmd in sys.argv[1:]: print(cmd) match cmd: case "src": if port: subprocess.call(["mpremote", "connect", port, "fs", "cp", "-r", ".", ":" ], cwd="src") else: print("Error: Port required for 'src' command") case "lib": if port: subprocess.call(["mpremote", "connect", port, "fs", "cp", "-r", "lib", ":" ]) else: print("Error: Port required for 'lib' command") case "ls": if port: subprocess.call(["mpremote", "connect", port, "fs", "ls", ":" ]) else: print("Error: Port required for 'ls' command") case "reset": if port: with serial.Serial(port, baudrate=115200) as ser: ser.write(b'\x03\x03\x04') else: print("Error: Port required for 'reset' command") case "follow": if port: with serial.Serial(port, baudrate=115200) as ser: while True: if ser.in_waiting > 0: # Check if there is data in the buffer data = ser.readline().decode('utf-8').strip() # Read and decode the data print(data) else: print("Error: Port required for 'follow' command") case "db": if port: subprocess.call(["mpremote", "connect", port, "fs", "cp", "-r", "db", ":" ]) else: print("Error: Port required for 'db' command")