stylus/tools/update-versions.js
2018-07-20 21:16:41 -05:00

63 lines
1.5 KiB
JavaScript

#!/usr/bin/env node
'use strict';
const fs = require('fs-extra');
const path = require('path');
const root = path.join(__dirname, '..');
const manifest = require(`${root}/manifest.json`);
const pkg = require(`${root}/package.json`);
const good = '\x1b[32m%s\x1b[0m';
const warn = '\x1b[36m%s\x1b[0m';
function exit(err) {
if (err) {
console.error(err);
}
process.exit(err ? 1 : 0);
}
function verToArray(v) {
return v.replace('v', '').split('.').map(Number);
}
// Simple compare function since we can't require semverCompare here
function compare(v1, v2) {
if (v1 === v2) {
return 0;
}
const [maj1, min1, pat1] = verToArray(v1);
const [maj2, min2, pat2] = verToArray(v2);
const majMatch = maj1 === maj2;
const minMatch = min1 === min2;
if (
maj1 > maj2 ||
majMatch && min1 > min2 ||
majMatch && minMatch && pat1 > pat2
) {
return 1;
}
return -1;
}
async function updateVersions() {
const result = compare(manifest.version, pkg.version);
let file, obj;
if (result === 0) {
return console.log(good, 'Manifest & package versions match');
} else if (result > 0) {
pkg.version = manifest.version;
file = 'package.json';
obj = pkg;
} else {
manifest.version = pkg.version;
file = 'manifest.json';
obj = manifest;
}
console.log(warn, `Updating ${file} to ${pkg.version}`);
return fs.writeFile(`${root}/${file}`, JSON.stringify(obj, null, ' ') + '\n');
}
updateVersions().catch(err => exit(err));