mirror of
https://github.com/nocodb/nocodb.git
synced 2026-05-01 04:26:51 +00:00
92 lines
2.3 KiB
JavaScript
92 lines
2.3 KiB
JavaScript
/*
|
|
Script to compare two package.json files and update the version with latest version from the other file
|
|
*/
|
|
|
|
const fs = require("fs");
|
|
const path = require("path");
|
|
const compare = require("compare-versions");
|
|
|
|
const compareVersions = compare.compareVersions;
|
|
const validate = compare.validate;
|
|
|
|
const packageJsons = [
|
|
{
|
|
path: path.join(__dirname, "../../packages/nocodb/package.json"),
|
|
},
|
|
{
|
|
path: path.join(__dirname, "../../../nocodb/packages/nocodb/package.json"),
|
|
},
|
|
{
|
|
path: path.join(__dirname, "../../packages/nc-gui/package.json"),
|
|
},
|
|
{
|
|
path: path.join(__dirname, "../../../nocodb/packages/nc-gui/package.json"),
|
|
},
|
|
{
|
|
path: path.join(__dirname, "../../packages/nocodb-sdk/package.json"),
|
|
},
|
|
{
|
|
path: path.join(
|
|
__dirname,
|
|
"../../../nocodb/packages/nocodb-sdk/package.json"
|
|
),
|
|
},
|
|
];
|
|
|
|
packageJsons.forEach((p) => {
|
|
if (!fs.existsSync(p.path)) {
|
|
console.error(`File not found: ${p.path}`);
|
|
process.exit(1);
|
|
}
|
|
|
|
p.json = JSON.parse(fs.readFileSync(p.path));
|
|
});
|
|
|
|
const workspacePackageVersions = {};
|
|
|
|
for (const pjson of packageJsons) {
|
|
scanVersions(pjson.json.dependencies);
|
|
scanVersions(pjson.json.devDependencies);
|
|
}
|
|
|
|
for (const pjson of packageJsons) {
|
|
updateVersions(pjson.json.dependencies);
|
|
updateVersions(pjson.json.devDependencies);
|
|
}
|
|
|
|
for (const pjson of packageJsons) {
|
|
fs.writeFileSync(pjson.path, `${JSON.stringify(pjson.json, null, 2)}\n`);
|
|
}
|
|
|
|
function scanVersions(dependencies) {
|
|
for (const key in dependencies) {
|
|
const version = dependencies[key].replace(/[\^\~]/, "");
|
|
if (validate(version)) {
|
|
if (workspacePackageVersions[key]) {
|
|
if (compareVersions(version, workspacePackageVersions[key]) === 1) {
|
|
workspacePackageVersions[key] = version;
|
|
}
|
|
} else {
|
|
workspacePackageVersions[key] = version;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
function updateVersions(dependencies) {
|
|
for (const key in dependencies) {
|
|
const version = dependencies[key].replace(/[\^\~]/, "");
|
|
if (validate(version)) {
|
|
if (compareVersions(version, workspacePackageVersions[key]) === -1) {
|
|
console.log(
|
|
`Updating ${key} from ${version} to ${workspacePackageVersions[key]}`
|
|
);
|
|
dependencies[key] = dependencies[key].replace(
|
|
version,
|
|
workspacePackageVersions[key]
|
|
);
|
|
}
|
|
}
|
|
}
|
|
}
|