#!/bin/bash srcdir=$(pwd) BUILD_DIR=${BUILD_DIR:-$srcdir/build} CACHE_DIR=${CACHE_DIR:-$srcdir/build_cache} echo "$srcdir => $BUILD_DIR" die () { echo "$@" >&2 exit 1 } findcmd () { command -v $1 || die "missing command: $1" } findcmd cargo findcmd python findcmd rsync mkdir -p $BUILD_DIR && cd $BUILD_DIR mkdir -p $CACHE_DIR rsync -rv --include-from=$srcdir/.rsync-include $srcdir/ $BUILD_DIR/ # rant if [[ -f $CACHE_DIR/rant.tar.zst ]]; then pv -bprt -N "unpacking: rant" $CACHE_DIR/rant.tar.zst | tar -x --zstd -f - else mkdir -p opt/rant cargo install rant --version 4.0.0-alpha.33 --root $BUILD_DIR/opt/rant --features cli tar -c -f - --zstd opt/rant | pv -bprt -N "caching: rant" > $CACHE_DIR/rant.tar.zst fi python $srcdir/render-wordlists.py -i $srcdir/ext/imsky/wordlists -o rant $BUILD_DIR/app/rant/wordlist.rant # python venv if [[ -f $CACHE_DIR/pyvenv.tar.zst ]]; then pv -bprt -N "unpacking: pyvenv" $CACHE_DIR/pyvenv.tar.zst | tar -x --zstd -f - source pyvenv/bin/activate else python -m venv pyvenv source pyvenv/bin/activate pip install -r app/requirements.txt pip install -r app/requirements-build-desktop.txt pip install -r app/requirements-desktop.txt [[ $(uname -s) == "Linux" ]] && pip install -r app/requirements-desktop-linux.txt #[[ $(uname -s) == "Darwin" ]] && pip install -r app/requirements-desktop-macos.txt tar -c -f - --zstd pyvenv | pv -bprt -N "caching: pyvenv" > $CACHE_DIR/pyvenv.tar.zst fi pyinstaller seagull.spec deactivate cd $srcdir cp -fv $BUILD_DIR/dist/seagull $srcdir rm -fr $BUILD_DIR du -sh seagull echo "You should be able to run ./seagull now"