#!/bin/bash

# Скрипт для сборки и копирования бинарников
# Использование: ./build.sh <архитектура>
# Поддерживаемые архитектуры: amd64, riscv64

if [ -z "$1" ]; then
  echo "Ошибка: Необходимо указать архитектуру (например, amd64 или riscv64)."
  exit 1
fi

ARCH="$1"
TARGET_DIR="release/${ARCH}"
CONTAINER_NAME="e-monitor"

SUPPORTED_ARCHS=("amd64" "riscv64")
if [[ ! " ${SUPPORTED_ARCHS[@]} " =~ " ${ARCH} " ]]; then
  echo "Ошибка: Неизвестная архитектура $ARCH. Допустимые значения: ${SUPPORTED_ARCHS[*]}."
  exit 1
fi

# На случай, если контейнер с таким именем уже существует
docker stop e-monitor && docker rm e-monitor

echo "Building Docker image..."

docker build --network=host -t e-monitor . || {
  echo "Ошибка: Не удалось построить Docker-образ."
  exit 1
}

echo "Running Docker container..."

docker run --name "$CONTAINER_NAME" --dns 8.8.8.8 --network=host e-monitor:latest || {
  echo "Ошибка: Не удалось запустить Docker-контейнер."
  exit 1
}

echo "Creating target directory: $TARGET_DIR"
mkdir -p "$TARGET_DIR"

case "$ARCH" in
  amd64)
    echo "Copying binaries for architecture: amd64"
    docker cp "$CONTAINER_NAME:/usr/src/kii/target/x86_64-unknown-linux-gnu/release/noxis-cli" "$TARGET_DIR/" || {
      echo "Ошибка: Не удалось скопировать noxis-cli для amd64."
      docker stop "$CONTAINER_NAME" && docker rm "$CONTAINER_NAME"
      exit 1
    }
    docker cp "$CONTAINER_NAME:/usr/src/kii/target/x86_64-unknown-linux-gnu/release/noxis-rs" "$TARGET_DIR/" || {
      echo "Ошибка: Не удалось скопировать noxis-rs для amd64."
      docker stop "$CONTAINER_NAME" && docker rm "$CONTAINER_NAME"
      exit 1
    }
    ;;
  riscv64)
    echo "Copying binaries for architecture: riscv64"
    docker cp "$CONTAINER_NAME:/usr/src/kii/target/riscv64gc-unknown-linux-gnu/release/noxis-cli" "$TARGET_DIR/" || {
      echo "Ошибка: Не удалось скопировать noxis-cli для riscv64."
      docker stop "$CONTAINER_NAME" && docker rm "$CONTAINER_NAME"
      exit 1
    }
    docker cp "$CONTAINER_NAME:/usr/src/kii/target/riscv64gc-unknown-linux-gnu/release/noxis-rs" "$TARGET_DIR/" || {
      echo "Ошибка: Не удалось скопировать noxis-rs для riscv64."
      docker stop "$CONTAINER_NAME" && docker rm "$CONTAINER_NAME"
      exit 1
    }
    ;;
esac

echo "Stopping and removing Docker container..."
docker stop "$CONTAINER_NAME" && docker rm "$CONTAINER_NAME"

echo "Build and extraction completed successfully for architecture: $ARCH"
exit 0
