#!/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 " 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" } ensure_gitignore_entry() { local gitignore_file="$1" local entry="$2" if ! grep -qxF "$entry" "$gitignore_file"; then printf '%s\n' "$entry" >> "$gitignore_file" fi } ensure_agent_test_local() { local target_dir="$1" local local_rules="$target_dir/agent-test/local/rules.md" local today today="$(date +%F)" mkdir -p "$(dirname "$local_rules")" mkdir -p "$target_dir/agent-test/runs" if [ ! -f "$local_rules" ]; then cat > "$local_rules" <> "$TOUCH_GITIGNORE" echo "# Agent-Ops Private Rules" >> "$TOUCH_GITIGNORE" echo "agent-ops/rules/private/" >> "$TOUCH_GITIGNORE" fi if ! grep -qxF "# Agent-Test Local Environment" "$TOUCH_GITIGNORE"; then echo "" >> "$TOUCH_GITIGNORE" echo "# Agent-Test Local Environment" >> "$TOUCH_GITIGNORE" fi ensure_gitignore_entry "$TOUCH_GITIGNORE" "agent-test/local/" ensure_gitignore_entry "$TOUCH_GITIGNORE" "agent-test/runs/" # 6. local 테스트 환경 생성 ensure_agent_test_local "$TARGET_DIR" echo "Successfully initialized agent-ops in $TARGET_DIR" echo "Note: agent-ops/rules/project and agent-ops/skills/project are initialized as empty." echo "Note: agent-test/local/rules.md is initialized and ignored by git."