#!/usr/bin/env bash

set -euxo pipefail

echo "Packaging filepack $TAG for $TARGET..."

echo "Generating man page..."
cargo run man > filepack.1

test -f Cargo.lock || cargo generate-lockfile

echo "Installing rust toolchain for $TARGET..."
rustup target add $TARGET

echo "Building filepack..."
if [[ $TARGET == aarch64-unknown-linux-musl ]]; then
  export CC=aarch64-linux-gnu-gcc
fi
RUSTFLAGS="--deny warnings --codegen target-feature=+crt-static $TARGET_RUSTFLAGS" \
  cargo build --bin filepack --target $TARGET --release
export -n CC

EXECUTABLE=target/$TARGET/release/filepack

if [[ $OS == windows-latest ]]; then
  EXECUTABLE=$EXECUTABLE.exe
fi

echo "Copying release files..."
mkdir dist
cp -r \
  $EXECUTABLE \
  CONTRIBUTING \
  Cargo.lock \
  Cargo.toml \
  LICENSE \
  README.md \
  filepack.1 \
  metadata.yaml \
  dist

echo "Creating filepack manifest..."
cargo run create --deny distribution dist

echo "Creating release archive..."
cd dist
case $OS in
  ubuntu-latest | macos-latest)
    ARCHIVE=`pwd`/filepack-$TAG-$TARGET.tar.gz
    tar czf $ARCHIVE *
    echo "archive=$ARCHIVE" >> $GITHUB_OUTPUT
    ;;
  windows-latest)
    ARCHIVE=`pwd`/filepack-$TAG-$TARGET.zip
    7z a $ARCHIVE *
    echo "archive=`pwd -W`/filepack-$TAG-$TARGET.zip" >> $GITHUB_OUTPUT
    ;;
esac
