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,32 +0,0 @@
1
- module Dapp
2
- # DockerRegistry
3
- module DockerRegistry
4
- module Mod
5
- # Request
6
- module Request
7
- def request(url, **options)
8
- raw_request(url, options.in_depth_merge(authorization_options(url)))
9
- end
10
-
11
- def raw_request(url, **options)
12
- Excon.new(url).request(default_request_options.in_depth_merge(options))
13
- end
14
-
15
- def url_available?(url)
16
- raw_request(url, expects: [200])
17
- true
18
- rescue Excon::Error
19
- false
20
- end
21
-
22
- protected
23
-
24
- def default_request_options
25
- { method: :get, omit_default_port: true }
26
- end
27
- end
28
- end # Mod
29
- end # DockerRegistry
30
- end # Dapp
31
-
32
- Dapp::DockerRegistry::Mod::Request.extend Dapp::DockerRegistry::Mod::Request
@@ -1,6 +0,0 @@
1
- module Dapp
2
- module Error
3
- # Build
4
- class Build < Base; end
5
- end
6
- end
@@ -1,6 +0,0 @@
1
- module Dapp
2
- module Error
3
- # Config
4
- class Config < Base; end
5
- end
6
- end
@@ -1,6 +0,0 @@
1
- module Dapp
2
- module Error
3
- # Dimg
4
- class Dimg < Base; end
5
- end
6
- end
@@ -1,6 +0,0 @@
1
- module Dapp
2
- module Error
3
- # Image
4
- class Image < Base; end
5
- end
6
- end
@@ -1,6 +0,0 @@
1
- module Dapp
2
- module Error
3
- # Project
4
- class Project < Base; end
5
- end
6
- end
@@ -1,6 +0,0 @@
1
- module Dapp
2
- module Error
3
- # Registry
4
- class Registry < Base; end
5
- end
6
- end
@@ -1,6 +0,0 @@
1
- module Dapp
2
- module Error
3
- # Rugged
4
- class Rugged < Base; end
5
- end
6
- end
@@ -1,6 +0,0 @@
1
- module Dapp
2
- module Error
3
- # TarWriter
4
- class TarWriter < Base; end
5
- end
6
- end
@@ -1,6 +0,0 @@
1
- module Dapp
2
- module Exception
3
- # IntrospectImage
4
- class IntrospectImage < Base; end
5
- end
6
- end
@@ -1,6 +0,0 @@
1
- module Dapp
2
- module Exception
3
- # Registry
4
- class Registry < Base; end
5
- end
6
- end
@@ -1,43 +0,0 @@
1
- module Dapp
2
- # File Monitor
3
- module Filelock
4
- def self.included(base)
5
- base.extend(ClassMethods)
6
- end
7
-
8
- # ClassMethods
9
- module ClassMethods
10
- def filelocks
11
- @filelocks ||= Hash.new(false)
12
- end
13
- end
14
-
15
- def filelock(filelock, error_message: 'Already in use!', timeout: 10)
16
- return yield if self.class.filelocks[filelock]
17
-
18
- begin
19
- self.class.filelocks[filelock] = true
20
- filelock_lockfile(filelock, error_message: error_message, timeout: timeout) do
21
- yield
22
- end
23
- ensure
24
- self.class.filelocks[filelock] = false
25
- end
26
- end
27
-
28
- protected
29
-
30
- def filelock_lockfile(filelock, error_message: 'Already in use!', timeout: 10)
31
- File.open(home_path(filelock), File::RDWR | File::CREAT, 0o644) do |file|
32
- Timeout.timeout(timeout) do
33
- file.flock(File::LOCK_EX)
34
- end
35
-
36
- yield
37
- end
38
- rescue Timeout::Error
39
- STDERR.puts error_message
40
- exit 1
41
- end
42
- end
43
- end
@@ -1,241 +0,0 @@
1
- module Dapp
2
- # Artifact from Git repo
3
- class GitArtifact
4
- attr_reader :repo
5
- attr_reader :name
6
-
7
- # rubocop:disable Metrics/ParameterLists
8
- def initialize(repo, to:, name: nil, branch: nil, commit: nil,
9
- cwd: nil, include_paths: nil, exclude_paths: nil, owner: nil, group: nil)
10
- @repo = repo
11
- @name = name
12
-
13
- @branch = branch || repo.dimg.project.cli_options[:git_artifact_branch] || repo.branch
14
- @commit = commit
15
-
16
- @to = to
17
- @cwd = begin
18
- if cwd.nil? || cwd.empty?
19
- ''
20
- else
21
- cwd = File.expand_path(File.join('/', cwd))[1..-1] # must be relative
22
- "#{cwd.chomp('/')}/"
23
- end
24
- end
25
- @include_paths = include_paths
26
- @exclude_paths = exclude_paths
27
- @owner = owner
28
- @group = group
29
- end
30
- # rubocop:enable Metrics/ParameterLists
31
-
32
- def apply_archive_command(stage)
33
- credentials = [:owner, :group].map { |attr| "--#{attr}=#{send(attr)}" unless send(attr).nil? }.compact
34
-
35
- [].tap do |commands|
36
- commands << "#{repo.dimg.project.install_bin} #{credentials.join(' ')} -d #{to}"
37
- commands << "#{sudo}#{repo.dimg.project.tar_bin} -xf #{archive_file(stage.layer_commit(self))} -C #{to}" if any_changes?(nil, stage.layer_commit(self))
38
- end
39
- end
40
-
41
- def apply_patch_command(stage)
42
- patch_command(stage.prev_g_a_stage.layer_commit(self), stage.layer_commit(self))
43
- end
44
-
45
- def apply_dev_patch_command(stage)
46
- patch_command(stage.prev_g_a_stage.layer_commit(self), nil)
47
- end
48
-
49
- def patch_size(from, to)
50
- diff_patches(from, to).reduce(0) do |bytes, patch|
51
- patch.hunks.each do |hunk|
52
- hunk.lines.each do |l|
53
- bytes +=
54
- case l.line_origin
55
- when :eof_newline_added, :eof_newline_removed then 1
56
- when :addition, :deletion, :binary then l.content.size
57
- else # :context, :file_header, :hunk_header, :eof_no_newline
58
- 0
59
- end
60
- end
61
- end
62
- bytes
63
- end
64
- end
65
-
66
- def dev_patch_hash(stage)
67
- Digest::SHA256.hexdigest diff_patches(stage.prev_g_a_stage.layer_commit(self), nil).map(&:to_s).join(':::')
68
- end
69
-
70
- def latest_commit
71
- @latest_commit ||= commit || repo.latest_commit(branch)
72
- end
73
-
74
- def paramshash
75
- Digest::SHA256.hexdigest [full_name, to, cwd, *include_paths, *exclude_paths, owner, group].map(&:to_s).join(':::')
76
- end
77
-
78
- def exclude_paths(with_cwd = false)
79
- base_paths(repo.exclude_paths + @exclude_paths, with_cwd)
80
- end
81
-
82
- def include_paths(with_cwd = false)
83
- base_paths(@include_paths, with_cwd)
84
- end
85
-
86
- def base_paths(paths, with_cwd = false)
87
- [paths].flatten.compact.map { |path| (with_cwd && cwd ? File.join(cwd, path) : path).gsub(%r{^\/*|\/*$}, '') }
88
- end
89
-
90
- def full_name
91
- "#{repo.name}#{name ? "_#{name}" : nil}"
92
- end
93
-
94
- def any_changes?(from, to = latest_commit)
95
- diff_patches(from, to).any?
96
- end
97
-
98
- protected
99
-
100
- attr_reader :to
101
- attr_reader :commit
102
- attr_reader :branch
103
- attr_reader :cwd
104
- attr_reader :owner
105
- attr_reader :group
106
-
107
- def patch_command(prev_commit, current_commit)
108
- [].tap do |commands|
109
- if any_changes?(prev_commit, current_commit)
110
- commands << "#{sudo}#{repo.dimg.project.git_bin} apply --whitespace=nowarn --directory=#{to} --unsafe-paths " \
111
- "#{patch_file(prev_commit, current_commit)}"
112
- end
113
- end
114
- end
115
-
116
- def sudo
117
- repo.dimg.project.sudo_command(owner: owner, group: group)
118
- end
119
-
120
- def archive_file(commit)
121
- create_file(repo.dimg.tmp_path('archives', archive_file_name(commit))) do |f|
122
- Gem::Package::TarWriter.new(f) do |tar|
123
- diff_patches(nil, commit).each do |patch|
124
- entry = patch.delta.new_file
125
- tar.add_file slice_cwd(entry[:path]), entry[:mode] do |tf|
126
- tf.write repo.lookup_object(entry[:oid]).content
127
- end
128
- end
129
- end
130
- end
131
- repo.dimg.container_tmp_path('archives', archive_file_name(commit))
132
- rescue Gem::Package::TooLongFileName => e
133
- raise Error::TarWriter, message: e.message
134
- end
135
-
136
- def slice_cwd(path)
137
- return path if cwd.empty?
138
- path
139
- .reverse
140
- .chomp(cwd.reverse)
141
- .reverse
142
- end
143
-
144
- def archive_file_name(commit)
145
- file_name(commit, 'tar')
146
- end
147
-
148
- def patch_file(from, to)
149
- create_file(repo.dimg.tmp_path('patches', patch_file_name(from, to))) do |f|
150
- diff_patches(from, to).each { |patch| f.write change_patch_new_file_path(patch) }
151
- end
152
- repo.dimg.container_tmp_path('patches', patch_file_name(from, to))
153
- end
154
-
155
- def change_patch_new_file_path(patch)
156
- patch.to_s.lines.tap do |lines|
157
- modify_patch_line = proc do |line_number, path_char|
158
- action_part, path_part = lines[line_number].split
159
- if (path_with_cwd = path_part.partition("#{path_char}/").last).start_with?(cwd)
160
- path_with_cwd.sub(cwd, '').tap do |native_path|
161
- expected_path = File.join(path_char, native_path)
162
- lines[line_number] = [action_part, expected_path].join(' ') + "\n"
163
- end
164
- end
165
- end
166
-
167
- modify_patch = proc do |*modify_patch_line_args|
168
- native_paths = modify_patch_line_args.map { |args| modify_patch_line.call(*args) }
169
- unless (native_paths = native_paths.compact.uniq).empty?
170
- raise Error::Build, code: :unsupported_patch_format, data: { patch: patch.to_s } unless native_paths.one?
171
- native_path = native_paths.first
172
- lines[0] = ['diff --git', File.join('a', native_path), File.join('b', native_path)].join(' ') + "\n"
173
- end
174
- end
175
-
176
- case
177
- when patch.delta.deleted? then modify_patch.call([3, 'a'])
178
- when patch.delta.added? then modify_patch.call([4, 'b'])
179
- when patch.delta.modified?
180
- if patch_file_mode_changed?(patch)
181
- modify_patch.call([4, 'a'], [5, 'b'])
182
- else
183
- modify_patch.call([2, 'a'], [3, 'b'])
184
- end
185
- else
186
- raise
187
- end
188
- end.join
189
- end
190
-
191
- def patch_file_mode_changed?(patch)
192
- patch.delta.old_file[:mode] != patch.delta.new_file[:mode]
193
- end
194
-
195
- def patch_file_name(from, to)
196
- file_name(from, to, 'patch')
197
- end
198
-
199
- def file_name(*args, ext)
200
- "#{[full_name, args].flatten.join('_')}.#{ext}"
201
- end
202
-
203
- def create_file(file_path, &blk)
204
- File.open(file_path, File::RDWR|File::CREAT, &blk)
205
- end
206
-
207
- def diff_patches(from, to)
208
- (@diff_patches ||= {})[[from, to]] = repo.patches(from, to, paths: include_paths_or_cwd, exclude_paths: exclude_paths(true))
209
- end
210
-
211
- def include_paths_or_cwd
212
- case
213
- when !include_paths(true).empty? then include_paths(true)
214
- when !cwd.empty? then [cwd]
215
- else
216
- []
217
- end
218
- end
219
-
220
- def exclude_paths(with_cwd = false)
221
- base_paths(repo.exclude_paths + @exclude_paths, with_cwd)
222
- end
223
-
224
- def include_paths(with_cwd = false)
225
- base_paths(@include_paths, with_cwd)
226
- end
227
-
228
- def base_paths(paths, with_cwd = false)
229
- [paths].flatten.compact.map do |path|
230
- if with_cwd && !cwd.empty?
231
- File.join(cwd, path)
232
- else
233
- path
234
- end
235
- .chomp('/')
236
- .reverse.chomp('/')
237
- .reverse
238
- end
239
- end
240
- end
241
- end
@@ -1,88 +0,0 @@
1
- module Dapp
2
- module GitRepo
3
- # Base class for any Git repo (remote, gitkeeper, etc)
4
- class Base
5
- attr_reader :dimg
6
- attr_reader :name
7
-
8
- def initialize(dimg, name)
9
- @dimg = dimg
10
- @name = name
11
- end
12
-
13
- def exclude_paths
14
- []
15
- end
16
-
17
- def patches(from, to, exclude_paths: [], **kwargs)
18
- diff(from, to, **kwargs).patches.select do |patch|
19
- !exclude_paths.any? { |p| check_path?(patch.delta.new_file[:path], p) }
20
- end
21
- end
22
-
23
- def diff(from, to, **kwargs)
24
- if from.nil?
25
- Rugged::Tree.diff(git, nil, to, **kwargs)
26
- else
27
- lookup_commit(from).diff(lookup_commit(to), **kwargs)
28
- end
29
- end
30
-
31
- def commit_exists?(commit)
32
- git.exists?(commit)
33
- end
34
-
35
- def latest_commit(_branch)
36
- raise
37
- end
38
-
39
- def branch
40
- git.head.name.sub(/^refs\/heads\//, '')
41
- end
42
-
43
- def commit_at(commit)
44
- lookup_commit(commit).time.to_i
45
- end
46
-
47
- def find_commit_id_by_message(regex)
48
- walker.each do |commit|
49
- next unless commit.message =~ regex
50
- return commit.oid
51
- end
52
- end
53
-
54
- def walker
55
- walker = Rugged::Walker.new(git)
56
- walker.push(git.head.target_id)
57
- walker
58
- end
59
-
60
- def lookup_object(oid)
61
- git.lookup(oid)
62
- end
63
-
64
- def lookup_commit(commit)
65
- git.lookup(commit)
66
- end
67
-
68
- protected
69
-
70
- def git(**kwargs)
71
- @git ||= Rugged::Repository.new(path, **kwargs)
72
- end
73
-
74
- private
75
-
76
- def check_path?(path, format)
77
- path_parts = path.split('/')
78
- checking_path = nil
79
-
80
- until path_parts.empty?
81
- checking_path = [checking_path, path_parts.shift].compact.join('/')
82
- return true if File.fnmatch(format, checking_path)
83
- end
84
- false
85
- end
86
- end
87
- end
88
- end