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,257 +0,0 @@
1
- module Dapp::Builder
2
- # Локальный cookbook сборщик с правилами
3
- # сборки dimg образов для chef сборщика.
4
- class Chef::Cookbook
5
- CHECKSUM_PATTERNS = %w(
6
- attributes/**/*
7
- recipes/**/*
8
- files/**/*
9
- templates/**/*
10
- ).freeze
11
-
12
- attr_reader :builder
13
-
14
- attr_reader :path
15
- attr_reader :vendor_path
16
- attr_reader :berksfile
17
- attr_reader :metadata
18
- attr_reader :enabled_recipes
19
- attr_reader :enabled_modules
20
-
21
- def initialize(builder, path:, berksfile:, metadata:, enabled_recipes:, enabled_modules:)
22
- @builder = builder
23
- @path = Pathname.new(path)
24
- @berksfile = berksfile
25
- @metadata = metadata
26
- @enabled_recipes = enabled_recipes
27
- @enabled_modules = enabled_modules
28
- end
29
-
30
- def name
31
- metadata.name
32
- end
33
-
34
- def local_paths
35
- @local_paths ||= [].tap do |paths|
36
- paths << path
37
- paths.push *berksfile.local_cookbooks.values.map {|cookbook| cookbook[:path]}
38
- paths.uniq!
39
- end
40
- end
41
-
42
- # TODO Сookbook'и зависимости на локальной файловой системе
43
- # TODO должны обрабатываться рекурсивно. Чтобы контрольная сумма
44
- # TODO учитывала все зависимости всех зависимых локальных cookbook'ов.
45
- def checksum
46
- @checksum ||= begin
47
- all_local_paths = local_paths
48
- .product(CHECKSUM_PATTERNS)
49
- .map {|cb, dir| Dir[cb.join(dir)]}
50
- .flatten
51
- .map(&Pathname.method(:new))
52
-
53
- builder.dimg.hashsum [
54
- builder.dimg.paths_content_hashsum(all_local_paths),
55
- *all_local_paths.map {|p| p.relative_path_from(self.path).to_s}.sort
56
- ].compact
57
- end
58
- end
59
-
60
- def vendor_path
61
- builder.dimg.project.lock(_vendor_lock_name, default_timeout: 120) do
62
- vendor! unless _vendor_path.join('.created_at').exist?
63
- end
64
- _vendor_path
65
- end
66
-
67
- def vendor!
68
- volumes_from = [builder.dimg.project.base_container, builder.chefdk_container]
69
-
70
- builder.dimg.project.log_secondary_process(builder.dimg.project.t(code: _vendor_process_name)) do
71
- volumes_from = [builder.dimg.project.base_container, builder.chefdk_container]
72
-
73
- vendor_commands = [
74
- "#{builder.dimg.project.mkdir_bin} -p ~/.ssh",
75
- "echo \"Host *\" >> ~/.ssh/config",
76
- "echo \" StrictHostKeyChecking no\" >> ~/.ssh/config",
77
- *local_paths.map {|path| "#{builder.dimg.project.rsync_bin} --archive --relative #{path} /tmp/local_cookbooks"},
78
- "cd /tmp/local_cookbooks/#{path}",
79
- '/.dapp/deps/chefdk/bin/berks vendor /tmp/cookbooks',
80
- ["#{builder.dimg.project.find_bin} /tmp/cookbooks -type d -exec #{builder.dimg.project.bash_bin} -ec '",
81
- "#{builder.dimg.project.install_bin} -o #{Process.uid} -g #{Process.gid} --mode $(#{builder.dimg.project.stat_bin} -c %a {}) -d ",
82
- "#{_vendor_path}/$(echo {} | #{builder.dimg.project.sed_bin} -e \"s/^\\/tmp\\/cookbooks//\")' \\;"].join,
83
- ["#{builder.dimg.project.find_bin} /tmp/cookbooks -type f -exec #{builder.dimg.project.bash_bin} -ec '",
84
- "#{builder.dimg.project.install_bin} -o #{Process.uid} -g #{Process.gid} --mode $(#{builder.dimg.project.stat_bin} -c %a {}) {} ",
85
- "#{_vendor_path}/$(echo {} | #{builder.dimg.project.sed_bin} -e \"s/\\/tmp\\/cookbooks//\")' \\;"].join,
86
- "#{builder.dimg.project.install_bin} -o #{Process.uid} -g #{Process.gid} --mode 0644 <(#{builder.dimg.project.date_bin} +%s.%N) #{_vendor_path.join('.created_at')}"
87
- ]
88
-
89
- builder.dimg.project.shellout!(
90
- ['docker run --rm',
91
- volumes_from.map {|container| "--volumes-from #{container}"}.join(' '),
92
- *local_paths.map {|path| "--volume #{path}:#{path}"},
93
- ("--volume #{builder.dimg.project.ssh_auth_sock}:/tmp/dapp-ssh-agent" if builder.dimg.project.ssh_auth_sock),
94
- "--volume #{_vendor_path.tap(&:mkpath)}:#{_vendor_path}",
95
- ('--env SSH_AUTH_SOCK=/tmp/dapp-ssh-agent' if builder.dimg.project.ssh_auth_sock),
96
- "dappdeps/berksdeps:0.1.0 #{builder.dimg.project.bash_bin} -ec '#{builder.dimg.project.shellout_pack(vendor_commands.join(' && '))}'"].compact.join(' '),
97
- log_verbose: builder.dimg.project.log_verbose?
98
- )
99
- end
100
- end
101
-
102
- def stage_cookbooks_path(stage)
103
- _stage_cookbooks_path(stage).tap do |_cookbooks_path|
104
- @stage_cookbooks_installed ||= {}
105
- @stage_cookbooks_installed[stage] ||= true.tap {install_stage_cookbooks(stage)}
106
- end
107
- end
108
-
109
- def stage_enabled_modules(stage)
110
- @stage_enabled_modules ||= {}
111
- @stage_enabled_modules[stage] ||= enabled_modules.select {|cookbook| stage_entry_exist?(stage, cookbook, stage)}
112
- end
113
-
114
- def stage_enabled_recipes(stage)
115
- @stage_enabled_recipes ||= {}
116
- @stage_enabled_recipes[stage] ||= enabled_recipes.select {|recipe| stage_entry_exist?(stage, self.name, recipe)}
117
- end
118
-
119
- def stage_checksum(stage)
120
- paths = Dir[stage_cookbooks_path(stage).join('**/*')].map(&Pathname.method(:new))
121
-
122
- builder.dimg.hashsum [
123
- builder.dimg.paths_content_hashsum(paths),
124
- *paths.map {|p| p.relative_path_from(stage_cookbooks_path(stage)).to_s}.sort,
125
- stage == :before_install ? builder.chefdk_image : nil
126
- ].compact
127
- end
128
-
129
- protected
130
-
131
- def _vendor_path
132
- builder.dimg.build_path.join('cookbooks', checksum)
133
- end
134
-
135
- def _vendor_process_name
136
- "process.vendoring_builder_cookbooks"
137
- end
138
-
139
- def _vendor_lock_name
140
- "#{builder.dimg.project.name}.cookbooks.#{checksum}"
141
- end
142
-
143
- def stage_entry_exist?(stage, cookbook, entrypoint)
144
- stage_cookbooks_path(stage).join(cookbook, 'recipes', "#{entrypoint}.rb").exist?
145
- end
146
-
147
- def install_stage_cookbooks(stage)
148
- _stage_cookbooks_path(stage).mkpath
149
-
150
- stage_install_paths(stage).each do |cookbook_path, paths|
151
- cookbook = cookbook_path.basename.to_s
152
-
153
- paths.each do |from, to|
154
- if from.nil?
155
- to_path = _stage_cookbooks_path(stage).join(cookbook, 'recipes/void.rb')
156
- to_path.parent.mkpath
157
- FileUtils.touch to_path
158
- else
159
- from_path = cookbook_path.join(from)
160
- to_path = _stage_cookbooks_path(stage).join(cookbook, to)
161
- if from_path.directory? && to_path.exist?
162
- Dir[from_path.join('**/*')]
163
- .map(&Pathname.method(:new))
164
- .each do |from_subpath|
165
- to_subpath = to_path.join(from_subpath.relative_path_from(from_path))
166
- raise(::Dapp::Builder::Chef::Error,
167
- code: :stage_path_overlap,
168
- data: { stage: stage,
169
- cookbook: cookbook,
170
- from: from_subpath.relative_path_from(cookbook_path),
171
- to: to_subpath.relative_path_from(_stage_cookbooks_path(stage).join(cookbook)) }
172
- ) if to_subpath.exist?
173
-
174
- to_subpath.parent.mkpath
175
- FileUtils.cp_r from_subpath, to_subpath
176
- end
177
- else
178
- to_path.parent.mkpath
179
- FileUtils.cp_r from_path, to_path
180
- end
181
- end
182
- end
183
- end
184
- end
185
-
186
- def stage_install_paths(stage)
187
- select_existing_paths = proc do |cookbook_path, paths|
188
- paths.select {|from, _| cookbook_path.join(from).exist?}
189
- end
190
-
191
- common_paths = [['metadata.json', 'metadata.json']]
192
-
193
- install_paths = Dir[vendor_path.join('*')]
194
- .map(&Pathname.method(:new))
195
- .map do |cookbook_path|
196
- cookbook_name = File.basename cookbook_path
197
- is_builder = (cookbook_name == self.name)
198
- is_dimod = cookbook_name.start_with? 'dimod-'
199
- dimod_enabled = is_dimod && enabled_modules.include?(cookbook_name)
200
- paths = nil
201
-
202
- if is_builder
203
- common_dapp_paths = select_existing_paths.call(
204
- cookbook_path,
205
- [
206
- *common_paths,
207
- ["files/#{stage}/common", 'files/default'],
208
- ["templates/#{stage}/common", 'templates/default'],
209
- *enabled_recipes.flat_map do |recipe|
210
- [["files/#{stage}/#{recipe}", 'files/default'],
211
- ["templates/#{stage}/#{recipe}", 'templates/default']]
212
- end
213
- ]
214
- )
215
-
216
- recipe_paths = enabled_recipes
217
- .map {|recipe| ["recipes/#{stage}/#{recipe}.rb", "recipes/#{recipe}.rb"]}
218
- .select {|from, _| cookbook_path.join(from).exist?}
219
-
220
- if recipe_paths.any?
221
- paths = [*recipe_paths, *common_dapp_paths]
222
- else
223
- paths = [nil, *common_dapp_paths]
224
- end
225
- elsif is_dimod && dimod_enabled
226
- common_dimod_paths = select_existing_paths.call(
227
- cookbook_path,
228
- [
229
- *common_paths,
230
- ["files/#{stage}", 'files/default'],
231
- ['files/common', 'files/default'],
232
- ["templates/#{stage}", 'templates/default'],
233
- ['templates/common', 'templates/default'],
234
- ["attributes/#{stage}.rb", "attributes/#{stage}.rb"],
235
- ['attributes/common.rb', 'attributes/common.rb']
236
- ]
237
- )
238
-
239
- recipe_path = "recipes/#{stage}.rb"
240
- if cookbook_path.join(recipe_path).exist?
241
- paths = [[recipe_path, recipe_path], *common_dimod_paths]
242
- else
243
- paths = [nil, *common_dimod_paths]
244
- end
245
- elsif !is_dimod
246
- paths = [['.', '.']]
247
- end
248
-
249
- [cookbook_path, paths] if paths && paths.any?
250
- end.compact
251
- end
252
-
253
- def _stage_cookbooks_path(stage)
254
- builder.stage_build_path(stage).join('cookbooks')
255
- end
256
- end # Chef::Cookbook
257
- end # Dapp::Builder
@@ -1,54 +0,0 @@
1
- module Dapp::Builder
2
- class Chef::CookbookMetadata
3
- class << self
4
- def from_file(metadata_file_path)
5
- metadata = self.new
6
- FileParser.new(metadata_file_path, metadata)
7
- metadata
8
- end
9
-
10
- def from_conf(conf)
11
- # TODO
12
- end
13
- end # << self
14
-
15
- class FileParser
16
- def initialize(metadata_file_path, metadata)
17
- @metadata_file_path = metadata_file_path
18
- @metadata = metadata
19
-
20
- parse
21
- end
22
-
23
- def name(name)
24
- @metadata.name = name
25
- end
26
-
27
- def version(version)
28
- @metadata.version = version
29
- end
30
-
31
- def depends(dependency, *_a, &_blk)
32
- @metadata.depends << dependency.to_s
33
- end
34
-
35
- # rubocop:disable Style/MethodMissing
36
- def method_missing(*_a, &_blk)
37
- end
38
- # rubocop:enable Style/MethodMissing
39
-
40
- private
41
-
42
- def parse
43
- instance_eval(@metadata_file_path.read, @metadata_file_path.to_s)
44
- end
45
- end # FileParser
46
-
47
- attr_accessor :name
48
- attr_accessor :version
49
-
50
- def depends
51
- @depends ||= []
52
- end
53
- end # Chef::CookbookMetadata
54
- end # Dapp::Builder
@@ -1,12 +0,0 @@
1
- module Dapp
2
- module Builder
3
- class Chef < Base
4
- # Error
5
- class Error < ::Dapp::Error::Base
6
- def initialize(**net_status)
7
- super(context: 'chef', **net_status)
8
- end
9
- end
10
- end # Chef
11
- end # Builder
12
- end # Dapp
@@ -1,37 +0,0 @@
1
- module Dapp
2
- class CLI
3
- # CLI bp subcommand
4
- class Bp < Push
5
- banner <<BANNER.freeze
6
- Version: #{Dapp::VERSION}
7
-
8
- Usage:
9
- dapp bp [options] [DIMG ...] REPO
10
-
11
- DIMG Dapp image to process [default: *].
12
- REPO Pushed image name.
13
-
14
- Options:
15
- BANNER
16
- option :tmp_dir_prefix,
17
- long: '--tmp-dir-prefix PREFIX',
18
- description: 'Tmp directory prefix (/tmp by default). Used for build process service directories.'
19
-
20
- option :lock_timeout,
21
- long: '--lock-timeout TIMEOUT',
22
- description: 'Redefine resource locking timeout (in seconds)',
23
- proc: ->(v) { v.to_i }
24
-
25
- option :git_artifact_branch,
26
- long: '--git-artifact-branch BRANCH',
27
- description: 'Default branch to archive artifacts from'
28
-
29
- option :ssh_key,
30
- long: '--ssh-key SSH_KEY',
31
- description: ['Enable only specified ssh keys ',
32
- '(use system ssh-agent by default)'].join,
33
- default: nil,
34
- proc: ->(v) { composite_options(:ssh_key) << v }
35
- end
36
- end
37
- end
@@ -1,60 +0,0 @@
1
- module Dapp
2
- class CLI
3
- # CLI build subcommand
4
- class Build < Base
5
- banner <<BANNER.freeze
6
- Version: #{Dapp::VERSION}
7
-
8
- Usage:
9
- dapp build [options] [DIMG ...]
10
-
11
- DIMG Dapp image to process [default: *].
12
-
13
- Options:
14
- BANNER
15
- option :tmp_dir_prefix,
16
- long: '--tmp-dir-prefix PREFIX',
17
- description: 'Tmp directory prefix (/tmp by default). Used for build process service directories.'
18
-
19
- option :lock_timeout,
20
- long: '--lock-timeout TIMEOUT',
21
- description: 'Redefine resource locking timeout (in seconds)',
22
- proc: ->(v) { v.to_i }
23
-
24
- option :git_artifact_branch,
25
- long: '--git-artifact-branch BRANCH',
26
- description: 'Default branch to archive artifacts from'
27
-
28
- option :introspect_error,
29
- long: '--introspect-error',
30
- boolean: true,
31
- default: false
32
-
33
- option :introspect_before_error,
34
- long: '--introspect-before-error',
35
- boolean: true,
36
- default: false
37
-
38
- option :introspect_stage,
39
- long: '--introspect-stage STAGE',
40
- proc: proc { |v| v.to_sym },
41
- in: [nil, :from, :before_install, :before_install_artifact, :g_a_archive, :g_a_pre_install_patch, :install,
42
- :g_a_post_install_patch, :after_install_artifact, :before_setup, :before_setup_artifact, :g_a_pre_setup_patch,
43
- :setup, :g_a_post_setup_patch, :after_setup_artifact, :g_a_latest_patch, :docker_instructions]
44
-
45
- option :introspect_artifact_stage,
46
- long: '--introspect-artifact-stage STAGE',
47
- proc: proc { |v| v.to_sym },
48
- in: [nil, :from, :before_install, :before_install_artifact, :g_a_archive, :g_a_pre_install_patch, :install,
49
- :g_a_post_install_patch, :after_install_artifact, :before_setup, :before_setup_artifact, :g_a_pre_setup_patch,
50
- :setup, :after_setup_artifact, :g_a_artifact_patch, :build_artifact]
51
-
52
- option :ssh_key,
53
- long: '--ssh-key SSH_KEY',
54
- description: ['Enable only specified ssh keys ',
55
- '(use system ssh-agent by default)'].join,
56
- default: nil,
57
- proc: ->(v) { composite_options(:ssh_key) << v }
58
- end
59
- end
60
- end
@@ -1,22 +0,0 @@
1
- module Dapp
2
- class CLI
3
- # Cleanup subcommand
4
- class Cleanup < Base
5
- banner <<BANNER.freeze
6
- Version: #{Dapp::VERSION}
7
-
8
- Usage:
9
- dapp cleanup [options] [DIMG ...]
10
-
11
- DIMG Dapp image to process [default: *].
12
-
13
- Options:
14
- BANNER
15
-
16
- option :lock_timeout,
17
- long: '--lock-timeout TIMEOUT',
18
- description: 'Redefine resource locking timeout (in seconds)',
19
- proc: ->(v) { v.to_i }
20
- end
21
- end
22
- end