#!/bin/bash
set -e

CONTAINER_ENGINE="podman"

while [[ "$#" -gt 0 ]]; do
    case $1 in
        --container-engine)
            if [[ -n "$2" ]]; then
                CONTAINER_ENGINE="$2"
                shift
            else
                echo "Ошибка: Для --container-engine не указано значение."
                exit 1
            fi
            ;;
        *)
            echo "Неизвестный параметр: $1"
            exit 1
            ;;
    esac
    shift 
done

if ! command -v "$CONTAINER_ENGINE" &> /dev/null; then
    echo "Ошибка: Команда '$CONTAINER_ENGINE' не найдена. Убедитесь, что она установлена."
    exit 1
fi

echo "Используется контейнерный движок: $CONTAINER_ENGINE"

if [[ -n "$HARBOR_BUNDLE_DIR" ]]; then
    harbor_prepare_path=$HARBOR_BUNDLE_DIR
else
    harbor_prepare_path="$( cd "$(dirname "$0")" ; pwd -P )"
fi
echo "Подготовительный каталог: ${harbor_prepare_path}"

rm -rf ${harbor_prepare_path}/input

mkdir -p ${harbor_prepare_path}/input
input_dir=${harbor_prepare_path}/input

if [[ ! "$1" =~ ^\-\- ]] && [ -f "$1" ]
then
    cp $1 $input_dir/harbor.yml
    shift
else
    if [ -f "${harbor_prepare_path}/harbor.yml" ];then
        cp ${harbor_prepare_path}/harbor.yml $input_dir/harbor.yml
    else
        echo "Не найден конфигурационный файл ${harbor_prepare_path}/harbor.yml"
        exit 1
    fi
fi

data_path=$(grep '^[^#]*data_volume:' $input_dir/harbor.yml | awk '{print $NF}')
echo "Каталог с данными: ${data_path}"

mkdir -p $data_path

previous_secretkey_path=/data/secretkey
previous_defaultalias_path=/data/defaultalias

if [ -f $previous_secretkey_path ]; then
    mkdir -p $data_path/secret/keys
    mv $previous_secretkey_path $data_path/secret/keys
fi
if [ -f $previous_defaultalias_path ]; then
    mkdir -p $data_path/secret/keys
    mv $previous_defaultalias_path $data_path/secret/keys
fi


secret_dir=${data_path}/secret
config_dir=$harbor_prepare_path/common/config

mkdir -p $secret_dir
mkdir -p $config_dir

$CONTAINER_ENGINE run --rm -v $input_dir:/input \
                    -v $data_path:/data \
                    -v $harbor_prepare_path:/compose_location \
                    -v $config_dir:/config \
                    -v /:/hostfs \
                    --privileged \
                    docker.io/goharbor/prepare:v2.9.3 prepare

echo "Удаление подготовительного каталога"
rm -rf ${harbor_prepare_path}/input

sed -i 's|goharbor|docker.io/goharbor|g' docker-compose.yml
sed -i 's|"syslog"|"journald"|g' docker-compose.yml
sed -i '/syslog-address:/d' docker-compose.yml

sudo chmod -R 777 ./data_harbor/database
sudo chmod -R 777 ./data_harbor/redis

mkdir ${data_path}/cert
sudo cp certs/* ${data_path}/cert/
sudo chown -R 10000:10000 ${data_path}/cert/
sudo chmod -R 777 ${data_path}/cert/

echo "Запуск Harbor"
#sudo podman-compose up -d
