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
@@ -1,23 +0,0 @@
1
- module Dapp
2
- module Config
3
- # Dimg
4
- class Dimg < Base
5
- include Validation
6
- include InstanceMethods
7
-
8
- attr_reader :_name
9
-
10
- def initialize(name, project:)
11
- self._name = name
12
- super(project: project)
13
- end
14
-
15
- def _name=(name)
16
- return if name.nil?
17
- reg = '^[[[:alnum:]]_.-]*$'
18
- raise Error::Config, code: :dimg_name_incorrect, data: { name: name, reg: reg } unless name =~ /#{reg}/
19
- @_name = name
20
- end
21
- end
22
- end
23
- end
@@ -1,194 +0,0 @@
1
- module Dapp
2
- module Config
3
- class Dimg < Base
4
- # InstanceMethods
5
- module InstanceMethods
6
- attr_reader :_builder
7
- attr_reader :_chef, :_shell, :_docker, :_git_artifact, :_mount, :_artifact
8
- attr_reader :_install_dependencies, :_setup_dependencies
9
-
10
- def dev_mode
11
- @_dev_mode = true
12
- end
13
-
14
- def install_depends_on(*args)
15
- _install_dependencies.concat(args)
16
- end
17
-
18
- def setup_depends_on(*args)
19
- _setup_dependencies.concat(args)
20
- end
21
-
22
- def chef(&blk)
23
- builder(:chef)
24
- directive_eval(_chef, &blk)
25
- end
26
-
27
- def shell(&blk)
28
- builder(:shell)
29
- directive_eval(_shell, &blk)
30
- end
31
-
32
- def docker(&blk)
33
- directive_eval(_docker, &blk)
34
- end
35
-
36
- def artifact(&blk)
37
- _artifact.concat begin
38
- pass_to_custom(ArtifactGroup.new(project: project), :clone_to_artifact).tap do |artifact_group|
39
- artifact_group.instance_eval(&blk) if block_given?
40
- end._export
41
- end
42
- end
43
-
44
- def git(url = nil, &blk)
45
- type = url.nil? ? :local : :remote
46
- _git_artifact.send(type, url.to_s, &blk)
47
- end
48
-
49
- def mount(to, &blk)
50
- _mount << Directive::Mount.new(to, project: project, &blk)
51
- end
52
-
53
- def _dev_mode
54
- !!@_dev_mode
55
- end
56
-
57
- def _builder
58
- @_builder || :none
59
- end
60
-
61
- def _chef
62
- @_chef ||= Directive::Chef.new(project: project)
63
- end
64
-
65
- def _shell
66
- @_shell ||= Directive::Shell::Dimg.new(project: project)
67
- end
68
-
69
- def _docker
70
- @_docker ||= Directive::Docker::Dimg.new(project: project)
71
- end
72
-
73
- def _mount
74
- @_mount ||= []
75
- end
76
-
77
- def _git_artifact
78
- @_git_artifact ||= GitArtifact.new(project: project)
79
- end
80
-
81
- [:build_dir, :tmp_dir].each do |mount_type|
82
- define_method "_#{mount_type}_mount" do
83
- _mount.select { |m| m._type == mount_type }
84
- end
85
- end
86
-
87
- def _install_dependencies
88
- @_install_dependencies ||= []
89
- end
90
-
91
- def _setup_dependencies
92
- @_setup_dependencies ||= []
93
- end
94
-
95
- def _artifact
96
- @_artifact ||= []
97
- end
98
-
99
- [:before, :after].each do |order|
100
- [:setup, :install].each do |stage|
101
- define_method "_#{order}_#{stage}_artifact" do
102
- _artifact.select do |art|
103
- art.public_send("_#{order}") == stage
104
- end
105
- end
106
- end
107
- end
108
-
109
- def _import_artifact
110
- _artifact.select(&:not_associated?)
111
- end
112
-
113
- # GitArtifact
114
- class GitArtifact < Directive::Base
115
- attr_reader :_local, :_remote
116
-
117
- def initialize(**kwargs, &blk)
118
- @_local = []
119
- @_remote = []
120
-
121
- super(**kwargs, &blk)
122
- end
123
-
124
- def local(_, &blk)
125
- @_local << Directive::GitArtifactLocal.new(project: project, &blk)
126
- end
127
-
128
- def remote(repo_url, &blk)
129
- @_remote << Directive::GitArtifactRemote.new(repo_url, project: project, &blk)
130
- end
131
-
132
- def _local
133
- @_local.map(&:_export).flatten
134
- end
135
-
136
- def _remote
137
- @_remote.map(&:_export).flatten
138
- end
139
-
140
- protected
141
-
142
- def empty?
143
- (_local + _remote).empty?
144
- end
145
-
146
- def validate!
147
- (_local + _remote).each { |exp| exp.send(:validate!) }
148
- end
149
- end
150
-
151
- protected
152
-
153
- def builder(type)
154
- @_builder = type if _builder == :none
155
- raise Error::Config, code: :builder_type_conflict unless @_builder == type
156
- end
157
-
158
- def directive_eval(directive, &blk)
159
- directive.instance_eval(&blk) if block_given?
160
- directive
161
- end
162
-
163
- def pass_to_default(dimg)
164
- pass_to_custom(dimg, :clone)
165
- end
166
-
167
- def pass_to_custom(obj, clone_method)
168
- passed_directives.each do |directive|
169
- next if (variable = instance_variable_get(directive)).nil?
170
-
171
- obj.instance_variable_set(directive, begin
172
- case variable
173
- when Directive::Base, GitArtifact then variable.send(clone_method)
174
- when Symbol then variable
175
- when Array then variable.dup
176
- when TrueClass, FalseClass then variable
177
- else
178
- raise
179
- end
180
- end)
181
- end
182
- obj
183
- end
184
-
185
- def passed_directives
186
- [:@_chef, :@_shell, :@_docker,
187
- :@_git_artifact, :@_mount,
188
- :@_artifact, :@_builder, :@_dev_mode,
189
- :@_install_dependencies, :@_setup_dependencies]
190
- end
191
- end
192
- end
193
- end
194
- end
@@ -1,125 +0,0 @@
1
- module Dapp
2
- module Config
3
- class Dimg < Base
4
- # Validation
5
- module Validation
6
- protected
7
-
8
- def validate!
9
- directives_validate!
10
- validate_scratch!
11
- validate_artifacts!
12
- validate_artifacts_artifacts!
13
- end
14
-
15
- def validate_scratch!
16
- if _docker._from.nil?
17
- validate_scratch_directives!
18
- validate_scratch_artifacts!
19
- else
20
- raise Error::Config, code: :stage_artifact_not_associated unless _import_artifact.empty?
21
- end
22
- end
23
-
24
- def directives_validate!
25
- passed_directives.each do |v|
26
- next if (value = instance_variable_get(v)).nil?
27
- Array(value).each do |elm|
28
- elm.send(:validate!) if elm.methods.include?(:validate!)
29
- end
30
- end
31
- end
32
-
33
- def validate_scratch_directives!
34
- directives = [[:_shell, :shell], [:_chef, :chef], [:_git_artifact, :git],
35
- [:_install_dependencies, :install_depends_on], [:_setup_dependencies, :setup_depends_on],
36
- [:_tmp_dir_mount, :mount], [:_build_dir_mount, :mount]]
37
- directives.each do |name, user_name|
38
- raise Error::Config,
39
- code: :scratch_unsupported_directive,
40
- data: { directive: user_name } unless public_send(name).send(:empty?)
41
- end
42
-
43
- docker_directives = [:_expose, :_env, :_cmd, :_onbuild, :_workdir, :_user, :_entrypoint]
44
- docker_directives.each do |directive|
45
- value = _docker.public_send(directive)
46
- raise Error::Config,
47
- code: :scratch_unsupported_directive,
48
- data: { directive: "docker.#{directive}" } unless value.nil? || value.send(:empty?)
49
- end
50
- end
51
-
52
- def validate_scratch_artifacts!
53
- raise Error::Config, code: :scratch_artifact_associated unless _associated_artifacts.empty?
54
- raise Error::Config, code: :scratch_artifact_required if _import_artifact.empty?
55
- _import_artifact.each do |artifact|
56
- raise Error::Config, code: :scratch_artifact_docker_from if artifact._config._docker._from.nil?
57
- end
58
- end
59
-
60
- def validate_artifacts_artifacts!
61
- _artifact.each { |artifact_dimg| artifact_dimg._config.validate! }
62
- end
63
-
64
- def validate_artifacts!
65
- artifacts = validate_artifact_format(validated_artifacts)
66
- loop do
67
- break if artifacts.empty?
68
- verifiable_artifact = artifacts.shift
69
- artifacts.select { |a| a[:to] == verifiable_artifact[:to] }.each do |artifact|
70
- next if verifiable_artifact[:index] == artifact[:index]
71
- validate_artifact!(verifiable_artifact, artifact)
72
- validate_artifact!(artifact, verifiable_artifact)
73
- end
74
- end
75
- end
76
-
77
- def validate_artifact_format(artifacts)
78
- artifacts.map do |a|
79
- path_format = proc { |path| File.expand_path(File.join('/', path, '/'))[1..-1] }
80
-
81
- path_format.call(a._to) =~ %r{^([^\/]*)\/?(.*)$}
82
- to = Regexp.last_match(1)
83
- include_paths = a._include_paths.dup
84
- include_paths << Regexp.last_match(2) unless Regexp.last_match(2).empty?
85
- exclude_paths = a._exclude_paths.dup
86
-
87
- {
88
- index: artifacts.index(a),
89
- to: to,
90
- include_paths: include_paths.map(&path_format),
91
- exclude_paths: exclude_paths.map(&path_format)
92
- }
93
- end
94
- end
95
-
96
- def validate_artifact!(verifiable_artifact, artifact)
97
- verifiable_artifact[:include_paths].each do |verifiable_path|
98
- potential_conflicts = artifact[:include_paths].select { |path| path.start_with?(verifiable_path) }
99
- validate_artifact_path!(verifiable_artifact, potential_conflicts)
100
- end.empty? && verifiable_artifact[:exclude_paths].empty? && raise(Error::Config, code: :artifact_conflict)
101
- validate_artifact_path!(verifiable_artifact, artifact[:include_paths]) if verifiable_artifact[:include_paths].empty?
102
- end
103
-
104
- def validate_artifact_path!(verifiable_artifact, potential_conflicts)
105
- potential_conflicts.all? do |path|
106
- loop do
107
- break if verifiable_artifact[:exclude_paths].include?(path) || ((path = File.dirname(path)) == '.')
108
- end
109
- verifiable_artifact[:exclude_paths].include?(path)
110
- end.tap { |res| res || raise(Error::Config, code: :artifact_conflict) }
111
- end
112
-
113
- def _associated_artifacts
114
- _artifact.select do |art|
115
- !(art._before.nil? && art._after.nil?)
116
- end
117
- end
118
-
119
- def validated_artifacts
120
- _artifact + _git_artifact._local + _git_artifact._remote
121
- end
122
- end
123
- end
124
- end
125
- end
@@ -1,60 +0,0 @@
1
- module Dapp
2
- module Config
3
- # DimgGroup
4
- class DimgGroup < DimgGroupBase
5
- include Dimg::InstanceMethods
6
-
7
- def chef(&blk)
8
- check_dimg_directive_order(:chef)
9
- super
10
- end
11
-
12
- def shell(&blk)
13
- check_dimg_directive_order(:shell)
14
- super
15
- end
16
-
17
- def docker(&blk)
18
- check_dimg_directive_order(:docker)
19
- super
20
- end
21
-
22
- def artifact(&blk)
23
- check_dimg_group_directive_order(:artifact)
24
- super
25
- end
26
-
27
- def git(url = nil, &blk)
28
- check_dimg_directive_order(:git)
29
- super
30
- end
31
-
32
- def mount(to, &blk)
33
- check_dimg_directive_order(:mount)
34
- super
35
- end
36
-
37
- protected
38
-
39
- def before_dimg_eval(dimg)
40
- pass_to_default(dimg)
41
- end
42
-
43
- def before_dimg_group_eval(dimg_group)
44
- pass_to_default(dimg_group)
45
- end
46
-
47
- def check_dimg_directive_order(directive)
48
- project.log_config_warning(desc: { code: 'wrong_using_base_directive',
49
- data: { directive: directive },
50
- context: 'warning' }) if _dimg.any? || _dimg_group.any? || _artifact.any?
51
- end
52
-
53
- def check_dimg_group_directive_order(directive)
54
- project.log_config_warning(desc: { code: 'wrong_using_directive',
55
- data: { directive: directive },
56
- context: 'warning' }) if _dimg.any? || _dimg_group.any?
57
- end
58
- end
59
- end
60
- end
@@ -1,53 +0,0 @@
1
- module Dapp
2
- module Config
3
- # DimgGroupBase
4
- class DimgGroupBase < Base
5
- attr_reader :_dimg_group
6
-
7
- def initialize(project:)
8
- @_dimg = []
9
- @_dimg_group = []
10
-
11
- super(project: project)
12
- end
13
-
14
- def dev_mode
15
- @_dev_mode = true
16
- end
17
-
18
- def dimg(name = nil, &blk)
19
- Config::Dimg.new(name, project: project).tap do |dimg|
20
- before_dimg_eval(dimg)
21
- dimg.instance_eval(&blk) if block_given?
22
- @_dimg << dimg
23
- end
24
- end
25
-
26
- def dimg_group(&blk)
27
- Config::DimgGroup.new(project: project).tap do |dimg_group|
28
- before_dimg_group_eval(dimg_group)
29
- dimg_group.instance_eval(&blk) if block_given?
30
- @_dimg_group << dimg_group
31
- end
32
- end
33
-
34
- def _dimg
35
- (@_dimg + @_dimg_group.map(&:_dimg)).flatten
36
- end
37
-
38
- protected
39
-
40
- def before_dimg_eval(dimg)
41
- pass_to_default(dimg)
42
- end
43
-
44
- def before_dimg_group_eval(dimg_group)
45
- pass_to_default(dimg_group)
46
- end
47
-
48
- def pass_to_default(obj)
49
- obj.instance_variable_set(:@_dev_mode, @_dev_mode)
50
- end
51
- end
52
- end
53
- end