From 2f8044778e8d905b3c0721fb5c47978dc47b5a41 Mon Sep 17 00:00:00 2001 From: Aymeric Date: Sun, 6 Jan 2019 11:47:17 +0100 Subject: [PATCH] v2.0.6 --- assistant-cli.js | 72 ++++++++++++++++++++++++++++++++++++++++++++++++ changelog.md | 4 +++ package.json | 2 +- 3 files changed, 77 insertions(+), 1 deletion(-) create mode 100644 assistant-cli.js diff --git a/assistant-cli.js b/assistant-cli.js new file mode 100644 index 0000000..90f5270 --- /dev/null +++ b/assistant-cli.js @@ -0,0 +1,72 @@ +// pour utiliser assistant-plugins depuis une ligne de commande +// Commande : node assistant-cli.js Commande +// +// Exemple : node assistant-cli.js "notifier_ceci est un message de test" + +var path = require("path"); +var configuration = require(path.join(__dirname,'configuration')); +var plugins={}, addons=[], dependencies; +function PromiseChain(arr, fct) { + var dfd = Promise.resolve(); + var res = arr.map(function(a) { + dfd = dfd.then(function() { + return fct(a) + }); + return dfd + }); + return Promise.all(res) +} + +// on va définir un plugin "assistant" pour modifier la configuration +plugins.assistant = { + saveConfig:function(plugin, config) { + if (plugin && config) { + var configuration = require(path.join(__dirname,'configuration')); + configuration.plugins[plugin] = config; + var jsonfile = require('jsonfile'); + jsonfile.writeFile(path.join(__dirname, 'configuration.json'), configuration, {spaces: 2, EOL: '\r\n'}, function(err) { + if (err) console.error("[assistant-"+plugin+"] Erreur lors de la sauvegarde de la configuration : "+err); + else console.log("[assistant-"+plugin+"] Configuration sauvegardée."); + }) + } + } +}; + +// chargement des plugins +dependencies = require(path.join(__dirname,"package")).dependencies; +for (var plugin in dependencies) { + if (plugin.startsWith("assistant-") && plugin !== "assistant-plugins") { + addons.push(plugin.slice(10)); + } +} +var packageCurrent = require(path.join(__dirname,'/node_modules/assistant-plugins/package')); + +PromiseChain(addons, function(plugin) { + plugin = plugin.trim(); + var packagePlugin = require(path.join(__dirname,'/node_modules/assistant-'+plugin+'/package')); + console.log("[assistant] Chargement du plugin '"+plugin+"' (v"+packagePlugin.version+")"); + return require(path.join(__dirname,'/node_modules/assistant-'+plugin)).init(configuration.plugins[plugin], plugins) + .then(function(resource) { + plugins[plugin] = resource; + }) +}) +.then(function() { + var commandes = process.argv[2].split("|"); + console.log("[assistant] Commande reçue: ",commandes); + return PromiseChain(commandes, function(commande) { + // on regarde le keyword et on transmet au plug associé + var plugin = commande.split("_")[0]; + if (!plugins[plugin]) { + console.log("[assistant] Erreur : la commande « "+commande+" » a été reçue, cependant le plugin '"+plugin+"' n'a pas été chargé !"); + } else { + console.log("[assistant] Appel du plugin '"+plugin+"'"); + return plugins[plugin].action(commande.split("_").slice(1).join("_")); + } + }) +}) +.then(function() { + process.exit() +}) +.catch(function(err) { + console.log(err) +}) diff --git a/changelog.md b/changelog.md index 54acb1b..46bf281 100644 --- a/changelog.md +++ b/changelog.md @@ -1,5 +1,9 @@ # Changelog +**Change Log v2.0.6 (6 Janvier 2019)** + + - Il est maintenant possible d'utiliser `assistant-plugins` depuis une ligne de commande (https://github.com/Aymkdn/assistant-plugins/wiki/Utiliser-le-programme-en-ligne-de-commande) + **Change Log v2.0.5 (18 Août 2018)** - Ajout de la vérification d'erreur retournée par PushBullet diff --git a/package.json b/package.json index db791d3..4e921dd 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "assistant-plugins", - "version": "2.0.5", + "version": "2.0.6", "description": "Permet de gérer des plugins avec les Assistants (via IFTTT et Pushbullet)", "main": "index.js", "repository": "https://github.com/Aymkdn/assistant-plugins",