servactory 1.6.13 → 1.7.0
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.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/lib/servactory/base.rb +1 -0
- data/lib/servactory/configuration/setup.rb +0 -1
- data/lib/servactory/context/callable.rb +0 -10
- data/lib/servactory/context/workspace/inputs.rb +39 -2
- data/lib/servactory/context/workspace/internals.rb +52 -0
- data/lib/servactory/context/workspace/outputs.rb +52 -0
- data/lib/servactory/context/workspace.rb +15 -6
- data/lib/servactory/info/dsl.rb +21 -0
- data/lib/servactory/info/result.rb +17 -0
- data/lib/servactory/inputs/collection.rb +5 -1
- data/lib/servactory/inputs/workbench.rb +9 -11
- data/lib/servactory/internals/collection.rb +5 -1
- data/lib/servactory/internals/workbench.rb +5 -8
- data/lib/servactory/outputs/collection.rb +5 -1
- data/lib/servactory/outputs/workbench.rb +6 -8
- data/lib/servactory/{test → test_kit}/fake_type.rb +1 -1
- data/lib/servactory/{test → test_kit}/result.rb +1 -1
- data/lib/servactory/version.rb +2 -2
- metadata +8 -7
- data/lib/servactory/inputs/tools/prepare.rb +0 -93
- data/lib/servactory/internals/tools/prepare.rb +0 -58
- data/lib/servactory/outputs/tools/prepare.rb +0 -54
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: ff122141adf96c61aac5e2c89b9ca1ea0644ec4a9e106737e114108adbf06e17
|
|
4
|
+
data.tar.gz: 04d8ab68d2ce909e7b2ab9b92e3c4cd0c356385b87fd6f1b17040d16b22f9c43
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 3eea6b5733b7a80ceeac63a5fd9e16492367da3d3bd3ffbbdda343791578a788388eb1b77873595fc710d7ca0a62985a971d2e1ba02d1048b35dede880ce63e6
|
|
7
|
+
data.tar.gz: 35a1dee0a933768875c583678019c6f62cecc4b05fe7ffaf000edd3a01596a6dba18fa0111cce3b876013994e492b91e05062e7690a01ebfdd9b3f415325e3b6
|
data/README.md
CHANGED
data/lib/servactory/base.rb
CHANGED
|
@@ -27,7 +27,6 @@ module Servactory
|
|
|
27
27
|
def default_input_option_helpers
|
|
28
28
|
Set[
|
|
29
29
|
Servactory::Inputs::OptionHelper.new(name: :optional, equivalent: { required: false }),
|
|
30
|
-
Servactory::Inputs::OptionHelper.new(name: :internal, equivalent: { internal: true }),
|
|
31
30
|
Servactory::Inputs::OptionHelper.new(name: :as_array, equivalent: { array: true })
|
|
32
31
|
]
|
|
33
32
|
end
|
|
@@ -16,8 +16,6 @@ module Servactory
|
|
|
16
16
|
collection_of_internals: collection_of_internals
|
|
17
17
|
)
|
|
18
18
|
|
|
19
|
-
prepare_data
|
|
20
|
-
|
|
21
19
|
inputs_workbench.validate!
|
|
22
20
|
|
|
23
21
|
methods_workbench.run!
|
|
@@ -43,8 +41,6 @@ module Servactory
|
|
|
43
41
|
collection_of_internals: collection_of_internals
|
|
44
42
|
)
|
|
45
43
|
|
|
46
|
-
prepare_data
|
|
47
|
-
|
|
48
44
|
inputs_workbench.validate!
|
|
49
45
|
|
|
50
46
|
methods_workbench.run!
|
|
@@ -69,12 +65,6 @@ module Servactory
|
|
|
69
65
|
outputs_workbench.assign(context: context_store.context)
|
|
70
66
|
methods_workbench.assign(context: context_store.context)
|
|
71
67
|
end
|
|
72
|
-
|
|
73
|
-
def prepare_data
|
|
74
|
-
inputs_workbench.prepare # 1
|
|
75
|
-
outputs_workbench.prepare # 2
|
|
76
|
-
internals_workbench.prepare # 3
|
|
77
|
-
end
|
|
78
68
|
end
|
|
79
69
|
end
|
|
80
70
|
end
|
|
@@ -3,9 +3,46 @@
|
|
|
3
3
|
module Servactory
|
|
4
4
|
module Context
|
|
5
5
|
module Workspace
|
|
6
|
+
# class Inputs
|
|
7
|
+
# def initialize(**)
|
|
8
|
+
# # NOTE: Look at the file `lib/servactory/inputs/tools/prepare.rb`
|
|
9
|
+
# end
|
|
10
|
+
# end
|
|
11
|
+
|
|
6
12
|
class Inputs
|
|
7
|
-
def initialize(
|
|
8
|
-
|
|
13
|
+
def initialize(context, workbench:)
|
|
14
|
+
@context = context
|
|
15
|
+
|
|
16
|
+
@collection_of_inputs = workbench.collection
|
|
17
|
+
@incoming_arguments = workbench.incoming_arguments
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def method_missing(name, *args, &block)
|
|
21
|
+
if name.to_s.end_with?("=")
|
|
22
|
+
super
|
|
23
|
+
else
|
|
24
|
+
getter_with(name: name) { super }
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def respond_to_missing?(name, *)
|
|
29
|
+
@collection_of_inputs.names.include?(name) || super
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
private
|
|
33
|
+
|
|
34
|
+
def getter_with(name:, &block) # rubocop:disable Lint/UnusedMethodArgument
|
|
35
|
+
input = @collection_of_inputs.find_by(name: name)
|
|
36
|
+
|
|
37
|
+
return yield if input.nil?
|
|
38
|
+
|
|
39
|
+
input_value = @incoming_arguments.fetch(input.name, nil)
|
|
40
|
+
input_value = input.default if input.optional? && input_value.blank?
|
|
41
|
+
|
|
42
|
+
input_prepare = input.prepare.fetch(:in, nil)
|
|
43
|
+
input_value = input_prepare.call(value: input_value) if input_prepare.present?
|
|
44
|
+
|
|
45
|
+
input_value
|
|
9
46
|
end
|
|
10
47
|
end
|
|
11
48
|
end
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Servactory
|
|
4
|
+
module Context
|
|
5
|
+
module Workspace
|
|
6
|
+
class Internals
|
|
7
|
+
def initialize(context, workbench:)
|
|
8
|
+
@context = context
|
|
9
|
+
@collection_of_internals = workbench.collection
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def method_missing(name, *args, &block)
|
|
13
|
+
if name.to_s.end_with?("=")
|
|
14
|
+
setter_with(name: name, value: args.pop) { super }
|
|
15
|
+
else
|
|
16
|
+
getter_with(name: name) { super }
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def respond_to_missing?(name, *)
|
|
21
|
+
@collection_of_internals.names.include?(name) || super
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
private
|
|
25
|
+
|
|
26
|
+
def setter_with(name:, value:, &block) # rubocop:disable Lint/UnusedMethodArgument
|
|
27
|
+
prepared_name = name.to_s.delete("=").to_sym
|
|
28
|
+
|
|
29
|
+
return yield unless @collection_of_internals.names.include?(prepared_name)
|
|
30
|
+
|
|
31
|
+
internal = @collection_of_internals.find_by(name: prepared_name)
|
|
32
|
+
|
|
33
|
+
Servactory::Internals::Validations::Type.validate!(
|
|
34
|
+
context: @context,
|
|
35
|
+
internal: internal,
|
|
36
|
+
value: value
|
|
37
|
+
)
|
|
38
|
+
|
|
39
|
+
@context.instance_variable_set(:"@#{internal.name}", value)
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def getter_with(name:, &block) # rubocop:disable Lint/UnusedMethodArgument
|
|
43
|
+
internal = @collection_of_internals.find_by(name: name)
|
|
44
|
+
|
|
45
|
+
return yield if internal.nil?
|
|
46
|
+
|
|
47
|
+
@context.instance_variable_get(:"@#{internal.name}")
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Servactory
|
|
4
|
+
module Context
|
|
5
|
+
module Workspace
|
|
6
|
+
class Outputs
|
|
7
|
+
def initialize(context, workbench:)
|
|
8
|
+
@context = context
|
|
9
|
+
@collection_of_outputs = workbench.collection
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def method_missing(name, *args, &block)
|
|
13
|
+
if name.to_s.end_with?("=")
|
|
14
|
+
setter_with(name: name, value: args.pop) { super }
|
|
15
|
+
else
|
|
16
|
+
getter_with(name: name) { super }
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def respond_to_missing?(name, *)
|
|
21
|
+
@collection_of_outputs.names.include?(name) || super
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
private
|
|
25
|
+
|
|
26
|
+
def setter_with(name:, value:, &block) # rubocop:disable Lint/UnusedMethodArgument
|
|
27
|
+
prepared_name = name.to_s.delete("=").to_sym
|
|
28
|
+
|
|
29
|
+
return yield unless @collection_of_outputs.names.include?(prepared_name)
|
|
30
|
+
|
|
31
|
+
output = @collection_of_outputs.find_by(name: prepared_name)
|
|
32
|
+
|
|
33
|
+
Servactory::Outputs::Validations::Type.validate!(
|
|
34
|
+
context: @context,
|
|
35
|
+
output: output,
|
|
36
|
+
value: value
|
|
37
|
+
)
|
|
38
|
+
|
|
39
|
+
@context.instance_variable_set(:"@#{output.name}", value)
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def getter_with(name:, &block) # rubocop:disable Lint/UnusedMethodArgument
|
|
43
|
+
output = @collection_of_outputs.find_by(name: name)
|
|
44
|
+
|
|
45
|
+
return yield if output.nil?
|
|
46
|
+
|
|
47
|
+
@context.instance_variable_get(:"@#{output.name}")
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
@@ -3,12 +3,23 @@
|
|
|
3
3
|
module Servactory
|
|
4
4
|
module Context
|
|
5
5
|
module Workspace
|
|
6
|
-
def
|
|
7
|
-
@
|
|
6
|
+
def inputs
|
|
7
|
+
@inputs ||= Inputs.new(self, workbench: self.class.send(:inputs_workbench))
|
|
8
8
|
end
|
|
9
|
+
alias inp inputs
|
|
9
10
|
|
|
10
|
-
def
|
|
11
|
-
@
|
|
11
|
+
def internals
|
|
12
|
+
@internals ||= Internals.new(self, workbench: self.class.send(:internals_workbench))
|
|
13
|
+
end
|
|
14
|
+
alias int internals
|
|
15
|
+
|
|
16
|
+
def outputs
|
|
17
|
+
@outputs ||= Outputs.new(self, workbench: self.class.send(:outputs_workbench))
|
|
18
|
+
end
|
|
19
|
+
alias out outputs
|
|
20
|
+
|
|
21
|
+
def errors
|
|
22
|
+
@errors ||= Servactory::Errors::Collection.new
|
|
12
23
|
end
|
|
13
24
|
|
|
14
25
|
def raise_first_fail
|
|
@@ -19,8 +30,6 @@ module Servactory
|
|
|
19
30
|
|
|
20
31
|
protected
|
|
21
32
|
|
|
22
|
-
attr_reader :inputs
|
|
23
|
-
|
|
24
33
|
def fail_input!(input_name, message:)
|
|
25
34
|
raise Servactory.configuration.input_error_class.new(
|
|
26
35
|
input_name: input_name,
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Servactory
|
|
4
|
+
module Info
|
|
5
|
+
module DSL
|
|
6
|
+
def self.included(base)
|
|
7
|
+
base.extend(ClassMethods)
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
module ClassMethods
|
|
11
|
+
def info
|
|
12
|
+
Servactory::Info::Result.new(
|
|
13
|
+
inputs: collection_of_inputs.names,
|
|
14
|
+
internals: collection_of_internals.names,
|
|
15
|
+
outputs: collection_of_outputs.names
|
|
16
|
+
)
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Servactory
|
|
4
|
+
module Info
|
|
5
|
+
class Result
|
|
6
|
+
attr_reader :inputs,
|
|
7
|
+
:internals,
|
|
8
|
+
:outputs
|
|
9
|
+
|
|
10
|
+
def initialize(inputs:, internals:, outputs:)
|
|
11
|
+
@inputs = inputs
|
|
12
|
+
@internals = internals
|
|
13
|
+
@outputs = outputs
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -5,7 +5,7 @@ module Servactory
|
|
|
5
5
|
class Collection
|
|
6
6
|
# NOTE: http://words.steveklabnik.com/beware-subclassing-ruby-core-classes
|
|
7
7
|
extend Forwardable
|
|
8
|
-
def_delegators :@collection, :<<, :each, :map, :merge
|
|
8
|
+
def_delegators :@collection, :<<, :each, :map, :merge, :find
|
|
9
9
|
|
|
10
10
|
def initialize(*)
|
|
11
11
|
@collection = Set.new
|
|
@@ -14,6 +14,10 @@ module Servactory
|
|
|
14
14
|
def names
|
|
15
15
|
map(&:name)
|
|
16
16
|
end
|
|
17
|
+
|
|
18
|
+
def find_by(name:)
|
|
19
|
+
find { |input| input.internal_name == name }
|
|
20
|
+
end
|
|
17
21
|
end
|
|
18
22
|
end
|
|
19
23
|
end
|
|
@@ -3,12 +3,15 @@
|
|
|
3
3
|
module Servactory
|
|
4
4
|
module Inputs
|
|
5
5
|
class Workbench
|
|
6
|
+
attr_reader :collection,
|
|
7
|
+
:incoming_arguments
|
|
8
|
+
|
|
6
9
|
def self.work_with(...)
|
|
7
10
|
new(...)
|
|
8
11
|
end
|
|
9
12
|
|
|
10
|
-
def initialize(
|
|
11
|
-
@
|
|
13
|
+
def initialize(collection)
|
|
14
|
+
@collection = collection
|
|
12
15
|
end
|
|
13
16
|
|
|
14
17
|
def assign(context:, arguments:)
|
|
@@ -17,25 +20,20 @@ module Servactory
|
|
|
17
20
|
end
|
|
18
21
|
|
|
19
22
|
def find_unnecessary!
|
|
20
|
-
Tools::FindUnnecessary.validate!(context, @incoming_arguments,
|
|
23
|
+
Tools::FindUnnecessary.validate!(context, @incoming_arguments, collection)
|
|
21
24
|
end
|
|
22
25
|
|
|
23
26
|
def check_rules!
|
|
24
|
-
Tools::Rules.validate!(context,
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
def prepare
|
|
28
|
-
Tools::Prepare.prepare(context, @incoming_arguments, collection_of_inputs)
|
|
27
|
+
Tools::Rules.validate!(context, collection)
|
|
29
28
|
end
|
|
30
29
|
|
|
31
30
|
def validate!
|
|
32
|
-
Tools::Validation.validate!(context, @incoming_arguments,
|
|
31
|
+
Tools::Validation.validate!(context, @incoming_arguments, collection)
|
|
33
32
|
end
|
|
34
33
|
|
|
35
34
|
private
|
|
36
35
|
|
|
37
|
-
attr_reader :context
|
|
38
|
-
:collection_of_inputs
|
|
36
|
+
attr_reader :context
|
|
39
37
|
end
|
|
40
38
|
end
|
|
41
39
|
end
|
|
@@ -5,7 +5,7 @@ module Servactory
|
|
|
5
5
|
class Collection
|
|
6
6
|
# NOTE: http://words.steveklabnik.com/beware-subclassing-ruby-core-classes
|
|
7
7
|
extend Forwardable
|
|
8
|
-
def_delegators :@collection, :<<, :each, :map, :merge
|
|
8
|
+
def_delegators :@collection, :<<, :each, :map, :merge, :find
|
|
9
9
|
|
|
10
10
|
def initialize(*)
|
|
11
11
|
@collection = Set.new
|
|
@@ -14,6 +14,10 @@ module Servactory
|
|
|
14
14
|
def names
|
|
15
15
|
map(&:name)
|
|
16
16
|
end
|
|
17
|
+
|
|
18
|
+
def find_by(name:)
|
|
19
|
+
find { |internal| internal.name == name }
|
|
20
|
+
end
|
|
17
21
|
end
|
|
18
22
|
end
|
|
19
23
|
end
|
|
@@ -3,26 +3,23 @@
|
|
|
3
3
|
module Servactory
|
|
4
4
|
module Internals
|
|
5
5
|
class Workbench
|
|
6
|
+
attr_reader :collection
|
|
7
|
+
|
|
6
8
|
def self.work_with(...)
|
|
7
9
|
new(...)
|
|
8
10
|
end
|
|
9
11
|
|
|
10
|
-
def initialize(
|
|
11
|
-
@
|
|
12
|
+
def initialize(collection)
|
|
13
|
+
@collection = collection
|
|
12
14
|
end
|
|
13
15
|
|
|
14
16
|
def assign(context:)
|
|
15
17
|
@context = context
|
|
16
18
|
end
|
|
17
19
|
|
|
18
|
-
def prepare
|
|
19
|
-
Tools::Prepare.prepare(context, collection_of_internals)
|
|
20
|
-
end
|
|
21
|
-
|
|
22
20
|
private
|
|
23
21
|
|
|
24
|
-
attr_reader :context
|
|
25
|
-
:collection_of_internals
|
|
22
|
+
attr_reader :context
|
|
26
23
|
end
|
|
27
24
|
end
|
|
28
25
|
end
|
|
@@ -5,7 +5,7 @@ module Servactory
|
|
|
5
5
|
class Collection
|
|
6
6
|
# NOTE: http://words.steveklabnik.com/beware-subclassing-ruby-core-classes
|
|
7
7
|
extend Forwardable
|
|
8
|
-
def_delegators :@collection, :<<, :each, :map, :merge
|
|
8
|
+
def_delegators :@collection, :<<, :each, :map, :merge, :find
|
|
9
9
|
|
|
10
10
|
def initialize(*)
|
|
11
11
|
@collection = Set.new
|
|
@@ -14,6 +14,10 @@ module Servactory
|
|
|
14
14
|
def names
|
|
15
15
|
map(&:name)
|
|
16
16
|
end
|
|
17
|
+
|
|
18
|
+
def find_by(name:)
|
|
19
|
+
find { |output| output.name == name }
|
|
20
|
+
end
|
|
17
21
|
end
|
|
18
22
|
end
|
|
19
23
|
end
|
|
@@ -3,12 +3,14 @@
|
|
|
3
3
|
module Servactory
|
|
4
4
|
module Outputs
|
|
5
5
|
class Workbench
|
|
6
|
+
attr_reader :collection
|
|
7
|
+
|
|
6
8
|
def self.work_with(...)
|
|
7
9
|
new(...)
|
|
8
10
|
end
|
|
9
11
|
|
|
10
|
-
def initialize(
|
|
11
|
-
@
|
|
12
|
+
def initialize(collection)
|
|
13
|
+
@collection = collection
|
|
12
14
|
end
|
|
13
15
|
|
|
14
16
|
def assign(context:)
|
|
@@ -16,16 +18,12 @@ module Servactory
|
|
|
16
18
|
end
|
|
17
19
|
|
|
18
20
|
def find_conflicts_in!(collection_of_internals:)
|
|
19
|
-
Tools::Conflicts.validate!(context,
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
def prepare
|
|
23
|
-
Tools::Prepare.prepare(context, collection_of_outputs)
|
|
21
|
+
Tools::Conflicts.validate!(context, collection, collection_of_internals)
|
|
24
22
|
end
|
|
25
23
|
|
|
26
24
|
private
|
|
27
25
|
|
|
28
|
-
attr_reader :context
|
|
26
|
+
attr_reader :context
|
|
29
27
|
end
|
|
30
28
|
end
|
|
31
29
|
end
|
data/lib/servactory/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: servactory
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.
|
|
4
|
+
version: 1.7.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Anton Sokolov
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2023-06-
|
|
11
|
+
date: 2023-06-17 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: activesupport
|
|
@@ -198,6 +198,8 @@ files:
|
|
|
198
198
|
- lib/servactory/context/store.rb
|
|
199
199
|
- lib/servactory/context/workspace.rb
|
|
200
200
|
- lib/servactory/context/workspace/inputs.rb
|
|
201
|
+
- lib/servactory/context/workspace/internals.rb
|
|
202
|
+
- lib/servactory/context/workspace/outputs.rb
|
|
201
203
|
- lib/servactory/engine.rb
|
|
202
204
|
- lib/servactory/errors/base.rb
|
|
203
205
|
- lib/servactory/errors/collection.rb
|
|
@@ -205,6 +207,8 @@ files:
|
|
|
205
207
|
- lib/servactory/errors/input_error.rb
|
|
206
208
|
- lib/servactory/errors/internal_error.rb
|
|
207
209
|
- lib/servactory/errors/output_error.rb
|
|
210
|
+
- lib/servactory/info/dsl.rb
|
|
211
|
+
- lib/servactory/info/result.rb
|
|
208
212
|
- lib/servactory/inputs/collection.rb
|
|
209
213
|
- lib/servactory/inputs/define_input_conflict.rb
|
|
210
214
|
- lib/servactory/inputs/define_input_method.rb
|
|
@@ -216,7 +220,6 @@ files:
|
|
|
216
220
|
- lib/servactory/inputs/options_collection.rb
|
|
217
221
|
- lib/servactory/inputs/tools/check_errors.rb
|
|
218
222
|
- lib/servactory/inputs/tools/find_unnecessary.rb
|
|
219
|
-
- lib/servactory/inputs/tools/prepare.rb
|
|
220
223
|
- lib/servactory/inputs/tools/rules.rb
|
|
221
224
|
- lib/servactory/inputs/tools/validation.rb
|
|
222
225
|
- lib/servactory/inputs/validations/base.rb
|
|
@@ -229,7 +232,6 @@ files:
|
|
|
229
232
|
- lib/servactory/internals/collection.rb
|
|
230
233
|
- lib/servactory/internals/dsl.rb
|
|
231
234
|
- lib/servactory/internals/internal.rb
|
|
232
|
-
- lib/servactory/internals/tools/prepare.rb
|
|
233
235
|
- lib/servactory/internals/validations/base.rb
|
|
234
236
|
- lib/servactory/internals/validations/type.rb
|
|
235
237
|
- lib/servactory/internals/workbench.rb
|
|
@@ -244,13 +246,12 @@ files:
|
|
|
244
246
|
- lib/servactory/outputs/dsl.rb
|
|
245
247
|
- lib/servactory/outputs/output.rb
|
|
246
248
|
- lib/servactory/outputs/tools/conflicts.rb
|
|
247
|
-
- lib/servactory/outputs/tools/prepare.rb
|
|
248
249
|
- lib/servactory/outputs/validations/base.rb
|
|
249
250
|
- lib/servactory/outputs/validations/type.rb
|
|
250
251
|
- lib/servactory/outputs/workbench.rb
|
|
251
252
|
- lib/servactory/result.rb
|
|
252
|
-
- lib/servactory/
|
|
253
|
-
- lib/servactory/
|
|
253
|
+
- lib/servactory/test_kit/fake_type.rb
|
|
254
|
+
- lib/servactory/test_kit/result.rb
|
|
254
255
|
- lib/servactory/utils.rb
|
|
255
256
|
- lib/servactory/version.rb
|
|
256
257
|
homepage: https://github.com/afuno/servactory
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Servactory
|
|
4
|
-
module Inputs
|
|
5
|
-
module Tools
|
|
6
|
-
class Prepare
|
|
7
|
-
def self.prepare(...)
|
|
8
|
-
new(...).prepare
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
def initialize(context, incoming_arguments, collection_of_inputs)
|
|
12
|
-
@context = context
|
|
13
|
-
@incoming_arguments = incoming_arguments
|
|
14
|
-
@collection_of_inputs = collection_of_inputs
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
def prepare
|
|
18
|
-
@inputs_variables = {}
|
|
19
|
-
@internal_variables = {}
|
|
20
|
-
|
|
21
|
-
@collection_of_inputs.each do |input|
|
|
22
|
-
process_input(input)
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
create_instance_variables
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
private
|
|
29
|
-
|
|
30
|
-
def process_input(input)
|
|
31
|
-
input_value = @incoming_arguments.fetch(input.name, nil)
|
|
32
|
-
input_value = input.default if input.optional? && input_value.blank?
|
|
33
|
-
|
|
34
|
-
input_prepare = input.prepare.fetch(:in, nil)
|
|
35
|
-
input_value = input_prepare.call(value: input_value) if input_prepare.present?
|
|
36
|
-
|
|
37
|
-
if input.internal?
|
|
38
|
-
@internal_variables[input.name] = input_value
|
|
39
|
-
else
|
|
40
|
-
@inputs_variables[input.internal_name] = input_value
|
|
41
|
-
end
|
|
42
|
-
end
|
|
43
|
-
|
|
44
|
-
def create_instance_variables
|
|
45
|
-
inputs_class = Servactory::Context::Workspace::Inputs.dup
|
|
46
|
-
inputs_class.class_eval(class_inputs_template) if class_inputs_template.present?
|
|
47
|
-
|
|
48
|
-
@context.assign_inputs(inputs_class.new(**@inputs_variables))
|
|
49
|
-
|
|
50
|
-
@context.class.class_eval(context_internal_variables_template) if context_internal_variables_template.present?
|
|
51
|
-
|
|
52
|
-
@internal_variables.each do |input_name, input_value|
|
|
53
|
-
@context.instance_variable_set(:"@#{input_name}", input_value)
|
|
54
|
-
end
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
########################################################################
|
|
58
|
-
|
|
59
|
-
# EXAMPLE:
|
|
60
|
-
#
|
|
61
|
-
# attr_reader(*[:attr_1, :attr_2, :attr_3])
|
|
62
|
-
#
|
|
63
|
-
# def initialize(attr_1:, attr_2:, attr_3:)
|
|
64
|
-
# @attr_1 = attr_1; @attr_2 = attr_2; @attr_3 = attr_3;
|
|
65
|
-
# end
|
|
66
|
-
#
|
|
67
|
-
def class_inputs_template
|
|
68
|
-
return if @inputs_variables.blank?
|
|
69
|
-
|
|
70
|
-
@class_inputs_template ||= <<-RUBY
|
|
71
|
-
attr_reader(*#{@inputs_variables.keys})
|
|
72
|
-
|
|
73
|
-
def initialize(#{@inputs_variables.keys.join(':, ')}:)
|
|
74
|
-
#{@inputs_variables.keys.map { |key| "@#{key} = #{key}" }.join('; ')}
|
|
75
|
-
end
|
|
76
|
-
RUBY
|
|
77
|
-
end
|
|
78
|
-
|
|
79
|
-
# EXAMPLE:
|
|
80
|
-
#
|
|
81
|
-
# attr_reader(*[:attr_1])
|
|
82
|
-
#
|
|
83
|
-
def context_internal_variables_template
|
|
84
|
-
return if @internal_variables.blank?
|
|
85
|
-
|
|
86
|
-
@context_internal_variables_template ||= <<-RUBY
|
|
87
|
-
attr_reader(*#{@internal_variables.keys})
|
|
88
|
-
RUBY
|
|
89
|
-
end
|
|
90
|
-
end
|
|
91
|
-
end
|
|
92
|
-
end
|
|
93
|
-
end
|
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Servactory
|
|
4
|
-
module Internals
|
|
5
|
-
module Tools
|
|
6
|
-
class Prepare
|
|
7
|
-
def self.prepare(...)
|
|
8
|
-
new(...).prepare
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
def initialize(context, collection_of_internals)
|
|
12
|
-
@context = context
|
|
13
|
-
@collection_of_internals = collection_of_internals
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
def prepare
|
|
17
|
-
@collection_of_internals.each do |internal|
|
|
18
|
-
create_instance_variable_for(internal)
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
private
|
|
23
|
-
|
|
24
|
-
def create_instance_variable_for(internal)
|
|
25
|
-
@context.class.class_eval(context_internal_template_for(internal))
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
# EXAMPLE:
|
|
29
|
-
#
|
|
30
|
-
# define_method(:user=) do |value|
|
|
31
|
-
# Servactory::Internals::Validations::Type.validate!( context: self, internal:, value: )
|
|
32
|
-
#
|
|
33
|
-
# instance_variable_set(:@user, value)
|
|
34
|
-
# end
|
|
35
|
-
#
|
|
36
|
-
# private attr_reader :user
|
|
37
|
-
#
|
|
38
|
-
def context_internal_template_for(internal)
|
|
39
|
-
<<-RUBY
|
|
40
|
-
define_method(:#{internal.name}=) do |value|
|
|
41
|
-
Servactory::Internals::Validations::Type.validate!(
|
|
42
|
-
context: self,
|
|
43
|
-
internal: internal,
|
|
44
|
-
value: value
|
|
45
|
-
)
|
|
46
|
-
|
|
47
|
-
instance_variable_set(:@#{internal.name}, value)
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
private
|
|
51
|
-
|
|
52
|
-
attr_reader :#{internal.name}
|
|
53
|
-
RUBY
|
|
54
|
-
end
|
|
55
|
-
end
|
|
56
|
-
end
|
|
57
|
-
end
|
|
58
|
-
end
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
|
|
3
|
-
module Servactory
|
|
4
|
-
module Outputs
|
|
5
|
-
module Tools
|
|
6
|
-
class Prepare
|
|
7
|
-
def self.prepare(...)
|
|
8
|
-
new(...).prepare
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
def initialize(context, collection_of_outputs)
|
|
12
|
-
@context = context
|
|
13
|
-
@collection_of_outputs = collection_of_outputs
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
def prepare
|
|
17
|
-
@collection_of_outputs.each do |output|
|
|
18
|
-
create_instance_variable_for(output)
|
|
19
|
-
end
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
private
|
|
23
|
-
|
|
24
|
-
def create_instance_variable_for(output)
|
|
25
|
-
@context.class.class_eval(context_output_template_for(output))
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
# EXAMPLE:
|
|
29
|
-
#
|
|
30
|
-
# define_method(:user=) do |value|
|
|
31
|
-
# Servactory::Internals::Validations::Type.validate!( context: self, output:, value: )
|
|
32
|
-
#
|
|
33
|
-
# instance_variable_set(:@user, value)
|
|
34
|
-
# end
|
|
35
|
-
#
|
|
36
|
-
def context_output_template_for(output)
|
|
37
|
-
<<-RUBY
|
|
38
|
-
define_method(:#{output.name}=) do |value|
|
|
39
|
-
Servactory::Outputs::Validations::Type.validate!(
|
|
40
|
-
context: self,
|
|
41
|
-
output: output,
|
|
42
|
-
value: value
|
|
43
|
-
)
|
|
44
|
-
|
|
45
|
-
instance_variable_set(:@#{output.name}, value)
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
attr_reader :#{output.name}
|
|
49
|
-
RUBY
|
|
50
|
-
end
|
|
51
|
-
end
|
|
52
|
-
end
|
|
53
|
-
end
|
|
54
|
-
end
|