Demo for query storing

Change-Id: I947bcac841992c3f6cfd01ab337c265b0d01cb70
diff --git a/node_modules/coa/lib/arg.js b/node_modules/coa/lib/arg.js
new file mode 100644
index 0000000..e17b83e
--- /dev/null
+++ b/node_modules/coa/lib/arg.js
@@ -0,0 +1,58 @@
+'use strict';
+
+const
+    CoaParam = require('./coaparam'),
+    chalk = require('chalk');
+
+/**
+ * Argument
+ *
+ * Unnamed entity. From command line arguments passed as list of unnamed values.
+ *
+ * @class Arg
+ * @extends CoaParam
+ */
+module.exports = class Arg extends CoaParam {
+    /**
+     * @constructs
+     * @param {COA.Cmd} cmd - parent command
+     */
+    constructor(cmd) {
+        super(cmd);
+
+        this._cmd._args.push(this);
+    }
+
+    _saveVal(args, val) {
+        this._val && (val = this._val(val));
+
+        const name = this._name;
+        this._arr
+            ? (args[name] || (args[name] = [])).push(val)
+            : (args[name] = val);
+
+        return val;
+    }
+
+    _parse(arg, args) {
+        return this._saveVal(args, arg);
+    }
+
+    _checkParsed(opts, args) {
+        return !args.hasOwnProperty(this._name);
+    }
+
+    _usage() {
+        const res = [];
+
+        res.push(chalk.magentaBright(this._name.toUpperCase()), ' : ', this._title);
+
+        this._req && res.push(' ', chalk.redBright('(required)'));
+
+        return res.join('');
+    }
+
+    _requiredText() {
+        return `Missing required argument:\n  ${this._usage()}`;
+    }
+};