wasp: Simple shell commands (based on upysh)
This commit is contained in:
parent
f689c90498
commit
df11539c29
3 changed files with 77 additions and 2 deletions
|
@ -83,11 +83,14 @@ def handle_rtc(c):
|
|||
def handle_upload(c, fname):
|
||||
verbose = bool(c.logfile)
|
||||
|
||||
c.sendline('from shell import upload')
|
||||
c.expect('>>> ')
|
||||
|
||||
with open(fname) as f:
|
||||
if not verbose:
|
||||
print(f'Uploading {fname} ...', end='', flush=True)
|
||||
|
||||
c.sendline(f'upload("{fname}")')
|
||||
c.sendline(f'upload("{os.path.basename(fname)}")')
|
||||
c.expect('=== ')
|
||||
paste(c, f, verbose)
|
||||
c.send('\x04')
|
||||
|
|
|
@ -11,8 +11,9 @@ freeze('../..',
|
|||
'drivers/vibrator.py',
|
||||
'fonts.py',
|
||||
'icons.py',
|
||||
'manager.py',
|
||||
'logo.py',
|
||||
'manager.py',
|
||||
'shell.py',
|
||||
'widgets.py',
|
||||
),
|
||||
opt=3
|
||||
|
|
71
wasp/shell.py
Normal file
71
wasp/shell.py
Normal file
|
@ -0,0 +1,71 @@
|
|||
# SPDX-License-Identifier: MIT
|
||||
# Copyright (c) 2020 Daniel Thompson
|
||||
# Copyright (c) 2016 Paul Sokolovsky
|
||||
|
||||
import sys
|
||||
import os
|
||||
|
||||
class LS:
|
||||
def __repr__(self):
|
||||
self.__call__()
|
||||
return ""
|
||||
|
||||
def __call__(self, path="."):
|
||||
l = os.listdir(path)
|
||||
l.sort()
|
||||
for f in l:
|
||||
st = os.stat("%s/%s" % (path, f))
|
||||
if st[0] & 0x4000: # stat.S_IFDIR
|
||||
print(" <dir> %s" % f)
|
||||
else:
|
||||
print("% 8d %s" % (st[6], f))
|
||||
|
||||
class PWD:
|
||||
def __repr__(self):
|
||||
return os.getcwd()
|
||||
|
||||
def __call__(self):
|
||||
return self.__repr__()
|
||||
|
||||
class CLEAR:
|
||||
def __repr__(self):
|
||||
return "\x1b[2J\x1b[H"
|
||||
|
||||
def __call__(self):
|
||||
return self.__repr__()
|
||||
|
||||
|
||||
pwd = PWD()
|
||||
ls = LS()
|
||||
clear = CLEAR()
|
||||
|
||||
cd = os.chdir
|
||||
mkdir = os.mkdir
|
||||
mv = os.rename
|
||||
rm = os.remove
|
||||
rmdir = os.rmdir
|
||||
|
||||
def head(f, n=10):
|
||||
with open(f) as f:
|
||||
for i in range(n):
|
||||
l = f.readline()
|
||||
if not l: break
|
||||
print(l, end='')
|
||||
|
||||
def cat(f):
|
||||
head(f, 1 << 30)
|
||||
|
||||
def download(path):
|
||||
head(f, 1 << 30)
|
||||
|
||||
def upload(path):
|
||||
print("upload mode; Ctrl-C to cancel, Ctrl-D to finish")
|
||||
with open(path, "w") as f:
|
||||
while 1:
|
||||
print('=== ', end='')
|
||||
try:
|
||||
l = input()
|
||||
except EOFError:
|
||||
break
|
||||
f.write(l)
|
||||
f.write("\n")
|
Loading…
Reference in a new issue