#!/bin/bash
# shellcheck disable=SC2155


if declare -p _global_pragma_once_sign &>/dev/null; then
  return 0;
fi

readonly _global_pragma_once_sign=true
declare loaded_scripts_map="" # 关联数组不知道为什么有bug




pragma_once() {
  # 1. 转换为绝对路径以确保唯一性
  local abs_path
  abs_path=$(realpath "$1" 2>/dev/null || echo "$1")
  if [ ! -e "$abs_path" ]; then
    echo "错误: 文件 '$1' 不存在。"
    exit 1
  fi

  # 2. 生成 Key（只保留字母数字，其他转下划线）
  local key="key_$(echo "$abs_path" | sed 's/[^a-zA-Z0-9]/_/g')"

  # 3. 精确匹配检查
  # 我们在 map 的两端和 key 的两端都加上分隔符 |
  if [[ "$loaded_scripts_map" == *"|$key|"* ]]; then
    return 1  # 已经加载过了
  else
    # 第一次加载，存入时带上分隔符
    # 如果 map 为空，初始化为 |key|；如果不为空，追加 key|
    if [[ -z "$loaded_scripts_map" ]]; then
      loaded_scripts_map="|$key|"
    else
      loaded_scripts_map="${loaded_scripts_map}${key}|"
    fi
    return 0  # 允许加载
  fi
}
# 使用方式
# if pragma_once "${BASH_SOURCE[0]}"; then
# fi
