Files
topgrade/build-all.sh
2025-08-11 10:24:18 +02:00

96 lines
2.7 KiB
Bash
Executable File

#!/usr/bin/env bash
build_function() {
rustup update
cargo install cross
echo -n "Building x86_64-linux-gnu"
cross build --release --target x86_64-unknown-linux-gnu
echo -n "Building x86_64-linux-musl"
cross build --release --target x86_64-unknown-linux-musl
echo -n "Building x86_64-freebsd"
cross build --release --target x86_64-unknown-freebsd
echo -n "Building aarch64-linux-gnu"
cross build --release --target aarch64-unknown-linux-gnu
echo -n "Building aarch64-linux-musl"
cross build --release --target aarch64-unknown-linux-musl
echo -n "Building x86_64-windows-gnu"
cross build --release --target x86_64-pc-windows-gnu
}
package_function() {
cd build || exit 1
mkdir x86_64-unknown-linux-gnu/
mkdir x86_64-unknown-linux-musl/
mkdir x86_64-unknown-freebsd/
mkdir x86_64-pc-windows-gnu/
mkdir aarch64-unknown-linux-gnu/
mkdir aarch64-unknown-linux-musl/
cp ../target/x86_64-unknown-linux-gnu/release/topgrade x86_64-unknown-linux-gnu/
cp ../target/x86_64-unknown-linux-musl/release/topgrade x86_64-unknown-linux-musl/
cp ../target/x86_64-unknown-freebsd/release/topgrade x86_64-unknown-freebsd/topgrade
cp ../target/aarch64-unknown-linux-gnu/release/topgrade aarch64-unknown-linux-gnu/topgrade
cp ../target/aarch64-unknown-linux-musl/release/topgrade aarch64-unknown-linux-musl/topgrade
cp ../target/x86_64-pc-windows-gnu/release/topgrade.exe x86_64-pc-windows-gnu/topgrade.exe
cd x86_64-unknown-linux-gnu/ || exit 1
tar -czf "../topgrade-${ans}-x86_64-linux-gnu.tar.gz" topgrade
cd ..
cd x86_64-unknown-linux-musl/ || exit 1
tar -czf "../topgrade-${ans}-x86_64-linux-musl.tar.gz" topgrade
cd ..
cd x86_64-unknown-freebsd/ || exit 1
tar -czf "../topgrade-${ans}-x86_64-freebsd.tar.gz" topgrade
cd ..
cd aarch64-unknown-linux-gnu/ || exit 1
tar -czf "../topgrade-${ans}-aarch64-linux-gnu.tar.gz" topgrade
cd ..
cd aarch64-unknown-linux-musl/ || exit 1
tar -czf "../topgrade-${ans}-aarch64-linux-musl.tar.gz" topgrade
cd ..
cd x86_64-pc-windows-gnu/ || exit 1
zip -q "../topgrade-${ans}-x86_64-windows.zip" topgrade.exe
cd ..
cd ..
}
print_checksums() {
cd build/ || exit 1
sha256sum topgrade-"${ans}"-*
cd ../
}
while true; do
echo "You should always have a look on scripts you download from the internet."
# shellcheck disable=SC2162
read -p "Do you still want to proceed? (y/n) " yn
echo -n "Input version number: "
# shellcheck disable=SC2162
read ans
mkdir build
case $yn in
y ) build_function
package_function
print_checksums
break;;
n ) echo exiting...;
exit;;
* ) echo invalid response;;
esac
done