legionio 0.4.1 → 1.2.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/rspec.yml +45 -0
- data/.github/workflows/rubocop.yml +28 -0
- data/.github/workflows/sourcehawk-scan.yml +20 -0
- data/.gitignore +0 -0
- data/.rubocop.yml +2 -6
- data/CHANGELOG.md +5 -34
- data/CODE_OF_CONDUCT.md +75 -0
- data/CONTRIBUTING.md +55 -0
- data/Dockerfile +2 -2
- data/Gemfile +9 -0
- data/INDIVIDUAL_CONTRIBUTOR_LICENSE.md +30 -0
- data/LICENSE +201 -0
- data/NOTICE.txt +9 -0
- data/README.md +13 -12
- data/SECURITY.md +9 -0
- data/attribution.txt +1 -0
- data/legionio.gemspec +20 -31
- data/lib/legion/cli/chain.rb +0 -0
- data/lib/legion/cli/cohort.rb +0 -0
- data/lib/legion/cli/function.rb +0 -0
- data/lib/legion/cli/lex/actor.rb +0 -0
- data/lib/legion/cli/lex/exchange.rb +0 -0
- data/lib/legion/cli/lex/message.rb +0 -0
- data/lib/legion/cli/lex/queue.rb +0 -0
- data/lib/legion/cli/lex/runner.rb +0 -0
- data/lib/legion/cli/lex/templates/actor.erb +0 -0
- data/lib/legion/cli/lex/templates/actor_spec.erb +0 -0
- data/lib/legion/cli/lex/templates/base/bitbucket.yml.erb +0 -0
- data/lib/legion/cli/lex/templates/base/dockerfile.erb +5 -0
- data/lib/legion/cli/lex/templates/base/gemfile.erb +8 -1
- data/lib/legion/cli/lex/templates/base/gemspec.erb +10 -12
- data/lib/legion/cli/lex/templates/base/github_rspec.yml.erb +23 -0
- data/lib/legion/cli/lex/templates/base/github_rubocop.yml.erb +28 -0
- data/lib/legion/cli/lex/templates/base/gitignore.erb +0 -0
- data/lib/legion/cli/lex/templates/base/lex.erb +0 -0
- data/lib/legion/cli/lex/templates/base/lex_spec.erb +0 -0
- data/lib/legion/cli/lex/templates/base/lic.erb +1 -1
- data/lib/legion/cli/lex/templates/base/readme.md.erb +0 -0
- data/lib/legion/cli/lex/templates/base/rubocop.yml.erb +1 -0
- data/lib/legion/cli/lex/templates/base/spec_helper.rb.erb +0 -0
- data/lib/legion/cli/lex/templates/base/version.erb +1 -1
- data/lib/legion/cli/lex/templates/exchange.erb +0 -0
- data/lib/legion/cli/lex/templates/exchange_spec.erb +0 -0
- data/lib/legion/cli/lex/templates/message.erb +0 -0
- data/lib/legion/cli/lex/templates/message_spec.erb +0 -0
- data/lib/legion/cli/lex/templates/queue.erb +0 -0
- data/lib/legion/cli/lex/templates/queue_helper.erb +0 -0
- data/lib/legion/cli/lex/templates/queue_spec.erb +0 -0
- data/lib/legion/cli/lex/templates/runner.erb +0 -0
- data/lib/legion/cli/lex/templates/runner_spec.erb +0 -0
- data/lib/legion/cli/relationship.rb +0 -0
- data/lib/legion/cli/task.rb +0 -0
- data/lib/legion/cli/trigger.rb +2 -2
- data/lib/legion/cli/version.rb +0 -0
- data/lib/legion/cli.rb +0 -0
- data/lib/legion/extensions/actors/base.rb +0 -0
- data/lib/legion/extensions/actors/defaults.rb +28 -0
- data/lib/legion/extensions/actors/every.rb +0 -0
- data/lib/legion/extensions/actors/loop.rb +0 -0
- data/lib/legion/extensions/actors/nothing.rb +0 -0
- data/lib/legion/extensions/actors/once.rb +4 -4
- data/lib/legion/extensions/actors/poll.rb +0 -0
- data/lib/legion/extensions/actors/subscription.rb +0 -0
- data/lib/legion/extensions/builders/actors.rb +0 -0
- data/lib/legion/extensions/builders/base.rb +1 -1
- data/lib/legion/extensions/builders/helpers.rb +0 -0
- data/lib/legion/extensions/builders/runners.rb +4 -0
- data/lib/legion/extensions/core.rb +1 -1
- data/lib/legion/extensions/data/migrator.rb +7 -1
- data/lib/legion/extensions/data/model.rb +0 -0
- data/lib/legion/extensions/data.rb +4 -1
- data/lib/legion/extensions/helpers/base.rb +0 -0
- data/lib/legion/extensions/helpers/cache.rb +0 -0
- data/lib/legion/extensions/helpers/core.rb +0 -0
- data/lib/legion/extensions/helpers/data.rb +0 -0
- data/lib/legion/extensions/helpers/lex.rb +0 -0
- data/lib/legion/extensions/helpers/logger.rb +0 -0
- data/lib/legion/extensions/helpers/task.rb +2 -2
- data/lib/legion/extensions/helpers/transport.rb +0 -0
- data/lib/legion/extensions/transport.rb +1 -1
- data/lib/legion/extensions.rb +11 -1
- data/lib/legion/lex.rb +26 -3
- data/lib/legion/runner/log.rb +0 -0
- data/lib/legion/runner/status.rb +0 -0
- data/lib/legion/runner.rb +8 -6
- data/lib/legion/service.rb +5 -5
- data/lib/legion/version.rb +1 -1
- data/lib/legion.rb +0 -1
- data/sourcehawk.yml +4 -0
- metadata +42 -267
- data/.circleci/config.yml +0 -136
- data/.rspec +0 -2
- data/LICENSE.txt +0 -21
- data/Rakefile +0 -32
- data/bitbucket-pipelines.yml +0 -19
- data/lib/legion/cli/lex/templates/base/rakefile.erb +0 -6
data/legionio.gemspec
CHANGED
@@ -10,22 +10,29 @@ Gem::Specification.new do |spec|
|
|
10
10
|
spec.authors = ['Esity']
|
11
11
|
spec.email = ['matthewdiverson@gmail.com']
|
12
12
|
|
13
|
-
spec.summary = '
|
14
|
-
spec.description = '
|
15
|
-
spec.homepage = 'https://
|
16
|
-
spec.
|
17
|
-
spec.
|
18
|
-
spec.metadata['bug_tracker_uri'] = 'https://legionio.atlassian.net/browse/LEG'
|
19
|
-
spec.license = 'MIT'
|
13
|
+
spec.summary = 'The primary gem to run the LegionIO Framework'
|
14
|
+
spec.description = 'LegionIO is an extensible framework for running, scheduling and building relationships of tasks in a concurrent matter'
|
15
|
+
spec.homepage = 'https://github.com/Optum/LegionIO'
|
16
|
+
spec.license = 'Apache-2.0'
|
17
|
+
spec.require_paths = ['lib']
|
20
18
|
spec.required_ruby_version = '>= 2.5.0'
|
21
19
|
|
20
|
+
spec.metadata = {
|
21
|
+
'bug_tracker_uri' => 'https://github.com/Optum/LegionIO/issues',
|
22
|
+
'changelog_uri' => 'https://github.com/Optum/LegionIO/src/main/CHANGELOG.md',
|
23
|
+
'documentation_uri' => 'https://github.com/Optum/LegionIO',
|
24
|
+
'homepage_uri' => 'https://github.com/Optum/LegionIO',
|
25
|
+
'source_code_uri' => 'https://github.com/Optum/LegionIO',
|
26
|
+
'wiki_uri' => 'https://github.com/Optum/LegionIO'
|
27
|
+
}
|
28
|
+
|
22
29
|
spec.files = `git ls-files -z`.split("\x0").reject do |f|
|
23
30
|
f.match(%r{^(test|spec|features)/})
|
24
31
|
end
|
32
|
+
spec.test_files = spec.files.select { |p| p =~ %r{^test/.*_test.rb} }
|
25
33
|
|
26
34
|
spec.bindir = 'exe'
|
27
35
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
28
|
-
spec.require_paths = ['lib']
|
29
36
|
|
30
37
|
spec.add_dependency 'concurrent-ruby', '>= 1.1.7'
|
31
38
|
spec.add_dependency 'concurrent-ruby-ext', '>= 1.1.7'
|
@@ -33,32 +40,14 @@ Gem::Specification.new do |spec|
|
|
33
40
|
spec.add_dependency 'oj', '>= 3.10'
|
34
41
|
spec.add_dependency 'thor', '>= 1'
|
35
42
|
|
36
|
-
spec.add_dependency 'legion-cache'
|
43
|
+
spec.add_dependency 'legion-cache', '>= 0.2.0'
|
37
44
|
spec.add_dependency 'legion-crypt', '>= 0.2.0'
|
38
|
-
spec.add_dependency 'legion-
|
39
|
-
spec.add_dependency 'legion-
|
40
|
-
spec.add_dependency 'legion-
|
41
|
-
spec.add_dependency 'legion-
|
42
|
-
spec.add_dependency 'legion-transport', '>= 1.1.8'
|
45
|
+
spec.add_dependency 'legion-json', '>= 0.2.0'
|
46
|
+
spec.add_dependency 'legion-logging', '>= 0.2.0'
|
47
|
+
spec.add_dependency 'legion-settings', '>= 0.2.0'
|
48
|
+
spec.add_dependency 'legion-transport', '>= 1.1.9'
|
43
49
|
|
44
50
|
spec.add_dependency 'lex-node'
|
45
51
|
|
46
|
-
spec.add_development_dependency 'codecov'
|
47
52
|
spec.add_development_dependency 'legion-data'
|
48
|
-
spec.add_development_dependency 'rake'
|
49
|
-
spec.add_development_dependency 'rspec'
|
50
|
-
spec.add_development_dependency 'rspec_junit_formatter'
|
51
|
-
spec.add_development_dependency 'rubocop'
|
52
|
-
spec.add_development_dependency 'rubocop-rake'
|
53
|
-
spec.add_development_dependency 'rubocop-rspec'
|
54
|
-
spec.add_development_dependency 'simplecov'
|
55
|
-
|
56
|
-
spec.add_development_dependency 'lex-conditioner'
|
57
|
-
spec.add_development_dependency 'lex-health'
|
58
|
-
spec.add_development_dependency 'lex-http'
|
59
|
-
spec.add_development_dependency 'lex-lex'
|
60
|
-
spec.add_development_dependency 'lex-log'
|
61
|
-
spec.add_development_dependency 'lex-scheduler'
|
62
|
-
spec.add_development_dependency 'lex-tasker'
|
63
|
-
spec.add_development_dependency 'lex-transformer'
|
64
53
|
end
|
data/lib/legion/cli/chain.rb
CHANGED
File without changes
|
data/lib/legion/cli/cohort.rb
CHANGED
File without changes
|
data/lib/legion/cli/function.rb
CHANGED
File without changes
|
data/lib/legion/cli/lex/actor.rb
CHANGED
File without changes
|
File without changes
|
File without changes
|
data/lib/legion/cli/lex/queue.rb
CHANGED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -3,24 +3,22 @@ require_relative 'lib/legion/extensions/<%= config[:lex] %>/version'
|
|
3
3
|
Gem::Specification.new do |spec|
|
4
4
|
spec.name = 'lex-<%= config[:lex] %>'
|
5
5
|
spec.version = Legion::Extensions::<%= config[:class_name] %>::VERSION
|
6
|
-
spec.authors = [
|
7
|
-
spec.email = [
|
6
|
+
spec.authors = []
|
7
|
+
spec.email = []
|
8
8
|
|
9
9
|
spec.summary = 'LEX::<%= config[:class_name] %>'
|
10
10
|
spec.description = 'Connects Legion to <%= config[:class_name] %>'
|
11
|
-
spec.homepage = 'https://
|
11
|
+
spec.homepage = 'https://github.com/LegionIO/lex-<%= config[:lex] %>'
|
12
12
|
spec.license = 'MIT'
|
13
13
|
spec.required_ruby_version = Gem::Requirement.new('>= 2.5.0')
|
14
14
|
|
15
15
|
spec.metadata['homepage_uri'] = spec.homepage
|
16
|
-
spec.metadata['source_code_uri'] = 'https://
|
17
|
-
spec.metadata['documentation_uri'] = 'https://
|
18
|
-
spec.metadata['changelog_uri'] = 'https://
|
19
|
-
spec.metadata['bug_tracker_uri'] = 'https://
|
16
|
+
spec.metadata['source_code_uri'] = 'https://github.com/LegionIO/lex-<%= config[:lex] %>/src'
|
17
|
+
spec.metadata['documentation_uri'] = 'https://github.com/LegionIO/lex-<%= config[:lex] %>/wiki'
|
18
|
+
spec.metadata['changelog_uri'] = 'https://github.com/LegionIO/lex-<%= config[:lex] %>'
|
19
|
+
spec.metadata['bug_tracker_uri'] = 'https://github.com/LegionIO/lex-<%= config[:lex] %>'
|
20
|
+
spec.files = Dir.chdir(File.expand_path(__dir__)) do
|
21
|
+
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
22
|
+
end
|
20
23
|
spec.require_paths = ['lib']
|
21
|
-
|
22
|
-
spec.add_development_dependency 'rake'
|
23
|
-
spec.add_development_dependency 'rspec'
|
24
|
-
spec.add_development_dependency 'rubocop'
|
25
|
-
spec.add_development_dependency 'simplecov'
|
26
24
|
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
name: RSpec
|
2
|
+
on: [push, pull_request]
|
3
|
+
|
4
|
+
jobs:
|
5
|
+
rspec:
|
6
|
+
strategy:
|
7
|
+
fail-fast: false
|
8
|
+
matrix:
|
9
|
+
os: [ubuntu-latest]
|
10
|
+
ruby: [2.7]
|
11
|
+
runs-on: ${{ matrix.os }}
|
12
|
+
steps:
|
13
|
+
- uses: actions/checkout@v2
|
14
|
+
- uses: ruby/setup-ruby@v1
|
15
|
+
with:
|
16
|
+
ruby-version: ${{ matrix.ruby }}
|
17
|
+
bundler-cache: true
|
18
|
+
- name: RSpec run
|
19
|
+
run: |
|
20
|
+
bash -c "
|
21
|
+
bundle exec rspec
|
22
|
+
[[ $? -ne 2 ]]
|
23
|
+
"
|
@@ -0,0 +1,28 @@
|
|
1
|
+
name: Rubocop
|
2
|
+
on: [push, pull_request]
|
3
|
+
jobs:
|
4
|
+
rubocop:
|
5
|
+
strategy:
|
6
|
+
fail-fast: false
|
7
|
+
matrix:
|
8
|
+
os: [ubuntu-latest]
|
9
|
+
ruby: [2.7]
|
10
|
+
runs-on: ${{ matrix.os }}
|
11
|
+
steps:
|
12
|
+
- uses: actions/checkout@v2
|
13
|
+
- uses: ruby/setup-ruby@v1
|
14
|
+
with:
|
15
|
+
ruby-version: ${{ matrix.ruby }}
|
16
|
+
bundler-cache: true
|
17
|
+
- name: Install Rubocop
|
18
|
+
run: gem install rubocop code-scanning-rubocop
|
19
|
+
- name: Rubocop run --no-doc
|
20
|
+
run: |
|
21
|
+
bash -c "
|
22
|
+
rubocop --require code_scanning --format CodeScanning::SarifFormatter -o rubocop.sarif
|
23
|
+
[[ $? -ne 2 ]]
|
24
|
+
"
|
25
|
+
- name: Upload Sarif output
|
26
|
+
uses: github/codeql-action/upload-sarif@v1
|
27
|
+
with:
|
28
|
+
sarif_file: rubocop.sarif
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
data/lib/legion/cli/task.rb
CHANGED
File without changes
|
data/lib/legion/cli/trigger.rb
CHANGED
@@ -65,7 +65,7 @@ module Legion
|
|
65
65
|
|
66
66
|
status = options[:delay].zero? ? 'task.queued' : 'task.delayed'
|
67
67
|
task = generate_task_id(function_id: trigger_function.values[:id], status: status, runner_id: trigger_runner.values[:id], args: payload,
|
68
|
-
delay: options[:delay])
|
68
|
+
delay: options[:delay])
|
69
69
|
|
70
70
|
unless options[:delay].zero?
|
71
71
|
say "Task: #{task[:task_id]} is queued and will be run in #{options[:delay]}s"
|
@@ -74,7 +74,7 @@ delay: options[:delay])
|
|
74
74
|
|
75
75
|
routing_key = "#{trigger_extension.values[:exchange]}.#{trigger_runner.values[:queue]}.#{trigger_function.values[:name]}"
|
76
76
|
exchange = Legion::Transport::Messages::Dynamic.new(function: trigger_function.values[:name], function_id: trigger_function.values[:id],
|
77
|
-
routing_key: routing_key, args: payload)
|
77
|
+
routing_key: routing_key, args: payload)
|
78
78
|
exchange.options[:task_id] = task[:task_id]
|
79
79
|
exchange.publish if options[:delay].zero?
|
80
80
|
|
data/lib/legion/cli/version.rb
CHANGED
File without changes
|
data/lib/legion/cli.rb
CHANGED
File without changes
|
File without changes
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module Legion
|
2
|
+
module Extensions
|
3
|
+
module Actors
|
4
|
+
module Defaults
|
5
|
+
def use_runner?
|
6
|
+
true
|
7
|
+
end
|
8
|
+
# module_function :use_runner?
|
9
|
+
|
10
|
+
def check_subtask?
|
11
|
+
true
|
12
|
+
end
|
13
|
+
# module_function :check_subtask?
|
14
|
+
|
15
|
+
def generate_task?
|
16
|
+
false
|
17
|
+
end
|
18
|
+
# module_function :generate_task?
|
19
|
+
|
20
|
+
def enabled?
|
21
|
+
true
|
22
|
+
end
|
23
|
+
# module_function :enabled?
|
24
|
+
# extend self
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
File without changes
|
File without changes
|
File without changes
|
@@ -7,18 +7,18 @@ module Legion
|
|
7
7
|
include Legion::Extensions::Actors::Base
|
8
8
|
|
9
9
|
def initialize
|
10
|
-
return
|
10
|
+
return unless enabled?
|
11
11
|
|
12
12
|
if respond_to? :functions
|
13
13
|
functions.each do
|
14
14
|
function
|
15
15
|
@task = Concurrent::ScheduledTask.execute(delay) do
|
16
|
-
use_runner ? runner : manual
|
16
|
+
use_runner? ? runner : manual
|
17
17
|
end
|
18
18
|
end
|
19
19
|
else
|
20
20
|
@task = Concurrent::ScheduledTask.execute(delay) do
|
21
|
-
use_runner ? runner : manual
|
21
|
+
use_runner? ? runner : manual
|
22
22
|
end
|
23
23
|
end
|
24
24
|
rescue StandardError => e
|
@@ -30,7 +30,7 @@ module Legion
|
|
30
30
|
end
|
31
31
|
|
32
32
|
def cancel
|
33
|
-
return
|
33
|
+
return unless enabled?
|
34
34
|
|
35
35
|
@task.cancel unless @task.cancelled?
|
36
36
|
end
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -31,6 +31,8 @@ module Legion
|
|
31
31
|
class_methods: {}
|
32
32
|
}
|
33
33
|
|
34
|
+
@runners[runner_name.to_sym][:scheduled_tasks] = loaded_runner.scheduled_tasks if loaded_runner.method_defined? :scheduled_tasks
|
35
|
+
|
34
36
|
if settings.key?(:runners) && settings[:runners].key?(runner_name.to_sym)
|
35
37
|
@runners[runner_name.to_sym][:desc] = settings[:runners][runner_name.to_sym][:desc]
|
36
38
|
end
|
@@ -42,6 +44,8 @@ module Legion
|
|
42
44
|
end
|
43
45
|
|
44
46
|
loaded_runner.methods(false).each do |runner_method|
|
47
|
+
next if %i[scheduled_tasks runner_description].include? runner_method
|
48
|
+
|
45
49
|
@runners[runner_name.to_sym][:class_methods][runner_method] = {
|
46
50
|
args: loaded_runner.method(runner_method).parameters
|
47
51
|
}
|
@@ -84,7 +84,7 @@ module Legion
|
|
84
84
|
end
|
85
85
|
end
|
86
86
|
|
87
|
-
def build_settings
|
87
|
+
def build_settings
|
88
88
|
if Legion::Settings[:extensions].key?(lex_name.to_sym)
|
89
89
|
Legion::Settings[:default_extension_settings].each do |key, value|
|
90
90
|
Legion::Settings[:extensions][lex_name.to_sym][key.to_sym] = if Legion::Settings[:extensions][lex_name.to_sym].key?(key.to_sym)
|
@@ -4,9 +4,11 @@ module Legion
|
|
4
4
|
module Extensions
|
5
5
|
module Data
|
6
6
|
class Migrator < Sequel::IntegerMigrator
|
7
|
-
def initialize(path, extension, **)
|
7
|
+
def initialize(path, extension, lex_name, **)
|
8
8
|
@path = path
|
9
9
|
@extension = extension
|
10
|
+
@lex_name = lex_name
|
11
|
+
schema_dataset
|
10
12
|
super(Legion::Data::Connection.sequel, path)
|
11
13
|
end
|
12
14
|
|
@@ -19,6 +21,10 @@ module Legion
|
|
19
21
|
end
|
20
22
|
|
21
23
|
def schema_dataset
|
24
|
+
dataset = Legion::Data::Connection.sequel.from(default_schema_table).where(namespace: @extension)
|
25
|
+
return dataset if dataset.count.positive?
|
26
|
+
|
27
|
+
Legion::Data::Model::Extension.insert(active: 1, namespace: @extension, name: @lex_name)
|
22
28
|
Legion::Data::Connection.sequel.from(default_schema_table).where(namespace: @extension)
|
23
29
|
end
|
24
30
|
alias ds schema_dataset
|
File without changes
|
@@ -8,6 +8,7 @@ module Legion
|
|
8
8
|
include Legion::Extensions::Helpers::Logger
|
9
9
|
|
10
10
|
def build
|
11
|
+
Legion::Logging.fatal 'testing inside run'
|
11
12
|
@models = []
|
12
13
|
@migrations = []
|
13
14
|
if Dir[File.expand_path("#{data_path}/migrations/*.rb")].count.positive?
|
@@ -43,10 +44,12 @@ module Legion
|
|
43
44
|
end
|
44
45
|
|
45
46
|
def migrate_class
|
46
|
-
@migrate_class ||= Legion::Extensions::Data::Migrator.new(migrations_path, lex_class.to_s)
|
47
|
+
@migrate_class ||= Legion::Extensions::Data::Migrator.new(migrations_path, lex_class.to_s, lex_name)
|
47
48
|
end
|
48
49
|
|
49
50
|
def run
|
51
|
+
Legion::Logging.fatal 'testing inside run'
|
52
|
+
|
50
53
|
return true if migrate_class.is_current?
|
51
54
|
|
52
55
|
log.debug('Running LEX schema migrator')
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -20,11 +20,11 @@ module Legion
|
|
20
20
|
Legion::Transport::Messages::TaskLog.new(task_id: task_id, runner_class: runner_class, function: function, entry: payload).publish
|
21
21
|
end
|
22
22
|
|
23
|
-
def task_update(task_id, status, **opts)
|
23
|
+
def task_update(task_id, status, use_database: true, **opts)
|
24
24
|
return if task_id.nil? || status.nil?
|
25
25
|
|
26
26
|
begin
|
27
|
-
if Legion::Settings[:data][:connected]
|
27
|
+
if Legion::Settings[:data][:connected] && use_database
|
28
28
|
task = Legion::Data::Model::Task[task_id]
|
29
29
|
task.update(status: status)
|
30
30
|
return true
|
File without changes
|
@@ -34,7 +34,7 @@ module Legion
|
|
34
34
|
end
|
35
35
|
|
36
36
|
def require_transport_items
|
37
|
-
{
|
37
|
+
{ exchanges: @exchanges, queues: @queues, consumers: @consumers, messages: @messages }.each do |item, obj|
|
38
38
|
Dir[File.expand_path("#{transport_path}/#{item}/*.rb")].sort.each do |file|
|
39
39
|
require file
|
40
40
|
file_name = file.to_s.split('/').last.split('.').first
|
data/lib/legion/extensions.rb
CHANGED
@@ -59,10 +59,15 @@ module Legion
|
|
59
59
|
Legion::Logging.info "#{@extensions.count} extensions loaded with subscription:#{@subscription_tasks.count},every:#{@timer_tasks.count},poll:#{@poll_tasks.count},once:#{@once_tasks.count},loop:#{@loop_tasks.count}"
|
60
60
|
end
|
61
61
|
|
62
|
-
def load_extension(extension, values)
|
62
|
+
def load_extension(extension, values) # rubocop:disable Metrics/PerceivedComplexity, Metrics/CyclomaticComplexity, Metrics/AbcSize
|
63
63
|
return unless gem_load(values[:gem_name], extension)
|
64
64
|
|
65
65
|
extension = Kernel.const_get(values[:extension_class])
|
66
|
+
extension.extend Legion::Extensions::Core unless extension.singleton_class.included_modules.include? Legion::Extensions::Core
|
67
|
+
|
68
|
+
min_version = Legion::Settings[:extensions][values[:extension_name]][:min_version] || nil
|
69
|
+
Legion::Logging.fatal values if min_version.is_a?(String) && Gem::Version.new(values[:version]) >= Gem::Version.new(min_version)
|
70
|
+
|
66
71
|
if extension.data_required? && Legion::Settings[:data][:connected] == false
|
67
72
|
Legion::Logging.warn "#{values[:extension_name]} requires Legion::Data but isn't enabled, skipping"
|
68
73
|
return false
|
@@ -73,6 +78,11 @@ module Legion
|
|
73
78
|
return false
|
74
79
|
end
|
75
80
|
|
81
|
+
if extension.crypt_required? && Legion::Settings[:crypt][:cs].nil?
|
82
|
+
Legion::Logging.warn "#{values[:extension_name]} requires Legion::Crypt but isn't ready, skipping"
|
83
|
+
return false
|
84
|
+
end
|
85
|
+
|
76
86
|
if extension.vault_required? && Legion::Settings[:crypt][:vault][:connected] == false
|
77
87
|
Legion::Logging.warn "#{values[:extension_name]} requires Legion::Crypt::Vault but isn't enabled, skipping"
|
78
88
|
return false
|
data/lib/legion/lex.rb
CHANGED
@@ -63,16 +63,17 @@ module Legion
|
|
63
63
|
template('cli/lex/templates/base/gemspec.erb', "#{filename}/#{filename}.gemspec", vars)
|
64
64
|
template('cli/lex/templates/base/gemfile.erb', "#{filename}/Gemfile", vars)
|
65
65
|
template('cli/lex/templates/base/gitignore.erb', "#{filename}/.gitignore", vars)
|
66
|
-
template('cli/lex/templates/base/lic.erb', "#{filename}/LICENSE
|
67
|
-
template('cli/lex/templates/base/rakefile.erb', "#{filename}/Rakefile", vars)
|
66
|
+
template('cli/lex/templates/base/lic.erb', "#{filename}/LICENSE", vars)
|
68
67
|
template('cli/lex/templates/base/rubocop.yml.erb', "#{filename}/.rubocop.yml", vars)
|
69
68
|
template('cli/lex/templates/base/readme.md.erb', "#{filename}/README.md", **vars)
|
70
69
|
template('cli/lex/templates/base/lex.erb', "#{filename}/lib/legion/extensions/#{name}.rb", vars)
|
71
70
|
template('cli/lex/templates/base/version.erb', "#{filename}/lib/legion/extensions/#{name}/version.rb", vars)
|
72
|
-
template('cli/lex/templates/base/bitbucket.yml.erb', "#{filename}/bitbucket-pipelines.yml", vars) if options[:pipeline]
|
73
71
|
template('cli/lex/templates/base/spec_helper.rb.erb', "#{filename}/spec/spec_helper.rb", vars)
|
74
72
|
template('cli/lex/templates/base/lex_spec.erb', "#{filename}/spec/legion/#{name}_spec.rb", vars)
|
75
73
|
|
74
|
+
template('cli/lex/templates/base/github_rspec.yml.erb', "#{filename}/.github/workflows/rspec.yml", vars)
|
75
|
+
template('cli/lex/templates/base/github_rubocop.yml.erb', "#{filename}/.github/workflows/rubocop.yml", vars)
|
76
|
+
|
76
77
|
return if !options[:git_init] && !options[:bundle_install]
|
77
78
|
|
78
79
|
run("cd lex_gen-#{filename}")
|
@@ -84,6 +85,28 @@ module Legion
|
|
84
85
|
|
85
86
|
run('bundle update') if options[:bundle_install]
|
86
87
|
end
|
88
|
+
|
89
|
+
method_option github: true
|
90
|
+
method_option rubygems: true
|
91
|
+
method_option docker: true
|
92
|
+
desc 'deploy a lex to multiple places', 'deploys a lex'
|
93
|
+
def deploy
|
94
|
+
system 'gem build'
|
95
|
+
if options[:github_gem]
|
96
|
+
system "gh release create v#{version} '#{long_name}-#{version}.gem'"
|
97
|
+
system 'gh release create v1.1.1 lex-node-1.1.1.gem -n v1.1.1 -t v1.1.1'
|
98
|
+
system "gem push --key github --host https://rubygems.pkg.github.com/LegionIO"
|
99
|
+
end
|
100
|
+
|
101
|
+
if options[:rubygems]
|
102
|
+
system "gem push .gem"
|
103
|
+
end
|
104
|
+
|
105
|
+
if options[:docker]
|
106
|
+
|
107
|
+
end
|
108
|
+
|
109
|
+
end
|
87
110
|
end
|
88
111
|
end
|
89
112
|
end
|
data/lib/legion/runner/log.rb
CHANGED
File without changes
|
data/lib/legion/runner/status.rb
CHANGED
File without changes
|