#!/usr/bin/env node var fs = require('fs'); var path = require('path'); var semver = require('semver'); var request = require('request'); var exec = require('child_process').exec; var url = 'https://raw.github.com/rogerwang/node-webkit/master/README.md'; var pkgpath = path.join(__dirname, '..', 'package.json'); // Download README file var readme = request(url); var data = ''; readme.on('data', function(buf) { data += buf; }); readme.on('end', function() { var version = semver.clean(/\[v([^\s]+)\s+release notes\]/i.exec(data)[1]); // Version invalid so quit if (!semver.valid(version)) { console.error('INVALID VERSION: ' + version); process.exit(); } var pkg = require(pkgpath); var currentversion = pkg.version; if (semver.gt(version, pkg.version)) { // Write new version to package.json pkg.version = version; fs.writeFileSync(pkgpath, JSON.stringify(pkg, null, 2)); console.log('PUBLISHING NEW VERSION ' + version); var cmd = [ 'git add package.json', 'git commit -m "v' + version + '"', 'git push origin master', 'npm publish', ].join(' && '); exec(cmd, { cwd: path.resolve(__dirname, '..') }, function(err, stdout, stderr) { if (err || stderr) { // Revert package.json change and try again next time console.error('FAILED'); console.error(err || stderr); pkg.version = currentversion; fs.writeFileSync(pkgpath, JSON.stringify(pkg, null, 2)); // TODO: Should revert commit here as well } else { console.log('SUCCESS'); } }); } });