#!/usr/bin/env bash
set -eo pipefail

echo "---> Rust Buildpack"

# 1. GET ARGS
layers_dir=$1
plan_path=$3

# shellcheck source=/dev/null
. generate-project.sh "${layers_dir}"

# 2. Install build deps
# shellcheck source=/dev/null
. generate-layers.sh "${layers_dir}"
generate_deps_layer build-deps
generate_deps_layer run-deps

# 3. install rust
generate_stack_layer rust "${plan_path}" false

# shellcheck source=/dev/null
. init-stack

echo "-----> Building application using Cargo"
if [ -s .cargo/config ]; then
  cp -f .cargo/config /opt/drycc/rust/config
fi
rm -rf target/
cargo build --release
mkdir -p target/release
find /opt/drycc/rust/target/release -maxdepth 1 -type f -executable -exec cp -a -t target/release {} \;

generate-launch.sh "${layers_dir}"