indocker 0.0.6 → 0.1.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (183) hide show
  1. checksums.yaml +5 -5
  2. data/.gitignore +10 -2
  3. data/.rspec +2 -0
  4. data/.travis.yml +7 -0
  5. data/Gemfile +5 -2
  6. data/Gemfile.lock +19 -49
  7. data/LICENSE.txt +17 -18
  8. data/README.md +20 -1
  9. data/Rakefile +6 -0
  10. data/bin/console +14 -0
  11. data/bin/setup +8 -0
  12. data/example/indocker/bin/deploy +120 -0
  13. data/example/indocker/bin/remote/compile +72 -0
  14. data/example/indocker/bin/remote/run +66 -0
  15. data/example/indocker/bin/utils/configurations.rb +3 -0
  16. data/example/indocker/bounded_contexts/shared/ruby/Dockerfile +10 -0
  17. data/example/indocker/bounded_contexts/shared/ruby/container.rb +5 -0
  18. data/example/indocker/bounded_contexts/shared/ruby/image.rb +3 -0
  19. data/example/indocker/configurations/dev.rb +9 -0
  20. data/example/indocker/infrastructure/build_servers.rb +8 -0
  21. data/example/indocker/infrastructure/networks.rb +1 -0
  22. data/example/indocker/infrastructure/registries.rb +3 -0
  23. data/example/indocker/infrastructure/servers.rb +8 -0
  24. data/example/indocker/setup.rb +24 -0
  25. data/indocker.gemspec +27 -25
  26. data/lib/indocker.rb +437 -130
  27. data/lib/indocker/artifacts/git.rb +25 -0
  28. data/lib/indocker/build_context.rb +87 -0
  29. data/lib/indocker/build_context_helper.rb +109 -0
  30. data/lib/indocker/build_context_pool.rb +36 -0
  31. data/lib/indocker/build_server.rb +2 -0
  32. data/lib/indocker/colored_string.rb +33 -0
  33. data/lib/indocker/concerns/inspectable.rb +12 -0
  34. data/lib/indocker/configuration_deployer.rb +525 -0
  35. data/lib/indocker/configurations/configuration.rb +122 -0
  36. data/lib/indocker/configurations/configuration_builder.rb +250 -0
  37. data/lib/indocker/configurations/formatters/stdout.rb +36 -0
  38. data/lib/indocker/container_deployer.rb +73 -0
  39. data/lib/indocker/container_helper.rb +13 -0
  40. data/lib/indocker/container_runner.rb +23 -0
  41. data/lib/indocker/containers/container.rb +118 -0
  42. data/lib/indocker/containers/container_builder.rb +186 -0
  43. data/lib/indocker/containers/restart_policy.rb +36 -0
  44. data/lib/indocker/context_args.rb +43 -0
  45. data/lib/indocker/crontab_redeploy_rules_builder.rb +54 -0
  46. data/lib/indocker/deploy_context.rb +126 -0
  47. data/lib/indocker/deployment_checker.rb +121 -0
  48. data/lib/indocker/deployment_progress.rb +495 -0
  49. data/lib/indocker/docker.rb +87 -0
  50. data/lib/indocker/docker_run_args.rb +183 -0
  51. data/lib/indocker/env_file_helper.rb +13 -0
  52. data/lib/indocker/env_files/local.rb +8 -0
  53. data/lib/indocker/env_files/remote.rb +8 -0
  54. data/lib/indocker/hash_merger.rb +9 -0
  55. data/lib/indocker/images/image.rb +86 -0
  56. data/lib/indocker/images/image_builder.rb +98 -0
  57. data/lib/indocker/images/image_compiler.rb +68 -0
  58. data/lib/indocker/images/template_compiler.rb +15 -0
  59. data/lib/indocker/images/templates_compiler.rb +28 -0
  60. data/lib/indocker/images_compiler.rb +38 -0
  61. data/lib/indocker/indocker_helper.rb +9 -0
  62. data/lib/indocker/network.rb +12 -0
  63. data/lib/indocker/network_helper.rb +7 -0
  64. data/lib/indocker/registries/abstract.rb +17 -0
  65. data/lib/indocker/registries/local.rb +5 -0
  66. data/lib/indocker/registries/remote.rb +12 -0
  67. data/lib/indocker/repositories/abstract.rb +25 -0
  68. data/lib/indocker/repositories/clonner.rb +17 -0
  69. data/lib/indocker/repositories/git.rb +24 -0
  70. data/lib/indocker/repositories/local.rb +20 -0
  71. data/lib/indocker/repositories/no_sync.rb +20 -0
  72. data/lib/indocker/rsync.rb +52 -0
  73. data/lib/indocker/server.rb +20 -0
  74. data/lib/indocker/server_pool.rb +30 -0
  75. data/lib/indocker/shell.rb +60 -0
  76. data/lib/indocker/ssh_result_logger.rb +18 -0
  77. data/lib/indocker/ssh_session.rb +92 -0
  78. data/lib/indocker/version.rb +1 -1
  79. data/lib/indocker/volume_helper.rb +7 -0
  80. data/lib/indocker/volumes/external.rb +8 -0
  81. data/lib/indocker/volumes/local.rb +9 -0
  82. data/lib/indocker/volumes/repository.rb +9 -0
  83. metadata +107 -222
  84. data/bin/indocker +0 -9
  85. data/lib/indocker/application_initializer.rb +0 -19
  86. data/lib/indocker/cli.rb +0 -27
  87. data/lib/indocker/configs/config.rb +0 -147
  88. data/lib/indocker/configs/config_factory.rb +0 -37
  89. data/lib/indocker/configs/config_initializer.rb +0 -9
  90. data/lib/indocker/configs/locator.rb +0 -23
  91. data/lib/indocker/container/container_builder.rb +0 -29
  92. data/lib/indocker/container/container_directives_runner.rb +0 -54
  93. data/lib/indocker/container/container_dsl.rb +0 -83
  94. data/lib/indocker/container/container_evaluator.rb +0 -13
  95. data/lib/indocker/container/container_inspector.rb +0 -26
  96. data/lib/indocker/container/container_manager.rb +0 -122
  97. data/lib/indocker/container/container_metadata.rb +0 -112
  98. data/lib/indocker/container/container_metadata_factory.rb +0 -30
  99. data/lib/indocker/container/container_metadata_repository.rb +0 -27
  100. data/lib/indocker/directives/base.rb +0 -17
  101. data/lib/indocker/directives/container_directives/base.rb +0 -23
  102. data/lib/indocker/directives/container_directives/cmd.rb +0 -7
  103. data/lib/indocker/directives/container_directives/depends_on.rb +0 -7
  104. data/lib/indocker/directives/container_directives/env.rb +0 -7
  105. data/lib/indocker/directives/container_directives/env_file.rb +0 -7
  106. data/lib/indocker/directives/container_directives/expose.rb +0 -7
  107. data/lib/indocker/directives/container_directives/from.rb +0 -14
  108. data/lib/indocker/directives/container_directives/network.rb +0 -12
  109. data/lib/indocker/directives/container_directives/ports.rb +0 -15
  110. data/lib/indocker/directives/container_directives/ready.rb +0 -16
  111. data/lib/indocker/directives/container_directives/volume.rb +0 -23
  112. data/lib/indocker/directives/image_directives/base.rb +0 -27
  113. data/lib/indocker/directives/image_directives/cmd.rb +0 -19
  114. data/lib/indocker/directives/image_directives/copy.rb +0 -32
  115. data/lib/indocker/directives/image_directives/docker_cp.rb +0 -20
  116. data/lib/indocker/directives/image_directives/entrypoint.rb +0 -19
  117. data/lib/indocker/directives/image_directives/env.rb +0 -9
  118. data/lib/indocker/directives/image_directives/env_file.rb +0 -19
  119. data/lib/indocker/directives/image_directives/expose.rb +0 -9
  120. data/lib/indocker/directives/image_directives/from.rb +0 -36
  121. data/lib/indocker/directives/image_directives/registry.rb +0 -30
  122. data/lib/indocker/directives/image_directives/run.rb +0 -17
  123. data/lib/indocker/directives/image_directives/workdir.rb +0 -9
  124. data/lib/indocker/directives/partial.rb +0 -21
  125. data/lib/indocker/docker_api/container_config.rb +0 -121
  126. data/lib/indocker/docker_api/docker_api.rb +0 -207
  127. data/lib/indocker/dsl_context.rb +0 -21
  128. data/lib/indocker/envs/env_metadata.rb +0 -39
  129. data/lib/indocker/envs/loader.rb +0 -19
  130. data/lib/indocker/errors.rb +0 -21
  131. data/lib/indocker/git/git_api.rb +0 -32
  132. data/lib/indocker/git/git_helper.rb +0 -34
  133. data/lib/indocker/git/git_service.rb +0 -21
  134. data/lib/indocker/handlers/container_run.rb +0 -20
  135. data/lib/indocker/handlers/container_stop.rb +0 -17
  136. data/lib/indocker/handlers/performable.rb +0 -22
  137. data/lib/indocker/image/image_builder.rb +0 -54
  138. data/lib/indocker/image/image_dependencies_manager.rb +0 -47
  139. data/lib/indocker/image/image_directives_runner.rb +0 -99
  140. data/lib/indocker/image/image_dockerfile_builder.rb +0 -24
  141. data/lib/indocker/image/image_dsl.rb +0 -89
  142. data/lib/indocker/image/image_evaluator.rb +0 -21
  143. data/lib/indocker/image/image_helper.rb +0 -9
  144. data/lib/indocker/image/image_metadata.rb +0 -50
  145. data/lib/indocker/image/image_metadata_factory.rb +0 -31
  146. data/lib/indocker/image/image_metadata_repository.rb +0 -29
  147. data/lib/indocker/networks/network_metadata.rb +0 -9
  148. data/lib/indocker/networks/network_metadata_factory.rb +0 -9
  149. data/lib/indocker/networks/network_metadata_repository.rb +0 -34
  150. data/lib/indocker/partial/partial_metadata.rb +0 -8
  151. data/lib/indocker/partial/partial_metadata_repository.rb +0 -26
  152. data/lib/indocker/registry/registry_api.rb +0 -46
  153. data/lib/indocker/registry/registry_helper.rb +0 -20
  154. data/lib/indocker/registry/registry_service.rb +0 -28
  155. data/lib/indocker/utils/ioc_container.rb +0 -17
  156. data/lib/indocker/utils/logger.rb +0 -62
  157. data/lib/indocker/utils/logger_factory.rb +0 -13
  158. data/lib/indocker/utils/registry_authenticator.rb +0 -19
  159. data/lib/indocker/utils/render_namespace.rb +0 -11
  160. data/lib/indocker/utils/render_util.rb +0 -15
  161. data/lib/indocker/utils/string_utils.rb +0 -11
  162. data/lib/indocker/utils/tar_helper.rb +0 -40
  163. data/lib/indocker/utils/test_logger_factory.rb +0 -9
  164. data/lib/indocker/volumes/volume_metadata.rb +0 -9
  165. data/lib/indocker/volumes/volume_metadata_factory.rb +0 -9
  166. data/lib/indocker/volumes/volume_metadata_repository.rb +0 -34
  167. data/spec/example/.indocker/config.rb +0 -30
  168. data/spec/example/.indocker/images_and_containers.rb +0 -25
  169. data/spec/example/assets/index.css +0 -1
  170. data/spec/example/assets/index.js +0 -1
  171. data/spec/fixtures/spec.env +0 -2
  172. data/spec/indocker/configs/config_factory_spec.rb +0 -18
  173. data/spec/indocker/configs/config_spec.rb +0 -88
  174. data/spec/indocker/container/container_builder_spec.rb +0 -67
  175. data/spec/indocker/container/container_manager_spec.rb +0 -278
  176. data/spec/indocker/docker_api/container_config_spec.rb +0 -64
  177. data/spec/indocker/docker_api/docker_api_spec.rb +0 -112
  178. data/spec/indocker/handlers/container_run_spec.rb +0 -60
  179. data/spec/indocker/image/image_builder_spec.rb +0 -153
  180. data/spec/indocker/image/image_directives_runner_spec.rb +0 -141
  181. data/spec/indocker/image/image_dockerfile_builder_spec.rb +0 -25
  182. data/spec/indocker/image/image_evaluator_spec.rb +0 -85
  183. data/spec/spec_helper.rb +0 -68
@@ -1,54 +0,0 @@
1
- class Indocker::ImageBuilder
2
- include SmartIoC::Iocify
3
-
4
- bean :image_builder
5
-
6
- inject :image_metadata_repository
7
- inject :image_dependencies_manager
8
- inject :image_directives_runner
9
- inject :docker_api
10
- inject :logger
11
- inject :image_dockerfile_builder
12
-
13
- def build(repo, tag: Indocker::ImageHelper::DEFAULT_TAG)
14
- image_metadata = image_metadata_repository.find_by_repo(repo, tag: tag)
15
-
16
- FileUtils.mkdir_p(image_metadata.build_dir)
17
-
18
- image_dependencies_manager.get_dependencies!(image_metadata).each do |dependency_metadata|
19
- build(dependency_metadata.repo, tag: dependency_metadata.tag)
20
- end
21
-
22
- image_directives_runner.run_all(image_metadata.prepare_directives)
23
-
24
- File.open(File.join(image_metadata.build_dir, Indocker::DOCKERFILE_NAME), 'w') do |f|
25
- f.puts image_dockerfile_builder.build(*image_metadata.build_directives)
26
-
27
- logger.debug image_dockerfile_builder.build(*image_metadata.build_directives)
28
- end
29
-
30
- File.open(File.join(image_metadata.build_dir, '.dockerignore'), 'w') do |f|
31
- f.puts '.git'
32
- f.puts '.gitignore'
33
- f.puts 'LICENSE'
34
- f.puts 'VERSION'
35
- f.puts 'README.md'
36
- f.puts 'Changelog.md'
37
- f.puts 'Makefile'
38
- f.puts 'docker-compose.yml'
39
- f.puts 'docs'
40
- end
41
-
42
- docker_api.build_from_dir(
43
- repo: image_metadata.repo,
44
- tag: image_metadata.tag,
45
- build_dir: image_metadata.build_dir.to_s
46
- ) { |log| logger.info(log) }
47
-
48
- image_directives_runner.run_all(image_metadata.after_build_directives)
49
- ensure
50
- image_metadata = image_metadata_repository.find_by_repo(repo, tag: tag)
51
-
52
- FileUtils.rm_rf(image_metadata.build_dir)
53
- end
54
- end
@@ -1,47 +0,0 @@
1
- class Indocker::ImageDependenciesManager
2
- include SmartIoC::Iocify
3
-
4
- bean :image_dependencies_manager
5
-
6
- inject :repository, ref: :image_metadata_repository
7
- inject :container_metadata_repository
8
- inject :image_evaluator
9
-
10
- def get_dependencies!(image_metadata)
11
- check_circular_dependencies!(image_metadata)
12
-
13
- get_dependencies(image_metadata)
14
- end
15
-
16
- private
17
-
18
- def check_circular_dependencies!(image_metadata, used_images = [])
19
- raise Indocker::Errors::CircularImageDependency if used_images.include?(image_metadata.full_name)
20
-
21
- used_images.push(image_metadata.full_name)
22
-
23
- get_dependencies(image_metadata).each do |dependency|
24
- check_circular_dependencies!(dependency, used_images)
25
- end
26
-
27
- nil
28
- end
29
-
30
- def get_dependencies(meta)
31
- dependencies = []
32
-
33
- docker_cp_dependencies = meta.docker_cp_directives.map do |c|
34
- container = container_metadata_repository.get_by_name(c.container_name)
35
-
36
- repository.find_by_repo(container.repo, tag: container.tag)
37
- end
38
-
39
- dependencies.concat(docker_cp_dependencies)
40
-
41
- if !meta.dockerhub_image?
42
- dependencies << repository.find_by_repo(meta.from_repo, tag: meta.from_tag)
43
- end
44
-
45
- dependencies.uniq
46
- end
47
- end
@@ -1,99 +0,0 @@
1
- class Indocker::ImageDirectivesRunner
2
- include SmartIoC::Iocify
3
-
4
- bean :image_directives_runner
5
-
6
- inject :container_manager
7
- inject :config
8
- inject :render_util
9
- inject :docker_api
10
-
11
- def run_all(directives)
12
- directives.each {|c| run(c)}
13
- end
14
-
15
- def run(directive)
16
- case directive
17
- when Indocker::ImageDirectives::DockerCp
18
- run_docker_cp(directive)
19
- when Indocker::ImageDirectives::Copy
20
- run_copy(directive)
21
- when Indocker::ImageDirectives::Registry
22
- run_registry(directive)
23
- end
24
- end
25
-
26
- def run_docker_cp(directive)
27
- directive.copy_actions.each do |from, to|
28
- container_manager.copy(
29
- name: directive.container_name,
30
- copy_from: from,
31
- copy_to: File.join(directive.build_dir, to)
32
- )
33
- end
34
- end
35
-
36
- def run_copy(directive)
37
- directive.copy_actions.each do |from, _|
38
- source = File.exists?(from) ? from : File.join(directive.build_dir, from)
39
- destination = File.join(directive.build_dir.to_s, from.to_s)
40
-
41
- copy_compile_file(
42
- from: source,
43
- to: destination,
44
- locals: directive.locals,
45
- compile: directive.compile
46
- )
47
- end
48
- end
49
-
50
- def run_registry(directive)
51
- docker_api.tag(
52
- repo: directive.repo,
53
- tag: directive.tag,
54
- new_repo: directive.new_repo,
55
- new_tag: directive.new_tag
56
- )
57
-
58
- docker_api.push(
59
- repo: directive.repo,
60
- tag: directive.tag,
61
- push_to_repo: directive.new_repo,
62
- push_to_tag: directive.new_tag
63
- ) if directive.push
64
- end
65
-
66
- private
67
-
68
- def copy_compile_file(from:, to:, locals: {}, compile: false)
69
- raise ArgumentError, "Copy destination #{from} not exists" if !File.exists?(from)
70
-
71
- if File.directory?(from)
72
- Dir.glob(File.join(from, '**', '*'), File::FNM_DOTMATCH).each do |file_source_path|
73
- next if File.directory?(file_source_path)
74
-
75
- file_relative_path = Pathname.new(file_source_path).relative_path_from( Pathname.new(from) ).to_s
76
- file_destination_path = File.join(to, file_relative_path)
77
-
78
- copy_compile_file(
79
- from: file_source_path,
80
- to: file_destination_path,
81
- locals: locals,
82
- compile: compile
83
- )
84
- end
85
-
86
- return
87
- end
88
-
89
- if !Dir.exist?(File.dirname(to))
90
- FileUtils.mkdir_p(File.dirname(to))
91
- end
92
-
93
- write_content = compile ? render_util.render( File.read(from), locals ) :
94
- File.read(from)
95
- File.write(to, write_content)
96
-
97
- File.chmod(File.stat(from).mode, to)
98
- end
99
- end
@@ -1,24 +0,0 @@
1
- class Indocker::ImageDockerfileBuilder
2
- include SmartIoC::Iocify
3
-
4
- bean :image_dockerfile_builder
5
-
6
- inject :envs_loader
7
-
8
- def build(*directives)
9
- dockerfile_content = ""
10
-
11
- dockerfile_content = directives.map do |directive|
12
- case directive
13
- when Indocker::ImageDirectives::EnvFile
14
- env_metadata = envs_loader.parse(directive.path)
15
-
16
- directive.to_s(env_metadata.to_s)
17
- else
18
- directive.to_s
19
- end
20
- end
21
-
22
- dockerfile_content.join("\n")
23
- end
24
- end
@@ -1,89 +0,0 @@
1
- class Indocker::ImageDSL
2
- attr_reader :directives
3
-
4
- def initialize(context)
5
- @context = context
6
- @directives = []
7
- end
8
-
9
- def method_missing(method, *args)
10
- @context.send(method)
11
- rescue
12
- super
13
- end
14
-
15
- def set_arg(key, value)
16
- @context.set_value(key, value)
17
- end
18
-
19
- def partial(name, opts = {})
20
- @directives << Indocker::Directives::Partial.new(name, @context, opts)
21
- end
22
-
23
- def expose(port)
24
- @directives << Indocker::ImageDirectives::Expose.new(port)
25
- end
26
-
27
- def from(*args)
28
- first_from_directive = @directives.detect {|c| c.instance_of?(Indocker::ImageDirectives::From)}
29
- raise Indocker::Errors::DirectiveAlreadyInUse, first_from_directive if first_from_directive
30
-
31
- @directives << Indocker::ImageDirectives::From.new(*args)
32
- end
33
-
34
- def use(item)
35
- case item
36
- when Indocker::Registry::RegistryHelper
37
- first_from_directive = @directives.detect {|c| c.instance_of?(Indocker::ImageDirectives::Registry)}
38
- raise Indocker::Errors::DirectiveAlreadyInUse, first_from_directive if first_from_directive
39
-
40
- @directives << Indocker::ImageDirectives::Registry.new(
41
- repo: repo,
42
- tag: tag,
43
- registry: item.registry,
44
- push: item.push
45
- )
46
- end
47
- end
48
-
49
- def workdir(*args)
50
- @directives << Indocker::ImageDirectives::Workdir.new(*args)
51
- end
52
-
53
- def run(*args)
54
- @directives << Indocker::ImageDirectives::Run.new(*args)
55
- end
56
-
57
- def cmd(*args)
58
- @directives << Indocker::ImageDirectives::Cmd.new(*args)
59
- end
60
-
61
- def copy(copy_actions = {}, compile = false)
62
- @directives << Indocker::ImageDirectives::Copy.new(
63
- compile: compile,
64
- copy_actions: copy_actions,
65
- locals: @context.storage,
66
- build_dir: @context.build_dir
67
- )
68
- end
69
-
70
- def entrypoint(*args)
71
- @directives << Indocker::ImageDirectives::Entrypoint.new(*args)
72
- end
73
-
74
- def env(*args)
75
- @directives << Indocker::ImageDirectives::Env.new(args)
76
- end
77
-
78
- def env_file(*paths)
79
- @directives.concat paths.map {|p| Indocker::ImageDirectives::EnvFile.new(p)}
80
- end
81
-
82
- def before_build(&block)
83
- instance_exec &block
84
- end
85
-
86
- def docker_cp(container_name, &block)
87
- @directives << Indocker::ImageDirectives::DockerCp.new(container_name, @context.build_dir, &block)
88
- end
89
- end
@@ -1,21 +0,0 @@
1
- class Indocker::ImageEvaluator
2
- include SmartIoC::Iocify
3
-
4
- bean :image_evaluator
5
- inject :partial_metadata_repository
6
-
7
- def evaluate(context, &block)
8
- image_dsl = Indocker::ImageDSL.new(context)
9
-
10
- image_dsl.instance_eval(&block)
11
-
12
- image_dsl.directives
13
- .map do |directive|
14
- next directive if !directive.partial_directive?
15
-
16
- partial = partial_metadata_repository.find_by_name(directive.name)
17
- evaluate(directive.context, &partial.definition)
18
- end
19
- .flatten
20
- end
21
- end
@@ -1,9 +0,0 @@
1
- module Indocker::ImageHelper
2
- DEFAULT_TAG = 'latest'
3
-
4
- def full_name(repo, tag = nil)
5
- tag ||= DEFAULT_TAG
6
-
7
- "#{repo}:#{tag}"
8
- end
9
- end
@@ -1,50 +0,0 @@
1
- class Indocker::ImageMetadata
2
- include Indocker::ImageHelper
3
-
4
- attr_reader :repo, :tag, :directives, :build_dir
5
-
6
- def initialize(repo:, tag:, directives:, build_dir:)
7
- @repo = repo
8
- @tag = tag
9
- @directives = directives
10
- @build_dir = build_dir
11
- end
12
-
13
- def full_name
14
- super(@repo, @tag)
15
- end
16
-
17
- def prepare_directives
18
- directives.select {|d| d.prepare_directive?}
19
- end
20
-
21
- def after_build_directives
22
- directives.select {|d| d.after_build_directive?}
23
- end
24
-
25
- def build_directives
26
- directives.select {|d| d.build_directive?}
27
- end
28
-
29
- def docker_cp_directives
30
- directives.select {|d| d.is_a?(Indocker::ImageDirectives::DockerCp)}
31
- end
32
-
33
- def from_repo
34
- from_directive.repo
35
- end
36
-
37
- def from_tag
38
- from_directive.tag
39
- end
40
-
41
- def dockerhub_image?
42
- from_directive.dockerhub_image?
43
- end
44
-
45
- private
46
-
47
- def from_directive
48
- @directives.detect {|c| c.instance_of?(Indocker::ImageDirectives::From)}
49
- end
50
- end
@@ -1,31 +0,0 @@
1
- class Indocker::ImageMetadataFactory
2
- include Indocker::ImageHelper
3
- include SmartIoC::Iocify
4
-
5
- bean :image_metadata_factory
6
-
7
- inject :image_evaluator
8
- inject :docker_api
9
- inject :config
10
- inject :git_helper
11
- inject :registry_service
12
-
13
- def create(repo, tag: Indocker::ImageHelper::DEFAULT_TAG, &definition)
14
- context = Indocker::DSLContext.new(
15
- build_dir: config.build_dir.join(repo.to_s),
16
- git: git_helper,
17
- repo: repo,
18
- tag: tag,
19
- registry: registry_service
20
- )
21
-
22
- directives = image_evaluator.evaluate(context, &definition)
23
-
24
- Indocker::ImageMetadata.new(
25
- repo: repo.intern,
26
- tag: tag.intern,
27
- directives: directives,
28
- build_dir: config.build_dir.join(repo.to_s)
29
- )
30
- end
31
- end
@@ -1,29 +0,0 @@
1
- class Indocker::ImageMetadataRepository
2
- include SmartIoC::Iocify
3
- include Indocker::ImageHelper
4
-
5
- bean :image_metadata_repository
6
-
7
- def put(image_metadata)
8
- all.push(image_metadata)
9
- end
10
-
11
- def find_by_full_name(image_metadata_full_name)
12
- image_metadata = all.detect { |image_metadata| image_metadata.full_name == image_metadata_full_name }
13
- raise Indocker::Errors::ImageIsNotDefined, image_metadata_full_name if image_metadata.nil?
14
-
15
- image_metadata
16
- end
17
-
18
- def find_by_repo(repo, tag: nil)
19
- find_by_full_name(full_name(repo, tag))
20
- end
21
-
22
- def clear
23
- @all = []
24
- end
25
-
26
- def all
27
- @all ||= []
28
- end
29
- end