#! /usr/bin/env node
let fs = require('fs-extra')
let path = require('path')
let inquirer = require("inquirer")
let _ = require('lodash')
let execSync = require("child_process").execSync
inquirer.prompt([{
type: 'input',
name: 'version',
message: 'type package version'
}]).then(function(answers) {
updateAndPublishPkg(answers.version)
updateAndPublishRoot(answers.version)
})
let packages = ['nva-core', 'nva-server', 'nva-task']
function updateAndPublishRoot(version) {
let file = path.join(__dirname, '..', 'package.json')
let updated = fs.readJSONSync(file)
updated['version'] = version
updated['dependencies'] = _.mapValues(updated['dependencies'], function(d, k) {
if (packages.indexOf(k) > -1) {
return '^' + version
}
return d
})
fs.writeJSONSync(file, updated)
file = path.dirname(file)
try {
execSync(`cd ${file} && npm publish`, { stdio: 'inherit' })
} catch (err) {
console.log(err)
process.exit(1)
}
}
function updateAndPublishPkg(version) {
let files = packages.map(function(v) {
return path.join(__dirname, '..', 'packages', v, 'package.json')
})
let updated = files.map(function(v) {
return fs.readJSONSync(v)
}).map(function(v) {
v['version'] = version
v['dependencies'] = _.mapValues(v['dependencies'], function(d, k) {
if (packages.indexOf(k) > -1) {
return '^' + version
}
return d
})
return v
})
files.forEach(function(v, k) {
fs.writeJSONSync(v, updated[k])
v = path.dirname(v)
try {
execSync(`cd ${v} && npm publish`, { stdio: 'inherit' })
} catch (err) {
console.log(err)
process.exit(1)
}
})
}