import { hapTasks } from '@ohos/hvigor-ohos-plugin';
import fs from 'fs';
import path from 'path';

export function generatePushyBuildTime(str?: string) {
    return {
        pluginId: 'PushyBuildTimePlugin',
        apply(pluginContext) {
            pluginContext.registerTask({
                name: 'pushy_build_time',
                run: (taskContext) => {
                    const metaFilePath = path.resolve(__dirname, 'src/main/resources/rawfile/meta.json');
                    const dirPath = path.dirname(metaFilePath);
                    if (!fs.existsSync(dirPath)) {
                        fs.mkdirSync(dirPath, { recursive: true });
                    }
                    const moduleJsonPath = path.resolve(__dirname, '../AppScope/app.json5');
                    let versionName = '';
                    if (fs.existsSync(moduleJsonPath)) {
                        const moduleContent = fs.readFileSync(moduleJsonPath, 'utf-8');
                        const versionMatch = moduleContent.match(/"versionName":\s*"([^"]+)"/);
                        if (versionMatch && versionMatch[1]) {
                            versionName = versionMatch[1];
                        }
                    }
                    const buildTime = new Date().toISOString();
                    const metaContent = { 
                        pushy_build_time: buildTime,
                        versionName: versionName 
                    };
                    fs.writeFileSync(metaFilePath, JSON.stringify(metaContent, null, 4));
                    console.log(`Build time written to ${metaFilePath}`);
                },
                dependencies: [],
                postDependencies: ['default@BuildJS']
            })
        }
    }
}

export default {
    system: hapTasks,  /* Built-in plugin of Hvigor. It cannot be modified. */
    plugins:[generatePushyBuildTime()]         /* Custom plugin to extend the functionality of Hvigor. */
}