dapp 0.6.17 → 0.7.1

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 (125) hide show
  1. checksums.yaml +4 -4
  2. data/config/en/common.yml +2 -2
  3. data/config/en/net_status.yml +25 -23
  4. data/lib/dapp.rb +24 -16
  5. data/lib/dapp/artifact.rb +1 -1
  6. data/lib/dapp/build/stage/after_install_artifact.rb +2 -2
  7. data/lib/dapp/build/stage/after_setup_artifact.rb +4 -4
  8. data/lib/dapp/build/stage/artifact_base.rb +25 -25
  9. data/lib/dapp/build/stage/artifact_default.rb +16 -16
  10. data/lib/dapp/build/stage/base.rb +36 -31
  11. data/lib/dapp/build/stage/before_install.rb +8 -8
  12. data/lib/dapp/build/stage/before_install_artifact.rb +2 -2
  13. data/lib/dapp/build/stage/before_setup.rb +8 -8
  14. data/lib/dapp/build/stage/before_setup_artifact.rb +2 -2
  15. data/lib/dapp/build/stage/build_artifact.rb +10 -10
  16. data/lib/dapp/build/stage/docker_instructions.rb +3 -3
  17. data/lib/dapp/build/stage/from.rb +7 -3
  18. data/lib/dapp/build/stage/ga_archive.rb +2 -2
  19. data/lib/dapp/build/stage/ga_archive_dependencies.rb +3 -3
  20. data/lib/dapp/build/stage/ga_artifact_patch.rb +2 -2
  21. data/lib/dapp/build/stage/ga_base.rb +2 -2
  22. data/lib/dapp/build/stage/ga_dependencies_base.rb +2 -2
  23. data/lib/dapp/build/stage/ga_latest_patch.rb +3 -3
  24. data/lib/dapp/build/stage/import_artifact.rb +19 -19
  25. data/lib/dapp/build/stage/install/ga_post_install_patch.rb +2 -2
  26. data/lib/dapp/build/stage/install/ga_post_install_patch_dependencies.rb +2 -2
  27. data/lib/dapp/build/stage/install/ga_pre_install_patch.rb +2 -2
  28. data/lib/dapp/build/stage/install/ga_pre_install_patch_dependencies.rb +2 -2
  29. data/lib/dapp/build/stage/install/install.rb +9 -9
  30. data/lib/dapp/build/stage/mod/group.rb +2 -2
  31. data/lib/dapp/build/stage/mod/logging.rb +19 -19
  32. data/lib/dapp/build/stage/setup/chef_cookbooks.rb +4 -4
  33. data/lib/dapp/build/stage/setup/ga_post_setup_patch.rb +2 -2
  34. data/lib/dapp/build/stage/setup/ga_post_setup_patch_dependencies.rb +3 -3
  35. data/lib/dapp/build/stage/setup/ga_pre_setup_patch.rb +2 -2
  36. data/lib/dapp/build/stage/setup/ga_pre_setup_patch_dependencies.rb +2 -2
  37. data/lib/dapp/build/stage/setup/setup.rb +9 -9
  38. data/lib/dapp/builder/base.rb +4 -4
  39. data/lib/dapp/builder/chef.rb +65 -64
  40. data/lib/dapp/builder/none.rb +45 -0
  41. data/lib/dapp/builder/shell.rb +3 -3
  42. data/lib/dapp/cli.rb +9 -10
  43. data/lib/dapp/cli/base.rb +6 -1
  44. data/lib/dapp/cli/bp.rb +2 -2
  45. data/lib/dapp/cli/build.rb +2 -2
  46. data/lib/dapp/cli/cleanup.rb +2 -2
  47. data/lib/dapp/cli/list.rb +2 -2
  48. data/lib/dapp/cli/mrproper.rb +0 -4
  49. data/lib/dapp/cli/push.rb +3 -3
  50. data/lib/dapp/cli/run.rb +3 -3
  51. data/lib/dapp/cli/spush.rb +2 -2
  52. data/lib/dapp/cli/stage_image.rb +2 -2
  53. data/lib/dapp/cli/stages/cleanup_local.rb +3 -3
  54. data/lib/dapp/cli/stages/cleanup_repo.rb +3 -3
  55. data/lib/dapp/cli/stages/flush_local.rb +3 -3
  56. data/lib/dapp/cli/stages/flush_repo.rb +3 -3
  57. data/lib/dapp/cli/stages/pull.rb +3 -3
  58. data/lib/dapp/cli/stages/push.rb +3 -3
  59. data/lib/dapp/config/artifact_dimg.rb +18 -0
  60. data/lib/dapp/config/artifact_group.rb +54 -0
  61. data/lib/dapp/config/base.rb +19 -0
  62. data/lib/dapp/config/dimg.rb +23 -0
  63. data/lib/dapp/config/dimg/instance_methods.rb +179 -0
  64. data/lib/dapp/config/dimg/validation.rb +124 -0
  65. data/lib/dapp/config/dimg_group.rb +56 -0
  66. data/lib/dapp/config/dimg_group_base.rb +36 -0
  67. data/lib/dapp/config/dimg_group_main.rb +21 -0
  68. data/lib/dapp/config/directive/artifact.rb +29 -54
  69. data/lib/dapp/config/directive/artifact_base.rb +92 -0
  70. data/lib/dapp/config/directive/base.rb +22 -0
  71. data/lib/dapp/config/directive/chef.rb +23 -61
  72. data/lib/dapp/config/directive/docker/artifact.rb +3 -14
  73. data/lib/dapp/config/directive/docker/base.rb +3 -78
  74. data/lib/dapp/config/directive/docker/dimg.rb +81 -0
  75. data/lib/dapp/config/directive/git_artifact_local.rb +13 -0
  76. data/lib/dapp/config/directive/git_artifact_remote.rb +55 -0
  77. data/lib/dapp/config/directive/mount.rb +25 -0
  78. data/lib/dapp/config/directive/shell/artifact.rb +3 -24
  79. data/lib/dapp/config/directive/shell/dimg.rb +68 -0
  80. data/lib/dapp/{application.rb → dimg.rb} +12 -33
  81. data/lib/dapp/{application → dimg}/git_artifact.rb +3 -3
  82. data/lib/dapp/{application → dimg}/path.rb +9 -5
  83. data/lib/dapp/{application → dimg}/stages.rb +8 -8
  84. data/lib/dapp/{application → dimg}/tags.rb +6 -6
  85. data/lib/dapp/docker_registry.rb +11 -15
  86. data/lib/dapp/error/dimg.rb +6 -0
  87. data/lib/dapp/git_artifact.rb +19 -20
  88. data/lib/dapp/git_repo/base.rb +6 -6
  89. data/lib/dapp/git_repo/own.rb +4 -4
  90. data/lib/dapp/git_repo/remote.rb +5 -5
  91. data/lib/dapp/image/docker.rb +0 -15
  92. data/lib/dapp/image/stage.rb +12 -22
  93. data/lib/dapp/project.rb +14 -18
  94. data/lib/dapp/project/command/build.rb +2 -2
  95. data/lib/dapp/project/command/cleanup.rb +9 -11
  96. data/lib/dapp/project/command/common.rb +8 -20
  97. data/lib/dapp/project/command/list.rb +7 -1
  98. data/lib/dapp/project/command/mrproper.rb +12 -22
  99. data/lib/dapp/project/command/push.rb +3 -4
  100. data/lib/dapp/project/command/run.rb +2 -2
  101. data/lib/dapp/project/command/spush.rb +3 -4
  102. data/lib/dapp/project/command/stage_image.rb +2 -2
  103. data/lib/dapp/project/command/stages/cleanup_local.rb +20 -24
  104. data/lib/dapp/project/command/stages/cleanup_repo.rb +3 -3
  105. data/lib/dapp/project/command/stages/common.rb +2 -3
  106. data/lib/dapp/project/command/stages/flush_local.rb +5 -7
  107. data/lib/dapp/project/command/stages/flush_repo.rb +2 -2
  108. data/lib/dapp/project/command/stages/pull.rb +3 -4
  109. data/lib/dapp/project/command/stages/push.rb +3 -4
  110. data/lib/dapp/project/dappfile.rb +9 -26
  111. data/lib/dapp/project/logging/base.rb +14 -0
  112. data/lib/dapp/project/logging/process.rb +1 -1
  113. data/lib/dapp/project/shellout/system.rb +2 -4
  114. data/lib/dapp/version.rb +1 -1
  115. metadata +25 -17
  116. data/lib/dapp/cli/tag.rb +0 -24
  117. data/lib/dapp/config/application.rb +0 -288
  118. data/lib/dapp/config/artifact.rb +0 -20
  119. data/lib/dapp/config/directive/build_dir.rb +0 -9
  120. data/lib/dapp/config/directive/git_artifact.rb +0 -59
  121. data/lib/dapp/config/directive/shell/base.rb +0 -85
  122. data/lib/dapp/config/directive/tmp_dir.rb +0 -36
  123. data/lib/dapp/config/main.rb +0 -20
  124. data/lib/dapp/error/application.rb +0 -6
  125. data/lib/dapp/project/command/tag.rb +0 -18
@@ -0,0 +1,81 @@
1
+ module Dapp
2
+ module Config
3
+ module Directive
4
+ module Docker
5
+ # Dimg
6
+ class Dimg < Base
7
+ attr_reader :_volume, :_expose, :_env, :_label, :_cmd, :_onbuild, :_workdir, :_user, :_entrypoint
8
+
9
+ def initialize
10
+ @_volume = []
11
+ @_expose = []
12
+ @_env = {}
13
+ @_label = {}
14
+ @_cmd = []
15
+ @_onbuild = []
16
+
17
+ super
18
+ end
19
+
20
+ def volume(*args)
21
+ @_volume.concat(args)
22
+ end
23
+
24
+ def expose(*args)
25
+ @_expose.concat(args)
26
+ end
27
+
28
+ def env(**options)
29
+ @_env.merge!(options)
30
+ end
31
+
32
+ def label(**options)
33
+ @_label.merge!(options)
34
+ end
35
+
36
+ def cmd(*args)
37
+ @_cmd.concat(args)
38
+ end
39
+
40
+ def onbuild(*args)
41
+ @_onbuild.concat(args)
42
+ end
43
+
44
+ def workdir(val)
45
+ @_workdir = val
46
+ end
47
+
48
+ def user(val)
49
+ @_user = val
50
+ end
51
+
52
+ def entrypoint(*cmd_with_args)
53
+ @_entrypoint = cmd_with_args.flatten
54
+ end
55
+
56
+ def _change_options
57
+ {
58
+ volume: _volume,
59
+ expose: _expose,
60
+ env: _env,
61
+ label: _label,
62
+ cmd: _cmd,
63
+ onbuild: _onbuild,
64
+ workdir: _workdir,
65
+ user: _user,
66
+ entrypoint: _entrypoint
67
+ }
68
+ end
69
+
70
+ protected
71
+
72
+ def clone_to_artifact
73
+ Artifact.new.tap do |docker|
74
+ docker.instance_variable_set('@_from', @_from)
75
+ end
76
+ end
77
+ end
78
+ end
79
+ end
80
+ end
81
+ end
@@ -0,0 +1,13 @@
1
+ module Dapp
2
+ module Config
3
+ module Directive
4
+ # GitArtifactLocal
5
+ class GitArtifactLocal < ArtifactBase
6
+ protected
7
+
8
+ alias add export
9
+ undef_method :export
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,55 @@
1
+ module Dapp
2
+ module Config
3
+ module Directive
4
+ # GitArtifactRemote
5
+ class GitArtifactRemote < GitArtifactLocal
6
+ attr_reader :_url, :_name, :_branch, :_commit
7
+
8
+ def initialize(url)
9
+ @_url = url
10
+ @_name = url.gsub(%r{.*?([^\/ ]+)\.git}, '\\1')
11
+
12
+ super()
13
+ end
14
+
15
+ def _export
16
+ super do |export|
17
+ export._url = @_url
18
+ export._name = @_name
19
+ export._branch ||= @_branch
20
+ export._commit ||= @_commit
21
+ end
22
+ end
23
+
24
+ # Export
25
+ class Export < GitArtifactLocal::Export
26
+ attr_accessor :_url, :_name, :_branch, :_commit
27
+
28
+ def _artifact_options
29
+ super.merge(name: _name, branch: _branch)
30
+ end
31
+
32
+ protected
33
+
34
+ def branch(value)
35
+ @_branch = value
36
+ end
37
+
38
+ def commit(value)
39
+ @_commit = value
40
+ end
41
+ end
42
+
43
+ protected
44
+
45
+ def branch(value)
46
+ @_branch = value
47
+ end
48
+
49
+ def commit(value)
50
+ @_commit = value
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,25 @@
1
+ module Dapp
2
+ module Config
3
+ module Directive
4
+ # Mount
5
+ class Mount < Base
6
+ attr_reader :_from, :_to
7
+ attr_reader :_type
8
+
9
+ def initialize(to)
10
+ raise Error::Config, code: :mount_to_absolute_path_required unless Pathname((to = to.to_s)).absolute?
11
+ @_to = to
12
+ super()
13
+ end
14
+
15
+ protected
16
+
17
+ def from(path_or_type)
18
+ path_or_type = path_or_type.to_sym
19
+ raise Error::Config, code: :mount_from_type_required unless [:tmp_dir, :build_dir].include? path_or_type
20
+ @_type = path_or_type
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
@@ -3,33 +3,12 @@ module Dapp
3
3
  module Directive
4
4
  module Shell
5
5
  # Artifact
6
- class Artifact < Base
6
+ class Artifact < Dimg
7
7
  attr_reader :_build_artifact
8
- attr_reader :_build_artifact_cache_version
9
-
10
- def initialize
11
- super
12
- @_build_artifact = []
13
- end
14
-
15
- def build_artifact(*args, cache_version: nil)
16
- @_build_artifact.concat(args)
17
- @_build_artifact_cache_version = cache_version
18
- end
19
-
20
- def reset_build_artifact
21
- @_build_artifact = []
22
- end
23
-
24
- def reset_all
25
- super
26
- reset_build_artifact
27
- end
28
-
29
- protected
8
+ stage_command_generator(:build_artifact)
30
9
 
31
10
  def empty?
32
- super && @_build_artifact.empty?
11
+ super && _build_artifact_command.empty?
33
12
  end
34
13
  end
35
14
  end
@@ -0,0 +1,68 @@
1
+ module Dapp
2
+ module Config
3
+ module Directive
4
+ module Shell
5
+ # Dimg
6
+ class Dimg < Directive::Base
7
+ attr_reader :_version
8
+ attr_reader :_before_install, :_before_setup, :_install, :_setup
9
+
10
+ def version(value)
11
+ @_version = value
12
+ end
13
+
14
+ def self.stage_command_generator(stage)
15
+ define_method stage do |&blk|
16
+ (variable = instance_variable_get("@_#{stage}") || StageCommand.new).instance_eval(&blk)
17
+ instance_variable_set("@_#{stage}", variable)
18
+ end
19
+
20
+ define_method "_#{stage}_command" do
21
+ return [] if (variable = instance_variable_get("@_#{stage}")).nil?
22
+ variable._run
23
+ end
24
+
25
+ define_method "_#{stage}_version" do
26
+ return [] if (variable = instance_variable_get("@_#{stage}")).nil?
27
+ variable._version || _version
28
+ end
29
+ end
30
+ [:before_install, :before_setup, :install, :setup].each(&method(:stage_command_generator))
31
+
32
+ # StageCommand
33
+ class StageCommand < Directive::Base
34
+ attr_reader :_version
35
+ attr_reader :_run
36
+
37
+ def initialize
38
+ @_run = []
39
+ super
40
+ end
41
+
42
+ def run(*args)
43
+ @_run.concat(args)
44
+ end
45
+
46
+ def version(value)
47
+ @_version = value
48
+ end
49
+ end
50
+
51
+ protected
52
+
53
+ def empty?
54
+ (_before_install_command + _before_setup_command + _install_command + _setup_command).empty?
55
+ end
56
+
57
+ def clone_to_artifact
58
+ Artifact.new.tap do |shell|
59
+ instance_variables.each do |variable|
60
+ shell.instance_variable_set(variable, instance_variable_get(marshal_dup(variable)))
61
+ end
62
+ end
63
+ end
64
+ end
65
+ end
66
+ end
67
+ end
68
+ end
@@ -1,6 +1,6 @@
1
1
  module Dapp
2
- # Application
3
- class Application
2
+ # Dimg
3
+ class Dimg
4
4
  include GitArtifact
5
5
  include Path
6
6
  include Tags
@@ -20,17 +20,17 @@ module Dapp
20
20
  @ignore_git_fetch = ignore_git_fetch
21
21
  @should_be_built = should_be_built
22
22
 
23
- raise Error::Application, code: :application_not_built if should_be_built?
23
+ raise Error::Dimg, code: :dimg_not_built if should_be_built?
24
24
  end
25
25
 
26
26
  def build!
27
27
  with_introspection do
28
- project.lock("#{config._basename}.images", readonly: true) do
28
+ project.lock("#{project.name}.images", readonly: true) do
29
29
  last_stage.build_lock! do
30
30
  begin
31
31
  last_stage.build!
32
32
  ensure
33
- last_stage.save_in_cache! if last_stage.image.built? || dev_mode?
33
+ last_stage.save_in_cache! if last_stage.image.built? || project.dev_mode?
34
34
  end
35
35
  end
36
36
  end
@@ -39,30 +39,17 @@ module Dapp
39
39
  FileUtils.rm_rf(tmp_path)
40
40
  end
41
41
 
42
- def tag!(tag)
43
- project.lock("#{config._basename}.images", readonly: true) do
44
- applicaion_name = config._name
45
- if project.dry_run?
46
- project.log_state(applicaion_name, state: project.t(code: 'state.tag'), styles: { status: :success })
47
- else
48
- project.log_process(applicaion_name, process: project.t(code: 'status.process.tagging')) do
49
- last_stage.image.tag!(tag)
50
- end
51
- end
52
- end
53
- end
54
-
55
42
  def export!(repo, format:)
56
- project.lock("#{config._basename}.images", readonly: true) do
43
+ project.lock("#{project.name}.images", readonly: true) do
57
44
  tags.each do |tag|
58
- image_name = format % { repo: repo, application_name: config._name, tag: tag }
45
+ image_name = format % { repo: repo, dimg_name: config._name, tag: tag }
59
46
  export_base!(last_stage.image, image_name)
60
47
  end
61
48
  end
62
49
  end
63
50
 
64
51
  def export_stages!(repo, format:)
65
- project.lock("#{config._basename}.images", readonly: true) do
52
+ project.lock("#{project.name}.images", readonly: true) do
66
53
  export_images.each do |image|
67
54
  image_name = format % { repo: repo, signature: image.name.split(':').last }
68
55
  export_base!(image, image_name)
@@ -86,7 +73,7 @@ module Dapp
86
73
  end
87
74
 
88
75
  def import_stages!(repo, format:)
89
- project.lock("#{config._basename}.images", readonly: true) do
76
+ project.lock("#{project.name}.images", readonly: true) do
90
77
  import_images.each do |image|
91
78
  begin
92
79
  image_name = format % { repo: repo, signature: image.name.split(':').last }
@@ -119,7 +106,7 @@ module Dapp
119
106
  if project.dry_run?
120
107
  project.log(cmd)
121
108
  else
122
- system(cmd) || raise(Error::Application, code: :application_not_run)
109
+ system(cmd) || raise(Error::Dimg, code: :dimg_not_run)
123
110
  end
124
111
  end
125
112
 
@@ -139,19 +126,11 @@ module Dapp
139
126
  config._docker._from.nil?
140
127
  end
141
128
 
142
- def dev_mode?
143
- config._dev_mode || project.dev_mode?
144
- end
145
-
146
- def build_cache_version
147
- [Dapp::BUILD_CACHE_VERSION, dev_mode? ? 1 : 0]
148
- end
149
-
150
129
  protected
151
130
 
152
131
  def should_be_built?
153
132
  should_be_built && begin
154
- builder.before_application_should_be_built_check
133
+ builder.before_dimg_should_be_built_check
155
134
  !last_stage.image.tagged?
156
135
  end
157
136
  end
@@ -165,5 +144,5 @@ module Dapp
165
144
  project.shellout!("docker rmi #{data[:built_id]}") if data[:rmi]
166
145
  raise data[:error]
167
146
  end
168
- end # Application
147
+ end # Dimg
169
148
  end # Dapp
@@ -1,6 +1,6 @@
1
1
  module Dapp
2
- # Application
3
- class Application
2
+ # Dimg
3
+ class Dimg
4
4
  # GitArtifact
5
5
  module GitArtifact
6
6
  def git_artifacts
@@ -22,5 +22,5 @@ module Dapp
22
22
  end
23
23
  end
24
24
  end # GitArtifact
25
- end # Application
25
+ end # Dimg
26
26
  end # Dapp
@@ -1,10 +1,14 @@
1
1
  module Dapp
2
- # Application
3
- class Application
2
+ # Dimg
3
+ class Dimg
4
4
  # Path
5
5
  module Path
6
6
  def home_path(*path)
7
- make_path(config._home_path, *path).expand_path
7
+ make_path(project.path, *path).expand_path
8
+ end
9
+
10
+ def chef_path(*path)
11
+ home_path('.dapp_chef', *path)
8
12
  end
9
13
 
10
14
  def tmp_path(*path)
@@ -13,7 +17,7 @@ module Dapp
13
17
  end
14
18
 
15
19
  def build_path(*path)
16
- make_path(project.build_path.join(config._basename), *path).expand_path.tap { |p| p.parent.mkpath }
20
+ make_path(project.build_path, *path).expand_path.tap { |p| p.parent.mkpath }
17
21
  end
18
22
 
19
23
  def container_dapp_path(*path)
@@ -30,5 +34,5 @@ module Dapp
30
34
  path.compact.map(&:to_s).inject(Pathname.new(base), &:+)
31
35
  end
32
36
  end # Path
33
- end # Application
37
+ end # Dimg
34
38
  end # Dapp
@@ -1,6 +1,6 @@
1
1
  module Dapp
2
- # Application
3
- class Application
2
+ # Dimg
3
+ class Dimg
4
4
  # Stages
5
5
  module Stages
6
6
  def signature
@@ -8,23 +8,23 @@ module Dapp
8
8
  end
9
9
 
10
10
  def stage_cache_format
11
- "#{project.cache_format % { application_name: config._basename }}:%{signature}"
11
+ "#{project.stage_cache}:%{signature}"
12
12
  end
13
13
 
14
14
  def stage_dapp_label
15
- project.stage_dapp_label_format % { application_name: config._basename }
15
+ project.stage_dapp_label
16
16
  end
17
17
 
18
18
  def images
19
19
  (@images ||= []).tap do |images|
20
- stages.each do |stage|
20
+ stages.map do |stage|
21
21
  if stage.respond_to?(:images)
22
22
  images.concat(stage.images)
23
23
  else
24
24
  images << stage.image
25
25
  end
26
- end
27
- end.uniq!(&:name)
26
+ end.uniq(&:name)
27
+ end
28
28
  end
29
29
 
30
30
  protected
@@ -55,5 +55,5 @@ module Dapp
55
55
  end
56
56
  end
57
57
  end # Stages
58
- end # Application
58
+ end # Dimg
59
59
  end # Dapp