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,51 +0,0 @@
1
- module Dapp
2
- # Lock
3
- module Lock
4
- # Base
5
- class Base
6
- attr_reader :name
7
-
8
- def initialize(name)
9
- @name = name
10
- @active_locks = 0
11
- end
12
-
13
- def lock(timeout: 60, on_wait: nil, readonly: false)
14
- _do_lock(timeout, on_wait, readonly) unless @active_locks > 0
15
- @active_locks += 1
16
- end
17
-
18
- def unlock
19
- @active_locks -= 1
20
- _do_unlock if @active_locks.zero?
21
- end
22
-
23
- def synchronize(*args)
24
- lock(*args)
25
- begin
26
- yield if block_given?
27
- ensure
28
- unlock
29
- end
30
- end
31
-
32
- protected
33
-
34
- def _do_lock(_timeout, _on_wait, _readonly)
35
- raise
36
- end
37
-
38
- def _do_unlock
39
- raise
40
- end
41
-
42
- def _waiting(timeout, on_wait, &blk)
43
- if on_wait
44
- on_wait.call { ::Timeout.timeout(timeout, &blk) }
45
- else
46
- ::Timeout.timeout(timeout, &blk)
47
- end
48
- end
49
- end # Base
50
- end # Lock
51
- end # Dapp
@@ -1,14 +0,0 @@
1
- module Dapp
2
- # Lock
3
- module Lock
4
- # Error
5
- module Error
6
- # Timeout
7
- class Timeout < ::Dapp::Error::Base
8
- def initialize(**net_status)
9
- super(context: :lock, **net_status)
10
- end
11
- end # Timeout
12
- end # Error
13
- end # Lock
14
- end # Dapp
@@ -1,45 +0,0 @@
1
- module Dapp
2
- # Lock
3
- module Lock
4
- # File
5
- class File < Base
6
- class << self
7
- attr_writer :counter
8
-
9
- def counter
10
- @counter ||= 0
11
- end
12
- end # << self
13
-
14
- attr_reader :lock_path
15
-
16
- def initialize(lock_path, name)
17
- super(name)
18
-
19
- @lock_path = Pathname.new(lock_path).tap(&:mkpath)
20
- end
21
-
22
- protected
23
-
24
- def _do_lock(timeout, on_wait, readonly)
25
- @file = ::File.open(lock_path.join(name), ::File::RDWR | ::File::CREAT, 0o644)
26
-
27
- begin
28
- mode = (readonly ? ::File::LOCK_SH : ::File::LOCK_EX)
29
- _waiting(timeout, on_wait) { @file.flock(mode) } unless @file.flock(mode | ::File::LOCK_NB)
30
- rescue ::Timeout::Error
31
- raise Dapp::Lock::Error::Timeout, code: :timeout,
32
- data: { name: name, timeout: timeout }
33
- end
34
-
35
- self.class.counter += 1
36
- end
37
-
38
- def _do_unlock
39
- @file.close
40
- @file = nil
41
- self.class.counter -= 1
42
- end
43
- end # File
44
- end # Lock
45
- end # Dapp
@@ -1,21 +0,0 @@
1
- module Dapp
2
- # Project
3
- class Project
4
- # Command
5
- module Command
6
- # Build
7
- module Bp
8
- def bp(repo)
9
- bp_step(:build)
10
- bp_step(:push, repo)
11
- bp_step(:stages_cleanup_by_repo, repo)
12
- bp_step(:cleanup)
13
- end
14
-
15
- def bp_step(step, *args)
16
- log_step_with_indent(step) { send(step, *args) }
17
- end
18
- end
19
- end
20
- end # Project
21
- end # Dapp
@@ -1,20 +0,0 @@
1
- module Dapp
2
- # Project
3
- class Project
4
- # Command
5
- module Command
6
- # Build
7
- module Build
8
- def build
9
- setup_ssh_agent
10
-
11
- build_configs.each do |config|
12
- log_dimg_name_with_indent(config) do
13
- Dimg.new(config: config, project: self).build!
14
- end
15
- end
16
- end
17
- end
18
- end
19
- end # Project
20
- end # Dapp
@@ -1,24 +0,0 @@
1
- module Dapp
2
- # Project
3
- class Project
4
- # Command
5
- module Command
6
- # Cleanup
7
- module Cleanup
8
- def cleanup
9
- lock("#{name}.images") do
10
- log_step_with_indent(name) do
11
- project_containers_flush
12
- project_dangling_images_flush
13
- remove_images_by_query([
14
- 'docker images',
15
- %(--format '{{if ne "#{stage_cache}" .Repository }}{{.Repository}}:{{.Tag}}{{ end }}'),
16
- %(-f "label=dapp=#{stage_dapp_label}")
17
- ].join(' ')) # FIXME: negative filter is not currently supported by the Docker CLI
18
- end
19
- end
20
- end
21
- end
22
- end
23
- end # Project
24
- end # Dapp
@@ -1,96 +0,0 @@
1
- module Dapp
2
- # Project
3
- class Project
4
- # Command
5
- module Command
6
- # Common
7
- module Common
8
- protected
9
-
10
- def project_images_names
11
- shellout!(%(docker images --format="{{.Repository}}:{{.Tag}}" #{stage_cache})).stdout.lines.map(&:strip)
12
- end
13
-
14
- def project_images_ids
15
- shellout!(%(docker images #{stage_cache} -q --no-trunc)).stdout.lines.map(&:strip)
16
- end
17
-
18
- def project_containers_flush
19
- remove_containers_by_query(%(docker ps -a -f "label=dapp" -f "name=#{container_name_prefix}" -q), force: true)
20
- end
21
-
22
- def project_dangling_images_flush
23
- remove_images_by_query(%(docker images -f "dangling=true" -f "label=dapp=#{stage_dapp_label}" -q), force: true)
24
- end
25
-
26
- def remove_images_by_query(images_query, force: false)
27
- with_subquery(images_query) { |ids| remove_images(ids, force: force) }
28
- end
29
-
30
- def remove_images(ids, force: false)
31
- remove_base('docker rmi%{force_option} %{ids}', ids.uniq, force: force)
32
- end
33
-
34
- def remove_containers_by_query(containers_query, force: false)
35
- with_subquery(containers_query) { |ids| remove_containers(ids, force: force) }
36
- end
37
-
38
- def remove_containers(ids, force: false)
39
- remove_base('docker rm%{force_option} %{ids}', ids.uniq, force: force)
40
- end
41
-
42
- def remove_base(query_format, ids, force: false)
43
- return if ids.empty?
44
- force_option = force ? ' -f' : ''
45
- ids.each_slice(50) { |chunk| run_command(query_format % ({ force_option: force_option, ids: chunk.join(' ') })) }
46
- end
47
-
48
- def with_subquery(query)
49
- return if (res = shellout!(query).stdout.strip.lines.map(&:strip)).empty?
50
- yield(res)
51
- end
52
-
53
- def image_labels(image_id)
54
- Image::Stage.image_config_option(image_id: image_id, option: 'labels')
55
- end
56
-
57
- def run_command(cmd)
58
- log(cmd) if log_verbose? || dry_run?
59
- shellout!(cmd) unless dry_run?
60
- end
61
-
62
- def container_name_prefix
63
- name
64
- end
65
-
66
- def validate_repo_name(repo)
67
- raise(Error::Project, code: :repo_name_incorrect, data: { name: repo }) unless Dapp::DockerRegistry.repo_name?(repo)
68
- end
69
-
70
- def proper_cache_version?
71
- !!cli_options[:proper_cache_version]
72
- end
73
-
74
- def log_proper_cache(&blk)
75
- log_step_with_indent(:'proper cache', &blk)
76
- end
77
-
78
- def one_dimg!
79
- raise Error::Project, code: :command_unexpected_dimgs_number, data: { dimgs_names: build_configs.map(&:_name).join(' ') } unless build_configs.one?
80
- end
81
-
82
- def push_format(dimg_name)
83
- if dimg_name.nil?
84
- spush_format
85
- else
86
- '%{repo}:%{dimg_name}-%{tag}'
87
- end
88
- end
89
-
90
- def spush_format
91
- '%{repo}:%{tag}'
92
- end
93
- end
94
- end
95
- end # Project
96
- end # Dapp
@@ -1,20 +0,0 @@
1
- module Dapp
2
- # Project
3
- class Project
4
- # Command
5
- module Command
6
- # List
7
- module List
8
- def list
9
- build_configs.each do |config|
10
- if config._name.nil?
11
- log_warning('Dappfile has unnamed dimg!') if log_verbose?
12
- else
13
- puts config._name
14
- end
15
- end
16
- end
17
- end
18
- end
19
- end # Project
20
- end # Dapp
@@ -1,69 +0,0 @@
1
- module Dapp
2
- # Project
3
- class Project
4
- # Command
5
- module Command
6
- # Mrproper
7
- module Mrproper
8
- def mrproper
9
- log_step_with_indent(:mrproper) do
10
- raise Error::Project, code: :mrproper_required_option unless proper_all? || proper_dev_mode_cache? || proper_cache_version?
11
-
12
- project_dangling_images_flush
13
-
14
- if proper_all?
15
- flush_by_label('dapp')
16
- elsif proper_dev_mode_cache?
17
- flush_by_label('dapp-dev-mode')
18
- elsif proper_cache_version?
19
- log_proper_cache do
20
- proper_cache_images = proper_cache_all_images
21
- remove_images(dapp_images_by_label('dapp').select { |id| !proper_cache_images.include?(id) }.map(&:strip))
22
- end
23
- end
24
- end
25
- end
26
-
27
- protected
28
-
29
- def flush_by_label(label)
30
- log_step_with_indent(:containers) { dapp_containers_flush_by_label(label) }
31
- log_step_with_indent(:images) { dapp_images_flush_by_label(label) }
32
- end
33
-
34
- def proper_all?
35
- !!cli_options[:proper_all]
36
- end
37
-
38
- def proper_dev_mode_cache?
39
- !!cli_options[:proper_dev_mode_cache]
40
- end
41
-
42
- def dapp_containers_flush_by_label(label)
43
- remove_containers_by_query(%(docker ps -a -f "label=#{label}" -q), force: true)
44
- end
45
-
46
- def dapp_dangling_images_flush_by_label(label)
47
- remove_images_by_query(%(docker images -f "dangling=true" -f "label=#{label}" -q), force: true)
48
- end
49
-
50
- def dapp_images_flush_by_label(label)
51
- dapp_dangling_images_flush_by_label(label)
52
- remove_images(dapp_images_by_label(label), force: true)
53
- end
54
-
55
- def dapp_images_by_label(label)
56
- @dapp_images ||= shellout!(%(docker images -f "dangling=false" --format="{{.Repository}}:{{.Tag}}" -f "label=#{label}")).stdout.lines.map(&:strip)
57
- end
58
-
59
- def proper_cache_all_images
60
- shellout!([
61
- 'docker images',
62
- '--format="{{.Repository}}:{{.Tag}}"',
63
- %(-f "label=dapp-cache-version=#{Dapp::BUILD_CACHE_VERSION}" -f "dangling=false")
64
- ].join(' ')).stdout.lines.map(&:strip)
65
- end
66
- end
67
- end
68
- end # Project
69
- end # Dapp
@@ -1,28 +0,0 @@
1
- module Dapp
2
- # Project
3
- class Project
4
- # Command
5
- module Command
6
- # Push
7
- module Push
8
- def push(repo)
9
- validate_repo_name(repo)
10
- log_step_with_indent(:stages) { stages_push(repo) } if with_stages?
11
- build_configs.each do |config|
12
- log_dimg_name_with_indent(config) do
13
- Dimg.new(config: config, project: self, ignore_git_fetch: true, should_be_built: true).tap do |dimg|
14
- dimg.export!(repo, format: push_format(config._name))
15
- end
16
- end
17
- end
18
- end
19
-
20
- protected
21
-
22
- def with_stages?
23
- !!cli_options[:with_stages]
24
- end
25
- end
26
- end
27
- end # Project
28
- end # Dapp
@@ -1,15 +0,0 @@
1
- module Dapp
2
- # Project
3
- class Project
4
- # Command
5
- module Command
6
- # Run
7
- module Run
8
- def run(docker_options, command)
9
- one_dimg!
10
- Dimg.new(config: build_configs.first, project: self, ignore_git_fetch: true, should_be_built: true).run(docker_options, command)
11
- end
12
- end
13
- end
14
- end # Project
15
- end # Dapp
@@ -1,18 +0,0 @@
1
- module Dapp
2
- # Project
3
- class Project
4
- # Command
5
- module Command
6
- # Spush
7
- module Spush
8
- def spush(repo)
9
- validate_repo_name(repo)
10
- one_dimg!
11
- Dimg.new(config: build_configs.first, project: self, ignore_git_fetch: true, should_be_built: true).tap do |dimg|
12
- dimg.export!(repo, format: spush_format)
13
- end
14
- end
15
- end
16
- end
17
- end # Project
18
- end # Dapp
@@ -1,15 +0,0 @@
1
- module Dapp
2
- # Project
3
- class Project
4
- # Command
5
- module Command
6
- # StageImage
7
- module StageImage
8
- def stage_image
9
- one_dimg!
10
- puts Dimg.new(config: build_configs.first, project: self, ignore_git_fetch: true).stage_image_name(cli_options[:stage])
11
- end
12
- end
13
- end
14
- end # Project
15
- end # Dapp