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

const wikiDir = path.join(__dirname, '../../../../docs/aiagent/wiki');

function walkDir(dir, callback) {
    fs.readdirSync(dir).forEach(f => {
        const dirPath = path.join(dir, f);
        const isDirectory = fs.statSync(dirPath).isDirectory();
        if (isDirectory) {
            walkDir(dirPath, callback);
        } else {
            callback(dirPath);
        }
    });
}

if (!fs.existsSync(wikiDir)) {
    console.error(`Wiki directory does not exist: ${wikiDir}`);
    process.exit(1);
}

console.log('Scanning wiki directory for Markdown files...');
walkDir(wikiDir, filePath => {
    if (!filePath.endsWith('.md')) return;
    
    // index.md や log.md などフロントマターが無い予約ファイルはスキップ
    const basename = path.basename(filePath);
    if (basename === 'index.md' || basename === 'log.md' || basename === 'AGENTS.md' || basename === 'CLAUDE.md') {
        return;
    }

    let content = fs.readFileSync(filePath, 'utf8');
    
    // YAMLフロントマターのマッチ
    const yamlRegex = /^---([\s\S]*?)---/;
    const match = content.match(yamlRegex);
    if (!match) return;

    let frontmatter = match[1];
    let originalFrontmatter = frontmatter;

    // title: ... の行を置換
    // すでにダブルクォートで囲まれていないかチェック
    const titleRegex = /^title:\s*(.*)$/m;
    const titleMatch = frontmatter.match(titleRegex);
    
    if (titleMatch) {
        let titleVal = titleMatch[1].trim();
        // すでにダブルクォーテーションで囲まれているかチェック
        if (!titleVal.startsWith('"') || !titleVal.endsWith('"')) {
            // ダブルクォーテーションをトリムして、再度囲む
            if (titleVal.startsWith('"')) titleVal = titleVal.substring(1);
            if (titleVal.endsWith('"')) titleVal = titleVal.substring(0, titleVal.length - 1);
            
            // 値の中のダブルクォーテーションをエスケープ
            titleVal = titleVal.replace(/"/g, '\\"');
            
            frontmatter = frontmatter.replace(titleRegex, `title: "${titleVal}"`);
        }
    }

    if (frontmatter !== originalFrontmatter) {
        content = content.replace(yamlRegex, `---${frontmatter}---`);
        fs.writeFileSync(filePath, content, 'utf8');
        console.log(`Updated title in: ${path.relative(path.join(__dirname, '..'), filePath)}`);
    }
});

console.log('Title fix completed.');

