From d676b3ec04925323085cb73af7571fe06cec651d Mon Sep 17 00:00:00 2001 From: Richard Ward Date: Wed, 31 Dec 2025 12:27:43 +0000 Subject: [PATCH] code: packages,unify,check (2 files) --- check_packages.js | 22 +++++++++++++++ unify_packages.js | 68 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 90 insertions(+) create mode 100644 check_packages.js create mode 100644 unify_packages.js diff --git a/check_packages.js b/check_packages.js new file mode 100644 index 000000000..6e450092f --- /dev/null +++ b/check_packages.js @@ -0,0 +1,22 @@ +const fs = require('fs'); + +const packages = fs.readdirSync('packages').filter(f => fs.statSync('packages/' + f).isDirectory()); + +const issues = []; + +packages.forEach(pkg => { + const metaPath = 'packages/' + pkg + '/seed/metadata.json'; + if (!fs.existsSync(metaPath)) return; + + const data = JSON.parse(fs.readFileSync(metaPath, 'utf8')); + const missing = []; + + if (!data.icon) missing.push('icon'); + if (!data.devDependencies || data.devDependencies.length === 0) missing.push('devDependencies'); + if (!data.tests) missing.push('tests'); + if (!data.exports || typeof data.exports !== 'object' || Array.isArray(data.exports)) missing.push('exports(object)'); + + if (missing.length > 0) { + console.log(pkg.padEnd(25), 'Missing:', missing.join(', ')); + } +}); diff --git a/unify_packages.js b/unify_packages.js new file mode 100644 index 000000000..d2d612d63 --- /dev/null +++ b/unify_packages.js @@ -0,0 +1,68 @@ +const fs = require('fs'); + +const packages = fs.readdirSync('packages').filter(f => fs.statSync('packages/' + f).isDirectory()); + +const fixes = { + 'css_designer': { icon: 'static_content/icon.svg' }, + 'dbal_demo': { icon: 'static_content/icon.svg' }, + 'github_tools': { + icon: 'static_content/icon.svg', + devDependencies: ['lua_test'], + tests: { + scripts: ['tests/metadata.test.lua'], + cases: ['tests/metadata.cases.json'] + } + }, + 'lua_test': { + devDependencies: [], + tests: { + scripts: ['tests/metadata.test.lua'], + cases: ['tests/metadata.cases.json'] + } + }, + 'media_center': { + icon: 'static_content/icon.svg', + devDependencies: ['lua_test'] + }, + 'quick_guide': { + tests: { + scripts: ['tests/metadata.test.lua'], + cases: ['tests/metadata.cases.json'] + } + }, + 'screenshot_analyzer': { + icon: 'static_content/icon.svg' + }, + 'shared': { + icon: 'static_content/icon.svg', + devDependencies: [], + tests: { + scripts: ['tests/metadata.test.lua'], + cases: ['tests/metadata.cases.json'] + } + } +}; + +Object.keys(fixes).forEach(pkg => { + const metaPath = 'packages/' + pkg + '/seed/metadata.json'; + if (!fs.existsSync(metaPath)) { + console.log('SKIP:', pkg, '- metadata not found'); + return; + } + + const data = JSON.parse(fs.readFileSync(metaPath, 'utf8')); + + // Add missing fields + Object.keys(fixes[pkg]).forEach(field => { + if (!data[field]) { + data[field] = fixes[pkg][field]; + console.log('ADD:', pkg, '-', field); + } + }); + + // Write back + fs.writeFileSync(metaPath, JSON.stringify(data, null, 2) + '\n'); + console.log('✓', pkg); +}); + +console.log('\nDone!');