#!/usr/bin/env python3 import sys from pathlib import Path sys.path.insert(0, str(Path(__file__).resolve().parent)) from deploy_remote import connect, sudo, zip_deploy # noqa: E402 payload = zip_deploy() client = connect() sftp = client.open_sftp() with sftp.file("/tmp/woyla-deploy.zip", "wb") as f: f.write(payload) sftp.close() print("zip uploaded", len(payload), flush=True) remote = r"""export DEBIAN_FRONTEND=noninteractive export NEEDRESTART_MODE=a mkdir -p /etc/needrestart/conf.d printf '%s\n' "\$nrconf{restart} = 'a';" > /etc/needrestart/conf.d/woyla.conf || true rm -rf /tmp/woyla-deploy mkdir -p /tmp/woyla-deploy python3 -c "import zipfile; zipfile.ZipFile('/tmp/woyla-deploy.zip').extractall('/tmp/woyla-deploy'); print('extracted')" chmod +x /tmp/woyla-deploy/bootstrap.sh set -a . /root/woyla.env set +a bash /tmp/woyla-deploy/bootstrap.sh """ sftp = client.open_sftp() with sftp.file("/tmp/woyla-run.sh", "w") as f: f.write(remote.replace("\r\n", "\n")) sftp.close() code, out = sudo(client, "chmod +x /tmp/woyla-run.sh && bash /tmp/woyla-run.sh", timeout=700) sys.stdout.buffer.write((out + f"\nEXIT {code}\n").encode("utf-8", errors="replace")) sys.stdout.buffer.flush() client.close() sys.exit(code)