#!/usr/bin/env ruby

require 'yaml'

def check_yaml_file(file_path)
  puts "🔍 检查YAML文件: #{file_path}"
  
  begin
    yaml = YAML.load_file(file_path)
    puts "✅ YAML语法正确"
    
    # 结构验证
    jobs = yaml.keys.reject { |k| k.start_with?('.') }
    variables = yaml.keys.select { |k| k.start_with?('.') }
    
    puts "📊 结构分析:"
    puts "  Job数量: #{jobs.length}"
    puts "  Jobs: #{jobs.join(', ')}"
    puts "  变量定义: #{variables.join(', ')}"
    
    # GitLab CI验证
    required_fields = ['stage', 'script', 'rules']
    jobs.each do |job_name|
      job = yaml[job_name]
      missing = required_fields - job.keys
      status = missing.empty? ? '✅' : '❌'
      puts "  #{job_name}: #{status} #{missing.empty? ? '完整' : '缺少 ' + missing.join(', ')}"
    end
    
    puts "🎉 所有检查通过!"
    
  rescue Psych::SyntaxError => e
    puts "❌ YAML语法错误:"
    puts "  行号: #{e.line}"
    puts "  列号: #{e.column}"
    puts "  错误: #{e.problem}"
    exit 1
  rescue => e
    puts "❌ 检查失败: #{e.message}"
    exit 1
  end
end

# 主程序
if ARGV.empty?
  check_yaml_file('ci/feishu-notify.yml')
else
  ARGV.each { |file| check_yaml_file(file) }
end