Compare commits
1 Commits
Author | SHA1 | Date |
---|---|---|
rra | 2d06ed6a94 | 2 years ago |
2 changed files with 50 additions and 3 deletions
@ -0,0 +1,47 @@ |
|||
from subprocess import PIPE |
|||
|
|||
from trio import TASK_STATUS_IGNORED, CancelScope, open_process, run_process |
|||
|
|||
from dropship.logger import log |
|||
|
|||
|
|||
async def croc_send(fpath, parent, task_status=TASK_STATUS_IGNORED): |
|||
"""Run `croc send` on a local file path.""" |
|||
with CancelScope() as scope: |
|||
command = ["croc", "send", fpath] |
|||
process = await open_process(command, stderr=PIPE) |
|||
|
|||
#output = await process.stderr.receive_some() |
|||
#this is some nasty hacky shit |
|||
async for i in process.stderr: |
|||
if b"Code is:" in i: |
|||
output = i |
|||
break |
|||
code = output.decode().split()[-1] |
|||
task_status.started((code, scope,)) |
|||
log.info(f"croc_send: now waiting for other side ({code})") |
|||
await process.wait() |
|||
log.info(f"croc_send: succesfully transfered ({code})") |
|||
|
|||
if scope.cancel_called: |
|||
process.terminate() |
|||
log.info(f"croc_send: succesfully terminated process ({code})") |
|||
|
|||
parent._remove_pending_transfer(code) |
|||
|
|||
|
|||
async def croc_recv(code, parent, task_status=TASK_STATUS_IGNORED): |
|||
"""Run `croc receive` on a pending transfer code.""" |
|||
with CancelScope() as scope: |
|||
command = ["croc", "--yes", code] |
|||
process = await open_process(command, stderr=PIPE) |
|||
task_status.started((scope,)) |
|||
log.info(f"croc_recv: now starting receiving process ({code})") |
|||
await process.wait() |
|||
log.info(f"croc_recv: succesfully received ({code})") |
|||
|
|||
if scope.cancel_called: |
|||
process.terminate() |
|||
log.info(f"croc_recv: succesfully terminated process ({code})") |
|||
|
|||
parent._remove_pending_transfer(code) |
Loading…
Reference in new issue