cloud-templates 0.2.0 → 0.3.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/.rspec +4 -0
- data/.rubocop.yml +1 -0
- data/Rakefile +1 -1
- data/bin/cloud-templates-runner.rb +5 -0
- data/cloud-templates.gemspec +9 -4
- data/examples/lib/user_directory.rb +0 -10
- data/examples/lib/user_directory/artifacts.rb +8 -0
- data/examples/lib/user_directory/artifacts/catalogized.rb +8 -7
- data/examples/lib/user_directory/artifacts/group.rb +27 -30
- data/examples/lib/user_directory/artifacts/ided.rb +8 -7
- data/examples/lib/user_directory/artifacts/organization.rb +10 -11
- data/examples/lib/user_directory/artifacts/pathed.rb +17 -17
- data/examples/lib/user_directory/artifacts/person.rb +20 -15
- data/examples/lib/user_directory/artifacts/team.rb +26 -21
- data/examples/lib/user_directory/artifacts/unit.rb +15 -17
- data/examples/lib/user_directory/artifacts/user.rb +26 -23
- data/examples/lib/user_directory/render.rb +8 -0
- data/examples/lib/user_directory/render/etc.rb +2 -0
- data/examples/lib/user_directory/render/etc/artifact_view.rb +2 -2
- data/examples/lib/user_directory/render/etc/composite_view.rb +1 -2
- data/examples/lib/user_directory/render/etc/group_view.rb +3 -3
- data/examples/lib/user_directory/render/etc/person_view.rb +2 -2
- data/examples/lib/user_directory/render/etc/registry.rb +4 -6
- data/examples/lib/user_directory/render/etc/user_view.rb +2 -3
- data/examples/lib/user_directory/render/ldap.rb +2 -0
- data/examples/lib/user_directory/render/ldap/artifact_view.rb +3 -4
- data/examples/lib/user_directory/render/ldap/composite_view.rb +3 -4
- data/examples/lib/user_directory/render/ldap/group_view.rb +3 -4
- data/examples/lib/user_directory/render/ldap/organization_view.rb +3 -4
- data/examples/lib/user_directory/render/ldap/person_view.rb +3 -4
- data/examples/lib/user_directory/render/ldap/registry.rb +3 -4
- data/examples/lib/user_directory/render/ldap/unit_view.rb +3 -4
- data/examples/lib/user_directory/render/ldap/user_view.rb +3 -4
- data/examples/lib/user_directory/utils.rb +1 -1
- data/examples/spec/user_directory_spec.rb +24 -25
- data/lib/aws/templates.rb +0 -8
- data/lib/aws/templates/artifact.rb +20 -12
- data/lib/aws/templates/cli.rb +14 -0
- data/lib/aws/templates/cli/formatter.rb +21 -0
- data/lib/aws/templates/cli/formatter/json.rb +20 -0
- data/lib/aws/templates/cli/interface.rb +92 -0
- data/lib/aws/templates/composite.rb +6 -9
- data/lib/aws/templates/exception.rb +8 -0
- data/lib/aws/templates/exception/nested_parameter_exception.rb +19 -0
- data/lib/aws/templates/exception/option_error.rb +14 -0
- data/lib/aws/templates/exception/option_scalar_on_the_way.rb +26 -0
- data/lib/aws/templates/exception/option_should_be_recursive.rb +20 -0
- data/lib/aws/templates/exception/option_value_deleted.rb +22 -0
- data/lib/aws/templates/exception/parameter_already_exist.rb +26 -0
- data/lib/aws/templates/exception/parameter_exception.rb +26 -0
- data/lib/aws/templates/exception/parameter_getter_is_not_defined.rb +23 -0
- data/lib/aws/templates/exception/parameter_method_name_conflict.rb +26 -0
- data/lib/aws/templates/exception/parameter_specification_is_invalid.rb +30 -0
- data/lib/aws/templates/exception/parameter_value_invalid.rb +37 -0
- data/lib/aws/templates/exception/parametrized_dsl_error.rb +14 -0
- data/lib/aws/templates/exception/view_not_found.rb +26 -0
- data/lib/aws/templates/help.rb +43 -0
- data/lib/aws/templates/help/aggregate.rb +74 -0
- data/lib/aws/templates/help/dsl.rb +30 -0
- data/lib/aws/templates/help/provider.rb +15 -0
- data/lib/aws/templates/help/rdoc.rb +105 -0
- data/lib/aws/templates/help/rdoc/artifact.rb +50 -0
- data/lib/aws/templates/help/rdoc/composite.rb +20 -0
- data/lib/aws/templates/help/rdoc/contextualized.rb +12 -0
- data/lib/aws/templates/help/rdoc/contextualized/filter.rb +19 -0
- data/lib/aws/templates/help/rdoc/contextualized/filters.rb +14 -0
- data/lib/aws/templates/help/rdoc/contextualized/filters/add.rb +21 -0
- data/lib/aws/templates/help/rdoc/contextualized/filters/chain.rb +33 -0
- data/lib/aws/templates/help/rdoc/contextualized/filters/copy.rb +23 -0
- data/lib/aws/templates/help/rdoc/contextualized/filters/identity.rb +23 -0
- data/lib/aws/templates/help/rdoc/contextualized/filters/override.rb +29 -0
- data/lib/aws/templates/help/rdoc/contextualized/filters/proxy.rb +28 -0
- data/lib/aws/templates/help/rdoc/contextualized/filters/recursive_schema_filter.rb +28 -0
- data/lib/aws/templates/help/rdoc/contextualized/filters/remove.rb +21 -0
- data/lib/aws/templates/help/rdoc/contextualized/filters/scoped.rb +29 -0
- data/lib/aws/templates/help/rdoc/contextualized/provider.rb +28 -0
- data/lib/aws/templates/help/rdoc/default.rb +12 -0
- data/lib/aws/templates/help/rdoc/default/definition.rb +89 -0
- data/lib/aws/templates/help/rdoc/default/provider.rb +25 -0
- data/lib/aws/templates/help/rdoc/dsl.rb +20 -0
- data/lib/aws/templates/help/rdoc/inheritable.rb +48 -0
- data/lib/aws/templates/help/rdoc/parametrized.rb +12 -0
- data/lib/aws/templates/help/rdoc/parametrized/constraint.rb +31 -0
- data/lib/aws/templates/help/rdoc/parametrized/constraints.rb +14 -0
- data/lib/aws/templates/help/rdoc/parametrized/constraints/all_of.rb +39 -0
- data/lib/aws/templates/help/rdoc/parametrized/constraints/condition.rb +44 -0
- data/lib/aws/templates/help/rdoc/parametrized/constraints/depends_on_value.rb +41 -0
- data/lib/aws/templates/help/rdoc/parametrized/constraints/enum.rb +33 -0
- data/lib/aws/templates/help/rdoc/parametrized/constraints/matches.rb +27 -0
- data/lib/aws/templates/help/rdoc/parametrized/constraints/not_nil.rb +27 -0
- data/lib/aws/templates/help/rdoc/parametrized/constraints/requires.rb +33 -0
- data/lib/aws/templates/help/rdoc/parametrized/constraints/satisfies_condition.rb +28 -0
- data/lib/aws/templates/help/rdoc/parametrized/getter.rb +17 -0
- data/lib/aws/templates/help/rdoc/parametrized/getters.rb +14 -0
- data/lib/aws/templates/help/rdoc/parametrized/nested.rb +32 -0
- data/lib/aws/templates/help/rdoc/parametrized/parameter.rb +55 -0
- data/lib/aws/templates/help/rdoc/parametrized/provider.rb +32 -0
- data/lib/aws/templates/help/rdoc/parametrized/transformation.rb +17 -0
- data/lib/aws/templates/help/rdoc/parametrized/transformations.rb +14 -0
- data/lib/aws/templates/help/rdoc/parametrized/transformations/as_boolean.rb +25 -0
- data/lib/aws/templates/help/rdoc/parametrized/transformations/as_chain.rb +34 -0
- data/lib/aws/templates/help/rdoc/parametrized/transformations/as_hash.rb +40 -0
- data/lib/aws/templates/help/rdoc/parametrized/transformations/as_integer.rb +26 -0
- data/lib/aws/templates/help/rdoc/parametrized/transformations/as_list.rb +32 -0
- data/lib/aws/templates/help/rdoc/parametrized/transformations/as_module.rb +25 -0
- data/lib/aws/templates/help/rdoc/parametrized/transformations/as_object.rb +32 -0
- data/lib/aws/templates/help/rdoc/parametrized/transformations/as_rendered.rb +28 -0
- data/lib/aws/templates/help/rdoc/parametrized/transformations/as_string.rb +25 -0
- data/lib/aws/templates/help/rdoc/provider.rb +20 -0
- data/lib/aws/templates/help/rdoc/routing.rb +104 -0
- data/lib/aws/templates/help/rdoc/texting.rb +42 -0
- data/lib/aws/templates/processor.rb +53 -0
- data/lib/aws/templates/processor/handler.rb +104 -0
- data/lib/aws/templates/processor/registry.rb +74 -0
- data/lib/aws/templates/processor/routing.rb +27 -0
- data/lib/aws/templates/render.rb +27 -25
- data/lib/aws/templates/render/basic_view.rb +47 -0
- data/lib/aws/templates/render/utils.rb +14 -0
- data/lib/aws/templates/render/utils/base_type_views.rb +12 -19
- data/lib/aws/templates/render/utils/inspect.rb +2 -4
- data/lib/aws/templates/render/utils/stringify.rb +2 -5
- data/lib/aws/templates/render/view.rb +3 -100
- data/lib/aws/templates/utils.rb +39 -15
- data/lib/aws/templates/utils/artifact_storage.rb +2 -3
- data/lib/aws/templates/utils/{named.rb → as_named.rb} +2 -3
- data/lib/aws/templates/utils/autoload.rb +224 -0
- data/lib/aws/templates/utils/contextualized.rb +8 -17
- data/lib/aws/templates/utils/contextualized/filter.rb +62 -0
- data/lib/aws/templates/utils/contextualized/filter/add.rb +67 -0
- data/lib/aws/templates/utils/contextualized/filter/chain.rb +56 -0
- data/lib/aws/templates/utils/contextualized/filter/copy.rb +38 -0
- data/lib/aws/templates/utils/contextualized/filter/dsl.rb +50 -0
- data/lib/aws/templates/utils/contextualized/filter/identity.rb +45 -0
- data/lib/aws/templates/utils/contextualized/filter/override.rb +62 -0
- data/lib/aws/templates/utils/contextualized/filter/proxy.rb +29 -0
- data/lib/aws/templates/utils/contextualized/filter/recursive_schema_filter.rb +46 -0
- data/lib/aws/templates/utils/contextualized/filter/remove.rb +66 -0
- data/lib/aws/templates/utils/contextualized/filter/scoped.rb +42 -0
- data/lib/aws/templates/utils/contextualized/refinements.rb +51 -0
- data/lib/aws/templates/utils/default.rb +258 -50
- data/lib/aws/templates/utils/dependency.rb +7 -6
- data/lib/aws/templates/utils/dependency/refinements.rb +80 -0
- data/lib/aws/templates/utils/dependent.rb +6 -3
- data/lib/aws/templates/utils/guarded.rb +30 -0
- data/lib/aws/templates/utils/inheritable.rb +21 -16
- data/lib/aws/templates/utils/inspectable.rb +4 -4
- data/lib/aws/templates/utils/late_bound.rb +2 -2
- data/lib/aws/templates/utils/memoized.rb +2 -0
- data/lib/aws/templates/utils/options.rb +49 -35
- data/lib/aws/templates/utils/parametrized.rb +32 -25
- data/lib/aws/templates/utils/parametrized/constraint.rb +95 -0
- data/lib/aws/templates/utils/parametrized/constraint/all_of.rb +51 -0
- data/lib/aws/templates/utils/parametrized/constraint/condition.rb +93 -0
- data/lib/aws/templates/utils/parametrized/constraint/depends_on_value.rb +60 -0
- data/lib/aws/templates/utils/parametrized/constraint/dsl.rb +86 -0
- data/lib/aws/templates/utils/parametrized/constraint/enum.rb +45 -0
- data/lib/aws/templates/utils/parametrized/constraint/matches.rb +44 -0
- data/lib/aws/templates/utils/parametrized/constraint/not_nil.rb +38 -0
- data/lib/aws/templates/utils/parametrized/constraint/requires.rb +54 -0
- data/lib/aws/templates/utils/parametrized/constraint/satisfies_condition.rb +55 -0
- data/lib/aws/templates/utils/parametrized/getter.rb +67 -0
- data/lib/aws/templates/utils/parametrized/getter/as_instance_variable.rb +41 -0
- data/lib/aws/templates/utils/parametrized/getter/as_is.rb +37 -0
- data/lib/aws/templates/utils/parametrized/getter/dsl.rb +62 -0
- data/lib/aws/templates/utils/parametrized/getter/one_of.rb +48 -0
- data/lib/aws/templates/utils/parametrized/getter/path.rb +53 -0
- data/lib/aws/templates/utils/parametrized/getter/value.rb +50 -0
- data/lib/aws/templates/utils/parametrized/nested.rb +9 -16
- data/lib/aws/templates/utils/parametrized/transformation.rb +74 -0
- data/lib/aws/templates/utils/parametrized/transformation/as_boolean.rb +42 -0
- data/lib/aws/templates/utils/parametrized/transformation/as_chain.rb +57 -0
- data/lib/aws/templates/utils/parametrized/transformation/as_hash.rb +89 -0
- data/lib/aws/templates/utils/parametrized/transformation/as_integer.rb +39 -0
- data/lib/aws/templates/utils/parametrized/transformation/as_list.rb +97 -0
- data/lib/aws/templates/utils/parametrized/transformation/as_module.rb +42 -0
- data/lib/aws/templates/utils/parametrized/transformation/as_object.rb +76 -0
- data/lib/aws/templates/utils/parametrized/transformation/as_rendered.rb +100 -0
- data/lib/aws/templates/utils/parametrized/transformation/as_string.rb +39 -0
- data/lib/aws/templates/utils/parametrized/transformation/dsl.rb +94 -0
- data/lib/aws/templates/utils/recursive.rb +22 -0
- data/spec/aws/templates/artifact_spec.rb +10 -10
- data/spec/aws/templates/cli_spec.rb +83 -0
- data/spec/aws/templates/composite_spec.rb +6 -4
- data/spec/aws/templates/help/rdoc/artifact_spec.rb +94 -0
- data/spec/aws/templates/help/rdoc/composite_spec.rb +53 -0
- data/spec/aws/templates/help/rdoc/parametrized/constraints/all_of_spec.rb +17 -0
- data/spec/aws/templates/help/rdoc/parametrized/constraints/depends_on_value_spec.rb +21 -0
- data/spec/aws/templates/help/rdoc/parametrized/constraints/enum_spec.rb +17 -0
- data/spec/aws/templates/help/rdoc/parametrized/constraints/matches_spec.rb +17 -0
- data/spec/aws/templates/help/rdoc/parametrized/constraints/satisfies_condition_spec.rb +17 -0
- data/spec/aws/templates/help/rdoc/parametrized/transformations/as_boolean_spec.rb +17 -0
- data/spec/aws/templates/help/rdoc/parametrized/transformations/as_chain_spec.rb +17 -0
- data/spec/aws/templates/help/rdoc/parametrized/transformations/as_hash_spec.rb +72 -0
- data/spec/aws/templates/help/rdoc/parametrized/transformations/as_integer_spec.rb +17 -0
- data/spec/aws/templates/help/rdoc/parametrized/transformations/as_list_spec.rb +39 -0
- data/spec/aws/templates/help/rdoc/parametrized/transformations/as_module_spec.rb +17 -0
- data/spec/aws/templates/help/rdoc/parametrized/transformations/as_object_spec.rb +38 -0
- data/spec/aws/templates/help/rdoc/parametrized/transformations/as_rendered_spec.rb +17 -0
- data/spec/aws/templates/render/utils/base_type_views_spec.rb +9 -11
- data/spec/aws/templates/render_spec.rb +1 -1
- data/spec/aws/templates/utils/as_named_spec.rb +0 -2
- data/spec/aws/templates/utils/autoload_spec.rb +14 -0
- data/spec/aws/templates/utils/contextualized_spec.rb +5 -5
- data/spec/aws/templates/utils/late_bound_spec.rb +2 -2
- data/spec/aws/templates/utils/parametrized/constraint_spec.rb +8 -10
- data/spec/aws/templates/utils/parametrized/getters_spec.rb +6 -7
- data/spec/aws/templates/utils/parametrized/transformation_spec.rb +3 -6
- data/spec/aws/templates/utils/parametrized_spec.rb +9 -10
- data/spec/aws/templates/utils_spec.rb +18 -0
- data/spec/test_empty/stuff.rb +4 -0
- data/spec/test_empty/stuff/here/test.rb +9 -0
- metadata +235 -19
- data/lib/aws/templates/exceptions.rb +0 -221
- data/lib/aws/templates/render/registry.rb +0 -60
- data/lib/aws/templates/utils/contextualized/filters.rb +0 -437
- data/lib/aws/templates/utils/contextualized/hash.rb +0 -13
- data/lib/aws/templates/utils/contextualized/nil.rb +0 -13
- data/lib/aws/templates/utils/contextualized/proc.rb +0 -13
- data/lib/aws/templates/utils/dependency/enumerable.rb +0 -13
- data/lib/aws/templates/utils/dependency/object.rb +0 -46
- data/lib/aws/templates/utils/parametrized/constraints.rb +0 -423
- data/lib/aws/templates/utils/parametrized/getters.rb +0 -293
- data/lib/aws/templates/utils/parametrized/guarded.rb +0 -32
- data/lib/aws/templates/utils/parametrized/transformations.rb +0 -652
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
require 'aws/templates/utils'
|
|
2
|
+
require 'facets/string/pathize'
|
|
3
|
+
|
|
4
|
+
module Aws
|
|
5
|
+
module Templates
|
|
6
|
+
module Cli
|
|
7
|
+
##
|
|
8
|
+
# Pluggable formatters
|
|
9
|
+
#
|
|
10
|
+
# The module contains formatter factory method and default formatter (AsIs) definition.
|
|
11
|
+
# Formatters are classes implementing simple "format" method accepting object and returning
|
|
12
|
+
# its' formatted string version.
|
|
13
|
+
module Formatter
|
|
14
|
+
def self.format_as(type, *params)
|
|
15
|
+
require "aws/templates/cli/formatter/#{type.pathize}"
|
|
16
|
+
const_get(type).new(*params)
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
require 'json'
|
|
2
|
+
require 'aws/templates/utils'
|
|
3
|
+
|
|
4
|
+
module Aws
|
|
5
|
+
module Templates
|
|
6
|
+
module Cli
|
|
7
|
+
module Formatter
|
|
8
|
+
##
|
|
9
|
+
# JSON formatter
|
|
10
|
+
#
|
|
11
|
+
# Transforms passed object into valid JSON document
|
|
12
|
+
class Json
|
|
13
|
+
def format(obj)
|
|
14
|
+
obj.to_json
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
require 'json'
|
|
2
|
+
require 'aws/templates/utils'
|
|
3
|
+
|
|
4
|
+
module Aws
|
|
5
|
+
module Templates
|
|
6
|
+
module Cli
|
|
7
|
+
##
|
|
8
|
+
# Templates CLI
|
|
9
|
+
#
|
|
10
|
+
# The class provides command-line utilities to use cloud templates and artifacts without
|
|
11
|
+
# knowledge of Ruby directly from command line.
|
|
12
|
+
# Commands:
|
|
13
|
+
# * render - It is used to setup and execute rendering of a single artifact. Also, different
|
|
14
|
+
# formatters supported for output. By default, render output is not formatted
|
|
15
|
+
# at all and is returned as is. JSON formatter is available out-of-box.
|
|
16
|
+
# * document - provide online documentation for selected artifact optionally using specific
|
|
17
|
+
# documentation generator
|
|
18
|
+
class Interface < ::Thor
|
|
19
|
+
desc 'render ARTIFACT', 'Render ARTIFACT with RENDER and print result'
|
|
20
|
+
|
|
21
|
+
method_option :format,
|
|
22
|
+
desc: 'Formatter used for final output',
|
|
23
|
+
aliases: :f,
|
|
24
|
+
required: false,
|
|
25
|
+
default: 'Json',
|
|
26
|
+
type: :string
|
|
27
|
+
|
|
28
|
+
method_option :options,
|
|
29
|
+
desc: 'JSON-formatted options to pass to the artifact',
|
|
30
|
+
aliases: :o,
|
|
31
|
+
required: false,
|
|
32
|
+
type: :string
|
|
33
|
+
|
|
34
|
+
method_option :render,
|
|
35
|
+
desc: 'Render',
|
|
36
|
+
aliases: :r,
|
|
37
|
+
required: true,
|
|
38
|
+
type: :string
|
|
39
|
+
|
|
40
|
+
def render(artifact_path)
|
|
41
|
+
say _format(
|
|
42
|
+
Templates::Utils.lookup_module(artifact_path),
|
|
43
|
+
Templates::Utils.lookup_module(options[:render]),
|
|
44
|
+
Aws::Templates::Cli::Formatter.format_as(options[:format]),
|
|
45
|
+
::JSON.parse(options[:options] || _as_string(STDIN), symbolize_names: true)
|
|
46
|
+
)
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
desc 'document ARTIFACT', 'Show help for the ARTIFACT'
|
|
50
|
+
|
|
51
|
+
method_option :generator,
|
|
52
|
+
desc: 'Generator to be used to generate the documentation',
|
|
53
|
+
aliases: :g,
|
|
54
|
+
required: false,
|
|
55
|
+
default: 'Aws::Templates::Help::Rdoc',
|
|
56
|
+
type: :string
|
|
57
|
+
|
|
58
|
+
method_option :parameters,
|
|
59
|
+
desc: 'JSON-formatted generator optional parameters',
|
|
60
|
+
aliases: :p,
|
|
61
|
+
required: false,
|
|
62
|
+
type: :string
|
|
63
|
+
|
|
64
|
+
def document(artifact_path)
|
|
65
|
+
artifact = Templates::Utils.lookup_module(artifact_path)
|
|
66
|
+
generator = Templates::Utils.lookup_module(options[:generator])
|
|
67
|
+
params = options[:parameters] && ::JSON.parse(options[:parameters], symbolize_names: true)
|
|
68
|
+
|
|
69
|
+
say(generator.show(artifact, params))
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
private
|
|
73
|
+
|
|
74
|
+
def _format(artifact, render, format, artifact_options)
|
|
75
|
+
format.format(render.view_for(artifact.new(artifact_options)).to_rendered)
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
def _as_string(obj)
|
|
79
|
+
if obj.respond_to?(:to_str)
|
|
80
|
+
obj.to_str
|
|
81
|
+
elsif obj.respond_to?(:to_io)
|
|
82
|
+
obj.to_io.read
|
|
83
|
+
elsif obj.respond_to?(:read)
|
|
84
|
+
obj.read
|
|
85
|
+
else
|
|
86
|
+
obj.to_s
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
end
|
|
91
|
+
end
|
|
92
|
+
end
|
|
@@ -1,7 +1,4 @@
|
|
|
1
|
-
require 'aws/templates/
|
|
2
|
-
require 'aws/templates/utils/artifact_storage'
|
|
3
|
-
require 'aws/templates/utils/contextualized'
|
|
4
|
-
require 'aws/templates/utils/dependency'
|
|
1
|
+
require 'aws/templates/utils'
|
|
5
2
|
|
|
6
3
|
module Aws
|
|
7
4
|
module Templates
|
|
@@ -25,7 +22,9 @@ module Aws
|
|
|
25
22
|
# supports inheritance as artifact does. So every component defined in
|
|
26
23
|
# the parent class will be initialized properly in all children too.
|
|
27
24
|
class Composite < Artifact
|
|
28
|
-
include
|
|
25
|
+
include Templates::Utils::Contextualized
|
|
26
|
+
using Templates::Utils::Contextualized::Refinements
|
|
27
|
+
using Templates::Utils::Dependency::Refinements
|
|
29
28
|
|
|
30
29
|
# propagate root to the components and set itself as the parent
|
|
31
30
|
contextualize filter(:add, :root) & (filter(:override) { { parent: self } })
|
|
@@ -37,7 +36,7 @@ module Aws
|
|
|
37
36
|
# Accessor returning dictionary of artifacts currently residing in
|
|
38
37
|
# composite instance with labels as keys
|
|
39
38
|
def artifacts
|
|
40
|
-
@artifacts ||= Utils::ArtifactStorage.new
|
|
39
|
+
@artifacts ||= Templates::Utils::ArtifactStorage.new
|
|
41
40
|
end
|
|
42
41
|
|
|
43
42
|
##
|
|
@@ -168,9 +167,7 @@ module Aws
|
|
|
168
167
|
|
|
169
168
|
def create_components; end
|
|
170
169
|
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
def create_artifact_object(type, params, &blk)
|
|
170
|
+
def create_artifact_object(type, params = nil, &blk)
|
|
174
171
|
type.new(options.filter(&contextualize(params.to_filter)), &blk)
|
|
175
172
|
end
|
|
176
173
|
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
require 'aws/templates/utils'
|
|
2
|
+
|
|
3
|
+
module Aws
|
|
4
|
+
module Templates
|
|
5
|
+
module Exception
|
|
6
|
+
##
|
|
7
|
+
# If something happens during parameter calculation
|
|
8
|
+
class NestedParameterException < ParameterException
|
|
9
|
+
def initialize(target_parameter)
|
|
10
|
+
super(
|
|
11
|
+
target_parameter,
|
|
12
|
+
'Exception was thrown by nested parameter while calculating ' \
|
|
13
|
+
"#{target_parameter.name} (#{target_parameter.description})"
|
|
14
|
+
)
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
require 'aws/templates/utils'
|
|
2
|
+
|
|
3
|
+
module Aws
|
|
4
|
+
module Templates
|
|
5
|
+
module Exception
|
|
6
|
+
##
|
|
7
|
+
# Scalar is met while traversing Options path
|
|
8
|
+
#
|
|
9
|
+
# Path is not empty yet but we can't traverse deeper because the current value is a scalar
|
|
10
|
+
class OptionScalarOnTheWay < OptionError
|
|
11
|
+
attr_reader :value
|
|
12
|
+
attr_reader :path
|
|
13
|
+
|
|
14
|
+
def initialize(value, path)
|
|
15
|
+
@value = value
|
|
16
|
+
@path = path
|
|
17
|
+
|
|
18
|
+
super(
|
|
19
|
+
"Value #{value} is not a recursive data structure and we have still #{path} keys " \
|
|
20
|
+
'to look-up'
|
|
21
|
+
)
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
require 'aws/templates/utils'
|
|
2
|
+
|
|
3
|
+
module Aws
|
|
4
|
+
module Templates
|
|
5
|
+
module Exception
|
|
6
|
+
##
|
|
7
|
+
# Recursive value is expected
|
|
8
|
+
#
|
|
9
|
+
# Value passed doesn't not support "recursive" contract. See Utils.recursive?
|
|
10
|
+
class OptionShouldBeRecursive < OptionError
|
|
11
|
+
attr_reader :value
|
|
12
|
+
|
|
13
|
+
def initialize(value)
|
|
14
|
+
@value = value
|
|
15
|
+
super("Value #{value} is not a recursive data structure")
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
require 'aws/templates/utils'
|
|
2
|
+
|
|
3
|
+
module Aws
|
|
4
|
+
module Templates
|
|
5
|
+
module Exception
|
|
6
|
+
##
|
|
7
|
+
# Deleted branch detected
|
|
8
|
+
#
|
|
9
|
+
# While traversing Options layers for a value, deleted branch marker was discovered.
|
|
10
|
+
class OptionValueDeleted < OptionError
|
|
11
|
+
attr_reader :path
|
|
12
|
+
|
|
13
|
+
def initialize(path)
|
|
14
|
+
@path = path
|
|
15
|
+
super(
|
|
16
|
+
"Deleted value was detected while traversing path. The path left untraversed: #{path}"
|
|
17
|
+
)
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
require 'aws/templates/utils'
|
|
2
|
+
|
|
3
|
+
module Aws
|
|
4
|
+
module Templates
|
|
5
|
+
module Exception
|
|
6
|
+
##
|
|
7
|
+
# Parameter already exists
|
|
8
|
+
#
|
|
9
|
+
# If you're trying to define a parameter in a parametrized artifact
|
|
10
|
+
# and this parameter either already defined for the class or defined
|
|
11
|
+
# in an ancestor.
|
|
12
|
+
class ParameterAlreadyExist < ParametrizedDSLError
|
|
13
|
+
# Parameter object of the conflicting parameter
|
|
14
|
+
attr_reader :parameter
|
|
15
|
+
|
|
16
|
+
def initialize(target_parameter)
|
|
17
|
+
@parameter = target_parameter
|
|
18
|
+
super(
|
|
19
|
+
"Parameter #{target_parameter.name} already in " \
|
|
20
|
+
"#{target_parameter.klass}."
|
|
21
|
+
)
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
require 'aws/templates/utils'
|
|
2
|
+
|
|
3
|
+
module Aws
|
|
4
|
+
module Templates
|
|
5
|
+
module Exception
|
|
6
|
+
##
|
|
7
|
+
# Parameter exception
|
|
8
|
+
#
|
|
9
|
+
# Happens during runtime if an error happens during parameter
|
|
10
|
+
# evaluation
|
|
11
|
+
class ParameterException < RuntimeError
|
|
12
|
+
# Parameter object
|
|
13
|
+
attr_reader :parameter
|
|
14
|
+
|
|
15
|
+
def message
|
|
16
|
+
cause.nil? ? super : "#{super} : #{cause.message}"
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def initialize(target_parameter, custom_message)
|
|
20
|
+
@parameter = target_parameter
|
|
21
|
+
super(custom_message)
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
require 'aws/templates/utils'
|
|
2
|
+
|
|
3
|
+
module Aws
|
|
4
|
+
module Templates
|
|
5
|
+
module Exception
|
|
6
|
+
##
|
|
7
|
+
# Getter is not specified
|
|
8
|
+
#
|
|
9
|
+
# Getter wasn't specified neither for the individual parameter nor for the mixing instance nor
|
|
10
|
+
# for its class.
|
|
11
|
+
class ParameterGetterIsNotDefined < ParameterException
|
|
12
|
+
def initialize(target_parameter)
|
|
13
|
+
super(
|
|
14
|
+
target_parameter,
|
|
15
|
+
"Can't find getter for #{target_parameter.name} (#{target_parameter.description}): " \
|
|
16
|
+
'a getter should be attached either to the parameter or the instance ' \
|
|
17
|
+
'or the instance class'
|
|
18
|
+
)
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
require 'aws/templates/utils'
|
|
2
|
+
|
|
3
|
+
module Aws
|
|
4
|
+
module Templates
|
|
5
|
+
module Exception
|
|
6
|
+
##
|
|
7
|
+
# A regular method and a parameter have the same name in a class
|
|
8
|
+
#
|
|
9
|
+
# A parameter was specified with the same name as exsiting method
|
|
10
|
+
# in the class or in an ancestor of the class.
|
|
11
|
+
class ParameterMethodNameConflict < ParametrizedDSLError
|
|
12
|
+
# Method object of the method specified
|
|
13
|
+
attr_reader :method_object
|
|
14
|
+
|
|
15
|
+
def initialize(target_method)
|
|
16
|
+
@method_object = target_method
|
|
17
|
+
|
|
18
|
+
super(
|
|
19
|
+
"Parameter name #{target_method.name} clashes with a method name in " \
|
|
20
|
+
"#{target_method.owner.name}"
|
|
21
|
+
)
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
require 'aws/templates/utils'
|
|
2
|
+
|
|
3
|
+
module Aws
|
|
4
|
+
module Templates
|
|
5
|
+
module Exception
|
|
6
|
+
##
|
|
7
|
+
# Invalid parameter specification hash
|
|
8
|
+
#
|
|
9
|
+
# If unknown option is passed in a parameter description block
|
|
10
|
+
class ParameterSpecificationIsInvalid < ParametrizedDSLError
|
|
11
|
+
# Parameter object faulty options were specified for
|
|
12
|
+
attr_reader :parameter
|
|
13
|
+
|
|
14
|
+
# Options unknown to Parametrized
|
|
15
|
+
attr_reader :options
|
|
16
|
+
|
|
17
|
+
def initialize(target_parameter, opts)
|
|
18
|
+
@parameter = target_parameter
|
|
19
|
+
@options = opts
|
|
20
|
+
|
|
21
|
+
super(
|
|
22
|
+
'Unsupported options are in specification for ' \
|
|
23
|
+
"parameter #{target_parameter.name} in class " \
|
|
24
|
+
"#{target_parameter.klass} : #{opts}"
|
|
25
|
+
)
|
|
26
|
+
end
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|