factor 0.0.92 → 0.0.93

Sign up to get free protection for your applications and to get access to all the features.
@@ -13,53 +13,58 @@ module Factor
13
13
  options.tags.each {|tag,value| engine.tag(tag,value)} if options.tags?
14
14
 
15
15
  # load channels from server
16
- puts "loading channels from server"
16
+ say "loading channels from server"
17
17
  engine = @client.load_channels(engine) do |message|
18
- puts " #{message}"
18
+ say " #{message}"
19
19
  end
20
20
 
21
21
  # load channels from files
22
22
  if options.channels?
23
23
  options.channels.each do |file|
24
24
  full_file=File.expand_path(file)
25
- puts " loading '#{full_file}'"
25
+ say " loading '#{full_file}'"
26
26
  engine.load_channel(full_file)
27
- puts " loaded '#{full_file}'"
27
+ say " loaded '#{full_file}'"
28
28
  end
29
29
  end
30
30
 
31
- puts "loading channels complete"
31
+ say "loading channels complete"
32
32
 
33
33
 
34
34
  # load workflows from server
35
- puts "loading workflows from server"
35
+ say "loading workflows from server"
36
36
  engine = @client.load_workflows(engine) do |message|
37
- puts " #{message}"
37
+ say " #{message}"
38
38
  end
39
- puts "loading workflows complete"
39
+ say "loading workflows complete"
40
40
 
41
- puts "loading credentials from server"
41
+ say "loading credentials from server"
42
42
  engine = @client.load_credentials(engine) do |message|
43
- puts " #{message}"
43
+ say " #{message}"
44
44
  end
45
- puts "loading credentials complete"
46
-
47
- puts "starting the server..."
48
- engine.start
45
+ say "loading credentials complete"
49
46
 
47
+ say "starting the server...", :green
48
+ message = engine.start
49
+ if message.is_a?(Exception)
50
+ say "An unknown exception occured '#{message}'", :red
51
+ else
52
+ say "disconnecting...", :green
53
+ end
54
+
50
55
  end
51
56
 
52
57
  desc "list", "list all the running servers"
53
58
  def list
54
- puts "listing all servers"
59
+ say "listing all servers"
55
60
  end
56
61
 
57
62
  desc "logs", "listen to incoming logs"
58
63
  def logs
59
64
  engine = Factor::Runtime::Engine.new(get_config[:email],get_config[:token])
60
- puts "Listening..."
65
+ say "Listening...", :green
61
66
  engine.logs do |message|
62
- puts "[#{message.route}] #{message.body}"
67
+ say "[#{message.route}] #{message.body}"
63
68
  end
64
69
  end
65
70
 
data/lib/client/client.rb CHANGED
@@ -61,7 +61,8 @@ module Factor
61
61
  uri = URI.parse(channel['zip_url'])
62
62
 
63
63
  # temp file to store the zip for download
64
- temp_file = Tempfile.new([uri.path.gsub(/\W+/,'-'), '.zip'], :encoding => 'ascii-8bit')
64
+ #temp_file = Tempfile.new([uri.path.gsub(/\W+/,'-'), '.zip'], :encoding => 'ascii-8bit')
65
+ temp_file = Tempfile.new([uri.to_s.gsub(/\W+/,'-'), '.zip'])
65
66
 
66
67
  # temp directory where zip will be decompressed
67
68
  unzip_dir=temp_file.path[0..-5]
@@ -77,8 +78,8 @@ module Factor
77
78
  unzip(temp_file.path,unzip_dir)
78
79
 
79
80
  code.call("loading '#{channel['zip_url']}' into engine")
80
- Dir.glob("#{unzip_dir}/**/*.rb").each do |file|
81
- engine.load_channel(file)
81
+ Dir.glob("#{unzip_dir}/**/*.rb").each do |ruby_file_name|
82
+ engine.load_channel(ruby_file_name)
82
83
  end
83
84
 
84
85
  end
@@ -27,7 +27,7 @@ module Factor
27
27
  # and the module inside must be camal cased to match
28
28
  # once loaded it is in the channel_modules Hash
29
29
  def load_channel filename
30
- file=File.new filename
30
+ file= filename.is_a?(String) ? File.new filename : filename
31
31
  require file
32
32
  channel_module_name = File.basename(file).gsub('.rb','').split('_').map{|ea| ea.capitalize}.join('')
33
33
  channel_module= self.class.const_get(channel_module_name)
@@ -67,39 +67,45 @@ module Factor
67
67
 
68
68
  # start your engines. vroom vrooooom!
69
69
  def start
70
- @message_bus.start do
71
- @message_bus.listen do |message|
72
- if @workflows.include? message.workflow
73
- workflow = @workflows[message.workflow]
74
- activity = workflow.get_activity(message.position)
75
- if !activity.nil?
76
- action = activity["action"]
77
- channel = activity["channel"]
78
- method = activity["method"]
79
- target = activity["target"]
70
+ begin
71
+ @message_bus.start do
72
+ @message_bus.listen do |message|
73
+ if @workflows.include? message.workflow
74
+ workflow = @workflows[message.workflow]
75
+ activity = workflow.get_activity(message.position)
76
+ if !activity.nil?
77
+ action = activity["action"]
78
+ channel = activity["channel"]
79
+ method = activity["method"]
80
+ target = activity["target"]
80
81
 
81
82
 
82
- if match(target)
83
+ if match(target)
83
84
 
84
- values = message.body.merge(@credentials)
85
- # this maps the input values passed in with the templated defined in the workflow
86
- params = Hash.new
87
- activity["params"].each do |key,template|
88
- params[key]=Mustache.render(template,values)
89
- end
90
- event = call_channel_method(channel,method,params)
85
+ values = message.body.merge(@credentials)
86
+ # this maps the input values passed in with the templated defined in the workflow
87
+ params = Hash.new
88
+ activity["params"].each do |key,template|
89
+ params[key]=Mustache.render(template,values)
90
+ end
91
+ event = call_channel_method(channel,method,params)
91
92
 
92
- response_message = message.respond(event.params,event.class.name.split("::").last)
93
+ response_message = message.respond(event.params,event.class.name.split("::").last)
93
94
 
94
95
 
95
- @message_bus.send response_message
96
- end
96
+ @message_bus.send response_message
97
+ end
97
98
 
99
+ end
100
+ else
101
+ # workflow doesn't exist
98
102
  end
99
- else
100
- # workflow doesn't exist
101
103
  end
102
104
  end
105
+ rescue SystemExit, Interrupt
106
+ "done"
107
+ rescue Exception => ex
108
+ ex
103
109
  end
104
110
  end
105
111
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: factor
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.92
4
+ version: 0.0.93
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors: