#!/bin/sh


help()
{
    printf "Usage: %s: [-d 2|3] [-f deterministim|non-deterministic|simd]\n" $0
}

while getopts :d:f: name
do
    case $name in
    d)  
        dimension="$OPTARG";;
    f)  
        feature="$OPTARG";;
    ?)  help ; exit 1;;
    esac
done

if [ -z "$dimension" ]; then
    help; exit 2;
fi
if [ -z "$feature" ]; then
    help; exit 3;
fi

if [ "$feature" = "non-deterministic" ]; then
    feature_postfix=""
else
    feature_postfix="-${feature}"
fi

rust_source_directory="../builds/rapier${dimension}d${feature_postfix}"

if [ ! -d "$rust_source_directory" ]; then
    echo "Directory $rust_source_directory does not exist";
    echo "You may want to generate rust projects first.";
    help
    exit 4;
fi

# Working dir in wasm-pack is the project root so we need that "../../"

if [ "$feature" = "simd" ]; then
    export additional_rustflags='-C target-feature=+simd128'
else
    export additional_rustflags=''
fi

# The generated variants share the typescript Cargo workspace target directory.
# Clean it because SIMD and non-SIMD builds use different RUSTFLAGS.
cargo clean --manifest-path ../Cargo.toml

RUSTFLAGS="${additional_rustflags}" wasm-pack \
    --verbose \
    build \
    --target web \
    --out-dir "../../rapier-compat/builds/${dimension}d${feature_postfix}/wasm-build" \
    "$rust_source_directory"
