#!/usr/bin/env node

/**
 * AI代码检查用户信息管理脚本
 * 
 * 功能：获取当前日期和用户名称，保存到me.config.json供AI检查步骤使用
 * 
 * @author AI助手
 * @version 1.0.0
 * @since 2026-01-13
 */

const fs = require('fs');
const path = require('path');
const readline = require('readline');

const configPath = path.join(__dirname, '..', 'me.config.json');

// 获取当前日期（YYYY-MM-DD格式）
function getCurrentDate() {
  const now = new Date();
  const year = now.getFullYear();
  const month = String(now.getMonth() + 1).padStart(2, '0');
  const day = String(now.getDate()).padStart(2, '0');
  return `${year}-${month}-${day}`;
}

// 读取现有配置
function readConfig() {
  try {
    if (!fs.existsSync(configPath)) {
      return null;
    }
    return JSON.parse(fs.readFileSync(configPath, 'utf-8'));
  } catch (error) {
    console.error('❌ 读取配置文件失败:', error);
    return null;
  }
}

// 保存配置
function saveConfig(config) {
  try {
    fs.writeFileSync(configPath, JSON.stringify(config, null, 2), 'utf-8');
    console.log('✅ 配置已保存');
  } catch (error) {
    console.error('❌ 保存配置失败:', error);
    throw error;
  }
}

// 提示用户输入名称
function promptUserName() {
  const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout
  });

  return new Promise((resolve) => {
    rl.question('👤 请输入您的名称或昵称: ', (name) => {
      rl.close();
      resolve(name.trim());
    });
  });
}

// 主执行逻辑
async function main() {
  console.log('🚀 AI代码检查 - 用户信息设置');
  
  const currentDate = getCurrentDate();
  console.log('📅 当前日期:', currentDate);

  const existingConfig = readConfig();

  // 如果配置存在且日期匹配，直接返回
  if (existingConfig && existingConfig.date === currentDate) {
    console.log('✅ 配置已是最新，当前用户:', existingConfig.name);
    return existingConfig;
  }

  // 需要更新配置
  console.log('🔄 需要更新用户信息...');
  const userName = await promptUserName();

  if (!userName) {
    console.error('❌ 用户名称不能为空');
    process.exit(1);
  }

  const config = {
    date: currentDate,
    name: userName
  };

  saveConfig(config);
  console.log('🎉 设置完成!', config);
  
  return config;
}

// 导出函数供其他脚本使用
function getConfig() {
  return readConfig();
}

// 如果直接运行此脚本
if (require.main === module) {
  main().catch((error) => {
    console.error('❌ 脚本执行失败:', error);
    process.exit(1);
  });
}

module.exports = { getConfig, getCurrentDate };