From 51df48aeae77f6e5f0ee8f4f866cc16f7d18a482 Mon Sep 17 00:00:00 2001 From: Marcos Spessatto Defendi Date: Tue, 20 Nov 2018 16:05:40 -0200 Subject: [PATCH] Convert rocketchat-internal-hubot to main module structure (#12671) --- packages/rocketchat-internal-hubot/package.js | 16 ++-------------- .../{ => server}/hubot.js | 13 +++++++++---- .../rocketchat-internal-hubot/server/index.js | 10 ++++++++++ .../{ => server}/settings.js | 2 ++ 4 files changed, 23 insertions(+), 18 deletions(-) rename packages/rocketchat-internal-hubot/{ => server}/hubot.js (97%) create mode 100644 packages/rocketchat-internal-hubot/server/index.js rename packages/rocketchat-internal-hubot/{ => server}/settings.js (93%) diff --git a/packages/rocketchat-internal-hubot/package.js b/packages/rocketchat-internal-hubot/package.js index b2c1696a74d8..10b8e34a38f9 100644 --- a/packages/rocketchat-internal-hubot/package.js +++ b/packages/rocketchat-internal-hubot/package.js @@ -10,21 +10,9 @@ Package.onUse(function(api) { 'ecmascript', 'tracker', 'rocketchat:lib', + 'templating', ]); - - api.use('templating', 'client'); - - api.addFiles([ - 'hubot.js', - 'settings.js', - ], ['server']); - - api.export('Hubot', ['server']); - api.export('HubotScripts', ['server']); - api.export('InternalHubot', ['server']); - api.export('InternalHubotReceiver', ['server']); - api.export('RocketChatAdapter', ['server']); - + api.mainModule('server/index.js', 'server'); }); // It needs to be here cuz they are coffee files and need to be compiled diff --git a/packages/rocketchat-internal-hubot/hubot.js b/packages/rocketchat-internal-hubot/server/hubot.js similarity index 97% rename from packages/rocketchat-internal-hubot/hubot.js rename to packages/rocketchat-internal-hubot/server/hubot.js index 54bb5ed6acdc..5fa518092f7c 100644 --- a/packages/rocketchat-internal-hubot/hubot.js +++ b/packages/rocketchat-internal-hubot/server/hubot.js @@ -1,5 +1,6 @@ /* globals __meteor_bootstrap__ */ import { Meteor } from 'meteor/meteor'; +import { RocketChat } from 'meteor/rocketchat:lib'; import _ from 'underscore'; import s from 'underscore.string'; @@ -12,7 +13,7 @@ const Hubot = Npm.require('hubot'); // Log messages? const DEBUG = false; -let InternalHubot = {}; +export let InternalHubot = {}; const sendHelper = Meteor.bindEnvironment((robot, envelope, strings, map) => { while (strings.length > 0) { @@ -36,6 +37,10 @@ Hubot.Response.prototype.priv = (...strings) => this.robot.adapter.priv(this.env // More monkey-patching Hubot.Robot.prototype.loadAdapter = () => {}; // disable +export { + Hubot, +}; + // grrrr, Meteor.bindEnvironment doesn't preserve `this` apparently const bind = function(f) { const g = Meteor.bindEnvironment((self, ...args) => f.apply(self, args)); @@ -64,7 +69,7 @@ class Robot extends Hubot.Robot { catchAll(callback) { return super.catchAll(Meteor.bindEnvironment(callback)); } } -class RocketChatAdapter extends Hubot.Adapter { +export class RocketChatAdapter extends Hubot.Adapter { // Public: Raw method for sending data back to the chat source. Extend this. // // envelope - A Object with message, room and user details. @@ -170,7 +175,7 @@ class RocketChatAdapter extends Hubot.Adapter { } } -const InternalHubotReceiver = (message) => { +export const InternalHubotReceiver = (message) => { if (DEBUG) { console.log(message); } if (message.u.username !== InternalHubot.name) { const room = RocketChat.models.Rooms.findOneById(message.rid); @@ -192,7 +197,7 @@ const InternalHubotReceiver = (message) => { return message; }; -class HubotScripts { +export class HubotScripts { constructor(robot) { const modulesToLoad = [ 'hubot-help/src/help.coffee', diff --git a/packages/rocketchat-internal-hubot/server/index.js b/packages/rocketchat-internal-hubot/server/index.js new file mode 100644 index 000000000000..f0e3e889ec81 --- /dev/null +++ b/packages/rocketchat-internal-hubot/server/index.js @@ -0,0 +1,10 @@ +import './settings'; +import { Hubot, HubotScripts, InternalHubot, InternalHubotReceiver, RocketChatAdapter } from './hubot'; + +export { + Hubot, + HubotScripts, + InternalHubot, + InternalHubotReceiver, + RocketChatAdapter, +}; diff --git a/packages/rocketchat-internal-hubot/settings.js b/packages/rocketchat-internal-hubot/server/settings.js similarity index 93% rename from packages/rocketchat-internal-hubot/settings.js rename to packages/rocketchat-internal-hubot/server/settings.js index 8fcfe56cf8ca..82bfdec4ed95 100644 --- a/packages/rocketchat-internal-hubot/settings.js +++ b/packages/rocketchat-internal-hubot/server/settings.js @@ -1,3 +1,5 @@ +import { RocketChat } from 'meteor/rocketchat:lib'; + RocketChat.settings.addGroup('InternalHubot', function() { this.add('InternalHubot_Enabled', false, { type: 'boolean', i18nLabel: 'Enabled' }); this.add('InternalHubot_Username', 'rocket.cat', { type: 'string', i18nLabel: 'Username', i18nDescription: 'InternalHubot_Username_Description', public: true });