From b6df78ae903731b7536a317e2e5fa0b8e5c3c11e Mon Sep 17 00:00:00 2001
From: cgeek <cem.moreau@gmail.com>
Date: Sat, 7 Jan 2017 18:58:50 +0100
Subject: [PATCH] [enh] The module API now allows to add CLI options

---
 app/cli.js | 6 ++++++
 index.js   | 3 +++
 2 files changed, 9 insertions(+)

diff --git a/app/cli.js b/app/cli.js
index 6bd864af6..39d3c0659 100644
--- a/app/cli.js
+++ b/app/cli.js
@@ -768,6 +768,7 @@ function service(callback, nologs) {
         cbArgs.length--;
         cbArgs[cbArgs.length++] = server;
         cbArgs[cbArgs.length++] = server.conf;
+        cbArgs[cbArgs.length++] = program;
         onService && onService(server);
         return callback.apply(that, cbArgs);
       } catch (e) {
@@ -796,6 +797,11 @@ module.exports.addCommand = (command, requirements, promiseCallback) => {
     .action(subCommand(service(promiseCallback)));
 };
 
+module.exports.addOption = (optFormat, optDesc, optParser) => {
+  program
+    .option(optFormat, optDesc, optParser);
+};
+
 function needsToBeLaunchedByScript() {
     logger.error('This command must not be launched directly, using duniter.sh script');
     return Promise.resolve();
diff --git a/index.js b/index.js
index 33089792c..f449dc6fc 100644
--- a/index.js
+++ b/index.js
@@ -62,6 +62,9 @@ module.exports.statics = {
     const stack = {
 
       registerDependency: (requiredObject) => {
+        for (const opt of (requiredObject.duniter.cliOptions || [])) {
+          cli.addOption(opt.value, opt.desc, opt.parser);
+        }
         for (const command of (requiredObject.duniter.cli || [])) {
           cli.addCommand({ name: command.name, desc: command.desc }, command.requires, command.promiseCallback);
         }
-- 
GitLab