diff options
Diffstat (limited to 'scripts/publish.sh')
| -rwxr-xr-x | scripts/publish.sh | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/scripts/publish.sh b/scripts/publish.sh new file mode 100755 index 0000000..d8cc77a --- /dev/null +++ b/scripts/publish.sh | |||
| @@ -0,0 +1,57 @@ | |||
| 1 | #!/usr/bin/env bash | ||
| 2 | # Build the release artifacts and publish them under web/bin with the names the | ||
| 3 | # download page expects: | ||
| 4 | # | ||
| 5 | # zagan-bet-client-<version>-<platform>-<arch>[.exe] | ||
| 6 | # zagan-bet-server-<version>-<platform>-<arch> | ||
| 7 | # | ||
| 8 | # Cargo always writes target/<triple>/release/<bin>, so the rename happens here | ||
| 9 | # after each build. The version comes from Cargo.toml. | ||
| 10 | # | ||
| 11 | # Usage: | ||
| 12 | # ./scripts/publish.sh | ||
| 13 | # DEST=/srv/www/bin ./scripts/publish.sh | ||
| 14 | set -euo pipefail | ||
| 15 | |||
| 16 | ROOT=$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd) | ||
| 17 | cd "$ROOT" | ||
| 18 | |||
| 19 | VERSION=$(awk -F'"' '/^version = / { print $2; exit }' Cargo.toml) | ||
| 20 | if [ -z "${VERSION:-}" ]; then | ||
| 21 | echo "could not read the version from Cargo.toml" >&2 | ||
| 22 | exit 1 | ||
| 23 | fi | ||
| 24 | |||
| 25 | DEST=${DEST:-web/bin} | ||
| 26 | |||
| 27 | publish() { | ||
| 28 | local triple=$1 kind=$2 platform=$3 arch=$4 | ||
| 29 | local ext="" | ||
| 30 | if [ "$kind" = client ] && [ "$platform" = windows ]; then | ||
| 31 | ext=".exe" | ||
| 32 | fi | ||
| 33 | |||
| 34 | local artifact="zagan-bet-$kind-$VERSION-$platform-$arch$ext" | ||
| 35 | local source="target/$triple/release/$kind$ext" | ||
| 36 | |||
| 37 | echo "==> $artifact" | ||
| 38 | if [ "$kind" = client ]; then | ||
| 39 | # rustls-only: never link the server's OpenSSL. | ||
| 40 | cargo build --release --quiet --bin client --no-default-features --target "$triple" | ||
| 41 | else | ||
| 42 | cargo build --release --quiet --bin server --target "$triple" | ||
| 43 | fi | ||
| 44 | |||
| 45 | mkdir -p "$DEST/$kind" | ||
| 46 | install -m 0755 "$source" "$DEST/$kind/$artifact" | ||
| 47 | echo " $DEST/$kind/$artifact ($(du -h "$DEST/$kind/$artifact" | cut -f1))" | ||
| 48 | } | ||
| 49 | |||
| 50 | publish x86_64-unknown-linux-gnu client linux x86_64 | ||
| 51 | publish i686-unknown-linux-gnu client linux i686 | ||
| 52 | publish x86_64-pc-windows-gnu client windows x86_64 | ||
| 53 | publish x86_64-unknown-linux-gnu server linux x86_64 | ||
| 54 | |||
| 55 | echo | ||
| 56 | echo "published $VERSION to $DEST" | ||
| 57 | echo "prune old versions from $DEST by hand; the page lists every file it finds." | ||
