legionio 0.3.3 → 0.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (88) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +136 -0
  3. data/.gitignore +15 -0
  4. data/.rspec +2 -0
  5. data/.rubocop.yml +94 -0
  6. data/CHANGELOG.md +43 -0
  7. data/Dockerfile +9 -0
  8. data/Gemfile +3 -0
  9. data/LICENSE.txt +21 -0
  10. data/README.md +161 -0
  11. data/Rakefile +32 -0
  12. data/bitbucket-pipelines.yml +19 -0
  13. data/docker_deploy.rb +10 -0
  14. data/exe/legion +4 -0
  15. data/exe/legionio +53 -0
  16. data/exe/lex_gen +5 -0
  17. data/legionio.gemspec +64 -0
  18. data/lib/legion.rb +25 -0
  19. data/lib/legion/cli.rb +56 -0
  20. data/lib/legion/cli/chain.rb +35 -0
  21. data/lib/legion/cli/cohort.rb +10 -0
  22. data/lib/legion/cli/function.rb +41 -0
  23. data/lib/legion/cli/lex/actor.rb +31 -0
  24. data/lib/legion/cli/lex/exchange.rb +32 -0
  25. data/lib/legion/cli/lex/message.rb +32 -0
  26. data/lib/legion/cli/lex/queue.rb +45 -0
  27. data/lib/legion/cli/lex/runner.rb +70 -0
  28. data/lib/legion/cli/lex/templates/actor.erb +6 -0
  29. data/lib/legion/cli/lex/templates/actor_spec.erb +0 -0
  30. data/lib/legion/cli/lex/templates/base/bitbucket.yml.erb +69 -0
  31. data/lib/legion/cli/lex/templates/base/gemfile.erb +3 -0
  32. data/lib/legion/cli/lex/templates/base/gemspec.erb +26 -0
  33. data/lib/legion/cli/lex/templates/base/gitignore.erb +11 -0
  34. data/lib/legion/cli/lex/templates/base/lex.erb +9 -0
  35. data/lib/legion/cli/lex/templates/base/lex_spec.erb +5 -0
  36. data/lib/legion/cli/lex/templates/base/lic.erb +21 -0
  37. data/lib/legion/cli/lex/templates/base/rakefile.erb +6 -0
  38. data/lib/legion/cli/lex/templates/base/readme.md.erb +2 -0
  39. data/lib/legion/cli/lex/templates/base/rubocop.yml.erb +15 -0
  40. data/lib/legion/cli/lex/templates/base/spec_helper.rb.erb +11 -0
  41. data/lib/legion/cli/lex/templates/base/version.erb +7 -0
  42. data/lib/legion/cli/lex/templates/exchange.erb +11 -0
  43. data/lib/legion/cli/lex/templates/exchange_spec.erb +0 -0
  44. data/lib/legion/cli/lex/templates/message.erb +23 -0
  45. data/lib/legion/cli/lex/templates/message_spec.erb +0 -0
  46. data/lib/legion/cli/lex/templates/queue.erb +12 -0
  47. data/lib/legion/cli/lex/templates/queue_helper.erb +24 -0
  48. data/lib/legion/cli/lex/templates/queue_spec.erb +11 -0
  49. data/lib/legion/cli/lex/templates/runner.erb +11 -0
  50. data/lib/legion/cli/lex/templates/runner_spec.erb +11 -0
  51. data/lib/legion/cli/relationship.rb +22 -0
  52. data/lib/legion/cli/task.rb +49 -0
  53. data/lib/legion/cli/trigger.rb +88 -0
  54. data/lib/legion/cli/version.rb +5 -0
  55. data/lib/legion/extensions.rb +219 -0
  56. data/lib/legion/extensions/actors/base.rb +47 -0
  57. data/lib/legion/extensions/actors/every.rb +48 -0
  58. data/lib/legion/extensions/actors/loop.rb +32 -0
  59. data/lib/legion/extensions/actors/nothing.rb +15 -0
  60. data/lib/legion/extensions/actors/once.rb +40 -0
  61. data/lib/legion/extensions/actors/poll.rb +87 -0
  62. data/lib/legion/extensions/actors/subscription.rb +139 -0
  63. data/lib/legion/extensions/builders/actors.rb +61 -0
  64. data/lib/legion/extensions/builders/base.rb +36 -0
  65. data/lib/legion/extensions/builders/helpers.rb +24 -0
  66. data/lib/legion/extensions/builders/runners.rb +58 -0
  67. data/lib/legion/extensions/core.rb +131 -0
  68. data/lib/legion/extensions/data.rb +58 -0
  69. data/lib/legion/extensions/data/migrator.rb +28 -0
  70. data/lib/legion/extensions/data/model.rb +8 -0
  71. data/lib/legion/extensions/helpers/base.rb +82 -0
  72. data/lib/legion/extensions/helpers/cache.rb +23 -0
  73. data/lib/legion/extensions/helpers/core.rb +41 -0
  74. data/lib/legion/extensions/helpers/data.rb +23 -0
  75. data/lib/legion/extensions/helpers/lex.rb +48 -0
  76. data/lib/legion/extensions/helpers/logger.rb +44 -0
  77. data/lib/legion/extensions/helpers/task.rb +60 -0
  78. data/lib/legion/extensions/helpers/transport.rb +44 -0
  79. data/lib/legion/extensions/transport.rb +159 -0
  80. data/lib/legion/lex.rb +89 -0
  81. data/lib/legion/process.rb +124 -0
  82. data/lib/legion/runner.rb +55 -0
  83. data/lib/legion/runner/log.rb +10 -0
  84. data/lib/legion/runner/status.rb +69 -0
  85. data/lib/legion/service.rb +130 -0
  86. data/lib/legion/supervision.rb +15 -0
  87. data/lib/legion/version.rb +3 -0
  88. metadata +243 -39
@@ -0,0 +1,55 @@
1
+ require 'legion/exceptions/handled_task'
2
+ require_relative 'runner/log'
3
+ require_relative 'runner/status'
4
+ require 'legion/transport'
5
+ require 'legion/transport/messages/check_subtask'
6
+
7
+ module Legion
8
+ module Runner
9
+ def self.run(runner_class:, function:, task_id: nil, args: nil, check_subtask: true, generate_task: true, parent_id: nil, master_id: nil, **opts) # rubocop:disable Metrics/ParameterLists
10
+ runner_class = Kernel.const_get(runner_class) if runner_class.is_a? String
11
+
12
+ if task_id.nil? && generate_task
13
+ task_gen = Legion::Runner::Status.generate_task_id(
14
+ function: function,
15
+ runner_class: runner_class,
16
+ parent_id: parent_id, master_id: master_id, task_id: task_id, **opts
17
+ )
18
+ task_id = task_gen[:task_id] unless task_gen.nil?
19
+ end
20
+
21
+ args = opts if args.nil?
22
+ args[:task_id] = task_id unless task_id.nil?
23
+ args[:master_id] = master_id unless master_id.nil?
24
+ args[:parent_id] = parent_id unless parent_id.nil?
25
+
26
+ result = runner_class.send(function, **args)
27
+ rescue Legion::Exception::HandledTask
28
+ status = 'task.exception'
29
+ result = { error: {} }
30
+ rescue StandardError => e
31
+ runner_class.handle_exception(e,
32
+ **opts,
33
+ runner_class: runner_class,
34
+ args: args,
35
+ function: function,
36
+ task_id: task_id,
37
+ generate_task: generate_task,
38
+ check_subtask: check_subtask)
39
+ status = 'task.exception'
40
+ result = { success: false, status: status, error: { message: e.message, backtrace: e.backtrace } }
41
+ else
42
+ status = 'task.completed'
43
+ ensure
44
+ Legion::Runner::Status.update(task_id: task_id, status: status) unless task_id.nil?
45
+ if check_subtask && status == 'task.completed'
46
+ Legion::Transport::Messages::CheckSubtask.new(runner_class: runner_class,
47
+ function: function,
48
+ result: result,
49
+ original_args: args,
50
+ **opts).publish
51
+ end
52
+ return { success: true, status: status, result: result, task_id: task_id } # rubocop:disable Lint/EnsureReturn
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,10 @@
1
+ module Legion
2
+ module Runner
3
+ module Log
4
+ def self.exception(exc, **opts)
5
+ Legion::Logging.error exc.message
6
+ Legion::Logging.error opts
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,69 @@
1
+ module Legion
2
+ module Runner
3
+ module Status
4
+ def self.update(task_id:, status: 'task.completed', **opts)
5
+ Legion::Logging.debug "Legion::Runner::Status.update called, #{task_id}, status: #{status}, #{opts}"
6
+ return if status.nil?
7
+
8
+ if Legion::Settings[:data][:connected]
9
+ update_db(task_id: task_id, status: status, **opts)
10
+ else
11
+ update_rmq(task_id: task_id, status: status, **opts)
12
+ end
13
+ end
14
+
15
+ def self.update_rmq(task_id:, status: 'task.completed', **opts)
16
+ return if status.nil?
17
+
18
+ Legion::Transport::Messages::TaskUpdate.new(task_id: task_id, status: status, **opts).publish
19
+ rescue StandardError => e
20
+ Legion::Logging.fatal e.message
21
+ Legion::Logging.fatal e.backtrace
22
+ retries ||= 0
23
+ Legion::Logging.fatal 'Will retry in 3 seconds' if retries < 5
24
+ sleep(3)
25
+ retry if (retries += 1) < 5
26
+ end
27
+
28
+ def self.update_db(task_id:, status: 'task.completed', **opts)
29
+ return if status.nil?
30
+
31
+ task = Legion::Data::Model::Task[task_id]
32
+ task.update(status: status)
33
+ rescue StandardError => e
34
+ Legion::Logging.warn e.message
35
+ Legion::Logging.warn 'Legion::Runner.update_status_db failed, defaulting to rabbitmq'
36
+ Legion::Logging.warn e.backtrace
37
+ update_rmq(task_id: task_id, status: status, **opts)
38
+ end
39
+
40
+ def self.generate_task_id(runner_class:, function:, status: 'task.queued', **opts)
41
+ Legion::Logging.debug "Legion::Runner::Status.generate_task_id called, #{runner_class}, #{function}, status: #{status}, #{opts}"
42
+ return nil unless Legion::Settings[:data][:connected]
43
+
44
+ runner = Legion::Data::Model::Runner.where(namespace: runner_class.to_s.downcase).first
45
+ return nil if runner.nil?
46
+
47
+ function = Legion::Data::Model::Function.where(runner_id: runner.values[:id], name: function).first
48
+ return nil if function.nil?
49
+
50
+ insert = { status: status, function_id: function.values[:id] }
51
+ insert[:parent_id] = opts[:task_id] if opts.key? :task_id
52
+ insert[:master_id] = opts[:task_id] if opts.key? :task_id
53
+ insert[:payload] = Legion::JSON.dump(opts[:payload]) if opts.key? :payload
54
+
55
+ %i[function_args master_id parent_id relationship_id].each do |column|
56
+ next unless opts.key? column
57
+
58
+ insert[column] = opts[column].is_a?(Hash) ? Legion::JSON.dump(opts[column]) : opts[column]
59
+ end
60
+
61
+ { success: true, task_id: Legion::Data::Model::Task.insert(insert), **insert }
62
+ rescue StandardError => e
63
+ Legion::Logging.error e.message
64
+ Legion::Logging.error e.backtrace
65
+ raise(e)
66
+ end
67
+ end
68
+ end
69
+ end
@@ -0,0 +1,130 @@
1
+ module Legion
2
+ class Service
3
+ def modules
4
+ [Legion::Crypt, Legion::Transport, Legion::Cache, Legion::Data, Legion::Supervision].freeze
5
+ end
6
+
7
+ def initialize(transport: true, cache: true, data: true, supervision: true, extensions: true, crypt: true, log_level: 'info') # rubocop:disable Metrics/ParameterLists
8
+ setup_logging(log_level: log_level)
9
+ Legion::Logging.debug('Starting Legion::Service')
10
+ setup_settings
11
+ Legion::Logging.info("node name: #{Legion::Settings[:client][:name]}")
12
+
13
+ if crypt
14
+ require 'legion/crypt'
15
+ Legion::Crypt.start
16
+ end
17
+
18
+ setup_transport if transport
19
+
20
+ require 'legion/cache' if cache
21
+
22
+ setup_data if data
23
+ setup_supervision if supervision
24
+ require 'legion/runner'
25
+ load_extensions if extensions
26
+
27
+ Legion::Crypt.cs if crypt
28
+ Legion::Settings[:client][:ready] = true
29
+ end
30
+
31
+ def setup_data
32
+ if RUBY_ENGINE == 'truffleruby'
33
+ Legion::Logging.error 'Legion::Data does not support truffleruby, please use MRI for any LEX that require it '
34
+ Legion::Settings[:data][:connected] = false
35
+ return false
36
+ end
37
+
38
+ require 'legion/data'
39
+ Legion::Settings.merge_settings(:data, Legion::Data::Settings.default)
40
+ Legion::Data.setup
41
+ rescue LoadError
42
+ Legion::Logging.info 'Legion::Data gem is not installed, please install it manually with gem install legion-data'
43
+ rescue StandardError => e
44
+ Legion::Logging.warn "Legion::Data failed to load, starting without it. e: #{e.message}"
45
+ end
46
+
47
+ # noinspection RubyArgCount
48
+ def default_paths
49
+ [
50
+ '/etc/legionio',
51
+ "#{ENV['home']}/legionio",
52
+ '~/legionio',
53
+ './settings'
54
+ ]
55
+ end
56
+
57
+ def setup_settings(default_dir = __dir__)
58
+ require 'legion/settings'
59
+ config_directory = default_dir
60
+ default_paths.each do |path|
61
+ next unless Dir.exist? path
62
+
63
+ Legion::Logging.info "Using #{path} for settings"
64
+ config_directory = path
65
+ break
66
+ end
67
+
68
+ Legion::Logging.info "Using directory #{config_directory} for settings"
69
+ Legion::Settings.load(config_dir: config_directory)
70
+ Legion::Logging.info('Legion::Settings Loaded')
71
+ end
72
+
73
+ def setup_logging(log_level: 'info', **_opts)
74
+ require 'legion/logging'
75
+ Legion::Logging.setup(log_level: log_level, level: log_level, trace: true)
76
+ end
77
+
78
+ def setup_transport
79
+ require 'legion/transport'
80
+ Legion::Settings.merge_settings('transport', Legion::Transport::Settings.default)
81
+ Legion::Transport::Connection.setup
82
+ end
83
+
84
+ def setup_supervision
85
+ require 'legion/supervision'
86
+ @supervision = Legion::Supervision.setup
87
+ end
88
+
89
+ def shutdown
90
+ Legion::Logging.info('Legion::Service.shutdown was called')
91
+ @shutdown = true
92
+ Legion::Settings[:client][:shutting_down] = true
93
+ sleep(0.5)
94
+ Legion::Extensions.shutdown
95
+ sleep(1)
96
+ Legion::Data.shutdown if Legion::Settings[:data][:connected]
97
+ Legion::Cache.shutdown
98
+ Legion::Transport::Connection.shutdown
99
+ Legion::Crypt.shutdown
100
+ end
101
+
102
+ def reload
103
+ Legion::Logging.info 'Legion::Service.reload was called'
104
+ Legion::Extensions.shutdown
105
+ sleep(1)
106
+ Legion::Data.shutdown
107
+ Legion::Cache.shutdown
108
+ Legion::Transport::Connection.shutdown
109
+ Legion::Crypt.shutdown
110
+ Legion::Settings[:client][:ready] = false
111
+
112
+ sleep(5)
113
+ setup_settings
114
+ Legion::Crypt.start
115
+ setup_transport
116
+ setup_data
117
+ setup_supervision
118
+ load_extensions
119
+
120
+ Legion::Crypt.cs
121
+ Legion::Settings[:client][:ready] = true
122
+ Legion::Logging.info 'Legion has been reloaded'
123
+ end
124
+
125
+ def load_extensions
126
+ require 'legion/runner'
127
+ Legion::Extensions.hook_extensions
128
+ end
129
+ end
130
+ end
@@ -0,0 +1,15 @@
1
+ module Legion
2
+ module Supervision
3
+ class << self
4
+ attr_accessor :timer_tasks
5
+
6
+ def setup
7
+ @timer_tasks = Concurrent::AtomicReference.new([])
8
+ @once_tasks = Concurrent::AtomicReference.new([])
9
+ @loop_tasks = Concurrent::AtomicReference.new([])
10
+ @poll_tasks = Concurrent::AtomicReference.new([])
11
+ @subscriptions = Concurrent::AtomicReference.new([])
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,3 @@
1
+ module Legion
2
+ VERSION = '0.4.2'.freeze
3
+ end
metadata CHANGED
@@ -1,17 +1,87 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: legionio
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.3
4
+ version: 0.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Esity
8
- autorequire:
8
+ autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-10-16 00:00:00.000000000 Z
11
+ date: 2021-01-21 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: concurrent-ruby
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 1.1.7
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: 1.1.7
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: concurrent-ruby-ext
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: 1.1.7
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: 1.1.7
41
+ - !ruby/object:Gem::Dependency
42
+ name: daemons
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: 1.3.1
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: 1.3.1
55
+ - !ruby/object:Gem::Dependency
56
+ name: oj
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '3.10'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '3.10'
69
+ - !ruby/object:Gem::Dependency
70
+ name: thor
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '1'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '1'
83
+ - !ruby/object:Gem::Dependency
84
+ name: legion-cache
15
85
  requirement: !ruby/object:Gem::Requirement
16
86
  requirements:
17
87
  - - ">="
@@ -25,7 +95,21 @@ dependencies:
25
95
  - !ruby/object:Gem::Version
26
96
  version: '0'
27
97
  - !ruby/object:Gem::Dependency
28
- name: legion-data
98
+ name: legion-crypt
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: 0.2.0
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: 0.2.0
111
+ - !ruby/object:Gem::Dependency
112
+ name: legion-exceptions
29
113
  requirement: !ruby/object:Gem::Requirement
30
114
  requirements:
31
115
  - - ">="
@@ -39,7 +123,7 @@ dependencies:
39
123
  - !ruby/object:Gem::Version
40
124
  version: '0'
41
125
  - !ruby/object:Gem::Dependency
42
- name: legion-transport
126
+ name: legion-json
43
127
  requirement: !ruby/object:Gem::Requirement
44
128
  requirements:
45
129
  - - ">="
@@ -53,7 +137,7 @@ dependencies:
53
137
  - !ruby/object:Gem::Version
54
138
  version: '0'
55
139
  - !ruby/object:Gem::Dependency
56
- name: oj
140
+ name: legion-logging
57
141
  requirement: !ruby/object:Gem::Requirement
58
142
  requirements:
59
143
  - - ">="
@@ -67,7 +151,7 @@ dependencies:
67
151
  - !ruby/object:Gem::Version
68
152
  version: '0'
69
153
  - !ruby/object:Gem::Dependency
70
- name: concurrent-ruby
154
+ name: legion-settings
71
155
  requirement: !ruby/object:Gem::Requirement
72
156
  requirements:
73
157
  - - ">="
@@ -81,7 +165,21 @@ dependencies:
81
165
  - !ruby/object:Gem::Version
82
166
  version: '0'
83
167
  - !ruby/object:Gem::Dependency
84
- name: daemons
168
+ name: legion-transport
169
+ requirement: !ruby/object:Gem::Requirement
170
+ requirements:
171
+ - - ">="
172
+ - !ruby/object:Gem::Version
173
+ version: 1.1.9
174
+ type: :runtime
175
+ prerelease: false
176
+ version_requirements: !ruby/object:Gem::Requirement
177
+ requirements:
178
+ - - ">="
179
+ - !ruby/object:Gem::Version
180
+ version: 1.1.9
181
+ - !ruby/object:Gem::Dependency
182
+ name: lex-node
85
183
  requirement: !ruby/object:Gem::Requirement
86
184
  requirements:
87
185
  - - ">="
@@ -95,13 +193,13 @@ dependencies:
95
193
  - !ruby/object:Gem::Version
96
194
  version: '0'
97
195
  - !ruby/object:Gem::Dependency
98
- name: hashdiff
196
+ name: codecov
99
197
  requirement: !ruby/object:Gem::Requirement
100
198
  requirements:
101
199
  - - ">="
102
200
  - !ruby/object:Gem::Version
103
201
  version: '0'
104
- type: :runtime
202
+ type: :development
105
203
  prerelease: false
106
204
  version_requirements: !ruby/object:Gem::Requirement
107
205
  requirements:
@@ -109,13 +207,13 @@ dependencies:
109
207
  - !ruby/object:Gem::Version
110
208
  version: '0'
111
209
  - !ruby/object:Gem::Dependency
112
- name: bunny
210
+ name: legion-data
113
211
  requirement: !ruby/object:Gem::Requirement
114
212
  requirements:
115
213
  - - ">="
116
214
  - !ruby/object:Gem::Version
117
215
  version: '0'
118
- type: :runtime
216
+ type: :development
119
217
  prerelease: false
120
218
  version_requirements: !ruby/object:Gem::Requirement
121
219
  requirements:
@@ -123,13 +221,13 @@ dependencies:
123
221
  - !ruby/object:Gem::Version
124
222
  version: '0'
125
223
  - !ruby/object:Gem::Dependency
126
- name: legion-cache
224
+ name: rake
127
225
  requirement: !ruby/object:Gem::Requirement
128
226
  requirements:
129
227
  - - ">="
130
228
  - !ruby/object:Gem::Version
131
229
  version: '0'
132
- type: :runtime
230
+ type: :development
133
231
  prerelease: false
134
232
  version_requirements: !ruby/object:Gem::Requirement
135
233
  requirements:
@@ -137,13 +235,13 @@ dependencies:
137
235
  - !ruby/object:Gem::Version
138
236
  version: '0'
139
237
  - !ruby/object:Gem::Dependency
140
- name: legion-crypt
238
+ name: rspec
141
239
  requirement: !ruby/object:Gem::Requirement
142
240
  requirements:
143
241
  - - ">="
144
242
  - !ruby/object:Gem::Version
145
243
  version: '0'
146
- type: :runtime
244
+ type: :development
147
245
  prerelease: false
148
246
  version_requirements: !ruby/object:Gem::Requirement
149
247
  requirements:
@@ -151,13 +249,13 @@ dependencies:
151
249
  - !ruby/object:Gem::Version
152
250
  version: '0'
153
251
  - !ruby/object:Gem::Dependency
154
- name: legion-exceptions
252
+ name: rspec_junit_formatter
155
253
  requirement: !ruby/object:Gem::Requirement
156
254
  requirements:
157
255
  - - ">="
158
256
  - !ruby/object:Gem::Version
159
257
  version: '0'
160
- type: :runtime
258
+ type: :development
161
259
  prerelease: false
162
260
  version_requirements: !ruby/object:Gem::Requirement
163
261
  requirements:
@@ -165,13 +263,13 @@ dependencies:
165
263
  - !ruby/object:Gem::Version
166
264
  version: '0'
167
265
  - !ruby/object:Gem::Dependency
168
- name: legion-json
266
+ name: rubocop
169
267
  requirement: !ruby/object:Gem::Requirement
170
268
  requirements:
171
269
  - - ">="
172
270
  - !ruby/object:Gem::Version
173
271
  version: '0'
174
- type: :runtime
272
+ type: :development
175
273
  prerelease: false
176
274
  version_requirements: !ruby/object:Gem::Requirement
177
275
  requirements:
@@ -179,13 +277,13 @@ dependencies:
179
277
  - !ruby/object:Gem::Version
180
278
  version: '0'
181
279
  - !ruby/object:Gem::Dependency
182
- name: legion-logging
280
+ name: rubocop-rake
183
281
  requirement: !ruby/object:Gem::Requirement
184
282
  requirements:
185
283
  - - ">="
186
284
  - !ruby/object:Gem::Version
187
285
  version: '0'
188
- type: :runtime
286
+ type: :development
189
287
  prerelease: false
190
288
  version_requirements: !ruby/object:Gem::Requirement
191
289
  requirements:
@@ -193,13 +291,13 @@ dependencies:
193
291
  - !ruby/object:Gem::Version
194
292
  version: '0'
195
293
  - !ruby/object:Gem::Dependency
196
- name: legion-settings
294
+ name: rubocop-rspec
197
295
  requirement: !ruby/object:Gem::Requirement
198
296
  requirements:
199
297
  - - ">="
200
298
  - !ruby/object:Gem::Version
201
299
  version: '0'
202
- type: :runtime
300
+ type: :development
203
301
  prerelease: false
204
302
  version_requirements: !ruby/object:Gem::Requirement
205
303
  requirements:
@@ -207,13 +305,13 @@ dependencies:
207
305
  - !ruby/object:Gem::Version
208
306
  version: '0'
209
307
  - !ruby/object:Gem::Dependency
210
- name: lex-node
308
+ name: simplecov
211
309
  requirement: !ruby/object:Gem::Requirement
212
310
  requirements:
213
311
  - - ">="
214
312
  - !ruby/object:Gem::Version
215
313
  version: '0'
216
- type: :runtime
314
+ type: :development
217
315
  prerelease: false
218
316
  version_requirements: !ruby/object:Gem::Requirement
219
317
  requirements:
@@ -221,7 +319,7 @@ dependencies:
221
319
  - !ruby/object:Gem::Version
222
320
  version: '0'
223
321
  - !ruby/object:Gem::Dependency
224
- name: bundler
322
+ name: lex-conditioner
225
323
  requirement: !ruby/object:Gem::Requirement
226
324
  requirements:
227
325
  - - ">="
@@ -235,7 +333,7 @@ dependencies:
235
333
  - !ruby/object:Gem::Version
236
334
  version: '0'
237
335
  - !ruby/object:Gem::Dependency
238
- name: codecov
336
+ name: lex-health
239
337
  requirement: !ruby/object:Gem::Requirement
240
338
  requirements:
241
339
  - - ">="
@@ -249,7 +347,7 @@ dependencies:
249
347
  - !ruby/object:Gem::Version
250
348
  version: '0'
251
349
  - !ruby/object:Gem::Dependency
252
- name: rake
350
+ name: lex-http
253
351
  requirement: !ruby/object:Gem::Requirement
254
352
  requirements:
255
353
  - - ">="
@@ -263,7 +361,7 @@ dependencies:
263
361
  - !ruby/object:Gem::Version
264
362
  version: '0'
265
363
  - !ruby/object:Gem::Dependency
266
- name: rspec
364
+ name: lex-lex
267
365
  requirement: !ruby/object:Gem::Requirement
268
366
  requirements:
269
367
  - - ">="
@@ -277,7 +375,7 @@ dependencies:
277
375
  - !ruby/object:Gem::Version
278
376
  version: '0'
279
377
  - !ruby/object:Gem::Dependency
280
- name: rspec_junit_formatter
378
+ name: lex-log
281
379
  requirement: !ruby/object:Gem::Requirement
282
380
  requirements:
283
381
  - - ">="
@@ -291,7 +389,7 @@ dependencies:
291
389
  - !ruby/object:Gem::Version
292
390
  version: '0'
293
391
  - !ruby/object:Gem::Dependency
294
- name: rubocop
392
+ name: lex-scheduler
295
393
  requirement: !ruby/object:Gem::Requirement
296
394
  requirements:
297
395
  - - ">="
@@ -305,7 +403,21 @@ dependencies:
305
403
  - !ruby/object:Gem::Version
306
404
  version: '0'
307
405
  - !ruby/object:Gem::Dependency
308
- name: simplecov
406
+ name: lex-tasker
407
+ requirement: !ruby/object:Gem::Requirement
408
+ requirements:
409
+ - - ">="
410
+ - !ruby/object:Gem::Version
411
+ version: '0'
412
+ type: :development
413
+ prerelease: false
414
+ version_requirements: !ruby/object:Gem::Requirement
415
+ requirements:
416
+ - - ">="
417
+ - !ruby/object:Gem::Version
418
+ version: '0'
419
+ - !ruby/object:Gem::Dependency
420
+ name: lex-transformer
309
421
  requirement: !ruby/object:Gem::Requirement
310
422
  requirements:
311
423
  - - ">="
@@ -321,15 +433,107 @@ dependencies:
321
433
  description: Legion Core runs Legion Framwork
322
434
  email:
323
435
  - matthewdiverson@gmail.com
324
- executables: []
436
+ executables:
437
+ - legion
438
+ - legionio
439
+ - lex_gen
325
440
  extensions: []
326
441
  extra_rdoc_files: []
327
- files: []
442
+ files:
443
+ - ".circleci/config.yml"
444
+ - ".gitignore"
445
+ - ".rspec"
446
+ - ".rubocop.yml"
447
+ - CHANGELOG.md
448
+ - Dockerfile
449
+ - Gemfile
450
+ - LICENSE.txt
451
+ - README.md
452
+ - Rakefile
453
+ - bitbucket-pipelines.yml
454
+ - docker_deploy.rb
455
+ - exe/legion
456
+ - exe/legionio
457
+ - exe/lex_gen
458
+ - legionio.gemspec
459
+ - lib/legion.rb
460
+ - lib/legion/cli.rb
461
+ - lib/legion/cli/chain.rb
462
+ - lib/legion/cli/cohort.rb
463
+ - lib/legion/cli/function.rb
464
+ - lib/legion/cli/lex/actor.rb
465
+ - lib/legion/cli/lex/exchange.rb
466
+ - lib/legion/cli/lex/message.rb
467
+ - lib/legion/cli/lex/queue.rb
468
+ - lib/legion/cli/lex/runner.rb
469
+ - lib/legion/cli/lex/templates/actor.erb
470
+ - lib/legion/cli/lex/templates/actor_spec.erb
471
+ - lib/legion/cli/lex/templates/base/bitbucket.yml.erb
472
+ - lib/legion/cli/lex/templates/base/gemfile.erb
473
+ - lib/legion/cli/lex/templates/base/gemspec.erb
474
+ - lib/legion/cli/lex/templates/base/gitignore.erb
475
+ - lib/legion/cli/lex/templates/base/lex.erb
476
+ - lib/legion/cli/lex/templates/base/lex_spec.erb
477
+ - lib/legion/cli/lex/templates/base/lic.erb
478
+ - lib/legion/cli/lex/templates/base/rakefile.erb
479
+ - lib/legion/cli/lex/templates/base/readme.md.erb
480
+ - lib/legion/cli/lex/templates/base/rubocop.yml.erb
481
+ - lib/legion/cli/lex/templates/base/spec_helper.rb.erb
482
+ - lib/legion/cli/lex/templates/base/version.erb
483
+ - lib/legion/cli/lex/templates/exchange.erb
484
+ - lib/legion/cli/lex/templates/exchange_spec.erb
485
+ - lib/legion/cli/lex/templates/message.erb
486
+ - lib/legion/cli/lex/templates/message_spec.erb
487
+ - lib/legion/cli/lex/templates/queue.erb
488
+ - lib/legion/cli/lex/templates/queue_helper.erb
489
+ - lib/legion/cli/lex/templates/queue_spec.erb
490
+ - lib/legion/cli/lex/templates/runner.erb
491
+ - lib/legion/cli/lex/templates/runner_spec.erb
492
+ - lib/legion/cli/relationship.rb
493
+ - lib/legion/cli/task.rb
494
+ - lib/legion/cli/trigger.rb
495
+ - lib/legion/cli/version.rb
496
+ - lib/legion/extensions.rb
497
+ - lib/legion/extensions/actors/base.rb
498
+ - lib/legion/extensions/actors/every.rb
499
+ - lib/legion/extensions/actors/loop.rb
500
+ - lib/legion/extensions/actors/nothing.rb
501
+ - lib/legion/extensions/actors/once.rb
502
+ - lib/legion/extensions/actors/poll.rb
503
+ - lib/legion/extensions/actors/subscription.rb
504
+ - lib/legion/extensions/builders/actors.rb
505
+ - lib/legion/extensions/builders/base.rb
506
+ - lib/legion/extensions/builders/helpers.rb
507
+ - lib/legion/extensions/builders/runners.rb
508
+ - lib/legion/extensions/core.rb
509
+ - lib/legion/extensions/data.rb
510
+ - lib/legion/extensions/data/migrator.rb
511
+ - lib/legion/extensions/data/model.rb
512
+ - lib/legion/extensions/helpers/base.rb
513
+ - lib/legion/extensions/helpers/cache.rb
514
+ - lib/legion/extensions/helpers/core.rb
515
+ - lib/legion/extensions/helpers/data.rb
516
+ - lib/legion/extensions/helpers/lex.rb
517
+ - lib/legion/extensions/helpers/logger.rb
518
+ - lib/legion/extensions/helpers/task.rb
519
+ - lib/legion/extensions/helpers/transport.rb
520
+ - lib/legion/extensions/transport.rb
521
+ - lib/legion/lex.rb
522
+ - lib/legion/process.rb
523
+ - lib/legion/runner.rb
524
+ - lib/legion/runner/log.rb
525
+ - lib/legion/runner/status.rb
526
+ - lib/legion/service.rb
527
+ - lib/legion/supervision.rb
528
+ - lib/legion/version.rb
328
529
  homepage: https://bitbucket.org/legion-io/legion/
329
530
  licenses:
330
531
  - MIT
331
- metadata: {}
332
- post_install_message:
532
+ metadata:
533
+ source_code_uri: https://bitbucket.org/legion-io/legion/src/master/
534
+ documentation_uri: https://legionio.atlassian.net/wiki/spaces/LEGION/overview
535
+ bug_tracker_uri: https://legionio.atlassian.net/browse/LEG
536
+ post_install_message:
333
537
  rdoc_options: []
334
538
  require_paths:
335
539
  - lib
@@ -344,8 +548,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
344
548
  - !ruby/object:Gem::Version
345
549
  version: '0'
346
550
  requirements: []
347
- rubygems_version: 3.1.2
348
- signing_key:
551
+ rubygems_version: 3.1.4
552
+ signing_key:
349
553
  specification_version: 4
350
554
  summary: Legion Core Software to string it all together
351
555
  test_files: []