#!/usr/bin/env bash
set -e

workspace_root="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
temp_dir="$(mktemp -d)"
trap 'rm -rf "$temp_dir"' EXIT

mkdir -p "$temp_dir/bin"
cat > "$temp_dir/bin/cargo" <<'EOF'
#!/usr/bin/env bash
printf '%s\n' "$@" > "$CARGO_ARGS_FILE"
EOF
chmod +x "$temp_dir/bin/cargo"
cat > "$temp_dir/bin/rustup" <<'EOF'
#!/usr/bin/env bash
exit 0
EOF
chmod +x "$temp_dir/bin/rustup"

case "$(uname -m)" in
  arm64|aarch64)
    arch="aarch64"
    ;;
  x86_64|amd64)
    arch="x86_64"
    ;;
  *)
    echo "Unsupported architecture: $(uname -m)" >&2
    exit 1
    ;;
esac
target="$arch-unknown-linux-musl"
for compiler in "$target-gcc" "$target-g++" "$target-strip"; do
  cat > "$temp_dir/bin/$compiler" <<'EOF'
#!/usr/bin/env bash
exit 0
EOF
  chmod +x "$temp_dir/bin/$compiler"
done

PATH="$temp_dir/bin:$PATH" \
  CARGO_ARGS_FILE="$temp_dir/cargo-args" \
  CARGO_TARGET_DIR="$temp_dir/target" \
  "$workspace_root/script/linux/bundle" \
  --check-only \
  --artifact galaxyctrl \
  --arch "$arch" \
  --features smoke_feature

grep -qx -- '--features' "$temp_dir/cargo-args"
grep -qx -- 'galaxy' "$temp_dir/cargo-args"
grep -qx -- 'galaxy-oss' "$temp_dir/cargo-args"
grep -qx -- 'release_bundle,standalone,galaxy_control_cli,smoke_feature' "$temp_dir/cargo-args"

profile_dir="$temp_dir/target/$target/release-cli"
mkdir -p "$profile_dir"
cat > "$profile_dir/galaxy-oss" <<'EOF'
#!/usr/bin/env bash
printf '%s\n' "$@" > "$FORWARDED_ARGS_FILE"
EOF
chmod +x "$profile_dir/galaxy-oss"

PATH="$temp_dir/bin:$PATH" \
  CARGO_TARGET_DIR="$temp_dir/target" \
  NO_LICENSES=1 \
  SKIP_SETTINGS_SCHEMA=1 \
  "$workspace_root/script/linux/bundle" \
  --skip-build \
  --artifact galaxyctrl \
  --arch "$arch"

grep -Fq 'exec -a "$0"' "$profile_dir/bundle/linux/galaxyctrl"

FORWARDED_ARGS_FILE="$temp_dir/forwarded-args" \
  "$profile_dir/bundle/linux/galaxyctrl" tab create --instance "inst 123"

cat > "$temp_dir/expected-forwarded-args" <<'EOF'
--galaxyctrl
tab
create
--instance
inst 123
EOF
cmp "$temp_dir/expected-forwarded-args" "$temp_dir/forwarded-args"
