1
1
#!/usr/bin/env node
2
2
3
- const workshopper = require ( 'workshopper' )
3
+ const dgram = require ( 'dgram' )
4
+ , workshopper = require ( 'workshopper' )
4
5
, path = require ( 'path' )
5
- , menu = require ( './exercises/menu' )
6
-
7
6
, name = 'nodebot-workshop'
8
7
, title = 'Nodebot Workshop'
9
8
, subtitle = '\x1b[23mSelect an exercise and hit \x1b[3mEnter\x1b[23m to begin'
@@ -12,13 +11,42 @@ function fpath (f) {
12
11
return path . join ( __dirname , f )
13
12
}
14
13
15
- workshopper ( {
14
+ var nodebot = workshopper ( {
16
15
name : name
17
16
, title : title
18
17
, subtitle : subtitle
19
18
, exerciseDir : fpath ( './exercises/' )
20
19
, appDir : __dirname
21
20
, helpFile : fpath ( 'help.txt' )
22
21
, menuItems : [ ]
23
- , menu : { fg : "black" , bg : / ^ w i n / . test ( process . platform ) ? "yellow" : 220 }
22
+ , menu : { fg : 'black' , bg : / ^ w i n / . test ( process . platform ) ? 'yellow' : 220 }
23
+ } )
24
+
25
+ function broadcastProgress ( event , exercise , mode , msg ) {
26
+ var sock = dgram . createSocket ( 'udp4' )
27
+ , packet = new Buffer ( JSON . stringify ( {
28
+ workshop : title ,
29
+ exercise : exercise . title ,
30
+ mode : mode ,
31
+ msg : msg ,
32
+ event : event
33
+ } ) )
34
+ , port = process . env . PROGRESS_BROADCAST_PORT || 1337
35
+
36
+ sock . bind ( port , '0.0.0.0' , function ( er ) {
37
+ if ( er ) return ;
38
+ sock . setBroadcast ( true )
39
+
40
+ sock . send ( packet , 0 , packet . length , port , '255.255.255.255' , function ( ) {
41
+ sock . close ( )
42
+ } )
43
+ } )
44
+ }
45
+
46
+ nodebot . on ( 'pass' , function ( exercise , mode ) {
47
+ broadcastProgress ( 'pass' , exercise , mode )
48
+ } )
49
+
50
+ nodebot . on ( 'fail' , function ( exercise , mode ) {
51
+ broadcastProgress ( 'fail' , exercise , mode )
24
52
} )
0 commit comments