#!/bin/bash

# 获取脚本所在目录
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"

# 生成map.json文件的路径
MAP_JSON="$SCRIPT_DIR/map.json"

# 创建一个函数递归扫描目录并生成JSON结构
scan_directory() {
    local dir="$1"
    local json=""

    # 遍历目录中的所有文件和文件夹
    for item in "$dir"/*; do
        # 忽略脚本文件和map.json文件
        if [[ "$item" == "$0" || "$item" == "$MAP_JSON" ]]; then
            continue
        fi
        
        if [[ -d "$item" ]]; then
            # 如果是文件夹，递归扫描
            local children
            children=$(scan_directory "$item")
            json="$json{\"name\":\"$(basename "$item")\",\"type\":\"directory\",\"children\":$children},"
        elif [[ -f "$item" ]]; then
            # 如果是文件，直接添加到JSON中
            json="$json{\"name\":\"$(basename "$item")\",\"type\":\"file\"},"
        fi
    done

    # 去掉末尾多余的逗号
    json="${json%,}"

    # 如果有文件和文件夹，返回JSON格式的结构
    if [[ -n "$json" ]]; then
        echo "[$json]"
    else
        echo "[]"
    fi
}

# 执行扫描并生成map.json
map_data=$(scan_directory "$SCRIPT_DIR")
echo "$map_data" > "$MAP_JSON"

echo "map.json已生成在目录：$SCRIPT_DIR"
