#!/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
