diff options
| author | Daniel Thompson <daniel@redfelineninja.org.uk> | 2020-02-19 19:33:35 (GMT) |
|---|---|---|
| committer | Daniel Thompson <daniel@redfelineninja.org.uk> | 2020-02-19 19:57:08 (GMT) |
| commit | df11539c29745f5592259b13320c834c3cb920fa (patch) | |
| tree | 7882cc2899b3ad868b40b46e4422bacc4dece53a /wasp/shell.py | |
| parent | f689c90498b58a5198bb56a2d3d5211db9670283 (diff) | |
wasp: Simple shell commands (based on upysh)
Diffstat (limited to 'wasp/shell.py')
| -rw-r--r-- | wasp/shell.py | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/wasp/shell.py b/wasp/shell.py new file mode 100644 index 0000000..5ad9623 --- /dev/null +++ b/wasp/shell.py @@ -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") |
