set -euxo pipefail
VERSION=${REF#"refs/tags/"}
DIST=`pwd`/target/dist
echo "Packaging imdl $VERSION for $TARGET..."
test -f Cargo.lock || cargo generate-lockfile
echo "Installing rust toolchain for $TARGET..."
rustup target add $TARGET
echo "Building imdl..."
case $OS in
ubuntu-latest)
sudo apt install help2man musl-tools
;;
esac
RUSTFLAGS="--deny warnings --codegen target-feature=+crt-static $TARGET_RUSTFLAGS" \
cargo build --bin imdl --target $TARGET --release
EXECUTABLE=target/$TARGET/release/imdl
if [[ $OS == windows-2016 ]]; then
EXECUTABLE=$EXECUTABLE.exe
fi
echo "Building debug build"
cargo build
DEBUG_EXECUTABLE=target/debug/imdl
if [[ $OS == windows-2016 ]]; then
DEBUG_EXECUTABLE=$DEBUG_EXECUTABLE.exe
fi
echo "Building completions..."
cargo run --package gen -- --bin $DEBUG_EXECUTABLE completion-scripts
echo "Generating readme..."
cargo run --package gen -- --bin $DEBUG_EXECUTABLE readme
echo "Copying static files..."
mkdir -p $DIST
cp -r \
$EXECUTABLE \
CONTRIBUTING \
Cargo.lock \
Cargo.toml \
LICENSE \
$DIST
echo "Copying generated files..."
cp -r \
target/gen/README.md \
target/gen/completions \
$DIST
if [[ $OS != windows-latest ]]; then
echo "Building man pages..."
cargo run --package gen -- --bin $DEBUG_EXECUTABLE man
cp -r target/gen/man $DIST/man
fi
cd $DIST
echo "Creating release archive..."
case $OS in
ubuntu-latest | macos-latest)
ARCHIVE=$DIST/imdl-$VERSION-$TARGET.tar.gz
tar czf $ARCHIVE *
echo "archive=$ARCHIVE" >> $GITHUB_OUTPUT
;;
windows-latest)
ARCHIVE=$DIST/imdl-$VERSION-$TARGET.zip
7z a $ARCHIVE *
echo "archive=`pwd -W`/imdl-$VERSION-$TARGET.zip" >> $GITHUB_OUTPUT
;;
esac