corifeus-builder
Version:
🏗️ Corifeus Builder
118 lines (95 loc) • 3.5 kB
JavaScript
const fs = require('fs').promises;
const path = require('path');
const git = require('../../git');
module.exports = async (pkgFile) => {
const result = await Promise.all([
git.commit,
git.repo,
fs.readFile(pkgFile)
]);
const commit = result[0];
const repo = result[1];
const pkg = JSON.parse(result[2].toString());
let version = pkg.version.split('.');
const date = new Date();
version[0] = date.getFullYear()
const previousVersionYear = parseInt(version[0])
const previousVersionDate = parseInt(version[1])
const currentMonth = date.getMonth() + 1
if (currentMonth <= 6) {
version[1] = 4
} else {
version[1] = 10
}
const size = 3;
if (version.length < size) {
const extend = Array(size - version.length).fill('0');
version = version.concat(extend);
}
version = version.map((element) => {
return !Number.isInteger(parseInt(element)) ? '100' : element;
})
//console.log('previousVersionDate', previousVersionDate, 'version[1]', version[1])
if (previousVersionDate === parseInt(version[1]) && previousVersionYear === parseInt(version[0])) {
version[2] = parseInt(version[2]) + 1
} else {
version[2] = 100
}
if (parseInt(version[2]) < 100) {
version[2] = 100
}
/*
const subVersion = version[2].split('-');
subVersion[0] = date.getDate()
if (subVersion[1] === undefined) {
subVersion[1] = 0;
}
subVersion[1] = parseInt(subVersion[1]) + 1;
const originalVersion = pkg.version.split('.')
const originalSubVersion = version[2].split('-');
if (`${originalVersion[0]}.${originalVersion[1]}.${originalSubVersion[0]}` !== `${version[0]}.${version[1]}.${subVersion[0]}`) {
subVersion[1] = 0
}
version[2] = subVersion.join('-');
*/
pkg.version = version.join('.');
if (!pkg.hasOwnProperty('corifeus')) {
pkg.corifeus = {};
}
const prefix = pkg.corifeus.prefix || '';
const postfix = pkg.corifeus.postfix || '';
pkg.name = `${prefix}${repo}${postfix}`;
// pkg.engines = { "node" : `>=${process.versions.node}` };
pkg.engines = {"node": `>=12.13.0`};
pkg.homepage = `https://corifeus.com/${repo === 'corifeus' ? 'matrix' : repo }`;
pkg.corifeus.nodejs = process.version
pkg.corifeus.reponame = repo;
const newPkgFile = JSON.stringify(pkg, null, 4);
await fs.writeFile(pkgFile, newPkgFile)
// Auto-ensure .npmignore protects sensitive paths (always, whether they exist or not)
const cwd = path.dirname(pkgFile)
const npmignorePath = path.join(cwd, '.npmignore')
const protected = [
'secure/',
'agents/',
'.claude/',
'.vscode/',
'.codex/',
'CLAUDE.md',
'AGENTS.md',
]
let npmignore = ''
try {
npmignore = await fs.readFile(npmignorePath, 'utf-8')
} catch (e) {}
const normalize = (s) => s.trim().replace(/^\//, '').replace(/\/$/, '')
const lines = npmignore.split('\n').map(normalize)
const missing = protected.filter(entry => !lines.includes(normalize(entry)))
if (missing.length > 0) {
const addition = missing.join('\n')
npmignore = npmignore ? npmignore.trimEnd() + '\n' + addition + '\n' : addition + '\n'
await fs.writeFile(npmignorePath, npmignore)
console.log(`Auto-added to .npmignore: ${missing.join(', ')}`)
}
return pkg;
}