1 |
|
2 | var AppRunner, ref$, bold, cyan, dim, green, red, yaml, Logger, fs, version, util, appConfig, logger, x$, appRunner;
|
3 | AppRunner = require('./app-runner');
|
4 | ref$ = require('chalk'), bold = ref$.bold, cyan = ref$.cyan, dim = ref$.dim, green = ref$.green, red = ref$.red;
|
5 | yaml = require('js-yaml');
|
6 | Logger = require('../../logger');
|
7 | fs = require('fs');
|
8 | version = require('../../../package.json').version;
|
9 | util = require('util');
|
10 | console.log(dim("Exosphere SDK " + version + "\n"));
|
11 | appConfig = yaml.safeLoad(fs.readFileSync('application.yml', 'utf8'));
|
12 | console.log("Running " + green(appConfig.name) + " " + cyan(appConfig.version) + "\n");
|
13 | logger = new Logger(Object.keys(appConfig.services));
|
14 | x$ = appRunner = new AppRunner(appConfig);
|
15 | x$.on('error', function(err){
|
16 | return console.log(red(error));
|
17 | });
|
18 | x$.on('output', function(data){
|
19 | return logger.log(data);
|
20 | });
|
21 | x$.on('exocom-online', function(port){
|
22 | return logger.log({
|
23 | name: 'exocom',
|
24 | text: "online at port " + port
|
25 | });
|
26 | });
|
27 | x$.on('service-online', function(name){
|
28 | return logger.log({
|
29 | name: 'exorun',
|
30 | text: "'" + name + "' is running using exorelay port " + appRunner.portFor(name)
|
31 | });
|
32 | });
|
33 | x$.on('routing-setup', function(){
|
34 | var command, ref$, routing, text, receivers, res$, i$, ref1$, len$, receiver, results$ = [];
|
35 | logger.log({
|
36 | name: 'exocom',
|
37 | text: 'received routing setup'
|
38 | });
|
39 | for (command in ref$ = appRunner.exocom.clientRegistry.routes) {
|
40 | routing = ref$[command];
|
41 | text = " [ " + bold(command) + " ] --> ";
|
42 | res$ = [];
|
43 | for (i$ = 0, len$ = (ref1$ = routing.receivers).length; i$ < len$; ++i$) {
|
44 | receiver = ref1$[i$];
|
45 | res$.push(bold(receiver.name) + " (" + receiver.host + ":" + receiver.port + ")");
|
46 | }
|
47 | receivers = res$;
|
48 | text += receivers.join(' & ');
|
49 | results$.push(logger.log({
|
50 | name: 'exocom',
|
51 | text: text
|
52 | }));
|
53 | }
|
54 | return results$;
|
55 | });
|
56 | x$.on('message', function(arg$){
|
57 | var messages, receivers, message, indent, i$, ref$, len$, line, results$ = [];
|
58 | messages = arg$.messages, receivers = arg$.receivers;
|
59 | message = messages[0];
|
60 | if (message.name !== message.originalName) {
|
61 | logger.log({
|
62 | name: 'exocom',
|
63 | text: bold(message.sender) + " --[ " + bold(message.originalName) + " ]-[ " + bold(message.name) + " ]-> " + bold(receivers.join(' and '))
|
64 | });
|
65 | } else {
|
66 | logger.log({
|
67 | name: 'exocom',
|
68 | text: bold(message.sender) + " --[ " + bold(message.name) + " ]-> " + bold(receivers.join(' and '))
|
69 | });
|
70 | }
|
71 | indent = repeatString$(' ', message.sender.length + 2);
|
72 | if (message.payload != null) {
|
73 | for (i$ = 0, len$ = (ref$ = util.inspect(message.payload, {
|
74 | showHidden: false,
|
75 | depth: null
|
76 | }).split('\n')).length; i$ < len$; ++i$) {
|
77 | line = ref$[i$];
|
78 | results$.push(logger.log({
|
79 | name: 'exocom',
|
80 | text: indent + "" + dim(line),
|
81 | trim: false
|
82 | }));
|
83 | }
|
84 | return results$;
|
85 | } else {
|
86 | return logger.log({
|
87 | name: 'exocom',
|
88 | text: indent + "" + dim('(no payload)'),
|
89 | trim: false
|
90 | });
|
91 | }
|
92 | });
|
93 | x$.startExocom();
|
94 | x$.startServices();
|
95 | x$.on('all-services-online', function(){
|
96 | var x$;
|
97 | logger.log({
|
98 | name: 'exorun',
|
99 | text: 'all services online'
|
100 | });
|
101 | x$ = appRunner;
|
102 | x$.on('routing-done', function(){
|
103 | return logger.log({
|
104 | name: 'exorun',
|
105 | text: "application ready"
|
106 | });
|
107 | });
|
108 | x$.sendServiceConfiguration();
|
109 | return x$;
|
110 | });
|
111 | function repeatString$(str, n){
|
112 | for (var r = ''; n > 0; (n >>= 1) && (str += str)) if (n & 1) r += str;
|
113 | return r;
|
114 | } |
\ | No newline at end of file |