From a4959300ea588db55d33dfac6410b863f908e5f4 Mon Sep 17 00:00:00 2001 From: ed Date: Thu, 19 Nov 2020 01:23:24 +0100 Subject: [PATCH] add sfx downloader/repacker --- README.md | 6 ++- scripts/copyparty-repack.sh | 101 ++++++++++++++++++++++++++++++++++++ 2 files changed, 105 insertions(+), 2 deletions(-) create mode 100755 scripts/copyparty-repack.sh diff --git a/README.md b/README.md index e2fff148..a69e3575 100644 --- a/README.md +++ b/README.md @@ -87,16 +87,18 @@ the features you can opt to drop are for the `re`pack to work, first run one of the sfx'es once to unpack it +**note:** you can also just download and run [scripts/copyparty-repack.sh](scripts/copyparty-repack.sh) -- this will grab the latest copyparty release from github and do a `no-ogv no-cm` repack; works on linux/macos (and windows with msys2 or WSL) + # install on android install [Termux](https://termux.com/) (see [ocv.me/termux](https://ocv.me/termux/)) and then copy-paste this into Termux (long-tap) all at once: ```sh -apt update && apt -y full-upgrade && termux-setup-storage && apt -y install curl && cd && curl -L https://github.com/9001/copyparty/raw/master/scripts/copyparty-android.sh > copyparty-android.sh && chmod 755 copyparty-android.sh && ./copyparty-android.sh -h +apt update && apt -y full-upgrade && termux-setup-storage && apt -y install python && python -m ensurepip && python -m pip install -U copyparty echo $? ``` -after the initial setup (and restarting bash), you can launch copyparty at any time by running "copyparty" in Termux +after the initial setup, you can launch copyparty at any time by running `copyparty` anywhere in Termux # dev env setup diff --git a/scripts/copyparty-repack.sh b/scripts/copyparty-repack.sh new file mode 100755 index 00000000..93a578b3 --- /dev/null +++ b/scripts/copyparty-repack.sh @@ -0,0 +1,101 @@ +#!/bin/bash +set -e + +# -- download latest copyparty (source.tgz and sfx), +# -- build minimal sfx versions, +# -- create a .tar.gz bundle +# +# convenient for deploying updates to inconvenient locations +# (and those are usually linux so bash is good inaff) +# (but that said this even has macos support) +# +# bundle will look like: +# -rwxr-xr-x 0 ed ed 183808 Nov 19 00:43 copyparty +# -rw-r--r-- 0 ed ed 491318 Nov 19 00:40 copyparty-extras/copyparty-0.5.4.tar.gz +# -rwxr-xr-x 0 ed ed 30254 Nov 17 23:58 copyparty-extras/copyparty-fuse.py +# -rwxr-xr-x 0 ed ed 481403 Nov 19 00:40 copyparty-extras/sfx-full/copyparty-sfx.sh +# -rwxr-xr-x 0 ed ed 506043 Nov 19 00:40 copyparty-extras/sfx-full/copyparty-sfx.py +# -rwxr-xr-x 0 ed ed 167699 Nov 19 00:43 copyparty-extras/sfx-lite/copyparty-sfx.sh +# -rwxr-xr-x 0 ed ed 183808 Nov 19 00:43 copyparty-extras/sfx-lite/copyparty-sfx.py + + +td="$(mktemp -d)" +od="$(pwd)" +cd "$td" +pwd + + +# debug: if cache exists, use that instead of bothering github +cache="$od/.copyparty-repack.cache" +[ -e "$cache" ] && + tar -xvf "$cache" || +{ + # get download links from github + curl https://api.github.com/repos/9001/copyparty/releases/latest | + ( + # prefer jq if available + jq -r '.assets[]|select(.name|test("-sfx|tar.gz")).browser_download_url' || + + # fallback to awk (sorry) + awk -F\" '/"browser_download_url".*(\.tar\.gz|-sfx\.)/ {print$4}' + ) | + tee /dev/stderr | + sed 's/\r$//' | + while IFS= read -r url; do + # download src and sfx + curl -LO "$url" + done + # debug: create cache + #tar -czvf "$cache" * +} + + +# move src into copyparty-extras/, +# move sfx into copyparty-extras/sfx-full/ +mkdir -p copyparty-extras/sfx-{full,lite} +mv copyparty-sfx.* copyparty-extras/sfx-full/ +mv copyparty-*.tar.gz copyparty-extras/ + + +# unpack the source code +( cd copyparty-extras/ +tar -xvf *.tar.gz +) + + +# fix permissions +chmod 755 \ + copyparty-extras/sfx-full/* \ + copyparty-extras/copyparty-*/{scripts,bin}/* + + +# extract and repack the sfx with less features enabled +( cd copyparty-extras/sfx-full/ +./copyparty-sfx.py -h +cd ../copyparty-*/ +./scripts/make-sfx.sh re no-ogv no-cm +) + + +# put new sfx into copyparty-extras/sfx-lite/, +# fuse client into copyparty-extras/, +# copy lite-sfx.py to ./copyparty, +# delete extracted source code +( cd copyparty-extras/ +mv copyparty-*/dist/* sfx-lite/ +mv copyparty-*/bin/copyparty-fuse.py . +cp -pv sfx-lite/copyparty-sfx.py ../copyparty +rm -rf copyparty-{0..9}*.*.*{0..9} +) + + +# create the bundle +fn=copyparty-$(date +%Y-%m%d-%H%M%S).tgz +tar -czvf "$od/$fn" * +cd "$od" +rm -rf "$td" + + +echo +echo "done, here's your bundle:" +ls -al "$fn"