package script

import (
	"fmt"
	"os"
	"strings"
)

// ParseOutputParams 解析脚本输出参数文件（output.env）
// 支持标准的 key=value 格式，自动处理注释、空行、引号等
func ParseOutputParams(filePath string) (map[string]string, error) {
	data, err := os.ReadFile(filePath)
	if err != nil {
		return nil, err
	}

	params := make(map[string]string)
	lines := strings.Split(string(data), "\n")

	for lineNum, line := range lines {
		// 去除首尾空白
		line = strings.TrimSpace(line)

		// 跳过空行和注释
		if line == "" || strings.HasPrefix(line, "#") {
			continue
		}

		// 查找第一个 = 号
		parts := strings.SplitN(line, "=", 2)
		if len(parts) != 2 {
			// 格式不正确，记录警告但继续处理
			fmt.Printf("[WARN] output.env line %d: invalid format, skipping: %s\n", lineNum+1, line)
			continue
		}

		key := strings.TrimSpace(parts[0])
		value := strings.TrimSpace(parts[1])

		// 移除值两端的引号（支持单引号和双引号）
		if len(value) >= 2 {
			if (value[0] == '"' && value[len(value)-1] == '"') ||
				(value[0] == '\'' && value[len(value)-1] == '\'') {
				value = value[1 : len(value)-1]
			}
		}

		// 验证 key 不为空
		if key == "" {
			fmt.Printf("[WARN] output.env line %d: empty key, skipping\n", lineNum+1)
			continue
		}

		params[key] = value
	}

	return params, nil
}
