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