#!/bin/bash

# agent-ops/bin/init-agent-ops.sh
# 프로젝트에 agent-ops 스캐폴드를 초기화하는 스크립트

set -e

SCRIPT_DIR=$(realpath "$(dirname "$0")")
SOURCE_DIR=$(realpath "$SCRIPT_DIR/..")
source "$SCRIPT_DIR/entry-files.sh"
source "$SCRIPT_DIR/ai-ignore.sh"

if [ -z "$1" ]; then
    echo "Usage: $0 <target_directory>"
    exit 1
fi

TARGET_DIR=$(realpath "$1")

create_project_agent_ops_dirs() {
    local agent_ops_dir="$1"

    mkdir -p "$agent_ops_dir/rules/project/domain"
    mkdir -p "$agent_ops_dir/rules/private"
    mkdir -p "$agent_ops_dir/skills/project"
}

copy_common_agent_ops() {
    local source_dir="$1"
    local target_agent_ops_dir="$2"

    mkdir -p "$target_agent_ops_dir/rules"
    mkdir -p "$target_agent_ops_dir/skills"

    cp "$source_dir/.version" "$target_agent_ops_dir/"
    rm -rf "$target_agent_ops_dir/bin"
    rm -rf "$target_agent_ops_dir/rules/common"
    rm -rf "$target_agent_ops_dir/skills/common"
    cp -r "$source_dir/bin" "$target_agent_ops_dir/"
    cp -r "$source_dir/rules/common" "$target_agent_ops_dir/rules/"
    cp -r "$source_dir/skills/common" "$target_agent_ops_dir/skills/"
}

ensure_common_rules_file() {
    local source_dir="$1"
    local target_agent_ops_dir="$2"
    local source_rules="$source_dir/rules/common/rules.md"
    local target_rules="$target_agent_ops_dir/rules/common/rules.md"

    if [ ! -f "$source_rules" ]; then
        echo "Error: common rules file not found: $source_rules" >&2
        exit 1
    fi

    mkdir -p "$(dirname "$target_rules")"
    cp "$source_rules" "$target_rules"
}

echo "Initializing agent-ops in: $TARGET_DIR"
echo "Source agent-ops: $SOURCE_DIR"

# 1. 대상 폴더 생성 (프로젝트 전용 폴더는 내용 복사 없이 폴더만 생성)
create_project_agent_ops_dirs "$TARGET_DIR/agent-ops"

# 2. 공통 요소 복사 (프로젝트 전용 설정은 제외)
copy_common_agent_ops "$SOURCE_DIR" "$TARGET_DIR/agent-ops"

# 3. 에이전트 진입 파일 생성 (common/rules.md 복사)
COMMON_RULES="$SOURCE_DIR/rules/common/rules.md"
apply_agent_ops_entry_files "$COMMON_RULES" "$TARGET_DIR"
ensure_common_rules_file "$SOURCE_DIR" "$TARGET_DIR/agent-ops"

# 4. AI ignore / permission 설정
ensure_agent_ops_ai_ignore_config "$TARGET_DIR"

# 5. .gitignore 설정
TOUCH_GITIGNORE="$TARGET_DIR/.gitignore"
touch "$TOUCH_GITIGNORE"
if ! grep -q "agent-ops/rules/private/" "$TOUCH_GITIGNORE"; then
    echo "" >> "$TOUCH_GITIGNORE"
    echo "# Agent-Ops Private Rules" >> "$TOUCH_GITIGNORE"
    echo "agent-ops/rules/private/" >> "$TOUCH_GITIGNORE"
fi

echo "Successfully initialized agent-ops in $TARGET_DIR"
echo "Note: agent-ops/rules/project and agent-ops/skills/project are initialized as empty."
