legionio 0.3.2 → 0.3.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (90) hide show
  1. checksums.yaml +4 -4
  2. metadata +4 -94
  3. data/.circleci/config.yml +0 -119
  4. data/.gitignore +0 -14
  5. data/.rspec +0 -2
  6. data/.rubocop.yml +0 -89
  7. data/CHANGELOG.md +0 -16
  8. data/Gemfile +0 -3
  9. data/LICENSE.txt +0 -21
  10. data/README.md +0 -49
  11. data/Rakefile +0 -38
  12. data/bin/console +0 -16
  13. data/bin/legion +0 -49
  14. data/bin/setup +0 -8
  15. data/bin/test +0 -32
  16. data/bitbucket-pipelines.yml +0 -55
  17. data/docs/Makefile +0 -20
  18. data/docs/_build/doctrees/environment.pickle +0 -0
  19. data/docs/_build/doctrees/index.doctree +0 -0
  20. data/docs/_build/doctrees/overview.doctree +0 -0
  21. data/docs/_build/html/.buildinfo +0 -4
  22. data/docs/_build/html/_sources/index.rst.txt +0 -28
  23. data/docs/_build/html/_sources/overview.rst.txt +0 -0
  24. data/docs/_build/html/_static/alabaster.css +0 -701
  25. data/docs/_build/html/_static/basic.css +0 -855
  26. data/docs/_build/html/_static/custom.css +0 -1
  27. data/docs/_build/html/_static/doctools.js +0 -315
  28. data/docs/_build/html/_static/documentation_options.js +0 -12
  29. data/docs/_build/html/_static/file.png +0 -0
  30. data/docs/_build/html/_static/jquery-3.5.1.js +0 -10872
  31. data/docs/_build/html/_static/jquery.js +0 -2
  32. data/docs/_build/html/_static/language_data.js +0 -297
  33. data/docs/_build/html/_static/minus.png +0 -0
  34. data/docs/_build/html/_static/plus.png +0 -0
  35. data/docs/_build/html/_static/pygments.css +0 -82
  36. data/docs/_build/html/_static/searchtools.js +0 -514
  37. data/docs/_build/html/_static/underscore-1.3.1.js +0 -999
  38. data/docs/_build/html/_static/underscore.js +0 -31
  39. data/docs/_build/html/genindex.html +0 -101
  40. data/docs/_build/html/index.html +0 -117
  41. data/docs/_build/html/objects.inv +0 -6
  42. data/docs/_build/html/overview.html +0 -98
  43. data/docs/_build/html/search.html +0 -110
  44. data/docs/_build/html/searchindex.js +0 -1
  45. data/docs/conf.py +0 -54
  46. data/docs/index.rst +0 -28
  47. data/docs/make.bat +0 -35
  48. data/exe/legion +0 -52
  49. data/legion.gemspec +0 -59
  50. data/lib/legion.rb +0 -21
  51. data/lib/legion/exceptions/handled_task.rb +0 -6
  52. data/lib/legion/exceptions/invalidjson.rb +0 -5
  53. data/lib/legion/exceptions/missingargument.rb +0 -6
  54. data/lib/legion/exceptions/wrongtype.rb +0 -10
  55. data/lib/legion/exceptions/wrongtypes/array.rb +0 -8
  56. data/lib/legion/exceptions/wrongtypes/hash.rb +0 -8
  57. data/lib/legion/exceptions/wrongtypes/integer.rb +0 -8
  58. data/lib/legion/exceptions/wrongtypes/string.rb +0 -8
  59. data/lib/legion/extensions.rb +0 -185
  60. data/lib/legion/extensions/actors/base.rb +0 -49
  61. data/lib/legion/extensions/actors/every.rb +0 -48
  62. data/lib/legion/extensions/actors/loop.rb +0 -32
  63. data/lib/legion/extensions/actors/nothing.rb +0 -15
  64. data/lib/legion/extensions/actors/once.rb +0 -40
  65. data/lib/legion/extensions/actors/poll.rb +0 -88
  66. data/lib/legion/extensions/actors/subscription.rb +0 -138
  67. data/lib/legion/extensions/builders/actors.rb +0 -61
  68. data/lib/legion/extensions/builders/base.rb +0 -36
  69. data/lib/legion/extensions/builders/helpers.rb +0 -24
  70. data/lib/legion/extensions/builders/runners.rb +0 -58
  71. data/lib/legion/extensions/core.rb +0 -126
  72. data/lib/legion/extensions/data.rb +0 -58
  73. data/lib/legion/extensions/data/migrator.rb +0 -28
  74. data/lib/legion/extensions/data/model.rb +0 -8
  75. data/lib/legion/extensions/helpers/base.rb +0 -82
  76. data/lib/legion/extensions/helpers/cache.rb +0 -23
  77. data/lib/legion/extensions/helpers/core.rb +0 -41
  78. data/lib/legion/extensions/helpers/data.rb +0 -23
  79. data/lib/legion/extensions/helpers/lex.rb +0 -48
  80. data/lib/legion/extensions/helpers/logger.rb +0 -47
  81. data/lib/legion/extensions/helpers/task.rb +0 -60
  82. data/lib/legion/extensions/helpers/transport.rb +0 -44
  83. data/lib/legion/extensions/transport.rb +0 -159
  84. data/lib/legion/process.rb +0 -124
  85. data/lib/legion/runner.rb +0 -55
  86. data/lib/legion/runner/log.rb +0 -10
  87. data/lib/legion/runner/status.rb +0 -69
  88. data/lib/legion/service.rb +0 -99
  89. data/lib/legion/supervision.rb +0 -15
  90. data/lib/legion/version.rb +0 -3
@@ -1,36 +0,0 @@
1
- module Legion
2
- module Extensions
3
- module Builder
4
- module Base
5
- def find_files(name, path = extension_path)
6
- files = []
7
- return files unless Dir.exist? "#{path}/#{name}"
8
-
9
- Dir["#{path}/#{name}/*.rb"].each do |file|
10
- files.push(file)
11
- end
12
- files
13
- end
14
-
15
- def require_files(files)
16
- files.each { |file| require file }
17
- end
18
-
19
- def const_defined_two?(item, root = Kernel)
20
- root.const_defined?(item.to_s)
21
- end
22
-
23
- def define_constant_two(item, root: Kernel, type: Module)
24
- return true if const_defined?(item, root: root)
25
-
26
- root.const_set(item.to_s, type.new)
27
- end
28
-
29
- def define_get(item, root: Kernel, type: Module)
30
- define_constant_two(item, root: root, type: type) if const_defined_two?(item, root: root)
31
- root.const_get(item)
32
- end
33
- end
34
- end
35
- end
36
- end
@@ -1,24 +0,0 @@
1
- require_relative 'base'
2
-
3
- module Legion
4
- module Extensions
5
- module Builder
6
- module Helpers
7
- include Legion::Extensions::Builder::Base
8
-
9
- def build_helpers
10
- @helpers ||= []
11
- @helpers.push(require_files(helper_files))
12
- end
13
-
14
- def helper_files
15
- @helper_files ||= find_files('helpers')
16
- end
17
-
18
- def helpers
19
- @helpers
20
- end
21
- end
22
- end
23
- end
24
- end
@@ -1,58 +0,0 @@
1
- require_relative 'base'
2
-
3
- module Legion
4
- module Extensions
5
- module Builder
6
- module Runners
7
- include Legion::Extensions::Builder::Base
8
-
9
- attr_reader :runners
10
-
11
- def build_runners
12
- @runners = {}
13
- lex_class.const_set('Runners', Module.new) unless lex_class.const_defined?('Runners')
14
- require_files(runner_files)
15
- build_runner_list
16
- end
17
-
18
- def build_runner_list
19
- runner_files.each do |file|
20
- runner_name = file.split('/').last.sub('.rb', '')
21
- runner_class = "#{lex_class}::Runners::#{runner_name.split('_').collect(&:capitalize).join}"
22
- loaded_runner = Kernel.const_get(runner_class)
23
-
24
- @runners[runner_name.to_sym] = {
25
- extension: lex_class.to_s.downcase,
26
- extension_name: extension_name,
27
- extension_class: lex_class,
28
- runner_name: runner_name,
29
- runner_class: runner_class,
30
- runner_path: file,
31
- class_methods: {}
32
- }
33
-
34
- if settings.key?(:runners) && settings[:runners].key?(runner_name.to_sym)
35
- @runners[runner_name.to_sym][:desc] = settings[:runners][runner_name.to_sym][:desc]
36
- end
37
-
38
- loaded_runner.public_instance_methods(false).each do |runner_method|
39
- @runners[runner_name.to_sym][:class_methods][runner_method] = {
40
- args: loaded_runner.instance_method(runner_method).parameters
41
- }
42
- end
43
-
44
- loaded_runner.methods(false).each do |runner_method|
45
- @runners[runner_name.to_sym][:class_methods][runner_method] = {
46
- args: loaded_runner.method(runner_method).parameters
47
- }
48
- end
49
- end
50
- end
51
-
52
- def runner_files
53
- @runner_files ||= find_files('runners')
54
- end
55
- end
56
- end
57
- end
58
- end
@@ -1,126 +0,0 @@
1
- require_relative 'builders/actors'
2
- require_relative 'builders/helpers'
3
- require_relative 'builders/runners'
4
-
5
- require_relative 'helpers/core'
6
- require_relative 'helpers/task'
7
- require_relative 'helpers/logger'
8
- require_relative 'helpers/lex'
9
- require_relative 'helpers/transport'
10
- require_relative 'helpers/data'
11
- require_relative 'helpers/cache'
12
-
13
- require_relative 'actors/base'
14
- require_relative 'actors/every'
15
- require_relative 'actors/loop'
16
- require_relative 'actors/once'
17
- require_relative 'actors/poll'
18
- require_relative 'actors/subscription'
19
- require_relative 'actors/nothing'
20
-
21
- module Legion
22
- module Extensions
23
- module Core
24
- include Legion::Extensions::Helpers::Transport
25
- include Legion::Extensions::Helpers::Lex
26
-
27
- include Legion::Extensions::Builder::Runners
28
- include Legion::Extensions::Builder::Helpers
29
- include Legion::Extensions::Builder::Actors
30
-
31
- def autobuild
32
- @actors = {}
33
- @meta_actors = {}
34
- @runners = {}
35
- @helpers = []
36
-
37
- @queues = {}
38
- @exchanges = {}
39
- @messages = {}
40
- build_settings
41
- build_transport
42
- build_data
43
- build_helpers
44
- build_runners
45
- build_actors
46
- end
47
-
48
- def data_required?
49
- false
50
- end
51
-
52
- def transport_required?
53
- true
54
- end
55
-
56
- def cache_required?
57
- false
58
- end
59
-
60
- def crypt_required?
61
- false
62
- end
63
-
64
- def build_data
65
- auto_generate_data
66
- extension_class::Data.build
67
- end
68
-
69
- def build_transport
70
- if File.exist? "#{extension_path}/transport/autobuild.rb"
71
- require "#{extension_path}/transport/autobuild"
72
- extension_class::Transport::AutoBuild.build
73
- log.warn 'still using transport::autobuild, please upgrade'
74
- elsif File.exist? "#{extension_path}/transport.rb"
75
- require "#{extension_path}/transport"
76
- extension_class::Transport.build
77
- else
78
- auto_generate_transport
79
- extension_class::Transport.build
80
- end
81
- end
82
-
83
- def build_settings # rubocop:disable Metrics/AbcSize
84
- if Legion::Settings[:extensions].key?(lex_name.to_sym)
85
- Legion::Settings[:default_extension_settings].each do |key, value|
86
- Legion::Settings[:extensions][lex_name.to_sym][key.to_sym] = if Legion::Settings[:extensions][lex_name.to_sym].key?(key.to_sym)
87
- value.merge(Legion::Settings[:extensions][lex_name.to_sym][key.to_sym])
88
- else
89
- value
90
- end
91
- end
92
- else
93
- Legion::Settings[:extensions][lex_name.to_sym] = Legion::Settings[:default_extension_settings]
94
- end
95
-
96
- default_settings.each do |key, value|
97
- Legion::Settings[:extensions][lex_name.to_sym][key.to_sym] = if Legion::Settings[:extensions][lex_name.to_sym].key?(key.to_sym)
98
- value.merge(Legion::Settings[:extensions][lex_name.to_sym][key.to_sym])
99
- else
100
- value
101
- end
102
- end
103
- end
104
-
105
- def default_settings
106
- {}
107
- end
108
-
109
- def auto_generate_transport
110
- require 'legion/extensions/transport'
111
- log.debug 'running meta magic to generate a transport base class'
112
- return if Kernel.const_defined? "#{lex_class}::Transport"
113
-
114
- Kernel.const_get(lex_class.to_s).const_set('Transport', Module.new { extend Legion::Extensions::Transport })
115
- end
116
-
117
- def auto_generate_data
118
- require 'legion/extensions/data'
119
- log.debug 'running meta magic to generate a data base class'
120
- return if Kernel.const_defined? "#{lex_class}::Data"
121
-
122
- Kernel.const_get(lex_class.to_s).const_set('Data', Module.new { extend Legion::Extensions::Data })
123
- end
124
- end
125
- end
126
- end
@@ -1,58 +0,0 @@
1
- require 'legion/extensions/data/migrator'
2
- require 'legion/extensions/data/model'
3
-
4
- module Legion
5
- module Extensions
6
- module Data
7
- include Legion::Extensions::Helpers::Data
8
- include Legion::Extensions::Helpers::Logger
9
-
10
- def build
11
- @models = []
12
- @migrations = []
13
- if Dir[File.expand_path("#{data_path}/migrations/*.rb")].count.positive?
14
- log.debug('Has migrations, checking status')
15
- run
16
- end
17
-
18
- models = Dir[File.expand_path("#{data_path}/models/*.rb")]
19
- if models.count.positive?
20
- log.debug('Including LEX models')
21
- models.each do |file|
22
- require file
23
- end
24
-
25
- models_class.constants.select do |model|
26
- models_class.const_get(model).extend Legion::Extensions::Data::Model
27
- end
28
- end
29
-
30
- true
31
- end
32
-
33
- def extension_model
34
- Legion::Data::Model::Extension[namespace: lex_class.to_s]
35
- end
36
-
37
- def schema_version
38
- extension_model.values[:schema_version]
39
- end
40
-
41
- def migrations_path
42
- "#{data_path}/migrations/"
43
- end
44
-
45
- def migrate_class
46
- @migrate_class ||= Legion::Extensions::Data::Migrator.new(migrations_path, lex_class.to_s)
47
- end
48
-
49
- def run
50
- return true if migrate_class.is_current?
51
-
52
- log.debug('Running LEX schema migrator')
53
- results = migrate_class.run
54
- extension_model.update(schema_version: results)
55
- end
56
- end
57
- end
58
- end
@@ -1,28 +0,0 @@
1
- require 'sequel/extensions/migration'
2
-
3
- module Legion
4
- module Extensions
5
- module Data
6
- class Migrator < Sequel::IntegerMigrator
7
- def initialize(path, extension, **)
8
- @path = path
9
- @extension = extension
10
- super(Legion::Data::Connection.sequel, path)
11
- end
12
-
13
- def default_schema_column
14
- :schema_version
15
- end
16
-
17
- def default_schema_table
18
- :extensions
19
- end
20
-
21
- def schema_dataset
22
- Legion::Data::Connection.sequel.from(default_schema_table).where(namespace: @extension)
23
- end
24
- alias ds schema_dataset
25
- end
26
- end
27
- end
28
- end
@@ -1,8 +0,0 @@
1
- module Legion
2
- module Extensions
3
- module Data
4
- module Model
5
- end
6
- end
7
- end
8
- end
@@ -1,82 +0,0 @@
1
- module Legion
2
- module Extensions
3
- module Helpers
4
- module Base
5
- def lex_class
6
- @lex_class ||= Kernel.const_get(calling_class_array[0..2].join('::'))
7
- end
8
- alias extension_class lex_class
9
-
10
- def lex_name
11
- @lex_name ||= calling_class_array[2].gsub(/(?<!^)[A-Z]/) { "_#{$&}" }.downcase
12
- end
13
- alias extension_name lex_name
14
- alias lex_filename lex_name
15
-
16
- def lex_const
17
- @lex_const ||= calling_class_array[2]
18
- end
19
-
20
- def calling_class
21
- @calling_class ||= respond_to?(:ancestors) ? ancestors.first : self.class
22
- end
23
-
24
- def calling_class_array
25
- @calling_class_array ||= calling_class.to_s.split('::')
26
- end
27
-
28
- def actor_class
29
- calling_class
30
- end
31
-
32
- def actor_name
33
- @actor_name ||= calling_class_array.last.gsub(/(?<!^)[A-Z]/) { "_#{$&}" }.downcase
34
- end
35
-
36
- def actor_const
37
- @actor_const ||= calling_class_array.last
38
- end
39
-
40
- def runner_class
41
- @runner_class ||= Kernel.const_get(actor_class.to_s.sub!('Actor', 'Runners'))
42
- end
43
-
44
- def runner_name
45
- @runner_name ||= runner_class.to_s.split('::').last.gsub(/(?<!^)[A-Z]/) { "_#{$&}" }.downcase
46
- end
47
-
48
- def runner_const
49
- @runner_const ||= runner_class.to_s.split('::').last
50
- end
51
-
52
- def full_path
53
- @full_path ||= "#{Gem::Specification.find_by_name("lex-#{lex_name}").gem_dir}/lib/legion/extensions/#{lex_filename}"
54
- end
55
- alias extension_path full_path
56
-
57
- def from_json(string)
58
- Legion::JSON.load(string)
59
- end
60
-
61
- def normalize(thing)
62
- if thing.is_a? String
63
- to_json(from_json(thing))
64
- else
65
- from_json(to_json(thing))
66
- end
67
- end
68
-
69
- def to_dotted_hash(hash, recursive_key = '')
70
- hash.each_with_object({}) do |(k, v), ret|
71
- key = recursive_key + k.to_s
72
- if v.is_a? Hash
73
- ret.merge! to_dotted_hash(v, "#{key}.")
74
- else
75
- ret[key.to_sym] = v
76
- end
77
- end
78
- end
79
- end
80
- end
81
- end
82
- end
@@ -1,23 +0,0 @@
1
- require 'legion/extensions/helpers/base'
2
-
3
- module Legion
4
- module Extensions
5
- module Helpers
6
- module Cache
7
- include Legion::Extensions::Helpers::Base
8
-
9
- def cache_namespace
10
- @cache_namespace ||= lex_name
11
- end
12
-
13
- def cache_set(key, value, ttl: 60, **)
14
- Legion::Cache.set(cache_namespace + key, value, ttl: ttl)
15
- end
16
-
17
- def cache_get(key)
18
- Legion::Cache.get(cache_namespace + key)
19
- end
20
- end
21
- end
22
- end
23
- end