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,22 @@
|
|
|
1
|
+
require 'aws/templates/utils'
|
|
2
|
+
|
|
3
|
+
module Aws
|
|
4
|
+
module Templates
|
|
5
|
+
module Utils
|
|
6
|
+
##
|
|
7
|
+
# Recusrsive refinement
|
|
8
|
+
#
|
|
9
|
+
# The refinement adds to_recursive method to all standard classes which support recursive
|
|
10
|
+
# concept.
|
|
11
|
+
module Recursive
|
|
12
|
+
##
|
|
13
|
+
# Hash implements resursive concept
|
|
14
|
+
refine ::Hash do
|
|
15
|
+
def to_recursive
|
|
16
|
+
self
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
@@ -25,7 +25,7 @@ describe Aws::Templates::Artifact do
|
|
|
25
25
|
Struct.new(:root)
|
|
26
26
|
end
|
|
27
27
|
|
|
28
|
-
context 'featuring class is created' do
|
|
28
|
+
context 'when featuring class is created' do
|
|
29
29
|
let(:featuring_class) { artifact_class.featuring(TestTest::A, TestTest::B) }
|
|
30
30
|
|
|
31
31
|
it 'returns correct class name' do
|
|
@@ -33,7 +33,7 @@ describe Aws::Templates::Artifact do
|
|
|
33
33
|
end
|
|
34
34
|
end
|
|
35
35
|
|
|
36
|
-
context 'instance created' do
|
|
36
|
+
context 'when instance created' do
|
|
37
37
|
let(:params) do
|
|
38
38
|
{
|
|
39
39
|
c: 'qwe',
|
|
@@ -48,13 +48,13 @@ describe Aws::Templates::Artifact do
|
|
|
48
48
|
|
|
49
49
|
let(:instance) { artifact_class.new(params) }
|
|
50
50
|
|
|
51
|
-
context 'label
|
|
51
|
+
context 'without label' do
|
|
52
52
|
it 'contains auto-generated label' do
|
|
53
53
|
expect(instance.label).not_to be_nil
|
|
54
54
|
end
|
|
55
55
|
end
|
|
56
56
|
|
|
57
|
-
context 'root
|
|
57
|
+
context 'without root' do
|
|
58
58
|
it 'root is not empty' do
|
|
59
59
|
expect(instance.root).not_to be_nil
|
|
60
60
|
end
|
|
@@ -62,13 +62,13 @@ describe Aws::Templates::Artifact do
|
|
|
62
62
|
expect(instance.dependencies).to be_empty
|
|
63
63
|
end
|
|
64
64
|
end
|
|
65
|
-
context 'label
|
|
65
|
+
context 'with label' do
|
|
66
66
|
before { params[:label] = 'b' }
|
|
67
67
|
it 'contains passed label' do
|
|
68
68
|
expect(instance.label).to be == 'b'
|
|
69
69
|
end
|
|
70
70
|
end
|
|
71
|
-
context 'root
|
|
71
|
+
context 'with root' do
|
|
72
72
|
before { params[:root] = 1 }
|
|
73
73
|
it 'contains one dependency' do
|
|
74
74
|
expect(instance.dependencies).to be == [just_object.new(1)].to_set
|
|
@@ -77,13 +77,13 @@ describe Aws::Templates::Artifact do
|
|
|
77
77
|
expect(instance.root).to be == 1
|
|
78
78
|
end
|
|
79
79
|
end
|
|
80
|
-
context 'different root
|
|
80
|
+
context 'with different root' do
|
|
81
81
|
before { params[:root] = 2 }
|
|
82
82
|
it 'contains one dependency' do
|
|
83
83
|
expect(instance.dependencies).to be == [just_object.new(2)].to_set
|
|
84
84
|
end
|
|
85
85
|
end
|
|
86
|
-
context '
|
|
86
|
+
context 'without overrides' do
|
|
87
87
|
before { params.merge!(root: 3, label: 'thing') }
|
|
88
88
|
|
|
89
89
|
let(:expected) do
|
|
@@ -106,7 +106,7 @@ describe Aws::Templates::Artifact do
|
|
|
106
106
|
expect(instance.options.to_hash).to be == expected
|
|
107
107
|
end
|
|
108
108
|
end
|
|
109
|
-
context 'override
|
|
109
|
+
context 'with override' do
|
|
110
110
|
before { params.merge!(root: 3, label: 'thing', a: 'rty') }
|
|
111
111
|
|
|
112
112
|
let(:expected) do
|
|
@@ -131,7 +131,7 @@ describe Aws::Templates::Artifact do
|
|
|
131
131
|
end
|
|
132
132
|
end
|
|
133
133
|
|
|
134
|
-
context 'instance of child class created' do
|
|
134
|
+
context 'when instance of child class created' do
|
|
135
135
|
let(:child_class) do
|
|
136
136
|
Class.new(artifact_class) do
|
|
137
137
|
default a: deleted,
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
require 'aws/templates/utils'
|
|
3
|
+
|
|
4
|
+
module DummyRender
|
|
5
|
+
extend Aws::Templates::Render
|
|
6
|
+
|
|
7
|
+
define_view(Aws::Templates::Artifact) do
|
|
8
|
+
def to_rendered
|
|
9
|
+
instance.options.to_hash.to_a
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
class StubShell < ::Thor::Shell::Basic
|
|
15
|
+
def initialize(output, error)
|
|
16
|
+
@output = output
|
|
17
|
+
@error = error
|
|
18
|
+
super()
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
protected
|
|
22
|
+
|
|
23
|
+
def stdout
|
|
24
|
+
@output || STDOUT
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def stderr
|
|
28
|
+
@error || STDERR
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
describe Aws::Templates::Cli do
|
|
33
|
+
let(:parameters) {}
|
|
34
|
+
|
|
35
|
+
let(:command) {}
|
|
36
|
+
|
|
37
|
+
let(:arguments) {}
|
|
38
|
+
|
|
39
|
+
let(:argv) { [command].concat(arguments).concat(parameters.map { |k, v| "#{k}#{v}" }) }
|
|
40
|
+
|
|
41
|
+
let(:stdout) { StringIO.new('', 'w+') }
|
|
42
|
+
|
|
43
|
+
let(:stderr) { StringIO.new('', 'w+') }
|
|
44
|
+
|
|
45
|
+
let(:shell) { StubShell.new(stdout, stderr) }
|
|
46
|
+
|
|
47
|
+
describe 'render' do
|
|
48
|
+
let(:parameters) do
|
|
49
|
+
{
|
|
50
|
+
'--render=' => 'DummyRender',
|
|
51
|
+
'--options=' => { label: 1, root: 2 }.to_json
|
|
52
|
+
}
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
let(:command) { 'render' }
|
|
56
|
+
|
|
57
|
+
let(:arguments) { ['Aws::Templates::Artifact'] }
|
|
58
|
+
|
|
59
|
+
before do
|
|
60
|
+
described_class.start(argv, shell: shell)
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
it 'prints rendered output' do
|
|
64
|
+
expect(stdout.string).to be == "[[\"label\",1],[\"root\",2]]\n"
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
describe 'document' do
|
|
69
|
+
let(:parameters) { {} }
|
|
70
|
+
|
|
71
|
+
let(:command) { 'document' }
|
|
72
|
+
|
|
73
|
+
let(:arguments) { ['Aws::Templates::Artifact'] }
|
|
74
|
+
|
|
75
|
+
before do
|
|
76
|
+
described_class.start(argv, shell: shell)
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
it 'prints documentation' do
|
|
80
|
+
expect(stdout.string).to match(/Artifact.*Parents.*Parameters/m)
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
end
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
require 'spec_helper'
|
|
2
2
|
require 'aws/templates/composite'
|
|
3
3
|
|
|
4
|
+
using Aws::Templates::Utils::Dependency::Refinements
|
|
5
|
+
|
|
4
6
|
class A
|
|
5
7
|
attr_reader :params
|
|
6
8
|
|
|
@@ -54,7 +56,7 @@ describe Aws::Templates::Composite do
|
|
|
54
56
|
instance.artifacts.each_with_object({}) { |(k, v), memo| memo[k] = v.params.to_hash }
|
|
55
57
|
end
|
|
56
58
|
|
|
57
|
-
context 'a parameter is overriden' do
|
|
59
|
+
context 'when a parameter is overriden' do
|
|
58
60
|
let(:instance) { composite_class.new(parameters) }
|
|
59
61
|
|
|
60
62
|
let(:result) do
|
|
@@ -312,7 +314,7 @@ describe Aws::Templates::Composite do
|
|
|
312
314
|
}
|
|
313
315
|
end
|
|
314
316
|
|
|
315
|
-
context 'using constructor block' do
|
|
317
|
+
context 'when using constructor block' do
|
|
316
318
|
let(:instance) do
|
|
317
319
|
composite_class.new(parameters) do
|
|
318
320
|
artifact(
|
|
@@ -326,7 +328,7 @@ describe Aws::Templates::Composite do
|
|
|
326
328
|
it_behaves_like 'an artifact storage'
|
|
327
329
|
end
|
|
328
330
|
|
|
329
|
-
context 'using instance components method' do
|
|
331
|
+
context 'when using instance components method' do
|
|
330
332
|
let(:instance) do
|
|
331
333
|
composite_class.new(parameters).components do
|
|
332
334
|
artifact(
|
|
@@ -340,7 +342,7 @@ describe Aws::Templates::Composite do
|
|
|
340
342
|
it_behaves_like 'an artifact storage'
|
|
341
343
|
end
|
|
342
344
|
|
|
343
|
-
context 'using subclass' do
|
|
345
|
+
context 'when using subclass' do
|
|
344
346
|
let(:subclass) do
|
|
345
347
|
Class.new(composite_class) do
|
|
346
348
|
components do
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
require 'aws/templates/utils'
|
|
3
|
+
|
|
4
|
+
describe Aws::Templates::Help::Rdoc::Artifact do
|
|
5
|
+
let(:klass) do
|
|
6
|
+
Class.new(Aws::Templates::Artifact) do
|
|
7
|
+
help 'Very good thing'
|
|
8
|
+
|
|
9
|
+
def self.name
|
|
10
|
+
'Test'
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
default undocumented: 3,
|
|
14
|
+
label: :ert,
|
|
15
|
+
root: :a
|
|
16
|
+
|
|
17
|
+
default :ancestors.to_proc
|
|
18
|
+
|
|
19
|
+
default a: { b: :name.to_proc }
|
|
20
|
+
|
|
21
|
+
default a: { b: { d: 1 } }
|
|
22
|
+
|
|
23
|
+
parameter :undocumented
|
|
24
|
+
parameter :undocumented_with_constraint, constraint: not_nil
|
|
25
|
+
parameter :undocumented_with_constraint_and_transform,
|
|
26
|
+
constraint: not_nil,
|
|
27
|
+
transform: as_string
|
|
28
|
+
parameter :documented,
|
|
29
|
+
description: 'Documented parameter'
|
|
30
|
+
parameter :documented_with_constraint,
|
|
31
|
+
description: 'Documented parameter with constraint',
|
|
32
|
+
constraint: enum(1, 2, 3)
|
|
33
|
+
parameter :documented_with_constraint_and_transform,
|
|
34
|
+
description: 'Documented parameter with constraint and transformation',
|
|
35
|
+
constraint: all_of(
|
|
36
|
+
not_nil,
|
|
37
|
+
satisfies('not too big') { |v| v.size < 10 }
|
|
38
|
+
),
|
|
39
|
+
transform: as_list
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
let(:help) { Aws::Templates::Help::Rdoc.show(klass) }
|
|
44
|
+
|
|
45
|
+
let(:blurb) do
|
|
46
|
+
"\e[0m \n" \
|
|
47
|
+
"\e[1mTest\e[m\n" \
|
|
48
|
+
" \e[4mParents\e[m: Aws::Templates::Artifact\n\n" \
|
|
49
|
+
" \e[4mDescription\e[m\n" \
|
|
50
|
+
" Very good thing\n\n\n" \
|
|
51
|
+
" \e[4mParameters\e[m\n" \
|
|
52
|
+
" * \e[4mlabel\e[m Artifact's label\n" \
|
|
53
|
+
" * constraint:\n" \
|
|
54
|
+
" * can't be nil\n" \
|
|
55
|
+
" * \e[4mparent\e[m Artifact parent\n" \
|
|
56
|
+
" * \e[4mundocumented\e[m \n" \
|
|
57
|
+
" * \e[4mundocumented_with_constraint\e[m \n" \
|
|
58
|
+
" * constraint:\n" \
|
|
59
|
+
" * can't be nil\n" \
|
|
60
|
+
" * \e[4mundocumented_with_constraint_and_transform\e[m \n" \
|
|
61
|
+
" * transformation:\n" \
|
|
62
|
+
" * to string\n" \
|
|
63
|
+
" * constraint:\n" \
|
|
64
|
+
" * can't be nil\n" \
|
|
65
|
+
" * \e[4mdocumented\e[m Documented parameter\n" \
|
|
66
|
+
" * \e[4mdocumented_with_constraint\e[m Documented parameter with constraint\n" \
|
|
67
|
+
" * constraint:\n" \
|
|
68
|
+
" * one of: 1,2,3\n" \
|
|
69
|
+
" * \e[4mdocumented_with_constraint_and_transform\e[m Documented parameter with\n" \
|
|
70
|
+
" constraint and transformation\n" \
|
|
71
|
+
" * transformation:\n" \
|
|
72
|
+
" * as a list where elements can be anything\n" \
|
|
73
|
+
" * constraint:\n" \
|
|
74
|
+
" * satisfies all of the following:\n" \
|
|
75
|
+
" * can't be nil\n" \
|
|
76
|
+
" * not too big\n\n" \
|
|
77
|
+
" \e[4mDefaults\e[m\n" \
|
|
78
|
+
" * \e[4mlabel\e[m :ert\n" \
|
|
79
|
+
" * \e[4mroot\e[m :a\n" \
|
|
80
|
+
" * \e[4mundocumented\e[m 3\n" \
|
|
81
|
+
" \e[4moverlayed\e[m \e[4mwith\e[m\n" \
|
|
82
|
+
" Calculated\n" \
|
|
83
|
+
" \e[4moverlayed\e[m \e[4mwith\e[m\n" \
|
|
84
|
+
" * \e[4ma\e[m\n" \
|
|
85
|
+
" * \e[4mb\e[m Calculated\n" \
|
|
86
|
+
" \e[4moverlayed\e[m \e[4mwith\e[m\n" \
|
|
87
|
+
" \e[4mb\e[m\n" \
|
|
88
|
+
" * \e[4md\e[m 1\n\n\n"
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
it 'generates help correctly' do
|
|
92
|
+
expect(help).to be == blurb
|
|
93
|
+
end
|
|
94
|
+
end
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
require 'aws/templates/utils'
|
|
3
|
+
|
|
4
|
+
class RdocTestComposite < Aws::Templates::Composite
|
|
5
|
+
help 'Very good thing'
|
|
6
|
+
|
|
7
|
+
default undocumented: 3,
|
|
8
|
+
label: 23,
|
|
9
|
+
root: 56
|
|
10
|
+
|
|
11
|
+
parameter :undocumented
|
|
12
|
+
|
|
13
|
+
contextualize filter(:copy)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
describe Aws::Templates::Help::Rdoc::Composite do
|
|
17
|
+
let(:blurb) do
|
|
18
|
+
"\e[0m \n" \
|
|
19
|
+
"\e[1mRdocTestComposite\e[m\n" \
|
|
20
|
+
" \e[4mParents\e[m: Aws::Templates::Composite->Aws::Templates::Artifact\n\n" \
|
|
21
|
+
" \e[4mDescription\e[m\n" \
|
|
22
|
+
" Very good thing\n\n\n" \
|
|
23
|
+
" \e[4mParameters\e[m\n" \
|
|
24
|
+
" * \e[4mlabel\e[m Artifact's label\n" \
|
|
25
|
+
" * constraint:\n" \
|
|
26
|
+
" * can't be nil\n" \
|
|
27
|
+
" * \e[4mparent\e[m Artifact parent\n" \
|
|
28
|
+
" * \e[4mundocumented\e[m \n\n" \
|
|
29
|
+
" \e[4mDefaults\e[m\n" \
|
|
30
|
+
" * \e[4mlabel\e[m 23\n" \
|
|
31
|
+
" * \e[4mroot\e[m 56\n" \
|
|
32
|
+
" * \e[4mundocumented\e[m 3\n\n\n" \
|
|
33
|
+
" \e[4mComponents\e[m \e[4mscope\e[m \e[4mfilters\e[m\n" \
|
|
34
|
+
" * a chain of the following filters:\n" \
|
|
35
|
+
" * merge the following options from the parent context:\n" \
|
|
36
|
+
" * [:root]\n" \
|
|
37
|
+
" * merge the context with the following override:\n"
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
let(:help) { Aws::Templates::Help::Rdoc.show(RdocTestComposite) }
|
|
41
|
+
|
|
42
|
+
it 'generates help blurb correctly' do
|
|
43
|
+
expect(help.include?(blurb)).to be true
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
it 'generates defaults correctly' do
|
|
47
|
+
expect(help).to match(/undocumented.*3/m)
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
it 'generates context filters' do
|
|
51
|
+
expect(help).to match(/Components[^\n]+scope.*copy the entire/m)
|
|
52
|
+
end
|
|
53
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
require 'aws/templates/utils'
|
|
3
|
+
|
|
4
|
+
describe Aws::Templates::Help::Rdoc::Parametrized::Constraints::AllOf do
|
|
5
|
+
let(:parametrized) do
|
|
6
|
+
Module.new do
|
|
7
|
+
include Aws::Templates::Utils::Parametrized
|
|
8
|
+
parameter :all_of_field, constraint: all_of(not_nil, enum(:a, :b, :c))
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
let(:help) { Aws::Templates::Help::Rdoc.show(parametrized) }
|
|
13
|
+
|
|
14
|
+
it 'prints documentation' do
|
|
15
|
+
expect(help).to match(/all_of_field.*be nil.*one of.*a..b..c/m)
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
require 'aws/templates/utils'
|
|
3
|
+
|
|
4
|
+
describe Aws::Templates::Help::Rdoc::Parametrized::Constraints::DependsOnValue do
|
|
5
|
+
let(:parametrized) do
|
|
6
|
+
Module.new do
|
|
7
|
+
include Aws::Templates::Utils::Parametrized
|
|
8
|
+
parameter :field
|
|
9
|
+
parameter :depends_on_value_requires_field,
|
|
10
|
+
constraint: depends_on_value(a: requires(:field))
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
let(:help) { Aws::Templates::Help::Rdoc.show(parametrized) }
|
|
15
|
+
|
|
16
|
+
it 'prints documentation' do
|
|
17
|
+
expect(help).to match(
|
|
18
|
+
/depends_on_value_requires_field.*depends.*when[^\n]+a.*requires.*field/m
|
|
19
|
+
)
|
|
20
|
+
end
|
|
21
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
require 'aws/templates/utils'
|
|
3
|
+
|
|
4
|
+
describe Aws::Templates::Help::Rdoc::Parametrized::Constraints::Enum do
|
|
5
|
+
let(:parametrized) do
|
|
6
|
+
Module.new do
|
|
7
|
+
include Aws::Templates::Utils::Parametrized
|
|
8
|
+
parameter :enum_field, constraint: enum(1, 2, '3')
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
let(:help) { Aws::Templates::Help::Rdoc.show(parametrized) }
|
|
13
|
+
|
|
14
|
+
it 'prints documentation' do
|
|
15
|
+
expect(help).to match(/enum_field.*one of.+1.+2.+3/m)
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
require 'aws/templates/utils'
|
|
3
|
+
|
|
4
|
+
describe Aws::Templates::Help::Rdoc::Parametrized::Constraints::Matches do
|
|
5
|
+
let(:parametrized) do
|
|
6
|
+
Module.new do
|
|
7
|
+
include Aws::Templates::Utils::Parametrized
|
|
8
|
+
parameter :matches_field, constraint: matches(/ABC/)
|
|
9
|
+
end
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
let(:help) { Aws::Templates::Help::Rdoc.show(parametrized) }
|
|
13
|
+
|
|
14
|
+
it 'prints documentation' do
|
|
15
|
+
expect(help).to match(/matches_field.*matches.*ABC/m)
|
|
16
|
+
end
|
|
17
|
+
end
|