dtk-dsl 1.0.2 → 1.0.3

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 (48) hide show
  1. checksums.yaml +4 -4
  2. data/lib/dsl/input_output_common/canonical/hash_key.rb +1 -0
  3. data/lib/dsl/input_output_common/semantic_parse/hash.rb +5 -0
  4. data/lib/dsl/input_output_common/semantic_parse/mixin.rb +1 -1
  5. data/lib/dsl/service_and_component_info/info/input_files.rb +58 -0
  6. data/lib/dsl/service_and_component_info/info.rb +64 -0
  7. data/lib/dsl/service_and_component_info/module_ref.rb +56 -0
  8. data/lib/dsl/service_and_component_info/parser.rb +58 -0
  9. data/lib/dsl/service_and_component_info/transform_from/info/component.rb +42 -0
  10. data/lib/dsl/service_and_component_info/transform_from/info/input_files.rb +27 -0
  11. data/lib/dsl/service_and_component_info/transform_from/info/service.rb +43 -0
  12. data/lib/dsl/service_and_component_info/transform_from/info.rb +64 -0
  13. data/lib/dsl/service_and_component_info/transform_from/parser/top_dsl/assemblies/node_bindings.rb +81 -0
  14. data/lib/dsl/service_and_component_info/transform_from/parser/top_dsl/assemblies/workflows.rb +37 -0
  15. data/lib/dsl/service_and_component_info/transform_from/parser/top_dsl/assemblies.rb +52 -0
  16. data/lib/dsl/service_and_component_info/transform_from/parser/top_dsl/components.rb +33 -0
  17. data/lib/dsl/service_and_component_info/transform_from/parser/top_dsl/dependencies.rb +74 -0
  18. data/lib/dsl/service_and_component_info/transform_from/parser/top_dsl/module_info.rb +31 -0
  19. data/lib/dsl/service_and_component_info/transform_from/parser/top_dsl.rb +36 -0
  20. data/lib/dsl/service_and_component_info/transform_from/parser.rb +24 -0
  21. data/lib/dsl/service_and_component_info/transform_from.rb +25 -0
  22. data/lib/dsl/service_and_component_info/transform_to/info/component.rb +70 -0
  23. data/lib/dsl/service_and_component_info/transform_to/info/input_files.rb +36 -0
  24. data/lib/dsl/service_and_component_info/transform_to/info/service.rb +72 -0
  25. data/lib/dsl/service_and_component_info/transform_to/info.rb +51 -0
  26. data/lib/dsl/service_and_component_info/transform_to/parser/component_module/module_refs.rb +27 -0
  27. data/lib/dsl/service_and_component_info/transform_to/parser/component_module/top_dsl.rb +47 -0
  28. data/lib/dsl/service_and_component_info/transform_to/parser/component_module.rb +28 -0
  29. data/lib/dsl/service_and_component_info/transform_to/parser/module_refs.rb +54 -0
  30. data/lib/dsl/service_and_component_info/transform_to/parser/service_module/module_refs.rb +27 -0
  31. data/lib/dsl/service_and_component_info/transform_to/parser/service_module/top_dsl.rb +73 -0
  32. data/lib/dsl/service_and_component_info/transform_to/parser/service_module.rb +28 -0
  33. data/lib/dsl/service_and_component_info/transform_to/parser/top_dsl.rb +36 -0
  34. data/lib/dsl/service_and_component_info/transform_to/parser.rb +39 -0
  35. data/lib/dsl/service_and_component_info/transform_to.rb +25 -0
  36. data/lib/dsl/service_and_component_info.rb +55 -0
  37. data/lib/dsl/template/parsing/mixin.rb +6 -5
  38. data/lib/dsl/template/parsing/parsing_error/subclasses.rb +13 -13
  39. data/lib/dsl/template/v1/common_module.rb +4 -2
  40. data/lib/dsl/template/v1/component.rb +11 -2
  41. data/lib/dsl/template/v1/component_def/semantic_parse.rb +26 -0
  42. data/lib/dsl/template/v1/component_def.rb +52 -0
  43. data/lib/dsl/template/v1/workflow.rb +0 -1
  44. data/lib/dsl/template/v1.rb +1 -0
  45. data/lib/dsl/version.rb +1 -1
  46. data/lib/dsl/yaml_helper.rb +1 -0
  47. data/lib/dtk_dsl.rb +2 -0
  48. metadata +41 -7
@@ -0,0 +1,74 @@
1
+ #
2
+ # Copyright (C) 2010-2016 dtk contributors
3
+ #
4
+ # This file is part of the dtk project.
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+ module DTK::DSL
19
+ class ServiceAndComponentInfo
20
+ class TransformFrom::Parser::TopDSL
21
+ class Dependencies < self
22
+ def update_output_hash?
23
+ module_refs_input_hash = input_file_hash?(:module_refs) || {}
24
+ unless module_refs_input_hash.empty?
25
+ existing_module_refs = output_hash['dependencies'] ||= {}
26
+ merge_in_new_module_refs!(existing_module_refs, module_refs_input_hash)
27
+ end
28
+ end
29
+
30
+ private
31
+
32
+ def merge_in_new_module_refs!(module_refs_hash, input_module_refs_hash)
33
+ ndx_existing_modules = ndx_existing_modules(module_refs_hash)
34
+ component_module_refs(input_module_refs_hash).each do |module_ref|
35
+ raise_error_if_conflict(module_ref, ndx_existing_modules)
36
+ module_refs_hash.merge!(combined_module_form(module_ref))
37
+ end
38
+ end
39
+
40
+ def component_module_refs(input_module_refs_hash)
41
+ (input_module_refs_hash['component_modules'] || {}).inject([]) do |a, (name, info)|
42
+ a + [ModuleRef.new(info['namespace'], name, info['version'])]
43
+ end
44
+ end
45
+
46
+
47
+ NAMESPACE_NAME_DELIM = '/'
48
+ # indexed by module_name
49
+ def ndx_existing_modules(module_refs_hash)
50
+ module_refs_hash.inject({}) do |h, (namespace_name, version)|
51
+ namespace, name = namespace_name.split(NAMESPACE_NAME_DELIM)
52
+ h.merge(name => ModuleRef.new(namespace, name, version))
53
+ end
54
+ end
55
+
56
+ def combined_module_form(module_ref)
57
+ { "#{module_ref.namespace}#{NAMESPACE_NAME_DELIM}#{module_ref.module_name}" => module_ref.version }
58
+ end
59
+
60
+ def raise_error_if_conflict(module_ref, ndx_existing_modules)
61
+ if matching_module_ref = ndx_existing_modules[@module_name]
62
+ fail Error::Usage, conflict_error_msg(module_ref, matching_module_ref) unless module_ref.match?(matching_module_ref)
63
+ end
64
+ end
65
+
66
+
67
+ def conflict_error_msg(module_ref, matching_module_ref)
68
+ "Conflicting versions of module '#{module_ref.module_name}': '#{module_ref.print_form}' vs '#{matching_module_ref.print_form}'"
69
+ end
70
+
71
+ end
72
+ end
73
+ end
74
+ end
@@ -0,0 +1,31 @@
1
+ #
2
+ # Copyright (C) 2010-2016 dtk contributors
3
+ #
4
+ # This file is part of the dtk project.
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+ module DTK::DSL
19
+ class ServiceAndComponentInfo::TransformFrom::Parser
20
+ class TopDSL
21
+ class ModuleInfo < self
22
+ def update_output_hash?
23
+ # if these attributes are in output_hash, already, they will match
24
+ output_hash['module'] ||= "#{module_ref.namespace}/#{module_ref.module_name}"
25
+ output_hash['version'] ||= module_ref.version
26
+ end
27
+
28
+ end
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,36 @@
1
+ #
2
+ # Copyright (C) 2010-2016 dtk contributors
3
+ #
4
+ # This file is part of the dtk project.
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+ module DTK::DSL
19
+ class ServiceAndComponentInfo::TransformFrom
20
+ class Parser
21
+ class TopDSL < self
22
+ require_relative('top_dsl/module_info')
23
+ require_relative('top_dsl/assemblies')
24
+ require_relative('top_dsl/components')
25
+ require_relative('top_dsl/dependencies')
26
+ end
27
+
28
+ private
29
+
30
+ def module_ref
31
+ info_object.module_ref
32
+ end
33
+
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,24 @@
1
+ #
2
+ # Copyright (C) 2010-2016 dtk contributors
3
+ #
4
+ # This file is part of the dtk project.
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+ module DTK::DSL
19
+ class ServiceAndComponentInfo::TransformFrom
20
+ class Parser < ServiceAndComponentInfo::Parser
21
+ require_relative('parser/top_dsl')
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,25 @@
1
+ #
2
+ # Copyright (C) 2010-2016 dtk contributors
3
+ #
4
+ # This file is part of the dtk project.
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+ module DTK::DSL
19
+ class ServiceAndComponentInfo
20
+ class TransformFrom < self
21
+ require_relative('transform_from/info')
22
+ require_relative('transform_from/parser')
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,70 @@
1
+ #
2
+ # Copyright (C) 2010-2016 dtk contributors
3
+ #
4
+ # This file is part of the dtk project.
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+ module DTK::DSL
19
+ class ServiceAndComponentInfo::TransformTo
20
+ class Info
21
+ class Component < self
22
+ def compute_outputs!
23
+ set_top_level_dsl_output_hash!
24
+ set_module_refs_output_hash!
25
+ end
26
+
27
+ private
28
+
29
+ def info_type
30
+ :component_info
31
+ end
32
+
33
+ def set_top_level_dsl_output_hash!
34
+ path = ComponentModulePath.top_level_dsl
35
+ parser = component_module_dsl_parser::TopDSL
36
+ set_output_hash?(parser, path)
37
+ end
38
+
39
+ def set_module_refs_output_hash!
40
+ path = ComponentModulePath.module_refs
41
+ parser = component_module_dsl_parser::ModuleRefs
42
+ set_output_hash?(parser, path)
43
+ end
44
+
45
+ def set_output_hash?(parser, path)
46
+ output_hash = output_file_hash(path)
47
+ if parser.update_output_hash?(output_hash, self) # This conditionally updates output_hash
48
+ update_or_add_output_hash!(path, output_hash)
49
+ end
50
+ end
51
+
52
+ def component_module_dsl_parser
53
+ @component_module_dsl_parser ||= Parser::ComponentModule
54
+ end
55
+
56
+ module ComponentModulePath
57
+ TOP_LEVEL_DSL = 'dtk.model.yaml'
58
+ MODULE_REFS = 'module_refs.yaml'
59
+ def self.top_level_dsl
60
+ TOP_LEVEL_DSL
61
+ end
62
+ def self.module_refs
63
+ MODULE_REFS
64
+ end
65
+ end
66
+
67
+ end
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,36 @@
1
+ #
2
+ # Copyright (C) 2010-2016 dtk contributors
3
+ #
4
+ # This file is part of the dtk project.
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+ module DTK::DSL
19
+ class ServiceAndComponentInfo::TransformTo::Info
20
+ class InputFiles < ServiceAndComponentInfo::Info::InputFiles
21
+ def add_canonical_hash_content!(path, canonical_hash_content)
22
+ raise_error_if_not_canonical_hash(canonical_hash_content)
23
+ add_hash_content!(path, canonical_hash_content)
24
+ end
25
+
26
+ private
27
+
28
+ def raise_error_if_not_canonical_hash(obj)
29
+ unless obj.kind_of?(InputOutputCommon::Canonical::Hash)
30
+ raise Error, "Expecting input of type 'InputOutputCommon::Canonical::Hash', but '#{obj.class}' was given"
31
+ end
32
+ end
33
+
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,72 @@
1
+ #
2
+ # Copyright (C) 2010-2016 dtk contributors
3
+ #
4
+ # This file is part of the dtk project.
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+ module DTK::DSL
19
+ class ServiceAndComponentInfo::TransformTo
20
+ class Info
21
+ class Service < self
22
+ def compute_outputs!
23
+ set_top_level_dsl_output_hash!
24
+ set_module_refs_output_hash!
25
+ end
26
+
27
+ private
28
+
29
+ def info_type
30
+ :service_info
31
+ end
32
+
33
+ def set_top_level_dsl_output_hash!
34
+ parser = service_module_dsl_parser::TopDSL
35
+ set_output_hash?(parser)
36
+ end
37
+
38
+ def set_module_refs_output_hash!
39
+ path = ServiceModulePath.module_refs
40
+ parser = service_module_dsl_parser::ModuleRefs
41
+ output_hash = output_file_hash(path)
42
+ update_or_add_output_hash!(path, output_hash) if parser.update_output_hash?(output_hash, self)
43
+ end
44
+
45
+ def set_output_hash?(parser)
46
+ output_hash = {}
47
+ if parser.update_output_hash?(output_hash, self)
48
+ if assemblies = output_hash['assemblies'] || output_hash[:assemblies]
49
+ assemblies.each { |assembly| update_or_add_output_hash!(ServiceModulePath.top_level_dsl(assembly['name']||assembly[:name]), assembly) }
50
+ end
51
+ end
52
+ end
53
+
54
+ def service_module_dsl_parser
55
+ @service_module_dsl_parser ||= Parser::ServiceModule
56
+ end
57
+
58
+ module ServiceModulePath
59
+ TOP_LEVEL_DSL = 'dtk.assembly.yaml'
60
+ MODULE_REFS = 'module_refs.yaml'
61
+ def self.top_level_dsl(assembly_name)
62
+ "assemblies/#{assembly_name}.#{TOP_LEVEL_DSL}"
63
+ end
64
+ def self.module_refs
65
+ MODULE_REFS
66
+ end
67
+ end
68
+
69
+ end
70
+ end
71
+ end
72
+ end
@@ -0,0 +1,51 @@
1
+ #
2
+ # Copyright (C) 2010-2016 dtk contributors
3
+ #
4
+ # This file is part of the dtk project.
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+ module DTK::DSL
19
+ class ServiceAndComponentInfo::TransformTo
20
+ class Info < ServiceAndComponentInfo::Info
21
+ require_relative('info/input_files')
22
+ require_relative('info/service')
23
+ require_relative('info/component')
24
+
25
+ # This is for mapping to module directories (not service instance directories)
26
+ INFO_HASH = {
27
+ :service_info => {
28
+ :input_files => {
29
+ :module => {
30
+ :regexps => [Regexp.new("dtk\.module\.yaml$")]
31
+ },
32
+ :assemblies => {
33
+ :regexps => [Regexp.new("assemblies/(.*)\.dtk\.assembly\.(yml|yaml)$"), ]
34
+ },
35
+ :legacy_assemblies => {
36
+ :regexps => [Regexp.new("assemblies/([^/]+)/assembly\.(yml|yaml)$")]
37
+ }
38
+ }
39
+ },
40
+ :component_info => {
41
+ :input_files => {
42
+ :module => {
43
+ :regexps => [Regexp.new("dtk\.module\.yaml$")]
44
+ }
45
+ }
46
+ }
47
+ }
48
+
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,27 @@
1
+ #
2
+ # Copyright (C) 2010-2016 dtk contributors
3
+ #
4
+ # This file is part of the dtk project.
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+ module DTK::DSL
19
+ class ServiceAndComponentInfo::TransformTo
20
+ class Parser
21
+ module ComponentModule
22
+ class ModuleRefs < Parser::ModuleRefs
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,47 @@
1
+ #
2
+ # Copyright (C) 2010-2016 dtk contributors
3
+ #
4
+ # This file is part of the dtk project.
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+ module DTK::DSL; class ServiceAndComponentInfo::TransformTo
19
+ class Parser
20
+ module ComponentModule
21
+ class TopDSL < Parser
22
+ def update_output_hash?
23
+ if module_dsl_canonical_hash = input_file_hash?(:module)
24
+ if component_defs = module_dsl_canonical_hash.val(:ComponentDefs)
25
+ add_module_info_to_output_hash!
26
+ add_components_to_output_hash!(component_defs)
27
+ output_hash
28
+ end
29
+ end
30
+ end
31
+
32
+ private
33
+
34
+ COMPONENT_MODULE_DSL_VERSION = '1.0.0'
35
+ def add_module_info_to_output_hash!
36
+ output_hash['module'] = info_object.module_ref.module_name
37
+ output_hash['dsl_version'] = COMPONENT_MODULE_DSL_VERSION
38
+ end
39
+
40
+ def add_components_to_output_hash!(component_defs)
41
+ output_hash['components'] = component_defs
42
+ end
43
+
44
+ end
45
+ end
46
+ end
47
+ end; end
@@ -0,0 +1,28 @@
1
+ #
2
+ # Copyright (C) 2010-2016 dtk contributors
3
+ #
4
+ # This file is part of the dtk project.
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+ module DTK::DSL
19
+ class ServiceAndComponentInfo::TransformTo
20
+ class Parser
21
+ # parse to form component module files
22
+ module ComponentModule
23
+ require_relative('component_module/top_dsl')
24
+ require_relative('component_module/module_refs')
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,54 @@
1
+ #
2
+ # Copyright (C) 2010-2016 dtk contributors
3
+ #
4
+ # This file is part of the dtk project.
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+ module DTK::DSL
19
+ class ServiceAndComponentInfo::TransformTo::Parser
20
+ class ModuleRefs < self
21
+ def update_output_hash?
22
+ if module_dsl_canonical_hash = input_file_hash?(:module)
23
+ if dependencies = module_dsl_canonical_hash.val(:DependentModules)
24
+ add_dependencies_to_output_hash!(dependencies)
25
+ output_hash
26
+ end
27
+ end
28
+ end
29
+
30
+ private
31
+
32
+ def add_dependencies_to_output_hash!(dependencies_canonical_array)
33
+ component_modules = dependencies_canonical_array.inject({}) do |h, dependency_canonical_hash|
34
+ module_name = dependency_canonical_hash.val(:ModuleName)
35
+ namespace = dependency_canonical_hash.val(:Namespace)
36
+ version = version?(dependency_canonical_hash)
37
+
38
+ module_info = { 'namespace' => namespace }
39
+ module_info.merge!('version' => version) if version
40
+ h.merge(module_name => module_info)
41
+ end
42
+
43
+ output_hash.merge!('component_modules' => component_modules) unless component_modules.empty?
44
+ end
45
+
46
+ def version?(dependency_canonical_hash)
47
+ if version = dependency_canonical_hash.val(:ModuleVersion)
48
+ version == 'master' ? nil : version
49
+ end
50
+ end
51
+
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,27 @@
1
+ #
2
+ # Copyright (C) 2010-2016 dtk contributors
3
+ #
4
+ # This file is part of the dtk project.
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+ module DTK::DSL
19
+ class ServiceAndComponentInfo::TransformTo
20
+ class Parser
21
+ module ServiceModule
22
+ class ModuleRefs < Parser::ModuleRefs
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,73 @@
1
+ #
2
+ # Copyright (C) 2010-2016 dtk contributors
3
+ #
4
+ # This file is part of the dtk project.
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+ module DTK::DSL; class ServiceAndComponentInfo::TransformTo
19
+ class Parser
20
+ module ServiceModule
21
+ class TopDSL < Parser
22
+ def update_output_hash?
23
+ if module_dsl_canonical_hash = input_file_hash?(:module)
24
+ if assemblies = module_dsl_canonical_hash.val(:Assemblies)
25
+ add_module_info_to_output_hash!
26
+ add_assemblies_to_output_hash!(assemblies)
27
+ output_hash
28
+ end
29
+ end
30
+ end
31
+
32
+ private
33
+
34
+ DSL_VERSION = '1.0.0'
35
+ def add_module_info_to_output_hash!
36
+ output_hash['module'] = info_object.module_ref.module_name
37
+ output_hash['dsl_version'] = DSL_VERSION
38
+ end
39
+
40
+ def add_assemblies_to_output_hash!(assemblies)
41
+ assemblies_yaml_object_array = assemblies.map do |assembly_canonical_hash|
42
+ parsed_assembly = FileGenerator.generate_yaml_object(:assembly, assembly_canonical_hash, DSL_VERSION)
43
+ assembly_content = {}
44
+
45
+ if name = parsed_assembly.delete('name') || assembly_canonical_hash[:name]
46
+ assembly_content['name'] = name
47
+ end
48
+
49
+ if description = parsed_assembly.delete('description')
50
+ assembly_content['description'] = description
51
+ end
52
+
53
+ assembly_content['dsl_version'] = DSL_VERSION
54
+ workflows = parsed_assembly.delete('workflows')
55
+
56
+ if parsed_assembly && !parsed_assembly.empty?
57
+ assembly_content['assembly'] = parsed_assembly
58
+ end
59
+
60
+ if workflows
61
+ assembly_content['workflows'] = workflows
62
+ end
63
+
64
+ assembly_content
65
+ end
66
+
67
+ output_hash['assemblies'] = assemblies_yaml_object_array
68
+ end
69
+
70
+ end
71
+ end
72
+ end
73
+ end; end