dapp 0.8.0 → 0.9.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 (299) hide show
  1. checksums.yaml +4 -4
  2. data/bin/dapp +5 -5
  3. data/config/en/common.yml +6 -4
  4. data/config/en/net_status.yml +8 -7
  5. data/lib/dapp.rb +157 -139
  6. data/lib/dapp/cli.rb +6 -16
  7. data/lib/dapp/cli/base.rb +3 -5
  8. data/lib/dapp/config/base.rb +19 -7
  9. data/lib/dapp/config/directive/base.rb +0 -1
  10. data/lib/dapp/config/error/config.rb +7 -0
  11. data/lib/dapp/core_ext/hash.rb +0 -2
  12. data/lib/dapp/core_ext/pathname.rb +1 -3
  13. data/lib/dapp/{project.rb → dapp.rb} +2 -21
  14. data/lib/dapp/{project → dapp}/chef.rb +2 -4
  15. data/lib/dapp/{project → dapp}/dappfile.rb +5 -7
  16. data/lib/dapp/{project → dapp}/deps/base.rb +3 -6
  17. data/lib/dapp/{project → dapp}/deps/gitartifact.rb +2 -5
  18. data/lib/dapp/{project → dapp}/git_artifact.rb +2 -4
  19. data/lib/dapp/{project → dapp}/lock.rb +3 -5
  20. data/lib/dapp/{project → dapp}/logging/base.rb +2 -5
  21. data/lib/dapp/{project → dapp}/logging/i18n.rb +2 -3
  22. data/lib/dapp/{project → dapp}/logging/paint.rb +2 -4
  23. data/lib/dapp/{project → dapp}/logging/process.rb +2 -5
  24. data/lib/dapp/{project → dapp}/shellout/base.rb +2 -4
  25. data/lib/dapp/{project → dapp}/shellout/streaming.rb +3 -8
  26. data/lib/dapp/{project → dapp}/ssh_agent.rb +6 -9
  27. data/lib/dapp/dimg.rb +1 -192
  28. data/lib/dapp/dimg/artifact.rb +24 -0
  29. data/lib/dapp/dimg/build/stage/after_install_artifact.rb +14 -0
  30. data/lib/dapp/dimg/build/stage/after_setup_artifact.rb +18 -0
  31. data/lib/dapp/dimg/build/stage/artifact_base.rb +80 -0
  32. data/lib/dapp/dimg/build/stage/artifact_default.rb +63 -0
  33. data/lib/dapp/dimg/build/stage/base.rb +210 -0
  34. data/lib/dapp/dimg/build/stage/before_install.rb +33 -0
  35. data/lib/dapp/dimg/build/stage/before_install_artifact.rb +14 -0
  36. data/lib/dapp/dimg/build/stage/before_setup.rb +31 -0
  37. data/lib/dapp/dimg/build/stage/before_setup_artifact.rb +14 -0
  38. data/lib/dapp/dimg/build/stage/build_artifact.rb +31 -0
  39. data/lib/dapp/dimg/build/stage/docker_instructions.rb +25 -0
  40. data/lib/dapp/dimg/build/stage/from.rb +50 -0
  41. data/lib/dapp/dimg/build/stage/ga_archive.rb +28 -0
  42. data/lib/dapp/dimg/build/stage/ga_archive_dependencies.rb +27 -0
  43. data/lib/dapp/dimg/build/stage/ga_artifact_patch.rb +22 -0
  44. data/lib/dapp/dimg/build/stage/ga_base.rb +80 -0
  45. data/lib/dapp/dimg/build/stage/ga_dependencies_base.rb +20 -0
  46. data/lib/dapp/dimg/build/stage/ga_latest_patch.rb +54 -0
  47. data/lib/dapp/dimg/build/stage/import_artifact.rb +64 -0
  48. data/lib/dapp/dimg/build/stage/install/ga_post_install_patch.rb +22 -0
  49. data/lib/dapp/dimg/build/stage/install/ga_post_install_patch_dependencies.rb +22 -0
  50. data/lib/dapp/dimg/build/stage/install/ga_pre_install_patch.rb +22 -0
  51. data/lib/dapp/dimg/build/stage/install/ga_pre_install_patch_dependencies.rb +22 -0
  52. data/lib/dapp/dimg/build/stage/install/install.rb +35 -0
  53. data/lib/dapp/dimg/build/stage/mod/group.rb +42 -0
  54. data/lib/dapp/dimg/build/stage/mod/logging.rb +101 -0
  55. data/lib/dapp/dimg/build/stage/setup/ga_post_setup_patch.rb +22 -0
  56. data/lib/dapp/dimg/build/stage/setup/ga_post_setup_patch_dependencies.rb +32 -0
  57. data/lib/dapp/dimg/build/stage/setup/ga_pre_setup_patch.rb +22 -0
  58. data/lib/dapp/dimg/build/stage/setup/ga_pre_setup_patch_dependencies.rb +22 -0
  59. data/lib/dapp/dimg/build/stage/setup/setup.rb +35 -0
  60. data/lib/dapp/dimg/builder.rb +6 -0
  61. data/lib/dapp/{builder → dimg/builder}/base.rb +4 -5
  62. data/lib/dapp/{builder → dimg/builder}/chef.rb +41 -33
  63. data/lib/dapp/dimg/builder/chef/berksfile.rb +121 -0
  64. data/lib/dapp/dimg/builder/chef/cookbook.rb +285 -0
  65. data/lib/dapp/dimg/builder/chef/cookbook_metadata.rb +106 -0
  66. data/lib/dapp/{builder → dimg/builder}/none.rb +4 -5
  67. data/lib/dapp/{builder → dimg/builder}/shell.rb +5 -6
  68. data/lib/dapp/dimg/cli/base.rb +16 -0
  69. data/lib/dapp/dimg/cli/bp.rb +37 -0
  70. data/lib/dapp/dimg/cli/build.rb +64 -0
  71. data/lib/dapp/dimg/cli/build_context.rb +18 -0
  72. data/lib/dapp/dimg/cli/build_context/export.rb +26 -0
  73. data/lib/dapp/dimg/cli/build_context/import.rb +17 -0
  74. data/lib/dapp/dimg/cli/cleanup.rb +22 -0
  75. data/lib/dapp/dimg/cli/cli.rb +1 -0
  76. data/lib/dapp/dimg/cli/dimg.rb +30 -0
  77. data/lib/dapp/dimg/cli/list.rb +17 -0
  78. data/lib/dapp/dimg/cli/mrproper.rb +26 -0
  79. data/lib/dapp/dimg/cli/push.rb +61 -0
  80. data/lib/dapp/dimg/cli/run.rb +59 -0
  81. data/lib/dapp/{cli → dimg/cli}/spush.rb +7 -7
  82. data/lib/dapp/dimg/cli/stage_image.rb +24 -0
  83. data/lib/dapp/dimg/cli/stages.rb +22 -0
  84. data/lib/dapp/dimg/cli/stages/cleanup_local.rb +44 -0
  85. data/lib/dapp/dimg/cli/stages/cleanup_repo.rb +26 -0
  86. data/lib/dapp/dimg/cli/stages/flush_local.rb +23 -0
  87. data/lib/dapp/dimg/cli/stages/flush_repo.rb +24 -0
  88. data/lib/dapp/dimg/cli/stages/pull.rb +28 -0
  89. data/lib/dapp/dimg/cli/stages/push.rb +24 -0
  90. data/lib/dapp/dimg/cli/tag.rb +24 -0
  91. data/lib/dapp/dimg/config/artifact_dimg.rb +17 -0
  92. data/lib/dapp/dimg/config/artifact_group.rb +47 -0
  93. data/lib/dapp/dimg/config/base.rb +7 -0
  94. data/lib/dapp/dimg/config/dimg.rb +24 -0
  95. data/lib/dapp/dimg/config/dimg/instance_methods.rb +177 -0
  96. data/lib/dapp/dimg/config/dimg/validation.rb +126 -0
  97. data/lib/dapp/dimg/config/dimg_group.rb +61 -0
  98. data/lib/dapp/dimg/config/dimg_group_base.rb +54 -0
  99. data/lib/dapp/dimg/config/dimg_group_main.rb +22 -0
  100. data/lib/dapp/dimg/config/directive/artifact.rb +70 -0
  101. data/lib/dapp/dimg/config/directive/artifact_base.rb +97 -0
  102. data/lib/dapp/dimg/config/directive/base.rb +9 -0
  103. data/lib/dapp/dimg/config/directive/chef.rb +68 -0
  104. data/lib/dapp/dimg/config/directive/docker/artifact.rb +15 -0
  105. data/lib/dapp/dimg/config/directive/docker/base.rb +22 -0
  106. data/lib/dapp/dimg/config/directive/docker/dimg.rb +82 -0
  107. data/lib/dapp/dimg/config/directive/git_artifact_local.rb +47 -0
  108. data/lib/dapp/dimg/config/directive/git_artifact_remote.rb +58 -0
  109. data/lib/dapp/dimg/config/directive/mount.rb +27 -0
  110. data/lib/dapp/dimg/config/directive/shell/artifact.rb +18 -0
  111. data/lib/dapp/dimg/config/directive/shell/dimg.rb +65 -0
  112. data/lib/dapp/dimg/dapp/command.rb +21 -0
  113. data/lib/dapp/dimg/dapp/command/bp.rb +20 -0
  114. data/lib/dapp/dimg/dapp/command/build.rb +22 -0
  115. data/lib/dapp/dimg/dapp/command/build_context/common.rb +27 -0
  116. data/lib/dapp/dimg/dapp/command/build_context/export.rb +55 -0
  117. data/lib/dapp/dimg/dapp/command/build_context/import.rb +71 -0
  118. data/lib/dapp/dimg/dapp/command/cleanup.rb +23 -0
  119. data/lib/dapp/dimg/dapp/command/common.rb +96 -0
  120. data/lib/dapp/dimg/dapp/command/list.rb +19 -0
  121. data/lib/dapp/dimg/dapp/command/mrproper.rb +75 -0
  122. data/lib/dapp/dimg/dapp/command/push.rb +27 -0
  123. data/lib/dapp/dimg/dapp/command/run.rb +15 -0
  124. data/lib/dapp/dimg/dapp/command/spush.rb +17 -0
  125. data/lib/dapp/dimg/dapp/command/stage_image.rb +14 -0
  126. data/lib/dapp/dimg/dapp/command/stages/cleanup_local.rb +137 -0
  127. data/lib/dapp/dimg/dapp/command/stages/cleanup_repo.rb +124 -0
  128. data/lib/dapp/dimg/dapp/command/stages/common.rb +85 -0
  129. data/lib/dapp/dimg/dapp/command/stages/flush_local.rb +21 -0
  130. data/lib/dapp/dimg/dapp/command/stages/flush_repo.rb +21 -0
  131. data/lib/dapp/dimg/dapp/command/stages/pull.rb +26 -0
  132. data/lib/dapp/dimg/dapp/command/stages/push.rb +22 -0
  133. data/lib/dapp/dimg/dapp/command/tag.rb +17 -0
  134. data/lib/dapp/dimg/dimg.rb +192 -0
  135. data/lib/dapp/dimg/dimg/git_artifact.rb +26 -0
  136. data/lib/dapp/dimg/dimg/path.rb +37 -0
  137. data/lib/dapp/dimg/dimg/stages.rb +60 -0
  138. data/lib/dapp/dimg/dimg/tags.rb +65 -0
  139. data/lib/dapp/dimg/docker_registry.rb +37 -0
  140. data/lib/dapp/dimg/docker_registry/base.rb +109 -0
  141. data/lib/dapp/dimg/docker_registry/base/authorization.rb +63 -0
  142. data/lib/dapp/dimg/docker_registry/base/request.rb +34 -0
  143. data/lib/dapp/dimg/docker_registry/default.rb +18 -0
  144. data/lib/dapp/dimg/error/base.rb +7 -0
  145. data/lib/dapp/dimg/error/build.rb +7 -0
  146. data/lib/dapp/dimg/error/chef.rb +11 -0
  147. data/lib/dapp/dimg/error/command.rb +7 -0
  148. data/lib/dapp/dimg/error/config.rb +7 -0
  149. data/lib/dapp/dimg/error/dimg.rb +7 -0
  150. data/lib/dapp/dimg/error/lock.rb +7 -0
  151. data/lib/dapp/dimg/error/registry.rb +7 -0
  152. data/lib/dapp/dimg/error/rugged.rb +7 -0
  153. data/lib/dapp/dimg/error/shellout.rb +7 -0
  154. data/lib/dapp/dimg/error/tar_writer.rb +7 -0
  155. data/lib/dapp/dimg/exception/base.rb +7 -0
  156. data/lib/dapp/dimg/exception/introspect_image.rb +7 -0
  157. data/lib/dapp/dimg/exception/registry.rb +7 -0
  158. data/lib/dapp/dimg/filelock.rb +43 -0
  159. data/lib/dapp/dimg/git_artifact.rb +241 -18
  160. data/lib/dapp/dimg/git_repo/base.rb +90 -0
  161. data/lib/dapp/dimg/git_repo/own.rb +39 -0
  162. data/lib/dapp/dimg/git_repo/remote.rb +50 -0
  163. data/lib/dapp/dimg/image/argument.rb +143 -0
  164. data/lib/dapp/dimg/image/docker.rb +127 -0
  165. data/lib/dapp/dimg/image/scratch.rb +32 -0
  166. data/lib/dapp/dimg/image/stage.rb +95 -0
  167. data/lib/dapp/dimg/lock/base.rb +51 -0
  168. data/lib/dapp/dimg/lock/file.rb +48 -0
  169. data/lib/dapp/error/base.rb +0 -1
  170. data/lib/dapp/error/dapp.rb +5 -0
  171. data/lib/dapp/error/dappfile.rb +0 -1
  172. data/lib/dapp/error/shellout.rb +0 -1
  173. data/lib/dapp/exception/base.rb +0 -1
  174. data/lib/dapp/helper/cli.rb +5 -6
  175. data/lib/dapp/helper/net_status.rb +0 -1
  176. data/lib/dapp/helper/sha256.rb +0 -1
  177. data/lib/dapp/helper/trivia.rb +0 -1
  178. data/lib/dapp/prctl.rb +0 -1
  179. data/lib/dapp/version.rb +1 -2
  180. metadata +172 -140
  181. data/lib/dapp/artifact.rb +0 -23
  182. data/lib/dapp/build/stage/after_install_artifact.rb +0 -13
  183. data/lib/dapp/build/stage/after_setup_artifact.rb +0 -17
  184. data/lib/dapp/build/stage/artifact_base.rb +0 -80
  185. data/lib/dapp/build/stage/artifact_default.rb +0 -63
  186. data/lib/dapp/build/stage/base.rb +0 -203
  187. data/lib/dapp/build/stage/before_install.rb +0 -32
  188. data/lib/dapp/build/stage/before_install_artifact.rb +0 -13
  189. data/lib/dapp/build/stage/before_setup.rb +0 -30
  190. data/lib/dapp/build/stage/before_setup_artifact.rb +0 -13
  191. data/lib/dapp/build/stage/build_artifact.rb +0 -36
  192. data/lib/dapp/build/stage/docker_instructions.rb +0 -24
  193. data/lib/dapp/build/stage/from.rb +0 -34
  194. data/lib/dapp/build/stage/ga_archive.rb +0 -27
  195. data/lib/dapp/build/stage/ga_archive_dependencies.rb +0 -26
  196. data/lib/dapp/build/stage/ga_artifact_patch.rb +0 -21
  197. data/lib/dapp/build/stage/ga_base.rb +0 -79
  198. data/lib/dapp/build/stage/ga_dependencies_base.rb +0 -19
  199. data/lib/dapp/build/stage/ga_latest_patch.rb +0 -53
  200. data/lib/dapp/build/stage/import_artifact.rb +0 -65
  201. data/lib/dapp/build/stage/install/ga_post_install_patch.rb +0 -21
  202. data/lib/dapp/build/stage/install/ga_post_install_patch_dependencies.rb +0 -21
  203. data/lib/dapp/build/stage/install/ga_pre_install_patch.rb +0 -21
  204. data/lib/dapp/build/stage/install/ga_pre_install_patch_dependencies.rb +0 -21
  205. data/lib/dapp/build/stage/install/install.rb +0 -40
  206. data/lib/dapp/build/stage/mod/group.rb +0 -42
  207. data/lib/dapp/build/stage/mod/logging.rb +0 -104
  208. data/lib/dapp/build/stage/setup/ga_post_setup_patch.rb +0 -21
  209. data/lib/dapp/build/stage/setup/ga_post_setup_patch_dependencies.rb +0 -31
  210. data/lib/dapp/build/stage/setup/ga_pre_setup_patch.rb +0 -21
  211. data/lib/dapp/build/stage/setup/ga_pre_setup_patch_dependencies.rb +0 -21
  212. data/lib/dapp/build/stage/setup/setup.rb +0 -40
  213. data/lib/dapp/builder/chef/berksfile.rb +0 -78
  214. data/lib/dapp/builder/chef/cookbook.rb +0 -257
  215. data/lib/dapp/builder/chef/cookbook_metadata.rb +0 -54
  216. data/lib/dapp/builder/chef/error.rb +0 -12
  217. data/lib/dapp/cli/bp.rb +0 -37
  218. data/lib/dapp/cli/build.rb +0 -60
  219. data/lib/dapp/cli/cleanup.rb +0 -22
  220. data/lib/dapp/cli/list.rb +0 -17
  221. data/lib/dapp/cli/mrproper.rb +0 -26
  222. data/lib/dapp/cli/push.rb +0 -61
  223. data/lib/dapp/cli/run.rb +0 -53
  224. data/lib/dapp/cli/stage_image.rb +0 -24
  225. data/lib/dapp/cli/stages.rb +0 -23
  226. data/lib/dapp/cli/stages/cleanup_local.rb +0 -44
  227. data/lib/dapp/cli/stages/cleanup_repo.rb +0 -26
  228. data/lib/dapp/cli/stages/flush_local.rb +0 -23
  229. data/lib/dapp/cli/stages/flush_repo.rb +0 -24
  230. data/lib/dapp/cli/stages/pull.rb +0 -28
  231. data/lib/dapp/cli/stages/push.rb +0 -24
  232. data/lib/dapp/cli/tag.rb +0 -24
  233. data/lib/dapp/config/artifact_dimg.rb +0 -20
  234. data/lib/dapp/config/artifact_group.rb +0 -56
  235. data/lib/dapp/config/dimg.rb +0 -23
  236. data/lib/dapp/config/dimg/instance_methods.rb +0 -194
  237. data/lib/dapp/config/dimg/validation.rb +0 -125
  238. data/lib/dapp/config/dimg_group.rb +0 -60
  239. data/lib/dapp/config/dimg_group_base.rb +0 -53
  240. data/lib/dapp/config/dimg_group_main.rb +0 -21
  241. data/lib/dapp/config/directive/artifact.rb +0 -69
  242. data/lib/dapp/config/directive/artifact_base.rb +0 -93
  243. data/lib/dapp/config/directive/chef.rb +0 -57
  244. data/lib/dapp/config/directive/docker/artifact.rb +0 -15
  245. data/lib/dapp/config/directive/docker/base.rb +0 -20
  246. data/lib/dapp/config/directive/docker/dimg.rb +0 -81
  247. data/lib/dapp/config/directive/git_artifact_local.rb +0 -13
  248. data/lib/dapp/config/directive/git_artifact_remote.rb +0 -57
  249. data/lib/dapp/config/directive/mount.rb +0 -26
  250. data/lib/dapp/config/directive/shell/artifact.rb +0 -17
  251. data/lib/dapp/config/directive/shell/dimg.rb +0 -65
  252. data/lib/dapp/dimg/path.rb +0 -37
  253. data/lib/dapp/dimg/stages.rb +0 -59
  254. data/lib/dapp/dimg/tags.rb +0 -65
  255. data/lib/dapp/docker_registry.rb +0 -36
  256. data/lib/dapp/docker_registry/base.rb +0 -109
  257. data/lib/dapp/docker_registry/default.rb +0 -18
  258. data/lib/dapp/docker_registry/mod/authorization.rb +0 -63
  259. data/lib/dapp/docker_registry/mod/request.rb +0 -32
  260. data/lib/dapp/error/build.rb +0 -6
  261. data/lib/dapp/error/config.rb +0 -6
  262. data/lib/dapp/error/dimg.rb +0 -6
  263. data/lib/dapp/error/image.rb +0 -6
  264. data/lib/dapp/error/project.rb +0 -6
  265. data/lib/dapp/error/registry.rb +0 -6
  266. data/lib/dapp/error/rugged.rb +0 -6
  267. data/lib/dapp/error/tar_writer.rb +0 -6
  268. data/lib/dapp/exception/introspect_image.rb +0 -6
  269. data/lib/dapp/exception/registry.rb +0 -6
  270. data/lib/dapp/filelock.rb +0 -43
  271. data/lib/dapp/git_artifact.rb +0 -241
  272. data/lib/dapp/git_repo/base.rb +0 -88
  273. data/lib/dapp/git_repo/own.rb +0 -38
  274. data/lib/dapp/git_repo/remote.rb +0 -49
  275. data/lib/dapp/image/argument.rb +0 -134
  276. data/lib/dapp/image/docker.rb +0 -115
  277. data/lib/dapp/image/scratch.rb +0 -32
  278. data/lib/dapp/image/stage.rb +0 -94
  279. data/lib/dapp/lock/base.rb +0 -51
  280. data/lib/dapp/lock/error.rb +0 -14
  281. data/lib/dapp/lock/file.rb +0 -45
  282. data/lib/dapp/project/command/bp.rb +0 -21
  283. data/lib/dapp/project/command/build.rb +0 -20
  284. data/lib/dapp/project/command/cleanup.rb +0 -24
  285. data/lib/dapp/project/command/common.rb +0 -96
  286. data/lib/dapp/project/command/list.rb +0 -20
  287. data/lib/dapp/project/command/mrproper.rb +0 -69
  288. data/lib/dapp/project/command/push.rb +0 -28
  289. data/lib/dapp/project/command/run.rb +0 -15
  290. data/lib/dapp/project/command/spush.rb +0 -18
  291. data/lib/dapp/project/command/stage_image.rb +0 -15
  292. data/lib/dapp/project/command/stages/cleanup_local.rb +0 -138
  293. data/lib/dapp/project/command/stages/cleanup_repo.rb +0 -125
  294. data/lib/dapp/project/command/stages/common.rb +0 -86
  295. data/lib/dapp/project/command/stages/flush_local.rb +0 -22
  296. data/lib/dapp/project/command/stages/flush_repo.rb +0 -22
  297. data/lib/dapp/project/command/stages/pull.rb +0 -27
  298. data/lib/dapp/project/command/stages/push.rb +0 -23
  299. data/lib/dapp/project/command/tag.rb +0 -18
@@ -0,0 +1,15 @@
1
+ module Dapp
2
+ module Dimg
3
+ module Config
4
+ module Directive
5
+ module Docker
6
+ class Artifact < Base
7
+ def _change_options
8
+ {}
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,22 @@
1
+ module Dapp
2
+ module Dimg
3
+ module Config
4
+ module Directive
5
+ module Docker
6
+ class Base < Directive::Base
7
+ attr_reader :_from, :_from_cache_version
8
+
9
+ def from(image, cache_version: nil)
10
+ image = image.to_s
11
+ raise(Error::Config, code: :docker_from_incorrect,
12
+ data: { name: image }) unless ::Dapp::Dimg::Image::Docker.image_name?(image)
13
+ raise(Error::Config, code: :docker_from_without_tag, data: { name: image }) unless image.include?(':')
14
+ @_from = image
15
+ @_from_cache_version = cache_version
16
+ end
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -0,0 +1,82 @@
1
+ module Dapp
2
+ module Dimg
3
+ module Config
4
+ module Directive
5
+ module Docker
6
+ class Dimg < Base
7
+ attr_reader :_volume, :_expose, :_env, :_label, :_cmd, :_onbuild, :_workdir, :_user, :_entrypoint
8
+
9
+ def initialize(**kwargs, &blk)
10
+ @_volume = []
11
+ @_expose = []
12
+ @_env = {}
13
+ @_label = {}
14
+ @_cmd = []
15
+ @_onbuild = []
16
+
17
+ super(**kwargs, &blk)
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(path)
45
+ @_workdir = path_format(path)
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(dapp: dapp).tap do |docker|
74
+ docker.instance_variable_set('@_from', @_from)
75
+ end
76
+ end
77
+ end
78
+ end
79
+ end
80
+ end
81
+ end
82
+ end
@@ -0,0 +1,47 @@
1
+ module Dapp
2
+ module Dimg
3
+ module Config
4
+ module Directive
5
+ class GitArtifactLocal < ArtifactBase
6
+ alias add export
7
+ undef_method :export
8
+
9
+ class Export < ArtifactBase::Export
10
+ def stage_dependencies(&blk)
11
+ @stage_dependencies ||= StageDependencies.new(&blk)
12
+ end
13
+
14
+ def _artifact_options
15
+ super.merge(stages_dependencies: stage_dependencies.to_h)
16
+ end
17
+
18
+ class StageDependencies < Base
19
+ STAGES = [:install, :setup, :before_setup, :build_artifact].freeze
20
+
21
+ STAGES.each do |stage|
22
+ define_method(stage) do |*glob|
23
+ if (globs = glob.map { |g| path_format(g) }).any? { |g| Pathname(g).absolute? }
24
+ raise Error::Config, code: :stages_dependencies_paths_relative_path_required, data: { stage: stage }
25
+ end
26
+ instance_variable_set(:"@#{stage}", globs)
27
+ end
28
+
29
+ define_method("_#{stage}") do
30
+ instance_variable_get(:"@#{stage}") || []
31
+ end
32
+ end
33
+
34
+ def initialize(&blk)
35
+ instance_eval(&blk) if block_given?
36
+ end
37
+
38
+ def to_h
39
+ STAGES.map { |stage| [stage, send("_#{stage}")] }.to_h
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,58 @@
1
+ module Dapp
2
+ module Dimg
3
+ module Config
4
+ module Directive
5
+ class GitArtifactRemote < GitArtifactLocal
6
+ attr_reader :_url, :_name, :_branch, :_commit
7
+
8
+ def initialize(url, **kwargs, &blk)
9
+ raise Error::Config, code: :git_artifact_remote_unsupported_protocol,
10
+ data: { url: url } unless %w(http https).include? URI(url.to_s).scheme
11
+
12
+ @_url = url
13
+ @_name = url.gsub(%r{.*?([^\/ ]+)\.git}, '\\1')
14
+
15
+ super(**kwargs, &blk)
16
+ end
17
+
18
+ def _export
19
+ super do |export|
20
+ export._url = @_url
21
+ export._name = @_name
22
+ export._branch ||= @_branch
23
+ export._commit ||= @_commit
24
+ end
25
+ end
26
+
27
+ class Export < GitArtifactLocal::Export
28
+ attr_accessor :_url, :_name, :_branch, :_commit
29
+
30
+ def _artifact_options
31
+ super.merge(name: _name, branch: _branch)
32
+ end
33
+
34
+ protected
35
+
36
+ def branch(value)
37
+ @_branch = value
38
+ end
39
+
40
+ def commit(value)
41
+ @_commit = value
42
+ end
43
+ end
44
+
45
+ protected
46
+
47
+ def branch(value)
48
+ @_branch = value
49
+ end
50
+
51
+ def commit(value)
52
+ @_commit = value
53
+ end
54
+ end
55
+ end
56
+ end
57
+ end
58
+ end
@@ -0,0 +1,27 @@
1
+ module Dapp
2
+ module Dimg
3
+ module Config
4
+ module Directive
5
+ class Mount < Base
6
+ attr_reader :_from, :_to
7
+ attr_reader :_type
8
+
9
+ def initialize(to, **kwargs, &blk)
10
+ raise Error::Config, code: :mount_to_absolute_path_required unless Pathname((to = to.to_s)).absolute?
11
+ @_to = path_format(to)
12
+
13
+ super(**kwargs, &blk)
14
+ end
15
+
16
+ protected
17
+
18
+ def from(type)
19
+ type = type.to_sym
20
+ raise Error::Config, code: :mount_from_type_required unless [:tmp_dir, :build_dir].include? type
21
+ @_type = type
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,18 @@
1
+ module Dapp
2
+ module Dimg
3
+ module Config
4
+ module Directive
5
+ module Shell
6
+ class Artifact < Dimg
7
+ attr_reader :_build_artifact
8
+ stage_command_generator(:build_artifact)
9
+
10
+ def empty?
11
+ super && _build_artifact_command.empty?
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,65 @@
1
+ module Dapp
2
+ module Dimg
3
+ module Config
4
+ module Directive
5
+ module Shell
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(dapp: dapp)).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
+ class StageCommand < Directive::Base
33
+ attr_reader :_version
34
+ attr_reader :_run
35
+
36
+ def initialize(**kwargs, &blk)
37
+ @_run = []
38
+
39
+ super(**kwargs, &blk)
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
+ _clone_to Artifact.new(dapp: dapp)
59
+ end
60
+ end
61
+ end
62
+ end
63
+ end
64
+ end
65
+ end
@@ -0,0 +1,21 @@
1
+ ::Dapp::Dapp.send(:include, Dapp::Dimg::Dapp::Command::Common)
2
+ ::Dapp::Dapp.send(:include, Dapp::Dimg::Dapp::Command::Run)
3
+ ::Dapp::Dapp.send(:include, Dapp::Dimg::Dapp::Command::Build)
4
+ ::Dapp::Dapp.send(:include, Dapp::Dimg::Dapp::Command::Bp)
5
+ ::Dapp::Dapp.send(:include, Dapp::Dimg::Dapp::Command::Push)
6
+ ::Dapp::Dapp.send(:include, Dapp::Dimg::Dapp::Command::Spush)
7
+ ::Dapp::Dapp.send(:include, Dapp::Dimg::Dapp::Command::Tag)
8
+ ::Dapp::Dapp.send(:include, Dapp::Dimg::Dapp::Command::List)
9
+ ::Dapp::Dapp.send(:include, Dapp::Dimg::Dapp::Command::Stages::CleanupLocal)
10
+ ::Dapp::Dapp.send(:include, Dapp::Dimg::Dapp::Command::Stages::CleanupRepo)
11
+ ::Dapp::Dapp.send(:include, Dapp::Dimg::Dapp::Command::Stages::FlushLocal)
12
+ ::Dapp::Dapp.send(:include, Dapp::Dimg::Dapp::Command::Stages::FlushRepo)
13
+ ::Dapp::Dapp.send(:include, Dapp::Dimg::Dapp::Command::Stages::Push)
14
+ ::Dapp::Dapp.send(:include, Dapp::Dimg::Dapp::Command::Stages::Pull)
15
+ ::Dapp::Dapp.send(:include, Dapp::Dimg::Dapp::Command::Stages::Common)
16
+ ::Dapp::Dapp.send(:include, Dapp::Dimg::Dapp::Command::Cleanup)
17
+ ::Dapp::Dapp.send(:include, Dapp::Dimg::Dapp::Command::Mrproper)
18
+ ::Dapp::Dapp.send(:include, Dapp::Dimg::Dapp::Command::StageImage)
19
+ ::Dapp::Dapp.send(:include, Dapp::Dimg::Dapp::Command::BuildContext::Import)
20
+ ::Dapp::Dapp.send(:include, Dapp::Dimg::Dapp::Command::BuildContext::Export)
21
+ ::Dapp::Dapp.send(:include, Dapp::Dimg::Dapp::Command::BuildContext::Common)
@@ -0,0 +1,20 @@
1
+ module Dapp
2
+ module Dimg
3
+ class Dapp
4
+ module Command
5
+ module Bp
6
+ def bp(repo)
7
+ bp_step(:build)
8
+ bp_step(:push, repo)
9
+ bp_step(:stages_cleanup_by_repo, repo)
10
+ bp_step(:cleanup)
11
+ end
12
+
13
+ def bp_step(step, *args)
14
+ log_step_with_indent(step) { send(step, *args) }
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end # Dimg
20
+ end # Dapp
@@ -0,0 +1,22 @@
1
+ module Dapp
2
+ module Dimg
3
+ class Dapp
4
+ module Command
5
+ module Build
6
+ def build
7
+ setup_ssh_agent
8
+
9
+ build_configs.each do |config|
10
+ log_dimg_name_with_indent(config) do
11
+ Dimg.new(config: config, dapp: self).build!
12
+ end
13
+ end
14
+ rescue ::Dapp::Error::Shellout, Error::Base
15
+ build_context_export unless cli_options[:build_context_directory].nil?
16
+ raise
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end # Dimg
22
+ end # Dapp
@@ -0,0 +1,27 @@
1
+ module Dapp
2
+ module Dimg
3
+ class Dapp
4
+ module Command
5
+ module BuildContext
6
+ module Common
7
+ def build_context_images_tar
8
+ build_context_path('images.tar')
9
+ end
10
+
11
+ def build_context_build_tar
12
+ build_context_path('build.tar')
13
+ end
14
+
15
+ def build_context_path(*path)
16
+ path.compact.map(&:to_s).inject(Pathname.new(build_context_directory), &:+).tap { |p| p.parent.mkpath }
17
+ end
18
+
19
+ def build_context_directory
20
+ File.expand_path(cli_options[:build_context_directory].to_s)
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,55 @@
1
+ module Dapp
2
+ module Dimg
3
+ class Dapp
4
+ module Command
5
+ module BuildContext
6
+ module Export
7
+ def build_context_export
8
+ log_process(:'export context') do
9
+ with_log_indent do
10
+ export_build_context_image_tar
11
+ export_build_context_build_tar
12
+ end
13
+ end
14
+ end
15
+
16
+ def export_build_context_image_tar
17
+ lock("#{name}.images", readonly: true) do
18
+ context_images_names = build_configs.map do |config|
19
+ Dimg.new(config: config, dapp: self).tagged_images.map(&:name)
20
+ end.flatten
21
+
22
+ log_secondary_process(:images, short: true) do
23
+ Image::Docker.save!(context_images_names, build_context_images_tar)
24
+ end unless context_images_names.empty?
25
+ end
26
+ end
27
+
28
+ def export_build_context_build_tar
29
+ log_secondary_process(:build_dir, short: true) do
30
+ File.open(build_context_build_tar, File::RDWR | File::CREAT) do |f|
31
+ Gem::Package::TarWriter.new(f) do |tar|
32
+ Dir.glob(File.join(build_path, '**/*'), File::FNM_DOTMATCH).each do |path|
33
+ archive_file_path = path
34
+ .reverse
35
+ .chomp(build_path.to_s.reverse)
36
+ .chomp('/')
37
+ .reverse
38
+ if File.directory?(path)
39
+ tar.mkdir archive_file_path, File.stat(path).mode
40
+ else
41
+ tar.add_file archive_file_path, File.stat(path).mode do |tf|
42
+ tf.write File.read(path)
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end