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.
Files changed (225) hide show
  1. checksums.yaml +4 -4
  2. data/.rspec +4 -0
  3. data/.rubocop.yml +1 -0
  4. data/Rakefile +1 -1
  5. data/bin/cloud-templates-runner.rb +5 -0
  6. data/cloud-templates.gemspec +9 -4
  7. data/examples/lib/user_directory.rb +0 -10
  8. data/examples/lib/user_directory/artifacts.rb +8 -0
  9. data/examples/lib/user_directory/artifacts/catalogized.rb +8 -7
  10. data/examples/lib/user_directory/artifacts/group.rb +27 -30
  11. data/examples/lib/user_directory/artifacts/ided.rb +8 -7
  12. data/examples/lib/user_directory/artifacts/organization.rb +10 -11
  13. data/examples/lib/user_directory/artifacts/pathed.rb +17 -17
  14. data/examples/lib/user_directory/artifacts/person.rb +20 -15
  15. data/examples/lib/user_directory/artifacts/team.rb +26 -21
  16. data/examples/lib/user_directory/artifacts/unit.rb +15 -17
  17. data/examples/lib/user_directory/artifacts/user.rb +26 -23
  18. data/examples/lib/user_directory/render.rb +8 -0
  19. data/examples/lib/user_directory/render/etc.rb +2 -0
  20. data/examples/lib/user_directory/render/etc/artifact_view.rb +2 -2
  21. data/examples/lib/user_directory/render/etc/composite_view.rb +1 -2
  22. data/examples/lib/user_directory/render/etc/group_view.rb +3 -3
  23. data/examples/lib/user_directory/render/etc/person_view.rb +2 -2
  24. data/examples/lib/user_directory/render/etc/registry.rb +4 -6
  25. data/examples/lib/user_directory/render/etc/user_view.rb +2 -3
  26. data/examples/lib/user_directory/render/ldap.rb +2 -0
  27. data/examples/lib/user_directory/render/ldap/artifact_view.rb +3 -4
  28. data/examples/lib/user_directory/render/ldap/composite_view.rb +3 -4
  29. data/examples/lib/user_directory/render/ldap/group_view.rb +3 -4
  30. data/examples/lib/user_directory/render/ldap/organization_view.rb +3 -4
  31. data/examples/lib/user_directory/render/ldap/person_view.rb +3 -4
  32. data/examples/lib/user_directory/render/ldap/registry.rb +3 -4
  33. data/examples/lib/user_directory/render/ldap/unit_view.rb +3 -4
  34. data/examples/lib/user_directory/render/ldap/user_view.rb +3 -4
  35. data/examples/lib/user_directory/utils.rb +1 -1
  36. data/examples/spec/user_directory_spec.rb +24 -25
  37. data/lib/aws/templates.rb +0 -8
  38. data/lib/aws/templates/artifact.rb +20 -12
  39. data/lib/aws/templates/cli.rb +14 -0
  40. data/lib/aws/templates/cli/formatter.rb +21 -0
  41. data/lib/aws/templates/cli/formatter/json.rb +20 -0
  42. data/lib/aws/templates/cli/interface.rb +92 -0
  43. data/lib/aws/templates/composite.rb +6 -9
  44. data/lib/aws/templates/exception.rb +8 -0
  45. data/lib/aws/templates/exception/nested_parameter_exception.rb +19 -0
  46. data/lib/aws/templates/exception/option_error.rb +14 -0
  47. data/lib/aws/templates/exception/option_scalar_on_the_way.rb +26 -0
  48. data/lib/aws/templates/exception/option_should_be_recursive.rb +20 -0
  49. data/lib/aws/templates/exception/option_value_deleted.rb +22 -0
  50. data/lib/aws/templates/exception/parameter_already_exist.rb +26 -0
  51. data/lib/aws/templates/exception/parameter_exception.rb +26 -0
  52. data/lib/aws/templates/exception/parameter_getter_is_not_defined.rb +23 -0
  53. data/lib/aws/templates/exception/parameter_method_name_conflict.rb +26 -0
  54. data/lib/aws/templates/exception/parameter_specification_is_invalid.rb +30 -0
  55. data/lib/aws/templates/exception/parameter_value_invalid.rb +37 -0
  56. data/lib/aws/templates/exception/parametrized_dsl_error.rb +14 -0
  57. data/lib/aws/templates/exception/view_not_found.rb +26 -0
  58. data/lib/aws/templates/help.rb +43 -0
  59. data/lib/aws/templates/help/aggregate.rb +74 -0
  60. data/lib/aws/templates/help/dsl.rb +30 -0
  61. data/lib/aws/templates/help/provider.rb +15 -0
  62. data/lib/aws/templates/help/rdoc.rb +105 -0
  63. data/lib/aws/templates/help/rdoc/artifact.rb +50 -0
  64. data/lib/aws/templates/help/rdoc/composite.rb +20 -0
  65. data/lib/aws/templates/help/rdoc/contextualized.rb +12 -0
  66. data/lib/aws/templates/help/rdoc/contextualized/filter.rb +19 -0
  67. data/lib/aws/templates/help/rdoc/contextualized/filters.rb +14 -0
  68. data/lib/aws/templates/help/rdoc/contextualized/filters/add.rb +21 -0
  69. data/lib/aws/templates/help/rdoc/contextualized/filters/chain.rb +33 -0
  70. data/lib/aws/templates/help/rdoc/contextualized/filters/copy.rb +23 -0
  71. data/lib/aws/templates/help/rdoc/contextualized/filters/identity.rb +23 -0
  72. data/lib/aws/templates/help/rdoc/contextualized/filters/override.rb +29 -0
  73. data/lib/aws/templates/help/rdoc/contextualized/filters/proxy.rb +28 -0
  74. data/lib/aws/templates/help/rdoc/contextualized/filters/recursive_schema_filter.rb +28 -0
  75. data/lib/aws/templates/help/rdoc/contextualized/filters/remove.rb +21 -0
  76. data/lib/aws/templates/help/rdoc/contextualized/filters/scoped.rb +29 -0
  77. data/lib/aws/templates/help/rdoc/contextualized/provider.rb +28 -0
  78. data/lib/aws/templates/help/rdoc/default.rb +12 -0
  79. data/lib/aws/templates/help/rdoc/default/definition.rb +89 -0
  80. data/lib/aws/templates/help/rdoc/default/provider.rb +25 -0
  81. data/lib/aws/templates/help/rdoc/dsl.rb +20 -0
  82. data/lib/aws/templates/help/rdoc/inheritable.rb +48 -0
  83. data/lib/aws/templates/help/rdoc/parametrized.rb +12 -0
  84. data/lib/aws/templates/help/rdoc/parametrized/constraint.rb +31 -0
  85. data/lib/aws/templates/help/rdoc/parametrized/constraints.rb +14 -0
  86. data/lib/aws/templates/help/rdoc/parametrized/constraints/all_of.rb +39 -0
  87. data/lib/aws/templates/help/rdoc/parametrized/constraints/condition.rb +44 -0
  88. data/lib/aws/templates/help/rdoc/parametrized/constraints/depends_on_value.rb +41 -0
  89. data/lib/aws/templates/help/rdoc/parametrized/constraints/enum.rb +33 -0
  90. data/lib/aws/templates/help/rdoc/parametrized/constraints/matches.rb +27 -0
  91. data/lib/aws/templates/help/rdoc/parametrized/constraints/not_nil.rb +27 -0
  92. data/lib/aws/templates/help/rdoc/parametrized/constraints/requires.rb +33 -0
  93. data/lib/aws/templates/help/rdoc/parametrized/constraints/satisfies_condition.rb +28 -0
  94. data/lib/aws/templates/help/rdoc/parametrized/getter.rb +17 -0
  95. data/lib/aws/templates/help/rdoc/parametrized/getters.rb +14 -0
  96. data/lib/aws/templates/help/rdoc/parametrized/nested.rb +32 -0
  97. data/lib/aws/templates/help/rdoc/parametrized/parameter.rb +55 -0
  98. data/lib/aws/templates/help/rdoc/parametrized/provider.rb +32 -0
  99. data/lib/aws/templates/help/rdoc/parametrized/transformation.rb +17 -0
  100. data/lib/aws/templates/help/rdoc/parametrized/transformations.rb +14 -0
  101. data/lib/aws/templates/help/rdoc/parametrized/transformations/as_boolean.rb +25 -0
  102. data/lib/aws/templates/help/rdoc/parametrized/transformations/as_chain.rb +34 -0
  103. data/lib/aws/templates/help/rdoc/parametrized/transformations/as_hash.rb +40 -0
  104. data/lib/aws/templates/help/rdoc/parametrized/transformations/as_integer.rb +26 -0
  105. data/lib/aws/templates/help/rdoc/parametrized/transformations/as_list.rb +32 -0
  106. data/lib/aws/templates/help/rdoc/parametrized/transformations/as_module.rb +25 -0
  107. data/lib/aws/templates/help/rdoc/parametrized/transformations/as_object.rb +32 -0
  108. data/lib/aws/templates/help/rdoc/parametrized/transformations/as_rendered.rb +28 -0
  109. data/lib/aws/templates/help/rdoc/parametrized/transformations/as_string.rb +25 -0
  110. data/lib/aws/templates/help/rdoc/provider.rb +20 -0
  111. data/lib/aws/templates/help/rdoc/routing.rb +104 -0
  112. data/lib/aws/templates/help/rdoc/texting.rb +42 -0
  113. data/lib/aws/templates/processor.rb +53 -0
  114. data/lib/aws/templates/processor/handler.rb +104 -0
  115. data/lib/aws/templates/processor/registry.rb +74 -0
  116. data/lib/aws/templates/processor/routing.rb +27 -0
  117. data/lib/aws/templates/render.rb +27 -25
  118. data/lib/aws/templates/render/basic_view.rb +47 -0
  119. data/lib/aws/templates/render/utils.rb +14 -0
  120. data/lib/aws/templates/render/utils/base_type_views.rb +12 -19
  121. data/lib/aws/templates/render/utils/inspect.rb +2 -4
  122. data/lib/aws/templates/render/utils/stringify.rb +2 -5
  123. data/lib/aws/templates/render/view.rb +3 -100
  124. data/lib/aws/templates/utils.rb +39 -15
  125. data/lib/aws/templates/utils/artifact_storage.rb +2 -3
  126. data/lib/aws/templates/utils/{named.rb → as_named.rb} +2 -3
  127. data/lib/aws/templates/utils/autoload.rb +224 -0
  128. data/lib/aws/templates/utils/contextualized.rb +8 -17
  129. data/lib/aws/templates/utils/contextualized/filter.rb +62 -0
  130. data/lib/aws/templates/utils/contextualized/filter/add.rb +67 -0
  131. data/lib/aws/templates/utils/contextualized/filter/chain.rb +56 -0
  132. data/lib/aws/templates/utils/contextualized/filter/copy.rb +38 -0
  133. data/lib/aws/templates/utils/contextualized/filter/dsl.rb +50 -0
  134. data/lib/aws/templates/utils/contextualized/filter/identity.rb +45 -0
  135. data/lib/aws/templates/utils/contextualized/filter/override.rb +62 -0
  136. data/lib/aws/templates/utils/contextualized/filter/proxy.rb +29 -0
  137. data/lib/aws/templates/utils/contextualized/filter/recursive_schema_filter.rb +46 -0
  138. data/lib/aws/templates/utils/contextualized/filter/remove.rb +66 -0
  139. data/lib/aws/templates/utils/contextualized/filter/scoped.rb +42 -0
  140. data/lib/aws/templates/utils/contextualized/refinements.rb +51 -0
  141. data/lib/aws/templates/utils/default.rb +258 -50
  142. data/lib/aws/templates/utils/dependency.rb +7 -6
  143. data/lib/aws/templates/utils/dependency/refinements.rb +80 -0
  144. data/lib/aws/templates/utils/dependent.rb +6 -3
  145. data/lib/aws/templates/utils/guarded.rb +30 -0
  146. data/lib/aws/templates/utils/inheritable.rb +21 -16
  147. data/lib/aws/templates/utils/inspectable.rb +4 -4
  148. data/lib/aws/templates/utils/late_bound.rb +2 -2
  149. data/lib/aws/templates/utils/memoized.rb +2 -0
  150. data/lib/aws/templates/utils/options.rb +49 -35
  151. data/lib/aws/templates/utils/parametrized.rb +32 -25
  152. data/lib/aws/templates/utils/parametrized/constraint.rb +95 -0
  153. data/lib/aws/templates/utils/parametrized/constraint/all_of.rb +51 -0
  154. data/lib/aws/templates/utils/parametrized/constraint/condition.rb +93 -0
  155. data/lib/aws/templates/utils/parametrized/constraint/depends_on_value.rb +60 -0
  156. data/lib/aws/templates/utils/parametrized/constraint/dsl.rb +86 -0
  157. data/lib/aws/templates/utils/parametrized/constraint/enum.rb +45 -0
  158. data/lib/aws/templates/utils/parametrized/constraint/matches.rb +44 -0
  159. data/lib/aws/templates/utils/parametrized/constraint/not_nil.rb +38 -0
  160. data/lib/aws/templates/utils/parametrized/constraint/requires.rb +54 -0
  161. data/lib/aws/templates/utils/parametrized/constraint/satisfies_condition.rb +55 -0
  162. data/lib/aws/templates/utils/parametrized/getter.rb +67 -0
  163. data/lib/aws/templates/utils/parametrized/getter/as_instance_variable.rb +41 -0
  164. data/lib/aws/templates/utils/parametrized/getter/as_is.rb +37 -0
  165. data/lib/aws/templates/utils/parametrized/getter/dsl.rb +62 -0
  166. data/lib/aws/templates/utils/parametrized/getter/one_of.rb +48 -0
  167. data/lib/aws/templates/utils/parametrized/getter/path.rb +53 -0
  168. data/lib/aws/templates/utils/parametrized/getter/value.rb +50 -0
  169. data/lib/aws/templates/utils/parametrized/nested.rb +9 -16
  170. data/lib/aws/templates/utils/parametrized/transformation.rb +74 -0
  171. data/lib/aws/templates/utils/parametrized/transformation/as_boolean.rb +42 -0
  172. data/lib/aws/templates/utils/parametrized/transformation/as_chain.rb +57 -0
  173. data/lib/aws/templates/utils/parametrized/transformation/as_hash.rb +89 -0
  174. data/lib/aws/templates/utils/parametrized/transformation/as_integer.rb +39 -0
  175. data/lib/aws/templates/utils/parametrized/transformation/as_list.rb +97 -0
  176. data/lib/aws/templates/utils/parametrized/transformation/as_module.rb +42 -0
  177. data/lib/aws/templates/utils/parametrized/transformation/as_object.rb +76 -0
  178. data/lib/aws/templates/utils/parametrized/transformation/as_rendered.rb +100 -0
  179. data/lib/aws/templates/utils/parametrized/transformation/as_string.rb +39 -0
  180. data/lib/aws/templates/utils/parametrized/transformation/dsl.rb +94 -0
  181. data/lib/aws/templates/utils/recursive.rb +22 -0
  182. data/spec/aws/templates/artifact_spec.rb +10 -10
  183. data/spec/aws/templates/cli_spec.rb +83 -0
  184. data/spec/aws/templates/composite_spec.rb +6 -4
  185. data/spec/aws/templates/help/rdoc/artifact_spec.rb +94 -0
  186. data/spec/aws/templates/help/rdoc/composite_spec.rb +53 -0
  187. data/spec/aws/templates/help/rdoc/parametrized/constraints/all_of_spec.rb +17 -0
  188. data/spec/aws/templates/help/rdoc/parametrized/constraints/depends_on_value_spec.rb +21 -0
  189. data/spec/aws/templates/help/rdoc/parametrized/constraints/enum_spec.rb +17 -0
  190. data/spec/aws/templates/help/rdoc/parametrized/constraints/matches_spec.rb +17 -0
  191. data/spec/aws/templates/help/rdoc/parametrized/constraints/satisfies_condition_spec.rb +17 -0
  192. data/spec/aws/templates/help/rdoc/parametrized/transformations/as_boolean_spec.rb +17 -0
  193. data/spec/aws/templates/help/rdoc/parametrized/transformations/as_chain_spec.rb +17 -0
  194. data/spec/aws/templates/help/rdoc/parametrized/transformations/as_hash_spec.rb +72 -0
  195. data/spec/aws/templates/help/rdoc/parametrized/transformations/as_integer_spec.rb +17 -0
  196. data/spec/aws/templates/help/rdoc/parametrized/transformations/as_list_spec.rb +39 -0
  197. data/spec/aws/templates/help/rdoc/parametrized/transformations/as_module_spec.rb +17 -0
  198. data/spec/aws/templates/help/rdoc/parametrized/transformations/as_object_spec.rb +38 -0
  199. data/spec/aws/templates/help/rdoc/parametrized/transformations/as_rendered_spec.rb +17 -0
  200. data/spec/aws/templates/render/utils/base_type_views_spec.rb +9 -11
  201. data/spec/aws/templates/render_spec.rb +1 -1
  202. data/spec/aws/templates/utils/as_named_spec.rb +0 -2
  203. data/spec/aws/templates/utils/autoload_spec.rb +14 -0
  204. data/spec/aws/templates/utils/contextualized_spec.rb +5 -5
  205. data/spec/aws/templates/utils/late_bound_spec.rb +2 -2
  206. data/spec/aws/templates/utils/parametrized/constraint_spec.rb +8 -10
  207. data/spec/aws/templates/utils/parametrized/getters_spec.rb +6 -7
  208. data/spec/aws/templates/utils/parametrized/transformation_spec.rb +3 -6
  209. data/spec/aws/templates/utils/parametrized_spec.rb +9 -10
  210. data/spec/aws/templates/utils_spec.rb +18 -0
  211. data/spec/test_empty/stuff.rb +4 -0
  212. data/spec/test_empty/stuff/here/test.rb +9 -0
  213. metadata +235 -19
  214. data/lib/aws/templates/exceptions.rb +0 -221
  215. data/lib/aws/templates/render/registry.rb +0 -60
  216. data/lib/aws/templates/utils/contextualized/filters.rb +0 -437
  217. data/lib/aws/templates/utils/contextualized/hash.rb +0 -13
  218. data/lib/aws/templates/utils/contextualized/nil.rb +0 -13
  219. data/lib/aws/templates/utils/contextualized/proc.rb +0 -13
  220. data/lib/aws/templates/utils/dependency/enumerable.rb +0 -13
  221. data/lib/aws/templates/utils/dependency/object.rb +0 -46
  222. data/lib/aws/templates/utils/parametrized/constraints.rb +0 -423
  223. data/lib/aws/templates/utils/parametrized/getters.rb +0 -293
  224. data/lib/aws/templates/utils/parametrized/guarded.rb +0 -32
  225. data/lib/aws/templates/utils/parametrized/transformations.rb +0 -652
@@ -0,0 +1,8 @@
1
+ require 'aws/templates/utils'
2
+
3
+ module UserDirectory
4
+ ##
5
+ # Namespace for different type of renders for organization models.
6
+ module Render
7
+ end
8
+ end
@@ -1,3 +1,5 @@
1
+ require 'user_directory/render/etc/registry'
2
+
1
3
  Dir.glob("#{File.dirname(__FILE__)}/etc/*.rb").each do |file|
2
4
  require file
3
5
  end
@@ -1,4 +1,4 @@
1
- require 'user_directory/render/etc/registry'
1
+ require 'aws/templates/utils'
2
2
 
3
3
  module UserDirectory
4
4
  module Render
@@ -8,7 +8,7 @@ module UserDirectory
8
8
  #
9
9
  # It just puts a link between children and type registrar
10
10
  class ArtifactView < Aws::Templates::Render::View
11
- register_in Render::Etc
11
+ register_in Etc
12
12
  end
13
13
  end
14
14
  end
@@ -1,5 +1,4 @@
1
- require 'aws/templates/composite'
2
- require 'user_directory/render/etc/artifact_view'
1
+ require 'aws/templates/utils'
3
2
 
4
3
  module UserDirectory
5
4
  module Render
@@ -1,4 +1,4 @@
1
- require 'user_directory/render/etc/artifact_view'
1
+ require 'aws/templates/utils'
2
2
 
3
3
  module UserDirectory
4
4
  module Render
@@ -8,10 +8,10 @@ module UserDirectory
8
8
  #
9
9
  # Creates group file entry.
10
10
  class GroupView < ArtifactView
11
- artifact UserDirectory::Group
11
+ artifact UserDirectory::Artifacts::Group
12
12
 
13
13
  def prepare
14
- Diff.new [], [group_record.join(':')]
14
+ Render::Etc::Diff.new [], [group_record.join(':')]
15
15
  end
16
16
 
17
17
  def group_record
@@ -1,4 +1,4 @@
1
- require 'user_directory/render/etc/user_view'
1
+ require 'aws/templates/utils'
2
2
 
3
3
  module UserDirectory
4
4
  module Render
@@ -8,7 +8,7 @@ module UserDirectory
8
8
  #
9
9
  # The same as POSIX user but with customized GECOS field.
10
10
  class PersonView < UserView
11
- artifact UserDirectory::Person
11
+ artifact UserDirectory::Artifacts::Person
12
12
 
13
13
  def user_info
14
14
  in_instance { "#{cn},,#{phone}" }
@@ -1,6 +1,4 @@
1
- require 'aws/templates/render/utils/base_type_views'
2
- require 'aws/templates/render/view'
3
- require 'pathname'
1
+ require 'aws/templates/utils'
4
2
 
5
3
  module UserDirectory
6
4
  module Render
@@ -12,16 +10,16 @@ module UserDirectory
12
10
  module Etc
13
11
  extend Aws::Templates::Render::Utils::BaseTypeViews
14
12
  initialize_base_type_views
15
- register Pathname, Aws::Templates::Render::Utils::BaseTypeViews::ToString
13
+ register ::Pathname, Aws::Templates::Render::Utils::BaseTypeViews::ToString
16
14
  Diff = Struct.new(:passwd, :group)
17
15
 
18
16
  ##
19
17
  # Diff view
20
18
  #
21
- # Creates Diff object out of the instance atached with recursively rendered passwd and group
19
+ # Creates Diff object out of the instance attached with recursively rendered passwd and group
22
20
  # fields.
23
21
  class DiffView < Aws::Templates::Render::BasicView
24
- register_in Etc
22
+ register_in Render::Etc
25
23
  artifact Diff
26
24
 
27
25
  def to_rendered
@@ -1,5 +1,4 @@
1
- require 'user_directory/render/etc/artifact_view'
2
- require 'user_directory/artifacts/user'
1
+ require 'aws/templates/utils'
3
2
 
4
3
  module UserDirectory
5
4
  module Render
@@ -9,7 +8,7 @@ module UserDirectory
9
8
  #
10
9
  # It creates passwd file entry
11
10
  class UserView < ArtifactView
12
- artifact UserDirectory::User
11
+ artifact UserDirectory::Artifacts::User
13
12
 
14
13
  def prepare
15
14
  Diff.new [user_record.join(':')], []
@@ -1,3 +1,5 @@
1
+ require 'user_directory/render/ldap/registry'
2
+
1
3
  Dir.glob("#{File.dirname(__FILE__)}/ldap/*.rb").each do |file|
2
4
  require file
3
5
  end
@@ -1,15 +1,14 @@
1
- require 'aws/templates/artifact'
2
- require 'user_directory/render/ldap/registry'
1
+ require 'aws/templates/utils'
3
2
 
4
3
  module UserDirectory
5
4
  module Render
6
- module LDAP
5
+ module Ldap
7
6
  ##
8
7
  # Basic render
9
8
  #
10
9
  # It just puts a link between children and type registrar
11
10
  class ArtifactView < Aws::Templates::Render::View
12
- register_in Render::LDAP
11
+ register_in Render::Ldap
13
12
  artifact Aws::Templates::Artifact
14
13
 
15
14
  def prepare
@@ -1,16 +1,15 @@
1
- require 'aws/templates/composite'
2
- require 'user_directory/render/ldap/registry'
1
+ require 'aws/templates/utils'
3
2
 
4
3
  module UserDirectory
5
4
  module Render
6
- module LDAP
5
+ module Ldap
7
6
  ##
8
7
  # Composite render
9
8
  #
10
9
  # It aggregates LDIF entries from the children into a single list
11
10
  # putting composite's own LDIF entry into the list head.
12
11
  class CompositeView < Aws::Templates::Render::View
13
- register_in Render::LDAP
12
+ register_in Render::Ldap
14
13
  artifact Aws::Templates::Composite
15
14
 
16
15
  def prepare
@@ -1,15 +1,14 @@
1
- require 'user_directory/render/ldap/artifact_view'
2
- require 'user_directory/artifacts/group'
1
+ require 'aws/templates/utils'
3
2
 
4
3
  module UserDirectory
5
4
  module Render
6
- module LDAP
5
+ module Ldap
7
6
  ##
8
7
  # POSIX group render
9
8
  #
10
9
  # Creates group LDIF entry.
11
10
  class GroupView < ArtifactView
12
- artifact UserDirectory::Group
11
+ artifact UserDirectory::Artifacts::Group
13
12
 
14
13
  def prepare
15
14
  super().merge(
@@ -1,15 +1,14 @@
1
- require 'user_directory/render/ldap/composite_view'
2
- require 'user_directory/artifacts/organization'
1
+ require 'aws/templates/utils'
3
2
 
4
3
  module UserDirectory
5
4
  module Render
6
- module LDAP
5
+ module Ldap
7
6
  ##
8
7
  # Catalog's organization render
9
8
  #
10
9
  # It renders into organization's LDIF entry with merged list of children.
11
10
  class OrganizationView < CompositeView
12
- artifact UserDirectory::Organization
11
+ artifact UserDirectory::Artifacts::Organization
13
12
 
14
13
  protected
15
14
 
@@ -1,16 +1,15 @@
1
- require 'user_directory/render/ldap/user_view'
2
- require 'user_directory/artifacts/person'
1
+ require 'aws/templates/utils'
3
2
 
4
3
  module UserDirectory
5
4
  module Render
6
- module LDAP
5
+ module Ldap
7
6
  ##
8
7
  # Person render
9
8
  #
10
9
  # It merges POSIX user entry with additional fields and object
11
10
  # types valid for a real person.
12
11
  class PersonView < UserView
13
- artifact UserDirectory::Person
12
+ artifact UserDirectory::Artifacts::Person
14
13
 
15
14
  def prepare
16
15
  hsh = in_instance do
@@ -1,5 +1,4 @@
1
- require 'aws/templates/render/utils/base_type_views'
2
- require 'pathname'
1
+ require 'aws/templates/utils'
3
2
 
4
3
  module UserDirectory
5
4
  module Render
@@ -7,10 +6,10 @@ module UserDirectory
7
6
  # LDIF render
8
7
  #
9
8
  # Transforms formed catalog artifacts into LDIF definition.
10
- module LDAP
9
+ module Ldap
11
10
  extend Aws::Templates::Render::Utils::BaseTypeViews
12
11
  initialize_base_type_views
13
- register Pathname, Aws::Templates::Render::Utils::BaseTypeViews::ToString
12
+ register ::Pathname, Aws::Templates::Render::Utils::BaseTypeViews::ToString
14
13
  end
15
14
  end
16
15
  end
@@ -1,15 +1,14 @@
1
- require 'user_directory/render/ldap/composite_view'
2
- require 'user_directory/artifacts/unit'
1
+ require 'aws/templates/utils'
3
2
 
4
3
  module UserDirectory
5
4
  module Render
6
- module LDAP
5
+ module Ldap
7
6
  ##
8
7
  # Catalog's org unit render
9
8
  #
10
9
  # It renders into unit's LDIF entry with merged list of children.
11
10
  class UnitView < CompositeView
12
- artifact UserDirectory::Unit
11
+ artifact UserDirectory::Artifacts::Unit
13
12
 
14
13
  protected
15
14
 
@@ -1,15 +1,14 @@
1
- require 'user_directory/render/ldap/artifact_view'
2
- require 'user_directory/artifacts/user'
1
+ require 'aws/templates/utils'
3
2
 
4
3
  module UserDirectory
5
4
  module Render
6
- module LDAP
5
+ module Ldap
7
6
  ##
8
7
  # POSIX user render
9
8
  #
10
9
  # It creates POSIX user LDIF entry
11
10
  class UserView < ArtifactView
12
- artifact UserDirectory::User
11
+ artifact UserDirectory::Artifacts::User
13
12
 
14
13
  def prepare
15
14
  super().merge(cn: instance.cn).merge(passwd_block)
@@ -1,4 +1,4 @@
1
- require 'aws/templates/utils/parametrized/constraints'
1
+ require 'aws/templates/utils'
2
2
 
3
3
  module UserDirectory
4
4
  ##
@@ -1,24 +1,13 @@
1
1
  require 'spec_helper'
2
-
3
- require 'user_directory/artifacts/user'
4
- require 'user_directory/artifacts/person'
5
- require 'user_directory/artifacts/group'
6
- require 'user_directory/artifacts/unit'
7
- require 'user_directory/artifacts/team'
8
- require 'user_directory/artifacts/organization'
9
-
10
- require 'user_directory/render/etc'
11
- require 'user_directory/render/ldap'
12
-
13
- include UserDirectory
2
+ require 'aws/templates/utils'
14
3
 
15
4
  # rubocop:disable Metrics/BlockLength
16
5
  describe UserDirectory do
17
6
  let(:directory) do
18
- Organization.new(name: 'example.com', root: Object.new) do
19
- artifact(Unit, name: 'Business') do
7
+ UserDirectory::Artifacts::Organization.new(name: 'example.com', root: Object.new) do
8
+ artifact(UserDirectory::Artifacts::Unit, name: 'Business') do
20
9
  artifact(
21
- Team,
10
+ UserDirectory::Artifacts::Team,
22
11
  name: 'Sales',
23
12
  group_id: 120,
24
13
  manager: {
@@ -57,7 +46,7 @@ describe UserDirectory do
57
46
  )
58
47
 
59
48
  artifact(
60
- Team,
49
+ UserDirectory::Artifacts::Team,
61
50
  name: 'Finances',
62
51
  group_id: 110,
63
52
  manager: {
@@ -85,12 +74,15 @@ describe UserDirectory do
85
74
  ]
86
75
  )
87
76
 
88
- artifact Group, name: 'business', id: 100, members: search(klass: User, recursive: true)
77
+ artifact UserDirectory::Artifacts::Group,
78
+ name: 'business',
79
+ id: 100,
80
+ members: search(klass: UserDirectory::Artifacts::User, recursive: true)
89
81
  end
90
82
 
91
- artifact(Unit, name: 'Engineering', shell: { path: '/bin/zsh' }) do
83
+ artifact(UserDirectory::Artifacts::Unit, name: 'Engineering', shell: { path: '/bin/zsh' }) do
92
84
  artifact(
93
- Team,
85
+ UserDirectory::Artifacts::Team,
94
86
  name: 'Production',
95
87
  group_id: 210,
96
88
  manager: {
@@ -119,7 +111,7 @@ describe UserDirectory do
119
111
  )
120
112
 
121
113
  artifact(
122
- Team,
114
+ UserDirectory::Artifacts::Team,
123
115
  name: 'Development',
124
116
  group_id: 220,
125
117
  manager: {
@@ -155,7 +147,7 @@ describe UserDirectory do
155
147
  )
156
148
 
157
149
  artifact(
158
- Team,
150
+ UserDirectory::Artifacts::Team,
159
151
  name: 'QA',
160
152
  group_id: 230,
161
153
  manager: {
@@ -190,15 +182,21 @@ describe UserDirectory do
190
182
  ]
191
183
  )
192
184
 
193
- artifact Group, name: 'engineering', id: 200, members: search(klass: User, recursive: true)
185
+ artifact UserDirectory::Artifacts::Group,
186
+ name: 'engineering',
187
+ id: 200,
188
+ members: search(klass: UserDirectory::Artifacts::User, recursive: true)
194
189
  end
195
190
 
196
- artifact Group, name: 'managers', id: 300, members: search(label: 'manager', recursive: true)
191
+ artifact UserDirectory::Artifacts::Group,
192
+ name: 'managers',
193
+ id: 300,
194
+ members: search(label: 'manager', recursive: true)
197
195
  end
198
196
  end
199
197
 
200
198
  describe 'etc render' do
201
- let(:rendered) { Render::Etc.view_for(directory).to_rendered }
199
+ let(:rendered) { UserDirectory::Render::Etc.view_for(directory).to_rendered }
202
200
 
203
201
  let(:expected) do
204
202
  UserDirectory::Render::Etc::Diff.new(
@@ -241,7 +239,7 @@ describe UserDirectory do
241
239
  end
242
240
 
243
241
  describe 'ldap render' do
244
- let(:rendered) { Render::LDAP.view_for(directory).to_rendered }
242
+ let(:rendered) { UserDirectory::Render::Ldap.view_for(directory).to_rendered }
245
243
 
246
244
  let(:expected) do
247
245
  [
@@ -566,3 +564,4 @@ describe UserDirectory do
566
564
  end
567
565
  end
568
566
  end
567
+ # rubocop:enable Metrics/BlockLength
data/lib/aws/templates.rb CHANGED
@@ -1,11 +1,3 @@
1
- require 'aws/templates/artifact'
2
- require 'aws/templates/composite'
3
- require 'aws/templates/render'
4
- require 'aws/templates/utils/named'
5
- require 'aws/templates/utils/parametrized/constraints'
6
- require 'aws/templates/utils/parametrized/transformations'
7
- require 'aws/templates/utils/parametrized/getters'
8
-
9
1
  ##
10
2
  # :main: README.md
11
3
  module Aws
@@ -1,9 +1,4 @@
1
- require 'aws/templates/utils/parametrized'
2
- require 'aws/templates/utils/parametrized/getters'
3
- require 'aws/templates/utils/parametrized/constraints'
4
- require 'aws/templates/utils/default'
5
- require 'aws/templates/utils/options'
6
- require 'aws/templates/utils/dependent'
1
+ require 'aws/templates/utils'
7
2
 
8
3
  module Aws
9
4
  module Templates
@@ -53,9 +48,10 @@ module Aws
53
48
  # any auto-generated parameter with input hash if they have the same
54
49
  # name/path.
55
50
  class Artifact
56
- include Utils::Default
57
- include Utils::Parametrized
58
- include Utils::Dependent
51
+ include Templates::Utils::Default
52
+ include Templates::Utils::Parametrized
53
+ include Templates::Utils::Dependent
54
+ include Templates::Help::Dsl
59
55
 
60
56
  attr_accessor :options
61
57
 
@@ -95,18 +91,30 @@ module Aws
95
91
 
96
92
  parameter :label, description: 'Artifact\'s label', constraint: not_nil
97
93
 
94
+ ##
95
+ # Meta field
96
+ #
97
+ # The field is used to attach arbitrary information to artifacts which is not directly
98
+ # relevant to artifact properties. This attribute can be used for tagginng, for instance.
99
+ def meta
100
+ return @meta if @meta
101
+
102
+ meta_option = options[:meta]
103
+ @meta = meta_option.nil? ? {} : meta_option.to_hash
104
+ end
105
+
98
106
  ##
99
107
  # Artifact's root
100
108
  #
101
109
  # A root is an object which bundles artifacts into common rendering group helping to find
102
110
  # disconnected pieces of dependency graph. If two artifacts have different roots they
103
111
  # definitelly belong to different graphs.
104
- default root: proc { object_id }
105
-
106
112
  def root
107
113
  options[:root]
108
114
  end
109
115
 
116
+ default root: proc { object_id }
117
+
110
118
  # Artifact's look-up path through all ancestors
111
119
  def lookup_path
112
120
  acc = [label]
@@ -146,7 +154,7 @@ module Aws
146
154
  # * +params+ - input parameters hash to be used during following
147
155
  # hash transformations and expansions.
148
156
  def initialize(params)
149
- @options = Utils::Options.new(defaults, params)
157
+ @options = Templates::Utils::Options.new(defaults, params)
150
158
  end
151
159
  end
152
160
  end