add version command
diff --git a/bin/nmo-cli.js b/bin/nmo-cli.js
index 7ef2880..c1638be 100755
--- a/bin/nmo-cli.js
+++ b/bin/nmo-cli.js
@@ -9,7 +9,7 @@
var parsed = nopt({
'json': [Boolean],
'force': [Boolean]
-}, {}, process.argv, 2);
+}, {'v': 'v'}, process.argv, 2);
var cmd = parsed.argv.remain.shift();
diff --git a/doc/api/nmo-v.md b/doc/api/nmo-v.md
new file mode 100644
index 0000000..83a75b0
--- /dev/null
+++ b/doc/api/nmo-v.md
@@ -0,0 +1,11 @@
+nmo-v(3) -- get the current nmo version
+=======================================
+
+## SYNOPSIS
+
+ nmo.commands.v()
+
+
+## DESCRIPTION
+
+Returns the current version of nmo.
diff --git a/doc/cli/nmo-v.md b/doc/cli/nmo-v.md
new file mode 100644
index 0000000..afd5605
--- /dev/null
+++ b/doc/cli/nmo-v.md
@@ -0,0 +1,12 @@
+nmo-v(1) -- get the current nmo version
+=======================================
+
+## SYNOPSIS
+
+ nmo v
+ nmo -v
+
+
+## DESCRIPTION
+
+Prints the current node and nmo version.
diff --git a/src/help.js b/src/help.js
index 9af9101..c135190 100644
--- a/src/help.js
+++ b/src/help.js
@@ -16,7 +16,8 @@
Get help for a command:
nmo help <command>
-`;
+
+nmo@${nmo.version}`;
}
export default help;
diff --git a/src/nmo.js b/src/nmo.js
index 8fcc130..874cec9 100644
--- a/src/nmo.js
+++ b/src/nmo.js
@@ -1,11 +1,13 @@
import * as config from './config.js';
import Promise from 'bluebird';
+import pkg from '../package.json'
const commands = [
'isonline',
'help',
'config',
- 'cluster'
+ 'cluster',
+ 'v'
];
const nmo = {
@@ -30,6 +32,8 @@
}
});
+nmo.version = pkg.version;
+
const commandFuncs = {}, cliFuncs = {};
nmo.load = function load (opts) {
return new Promise((resolve, reject) => {
diff --git a/src/v.js b/src/v.js
new file mode 100644
index 0000000..a0ca7be
--- /dev/null
+++ b/src/v.js
@@ -0,0 +1,22 @@
+import nmo from './nmo.js';
+
+
+export default version;
+function version () {
+ return new Promise((resolve, reject) => {
+ resolve({
+ nmo: nmo.version,
+ node: process.version
+ });
+ });
+}
+
+export const cli = versionCli;
+function versionCli () {
+ return new Promise((resolve, reject) => {
+ console.log(`nmo version: ${nmo.version}`);
+ console.log(`node version: ${process.version}`);
+ resolve();
+ });
+};
+
diff --git a/test/nemo.js b/test/nemo.js
index f8f25ff..fe22b17 100644
--- a/test/nemo.js
+++ b/test/nemo.js
@@ -43,4 +43,12 @@
done();
});
});
+
+ lab.test('has a version property', (done) => {
+ nmo.config = null;
+ nmo.load({nmoconf: __dirname + '/fixtures/randomini'}).then(() => {
+ assert.ok(nmo.version);
+ done();
+ });
+ });
});
diff --git a/test/v.js b/test/v.js
new file mode 100644
index 0000000..9f7b70a
--- /dev/null
+++ b/test/v.js
@@ -0,0 +1,42 @@
+import assert from 'assert';
+
+import Lab from 'lab';
+export const lab = Lab.script();
+
+import * as version from '../src/v.js';
+import versionApi from '../src/v.js';
+
+import pkg from '../package.json'
+
+const oldConsole = console.log;
+
+lab.experiment('api: version', () => {
+
+ lab.test('gets the current nmo version', (done) => {
+ versionApi().then((res) => {
+ assert.equal(pkg.version, res.nmo);
+ done();
+ });
+ });
+});
+
+lab.experiment('cli: version', () => {
+ lab.afterEach((done) => {
+ console.log = oldConsole;
+ done();
+ });
+
+ lab.test('logs the current version', (done) => {
+ console.log = (...args) => {
+ if (/nmo/.test(args[0])) {
+ assert.ok(new RegExp(pkg.version, 'ig').test(args[0]));
+ }
+ };
+
+ version
+ .cli()
+ .then(() => {
+ done();
+ });
+ });
+});