code: packages,unify,check (2 files)

This commit is contained in:
Richard Ward
2025-12-31 12:27:43 +00:00
parent fca1440adc
commit d676b3ec04
2 changed files with 90 additions and 0 deletions

22
check_packages.js Normal file
View File

@@ -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(', '));
}
});

68
unify_packages.js Normal file
View File

@@ -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!');