Skip to content

Commit b1c2268

Browse files
committed
cli: Enable starting REPL.
1 parent 4404331 commit b1c2268

File tree

1 file changed

+16
-9
lines changed

1 file changed

+16
-9
lines changed

pybricksdev/cli/__init__.py

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
from pybricksdev import __name__ as MODULE_NAME
1818
from pybricksdev import __version__ as MODULE_VERSION
19+
from pybricksdev.ble.pybricks import UserProgramId
1920

2021
PROG_NAME = (
2122
f"{path.basename(sys.executable)} -m {MODULE_NAME}"
@@ -97,7 +98,7 @@ def add_parser(self, subparsers: argparse._SubParsersAction):
9798
parser.add_argument(
9899
"file",
99100
metavar="<file>",
100-
help="path to a MicroPython script or `-` for stdin",
101+
help="path to a MicroPython script, `-` for stdin, or `repl` for interactive prompt",
101102
type=str,
102103
)
103104
parser.add_argument(
@@ -176,15 +177,21 @@ def is_pybricks_usb(dev):
176177
# Connect to the address and run the script
177178
await hub.connect()
178179
try:
179-
if args.file == "-":
180-
with NamedTemporaryFile(suffix=".py", delete=False) as temp:
181-
temp.write(sys.stdin.buffer.read())
182-
args.file = temp.name
183-
184-
if args.start:
185-
await hub.run(args.file, args.wait)
180+
# Handle builtin programs.
181+
if args.file == "repl":
182+
await hub.run(UserProgramId.REPL)
186183
else:
187-
await hub.download(args.file)
184+
# If using stdin, save to temporary file first.
185+
if args.file == "-":
186+
with NamedTemporaryFile(suffix=".py", delete=False) as temp:
187+
temp.write(sys.stdin.buffer.read())
188+
args.file = temp.name
189+
190+
# Download program and optionally start it.
191+
if args.start:
192+
await hub.run(args.file, args.wait)
193+
else:
194+
await hub.download(args.file)
188195
finally:
189196
await hub.disconnect()
190197

0 commit comments

Comments
 (0)