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,17 +0,0 @@
1
- module Dapp
2
- module Config
3
- module Directive
4
- module Shell
5
- # Artifact
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
@@ -1,65 +0,0 @@
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(project: project)).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(**kwargs, &blk)
38
- @_run = []
39
-
40
- super(**kwargs, &blk)
41
- end
42
-
43
- def run(*args)
44
- @_run.concat(args)
45
- end
46
-
47
- def version(value)
48
- @_version = value
49
- end
50
- end
51
-
52
- protected
53
-
54
- def empty?
55
- (_before_install_command + _before_setup_command + _install_command + _setup_command).empty?
56
- end
57
-
58
- def clone_to_artifact
59
- _clone_to Artifact.new(project: project)
60
- end
61
- end
62
- end
63
- end
64
- end
65
- end
@@ -1,37 +0,0 @@
1
- module Dapp
2
- # Dimg
3
- class Dimg
4
- # Path
5
- module Path
6
- def home_path(*path)
7
- make_path(project.path, *path).expand_path
8
- end
9
-
10
- def tmp_path(*path)
11
- @tmp_path ||= Dir.mktmpdir('dapp-', project.cli_options[:tmp_dir_prefix] || '/tmp')
12
- make_path(@tmp_path, *path).expand_path.tap { |p| p.parent.mkpath }
13
- end
14
-
15
- def build_path(*path)
16
- make_path(project.build_path, *path).expand_path.tap { |p| p.parent.mkpath }
17
- end
18
-
19
- def container_dapp_path(*path)
20
- make_path('/.dapp', *path)
21
- end
22
-
23
- def container_tmp_path(*path)
24
- container_dapp_path('tmp', *path)
25
- end
26
-
27
- alias_method :build_dir, :build_path
28
- alias_method :tmp_dir, :tmp_path
29
-
30
- private
31
-
32
- def make_path(base, *path)
33
- path.compact.map(&:to_s).inject(Pathname.new(base), &:+)
34
- end
35
- end # Path
36
- end # Dimg
37
- end # Dapp
@@ -1,59 +0,0 @@
1
- module Dapp
2
- # Dimg
3
- class Dimg
4
- # Stages
5
- module Stages
6
- def signature
7
- last_stage.send(:signature)
8
- end
9
-
10
- def stage_cache_format
11
- "#{project.stage_cache}:%{signature}"
12
- end
13
-
14
- def stage_dapp_label
15
- project.stage_dapp_label
16
- end
17
-
18
- def all_images
19
- @all_images ||= all_stages.map(&:image).uniq!(&:name)
20
- end
21
-
22
- protected
23
-
24
- def last_stage
25
- @last_stage ||= if scratch?
26
- Build::Stage::ImportArtifact.new(self)
27
- else
28
- Build::Stage::DockerInstructions.new(self)
29
- end
30
- end
31
-
32
- def export_images
33
- all_images.select(&:tagged?)
34
- end
35
-
36
- def import_images
37
- all_images.select { |image| !image.tagged? }
38
- end
39
-
40
- def stages
41
- (@stages ||= []).tap do |stages|
42
- stage = last_stage
43
- loop do
44
- stages << stage
45
- break if (stage = stage.prev_stage).nil?
46
- end
47
- end
48
- end
49
-
50
- def artifacts_stages
51
- @artifacts_stages ||= stages.select { |stage| stage.artifact? }
52
- end
53
-
54
- def all_stages
55
- stages + artifacts.map(&:all_stages).flatten
56
- end
57
- end # Stages
58
- end # Dimg
59
- end # Dapp
@@ -1,65 +0,0 @@
1
- module Dapp
2
- # Dimg
3
- class Dimg
4
- # Tags
5
- module Tags
6
- protected
7
-
8
- def git_repo
9
- @git_repo ||= GitRepo::Own.new(self)
10
- end
11
-
12
- def tags
13
- tags = simple_tags + branch_tags + commit_tags + build_tags + ci_tags
14
- tags << :latest if tags.empty?
15
- tags
16
- end
17
-
18
- def simple_tags
19
- project.cli_options[:tag]
20
- end
21
-
22
- def branch_tags
23
- return [] unless project.cli_options[:tag_branch]
24
- raise Error::Dimg, code: :git_branch_without_name if (branch = git_repo.branch) == 'HEAD'
25
- [branch]
26
- end
27
-
28
- def commit_tags
29
- return [] unless project.cli_options[:tag_commit]
30
- commit = git_repo.latest_commit
31
- [commit]
32
- end
33
-
34
- def build_tags
35
- return [] unless project.cli_options[:tag_build_id]
36
-
37
- if ENV['GITLAB_CI']
38
- build_id = ENV['CI_BUILD_ID']
39
- elsif ENV['TRAVIS']
40
- build_id = ENV['TRAVIS_BUILD_NUMBER']
41
- else
42
- raise Error::Dimg, code: :ci_environment_required
43
- end
44
-
45
- [build_id]
46
- end
47
-
48
- def ci_tags
49
- return [] unless project.cli_options[:tag_ci]
50
-
51
- if ENV['GITLAB_CI']
52
- branch = ENV['CI_BUILD_REF_NAME']
53
- tag = ENV['CI_BUILD_TAG']
54
- elsif ENV['TRAVIS']
55
- branch = ENV['TRAVIS_BRANCH']
56
- tag = ENV['TRAVIS_TAG']
57
- else
58
- raise Error::Dimg, code: :ci_environment_required
59
- end
60
-
61
- [branch, tag].compact
62
- end
63
- end # Tags
64
- end # Dimg
65
- end # Dapp
@@ -1,36 +0,0 @@
1
- module Dapp
2
- # DockerRegistry
3
- module DockerRegistry
4
- def self.new(repo)
5
- /^#{repo_name_format}$/ =~ repo
6
- expected_hostname = Regexp.last_match(:hostname)
7
- expected_repo_suffix = Regexp.last_match(:repo_suffix)
8
- expected_hostname_url = expected_hostname ? "http://#{expected_hostname}" : nil
9
-
10
- if hostname_exist?(expected_hostname_url)
11
- Base.new(repo, expected_hostname_url, expected_repo_suffix)
12
- else
13
- Default.new(repo, File.join(*[expected_hostname, expected_repo_suffix].compact))
14
- end
15
- end
16
-
17
- def self.repo_name_format
18
- separator = '[_.]|__|[-]*'
19
- alpha_numeric = '[[:alnum:]]*'
20
- component = "#{alpha_numeric}[#{separator}#{alpha_numeric}]*"
21
- port_number = '[[:digit:]]+'
22
- hostcomponent = '[[:alnum:]_-]*[[:alnum:]]'
23
- hostname = "#{hostcomponent}[\\.#{hostcomponent}]*(?<port>:#{port_number})?"
24
- "(?<hostname>#{hostname}/)?(?<repo_suffix>#{component}[/#{component}]*)"
25
- end
26
-
27
- def self.repo_name?(name)
28
- !(/^#{repo_name_format}$/ =~ name).nil?
29
- end
30
-
31
- def self.hostname_exist?(url)
32
- return false unless url
33
- Mod::Request.url_available?(url)
34
- end
35
- end # DockerRegistry
36
- end # Dapp
@@ -1,109 +0,0 @@
1
- module Dapp
2
- # DockerRegistry
3
- module DockerRegistry
4
- # Base
5
- class Base
6
- include Mod::Request
7
- include Mod::Authorization
8
-
9
- API_VERSION = 'v2'.freeze
10
-
11
- attr_accessor :repo
12
- attr_accessor :hostname_url
13
- attr_accessor :repo_suffix
14
-
15
- def initialize(repo, hostname_url, repo_suffix)
16
- self.repo = repo
17
- self.hostname_url = hostname_url
18
- self.repo_suffix = repo_suffix
19
- end
20
-
21
- def repo_exist?
22
- tags.any?
23
- end
24
-
25
- def tags
26
- @tags ||= api_request(repo_suffix, 'tags/list')['tags'] || []
27
- rescue Error::Registry => e
28
- raise Exception::Registry, code: :no_such_dimg, data: { registry: api_url } if e.net_status[:code] == :page_not_found
29
- raise
30
- end
31
-
32
- def image_id(tag)
33
- response = manifest_v2(tag)
34
- response['config']['digest'] if response['schemaVersion'] == 2
35
- end
36
-
37
- def image_parent_id(tag)
38
- image_history(tag)['container_config']['Image']
39
- end
40
-
41
- def image_labels(tag)
42
- image_history(tag)['config']['Labels']
43
- end
44
-
45
- def image_delete(tag)
46
- image_blobs(tag).each { |hash| blob_delete(hash.values.first) }
47
- api_request(repo_suffix, "/manifests/#{image_digest(tag)}",
48
- method: :delete,
49
- expects: [202, 404],
50
- headers: { Accept: 'Accept: application/vnd.docker.distribution.manifest.v2+json' })
51
- end
52
-
53
- def image_history(tag)
54
- response = manifest_v1(tag)
55
- JSON.load(response['history'].first['v1Compatibility'])
56
- end
57
-
58
- protected
59
-
60
- def image_digest(tag)
61
- raw_api_request(repo_suffix, "/manifests/#{tag}",
62
- headers: { Accept: 'application/vnd.docker.distribution.manifest.v2+json' }).headers['Docker-Content-Digest']
63
- end
64
-
65
- def image_blobs(tag)
66
- manifest_v1(tag)['fsLayers']
67
- end
68
-
69
- def manifest_v1(tag)
70
- api_request(repo_suffix, "/manifests/#{tag}")
71
- end
72
-
73
- def manifest_v2(tag)
74
- api_request(repo_suffix, "/manifests/#{tag}",
75
- headers: { Accept: 'application/vnd.docker.distribution.manifest.v2+json' })
76
- end
77
-
78
- def blob_delete(id)
79
- api_request(repo_suffix, "/blobs/#{id}",
80
- method: :delete, expects: [202, 404])
81
- end
82
-
83
- def api_request(*uri, **options)
84
- JSON.load(raw_api_request(*uri, **options).body)
85
- end
86
-
87
- def raw_api_request(*uri, **options)
88
- url = api_url(*uri)
89
- request(url, **default_api_options.merge(options))
90
- rescue Excon::Error::NotFound
91
- raise Error::Registry, code: :page_not_found, data: { url: url, registry: api_url }
92
- rescue Excon::Error::Unauthorized
93
- user_not_authorized!
94
- end
95
-
96
- def api_url(*uri)
97
- File.join(hostname_url, API_VERSION, '/', *uri)
98
- end
99
-
100
- def default_api_options
101
- { expects: [200] }
102
- end
103
-
104
- def user_not_authorized!
105
- raise Error::Registry, code: :user_not_authorized, data: { registry: api_url }
106
- end
107
- end
108
- end # DockerRegistry
109
- end # Dapp
@@ -1,18 +0,0 @@
1
- module Dapp
2
- # DockerRegistry
3
- module DockerRegistry
4
- # Default
5
- class Default < Base
6
- DEFAULT_HOSTNAME_URL = 'https://registry.hub.docker.com'.freeze
7
-
8
- def initialize(repo, repo_suffix)
9
- super(repo, DEFAULT_HOSTNAME_URL, repo_suffix)
10
- end
11
-
12
- def repo_suffix=(val)
13
- val = "library/#{val}" if val.split('/').one?
14
- super(val)
15
- end
16
- end
17
- end
18
- end # Dapp
@@ -1,63 +0,0 @@
1
- module Dapp
2
- # DockerRegistry
3
- module DockerRegistry
4
- module Mod
5
- # Authorization
6
- module Authorization
7
- def authorization_options(url)
8
- @authorization_options ||= begin
9
- case authenticate_header = raw_request(url).headers['Www-Authenticate']
10
- when /Bearer/ then { headers: { Authorization: "Bearer #{authorization_token(authenticate_header)}" } }
11
- when /Basic/ then { headers: { Authorization: "Basic #{authorization_auth}" } }
12
- when nil then {}
13
- else raise Error::Registry, code: :authenticate_type_not_supported, data: { registry: api_url }
14
- end
15
- end
16
- end
17
-
18
- def authorization_token(authenticate_header)
19
- options = parse_authenticate_header(authenticate_header)
20
- realm = options.delete(:realm)
21
- begin
22
- response = raw_request(realm, headers: { Authorization: "Basic #{authorization_auth}" }, query: options, expects: [200])
23
- rescue Error::Registry
24
- raise unless (response = raw_request(realm, query: options)).status == 200
25
- end
26
- JSON.load(response.body)['token']
27
- end
28
-
29
- def parse_authenticate_header(header)
30
- [:realm, :service, :scope].map do |option|
31
- /#{option}="([[^"].]*)/ =~ header
32
- next unless Regexp.last_match(1)
33
- [option, Regexp.last_match(1)]
34
- end.compact.to_h
35
- end
36
-
37
- def authorization_auth
38
- auths = auths_section_from_docker_config
39
- r = repo
40
- loop do
41
- break unless r.include?('/') && !auths.keys.any? { |auth| auth.start_with?(r) }
42
- r = chomp_name(r)
43
- end
44
- credential = (auths[r] || auths.find { |repo, _| repo == r })
45
- user_not_authorized! if credential.nil?
46
- credential['auth']
47
- end
48
-
49
- def auths_section_from_docker_config
50
- file = Pathname(File.join(Dir.home, '.docker', 'config.json'))
51
- user_not_authorized! unless file.exist?
52
- JSON.load(file.read)['auths'].tap { |auths| user_not_authorized! if auths.nil? }
53
- end
54
-
55
- private
56
-
57
- def chomp_name(r)
58
- r.split('/')[0..-2].join('/')
59
- end
60
- end
61
- end # Mod
62
- end # DockerRegistry
63
- end # Dapp