diff options
-rwxr-xr-x | examples/mscp-python.py | 63 | ||||
-rw-r--r-- | mscp/mscp.py | 4 | ||||
-rw-r--r-- | src/pymscp.c | 2 |
3 files changed, 66 insertions, 3 deletions
diff --git a/examples/mscp-python.py b/examples/mscp-python.py new file mode 100755 index 0000000..d1cb856 --- /dev/null +++ b/examples/mscp-python.py @@ -0,0 +1,63 @@ +#!/usr/bin/env python3 +"""mscp.py + +An example python script running mscp +""" + +import argparse +import time +import sys + +from rich.progress import Progress + +import mscp + +def main(): + parser = argparse.ArgumentParser() + parser.add_argument("-f", "--from", dest = "fr", + metavar = "REMOTE", default = None, + help = "copy a file from this remote host") + parser.add_argument("-t", "--to", metavar = "REMOTE", default = None, + help = "copy a file to this remote host") + parser.add_argument("source", help = "path to source file to be copied") + parser.add_argument("destination", help = "path of copy destination") + + args = parser.parse_args() + + if args.fr and args.to: + print("-f and -t are exclusive", file = sys.stderr) + sys.exit(1) + elif args.fr: + d = mscp.REMOTE2LOCAL + remote = args.fr + elif args.to: + d = mscp.LOCAL2REMOTE + remote = args.to + else: + print("-f or -t must be specified", file = sys.stderr) + sys.exit(1) + + + m = mscp.mscp(remote, d) + m.connect() + m.add_src_path(args.source) + m.set_dst_path(args.destination) + m.scan() + m.start() + + total, done, finished = m.stats() + with Progress() as progress: + + task = progress.add_task("[green]Copying...", total = total) + + while not progress.finished: + total, done, finished = m.stats() + progress.update(task, completed = done) + time.sleep(0.5) + + m.join() + m.cleanup() + + +if __name__ == "__main__": + main() diff --git a/mscp/mscp.py b/mscp/mscp.py index 30b2ce3..05ff8b0 100644 --- a/mscp/mscp.py +++ b/mscp/mscp.py @@ -37,7 +37,7 @@ SEVERITY_DEBUG = pymscp.SEVERITY_DEBUG STATE_INIT = 0 STATE_CONNECTED = 1 -STATE_SCANNED = 2 +STATE_SCANNED = 2 STATE_RUNNING = 3 STATE_STOPPED = 4 STATE_JOINED = 5 @@ -47,7 +47,7 @@ STATE_RELEASED = 7 _state_str = { STATE_INIT: "init", STATE_CONNECTED: "connected", - STATE_SCANNED: "scanned", + STATE_SCANNED: "scanned", STATE_RUNNING: "running", STATE_STOPPED: "stopped", STATE_JOINED: "joined", diff --git a/src/pymscp.c b/src/pymscp.c index 0d92df4..c36c662 100644 --- a/src/pymscp.c +++ b/src/pymscp.c @@ -379,7 +379,7 @@ static PyObject *wrap_mscp_get_stats(PyObject *self, PyObject *args, PyObject *k mscp_get_stats(m, &s); - return Py_BuildValue("KKd", s.total, s.done, s.finished); + return Py_BuildValue("KKO", s.total, s.done, PyBool_FromLong(s.finished)); } static PyObject *wrap_mscp_cleanup(PyObject *self, PyObject *args, PyObject *kw) |