diff --git a/bin/lib/cli.js b/bin/lib/cli.js index 26d1b490b..839bbd5c0 100644 --- a/bin/lib/cli.js +++ b/bin/lib/cli.js @@ -1,10 +1,10 @@ const program = require('commander') -const packageJson = require('../../package.json') const loadInit = require('./init') const loadStart = require('./start') +const { spawnSync } = require('child_process') module.exports = function startCli (server) { - program.version(packageJson.version) + program.version(getVersion()) loadInit(program) loadStart(program, server) @@ -12,3 +12,16 @@ module.exports = function startCli (server) { program.parse(process.argv) if (program.args.length === 0) program.help() } + +function getVersion () { + try { + // Obtain version from git + const options = { cwd: __dirname, encoding: 'utf8' } + const { stdout } = spawnSync('git', ['describe', '--tags'], options) + return stdout.trim() + } catch (e) { + // Obtain version from package.json + const { version } = require('../package.json') + return version + } +} diff --git a/bin/lib/start.js b/bin/lib/start.js index 6f9b69e91..9d8674f4b 100644 --- a/bin/lib/start.js +++ b/bin/lib/start.js @@ -3,7 +3,6 @@ const options = require('./options') const fs = require('fs') const extend = require('extend') -const packageJson = require('../../package.json') const colors = require('colors/safe') module.exports = function (program, server) { @@ -24,7 +23,7 @@ module.exports = function (program, server) { start.option('-v, --verbose', 'Print the logs to console') start.action((opts) => { - let argv = extend({}, opts) + let argv = extend({}, opts, { version: program.version() }) fs.readFile(process.cwd() + '/config.json', (err, file) => { // No file exists, not a problem @@ -131,7 +130,7 @@ function bin (argv, server) { return 1 } app.listen(argv.port, function () { - console.log('Solid server (solid v' + packageJson.version + ') running on \u001b[4mhttps://localhost:' + argv.port + '/\u001b[0m') + console.log(`Solid server (${argv.version}) running on \u001b[4mhttps://localhost:${argv.port}/\u001b[0m`) console.log('Press +c to stop') }) }