dapp 0.10.2 → 0.36.24

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 (287) hide show
  1. checksums.yaml +5 -5
  2. data/bin/dapp +77 -15
  3. data/config/en/common.yml +20 -11
  4. data/config/en/net_status.yml +108 -27
  5. data/lib/dapp/cli/cli.rb +1 -0
  6. data/lib/dapp/cli/command/base.rb +111 -0
  7. data/lib/dapp/cli/command/sample/base.rb +28 -0
  8. data/lib/dapp/cli/command/sample/create.rb +24 -0
  9. data/lib/dapp/cli/command/sample/list.rb +25 -0
  10. data/lib/dapp/cli/command/sample.rb +20 -0
  11. data/lib/dapp/cli/command/slug.rb +26 -0
  12. data/lib/dapp/cli/command/update.rb +65 -0
  13. data/lib/dapp/cli/options/ssh.rb +18 -0
  14. data/lib/dapp/cli/options/tag.rb +51 -0
  15. data/lib/dapp/cli.rb +11 -3
  16. data/lib/dapp/config/config.rb +21 -0
  17. data/lib/dapp/config/directive/base.rb +100 -3
  18. data/lib/dapp/core_ext/hash.rb +14 -0
  19. data/lib/dapp/core_ext/pathname.rb +6 -4
  20. data/lib/dapp/dapp/chef.rb +1 -9
  21. data/lib/dapp/dapp/command/common.rb +24 -0
  22. data/lib/dapp/dapp/command/sample/common.rb +54 -0
  23. data/lib/dapp/dapp/command/sample/create.rb +57 -0
  24. data/lib/dapp/dapp/command/sample/list.rb +13 -0
  25. data/lib/dapp/dapp/command/slug.rb +11 -0
  26. data/lib/dapp/dapp/dapp_config.rb +85 -0
  27. data/lib/dapp/dapp/dappfile.rb +108 -27
  28. data/lib/dapp/dapp/deps/base.rb +9 -32
  29. data/lib/dapp/dapp/deps/common.rb +26 -0
  30. data/lib/dapp/dapp/deps/gitartifact.rb +2 -20
  31. data/lib/dapp/dapp/deps/toolchain.rb +11 -0
  32. data/lib/dapp/dapp/git_artifact.rb +6 -4
  33. data/lib/dapp/dapp/lock.rb +6 -5
  34. data/lib/dapp/dapp/logging/base.rb +32 -20
  35. data/lib/dapp/dapp/logging/i18n.rb +5 -1
  36. data/lib/dapp/dapp/logging/process.rb +6 -6
  37. data/lib/dapp/dapp/option_tags.rb +98 -0
  38. data/lib/dapp/dapp/ruby2go.rb +130 -0
  39. data/lib/dapp/dapp/sentry.rb +97 -0
  40. data/lib/dapp/dapp/shellout/base.rb +26 -18
  41. data/lib/dapp/dapp/shellout/streaming.rb +2 -2
  42. data/lib/dapp/dapp/slug.rb +12 -0
  43. data/lib/dapp/dapp/ssh_agent.rb +25 -7
  44. data/lib/dapp/dapp.rb +192 -41
  45. data/lib/dapp/deployment.rb +1 -0
  46. data/lib/dapp/dimg/artifact.rb +12 -4
  47. data/lib/dapp/dimg/build/stage/artifact_base.rb +26 -30
  48. data/lib/dapp/dimg/build/stage/artifact_default.rb +50 -28
  49. data/lib/dapp/dimg/build/stage/base.rb +187 -52
  50. data/lib/dapp/dimg/build/stage/before_install.rb +4 -15
  51. data/lib/dapp/dimg/build/stage/before_install_artifact.rb +4 -0
  52. data/lib/dapp/dimg/build/stage/before_setup.rb +1 -20
  53. data/lib/dapp/dimg/build/stage/build_artifact.rb +1 -20
  54. data/lib/dapp/dimg/build/stage/docker_instructions.rb +5 -4
  55. data/lib/dapp/dimg/build/stage/from.rb +62 -9
  56. data/lib/dapp/dimg/build/stage/ga_archive.rb +14 -1
  57. data/lib/dapp/dimg/build/stage/ga_artifact_patch.rb +1 -5
  58. data/lib/dapp/dimg/build/stage/ga_base.rb +5 -35
  59. data/lib/dapp/dimg/build/stage/ga_latest_patch.rb +15 -34
  60. data/lib/dapp/dimg/build/stage/ga_related_base.rb +21 -0
  61. data/lib/dapp/dimg/build/stage/import_artifact.rb +22 -11
  62. data/lib/dapp/dimg/build/stage/install/ga_post_install_patch.rb +6 -2
  63. data/lib/dapp/dimg/build/stage/install/ga_pre_install_patch.rb +6 -2
  64. data/lib/dapp/dimg/build/stage/install/install.rb +1 -19
  65. data/lib/dapp/dimg/build/stage/instructions.rb +27 -0
  66. data/lib/dapp/dimg/build/stage/mod/group.rb +19 -7
  67. data/lib/dapp/dimg/build/stage/mod/logging.rb +15 -19
  68. data/lib/dapp/dimg/build/stage/setup/ga_post_setup_patch.rb +24 -1
  69. data/lib/dapp/dimg/build/stage/setup/ga_pre_setup_patch.rb +6 -2
  70. data/lib/dapp/dimg/build/stage/setup/setup.rb +1 -19
  71. data/lib/dapp/dimg/builder/ansible.rb +5 -0
  72. data/lib/dapp/dimg/builder/chef/cookbook.rb +8 -8
  73. data/lib/dapp/dimg/builder/chef.rb +29 -16
  74. data/lib/dapp/dimg/builder/none.rb +1 -34
  75. data/lib/dapp/dimg/builder/ruby2go.rb +57 -0
  76. data/lib/dapp/dimg/builder/shell.rb +1 -20
  77. data/lib/dapp/dimg/cli/cli.rb +2 -1
  78. data/lib/dapp/dimg/cli/command/base.rb +24 -0
  79. data/lib/dapp/dimg/cli/command/dimg/bp.rb +60 -0
  80. data/lib/dapp/dimg/cli/command/dimg/build.rb +43 -0
  81. data/lib/dapp/dimg/cli/{build_context → command/dimg/build_context}/export.rb +9 -4
  82. data/lib/dapp/dimg/cli/{build_context → command/dimg/build_context}/import.rb +4 -4
  83. data/lib/dapp/dimg/cli/{build_context.rb → command/dimg/build_context.rb} +5 -5
  84. data/lib/dapp/dimg/cli/{cleanup.rb → command/dimg/cleanup.rb} +4 -6
  85. data/lib/dapp/dimg/cli/command/dimg/cleanup_repo.rb +47 -0
  86. data/lib/dapp/dimg/cli/command/dimg/flush_local.rb +24 -0
  87. data/lib/dapp/dimg/cli/command/dimg/flush_repo.rb +36 -0
  88. data/lib/dapp/dimg/cli/{list.rb → command/dimg/list.rb} +6 -3
  89. data/lib/dapp/dimg/cli/{mrproper.rb → command/dimg/mrproper.rb} +4 -4
  90. data/lib/dapp/dimg/cli/command/dimg/push.rb +39 -0
  91. data/lib/dapp/dimg/cli/{run.rb → command/dimg/run.rb} +30 -15
  92. data/lib/dapp/dimg/cli/{spush.rb → command/dimg/spush.rb} +4 -4
  93. data/lib/dapp/dimg/cli/{stage_image.rb → command/dimg/stage_image.rb} +12 -3
  94. data/lib/dapp/dimg/cli/command/dimg/stages/base.rb +13 -0
  95. data/lib/dapp/dimg/cli/{stages → command/dimg/stages}/cleanup_local.rb +13 -9
  96. data/lib/dapp/dimg/cli/{stages → command/dimg/stages}/cleanup_repo.rb +6 -8
  97. data/lib/dapp/dimg/cli/command/dimg/stages/flush_local.rb +21 -0
  98. data/lib/dapp/dimg/cli/command/dimg/stages/flush_repo.rb +28 -0
  99. data/lib/dapp/dimg/cli/command/dimg/stages/pull.rb +34 -0
  100. data/lib/dapp/dimg/cli/command/dimg/stages/push.rb +30 -0
  101. data/lib/dapp/dimg/cli/command/dimg/stages.rb +22 -0
  102. data/lib/dapp/dimg/cli/command/dimg/tag.rb +24 -0
  103. data/lib/dapp/dimg/cli/command/dimg.rb +31 -0
  104. data/lib/dapp/dimg/cli/options/introspection.rb +45 -0
  105. data/lib/dapp/dimg/config/config.rb +24 -0
  106. data/lib/dapp/dimg/config/directive/artifact.rb +13 -15
  107. data/lib/dapp/dimg/config/directive/artifact_base.rb +13 -8
  108. data/lib/dapp/dimg/config/directive/artifact_dimg.rb +12 -0
  109. data/lib/dapp/dimg/config/directive/artifact_group.rb +60 -0
  110. data/lib/dapp/dimg/config/directive/dimg/instance_methods.rb +203 -0
  111. data/lib/dapp/dimg/config/directive/dimg/validation.rb +217 -0
  112. data/lib/dapp/dimg/config/directive/dimg.rb +36 -0
  113. data/lib/dapp/dimg/config/directive/dimg_group.rb +73 -0
  114. data/lib/dapp/dimg/config/directive/dimg_group_base.rb +46 -0
  115. data/lib/dapp/dimg/config/directive/docker/artifact.rb +5 -0
  116. data/lib/dapp/dimg/config/directive/docker/base.rb +2 -3
  117. data/lib/dapp/dimg/config/directive/docker/dimg.rb +4 -4
  118. data/lib/dapp/dimg/config/directive/git_artifact_local.rb +24 -5
  119. data/lib/dapp/dimg/config/directive/git_artifact_remote.rb +23 -12
  120. data/lib/dapp/dimg/config/directive/mount.rb +11 -3
  121. data/lib/dapp/dimg/config/directive/shell/dimg.rb +2 -2
  122. data/lib/dapp/dimg/dapp/command/bp.rb +3 -5
  123. data/lib/dapp/dimg/dapp/command/build.rb +4 -6
  124. data/lib/dapp/dimg/dapp/command/build_context/common.rb +2 -2
  125. data/lib/dapp/dimg/dapp/command/build_context/export.rb +14 -14
  126. data/lib/dapp/dimg/dapp/command/build_context/import.rb +28 -23
  127. data/lib/dapp/dimg/dapp/command/cleanup.rb +4 -11
  128. data/lib/dapp/dimg/dapp/command/cleanup_repo.rb +143 -0
  129. data/lib/dapp/dimg/dapp/command/common.rb +148 -38
  130. data/lib/dapp/dimg/dapp/command/flush_local.rb +25 -0
  131. data/lib/dapp/dimg/dapp/command/flush_repo.rb +25 -0
  132. data/lib/dapp/dimg/dapp/command/list.rb +1 -1
  133. data/lib/dapp/dimg/dapp/command/mrproper.rb +16 -63
  134. data/lib/dapp/dimg/dapp/command/push.rb +11 -16
  135. data/lib/dapp/dimg/dapp/command/ruby2go_cleanup.rb +48 -0
  136. data/lib/dapp/dimg/dapp/command/run.rb +4 -4
  137. data/lib/dapp/dimg/dapp/command/spush.rb +4 -5
  138. data/lib/dapp/dimg/dapp/command/stage_image.rb +2 -2
  139. data/lib/dapp/dimg/dapp/command/stages/cleanup_local.rb +13 -115
  140. data/lib/dapp/dimg/dapp/command/stages/cleanup_repo.rb +23 -102
  141. data/lib/dapp/dimg/dapp/command/stages/common.rb +57 -39
  142. data/lib/dapp/dimg/dapp/command/stages/flush_local.rb +13 -7
  143. data/lib/dapp/dimg/dapp/command/stages/flush_repo.rb +14 -8
  144. data/lib/dapp/dimg/dapp/command/stages/pull.rb +4 -13
  145. data/lib/dapp/dimg/dapp/command/stages/push.rb +4 -9
  146. data/lib/dapp/dimg/dapp/command/tag.rb +4 -6
  147. data/lib/dapp/dimg/dapp/config_artifact_group.rb +20 -0
  148. data/lib/dapp/dimg/dapp/dapp.rb +40 -0
  149. data/lib/dapp/dimg/dapp/dappfile.rb +43 -0
  150. data/lib/dapp/dimg/dapp/dimg.rb +41 -0
  151. data/lib/dapp/dimg/dimg/git_artifact.rb +25 -11
  152. data/lib/dapp/dimg/dimg/path.rb +7 -9
  153. data/lib/dapp/dimg/dimg/stages.rb +27 -15
  154. data/lib/dapp/dimg/dimg.rb +172 -69
  155. data/lib/dapp/dimg/docker_registry/base.rb +31 -74
  156. data/lib/dapp/dimg/docker_registry/dimg.rb +55 -0
  157. data/lib/dapp/dimg/docker_registry.rb +5 -23
  158. data/lib/dapp/dimg/error/build.rb +1 -1
  159. data/lib/dapp/dimg/error/chef.rb +1 -5
  160. data/lib/dapp/dimg/error/{command.rb → default.rb} +1 -1
  161. data/lib/dapp/dimg/error/dimg.rb +1 -1
  162. data/lib/dapp/dimg/error/lock.rb +1 -1
  163. data/lib/dapp/dimg/error/registry.rb +1 -1
  164. data/lib/dapp/dimg/error/rugged.rb +1 -1
  165. data/lib/dapp/dimg/error/tar_writer.rb +1 -1
  166. data/lib/dapp/dimg/git_artifact.rb +195 -179
  167. data/lib/dapp/dimg/git_repo/base.rb +49 -45
  168. data/lib/dapp/dimg/git_repo/local.rb +45 -0
  169. data/lib/dapp/dimg/git_repo/own.rb +3 -31
  170. data/lib/dapp/dimg/git_repo/remote.rb +65 -26
  171. data/lib/dapp/dimg/image/argument.rb +15 -50
  172. data/lib/dapp/dimg/image/dimg.rb +15 -0
  173. data/lib/dapp/dimg/image/scratch.rb +35 -9
  174. data/lib/dapp/dimg/image/stage.rb +223 -44
  175. data/lib/dapp/dimg/lock/file.rb +4 -4
  176. data/lib/dapp/downloader.rb +117 -0
  177. data/lib/dapp/error/base.rb +1 -5
  178. data/lib/dapp/error/command.rb +5 -0
  179. data/lib/dapp/error/config.rb +5 -0
  180. data/lib/dapp/error/dapp.rb +1 -1
  181. data/lib/dapp/error/dappfile.rb +1 -1
  182. data/lib/dapp/error/default.rb +11 -0
  183. data/lib/dapp/error/mod/user.rb +11 -0
  184. data/lib/dapp/error/shellout.rb +1 -1
  185. data/lib/dapp/exception/base.rb +1 -1
  186. data/lib/dapp/helper/case_conversion.rb +17 -0
  187. data/lib/dapp/helper/cli.rb +18 -7
  188. data/lib/dapp/helper/net_status.rb +5 -1
  189. data/lib/dapp/helper/sha256.rb +1 -1
  190. data/lib/dapp/helper/tar.rb +31 -0
  191. data/lib/dapp/helper/trivia.rb +40 -1
  192. data/lib/dapp/helper/url.rb +23 -0
  193. data/lib/dapp/helper/yaml.rb +24 -0
  194. data/lib/dapp/kube/cli/cli.rb +1 -0
  195. data/lib/dapp/kube/cli/command/base.rb +14 -0
  196. data/lib/dapp/kube/cli/command/kube/chart_create.rb +19 -0
  197. data/lib/dapp/kube/cli/command/kube/deploy.rb +80 -0
  198. data/lib/dapp/kube/cli/command/kube/dismiss.rb +31 -0
  199. data/lib/dapp/kube/cli/command/kube/lint.rb +53 -0
  200. data/lib/dapp/kube/cli/command/kube/minikube_setup.rb +19 -0
  201. data/lib/dapp/kube/cli/command/kube/render.rb +63 -0
  202. data/lib/dapp/kube/cli/command/kube/secret_edit.rb +30 -0
  203. data/lib/dapp/kube/cli/command/kube/secret_extract.rb +39 -0
  204. data/lib/dapp/kube/cli/command/kube/secret_generate.rb +34 -0
  205. data/lib/dapp/kube/cli/command/kube/secret_key_generate.rb +16 -0
  206. data/lib/dapp/kube/cli/command/kube/secret_regenerate.rb +29 -0
  207. data/lib/dapp/kube/cli/command/kube/value_get.rb +47 -0
  208. data/lib/dapp/kube/cli/command/kube.rb +28 -0
  209. data/lib/dapp/kube/dapp/command/chart_create.rb +103 -0
  210. data/lib/dapp/kube/dapp/command/common.rb +379 -0
  211. data/lib/dapp/kube/dapp/command/deploy.rb +351 -0
  212. data/lib/dapp/kube/dapp/command/dismiss.rb +50 -0
  213. data/lib/dapp/kube/dapp/command/lint.rb +69 -0
  214. data/lib/dapp/kube/dapp/command/minikube_setup.rb +402 -0
  215. data/lib/dapp/kube/dapp/command/render.rb +54 -0
  216. data/lib/dapp/kube/dapp/command/ruby2go.rb +17 -0
  217. data/lib/dapp/kube/dapp/command/secret_edit.rb +21 -0
  218. data/lib/dapp/kube/dapp/command/secret_extract.rb +17 -0
  219. data/lib/dapp/kube/dapp/command/secret_generate.rb +21 -0
  220. data/lib/dapp/kube/dapp/command/secret_key_generate.rb +13 -0
  221. data/lib/dapp/kube/dapp/command/secret_regenerate.rb +13 -0
  222. data/lib/dapp/kube/dapp/command/value_get.rb +32 -0
  223. data/lib/dapp/kube/dapp/dapp.rb +26 -0
  224. data/lib/dapp/kube/error/default.rb +7 -0
  225. data/lib/dapp/kube/helm/release.rb +189 -0
  226. data/lib/dapp/kube/helm/values.rb +148 -0
  227. data/lib/dapp/kube/helm.rb +5 -0
  228. data/lib/dapp/kube/kubernetes/client/error.rb +43 -0
  229. data/lib/dapp/kube/kubernetes/client/resource/base.rb +33 -0
  230. data/lib/dapp/kube/kubernetes/client/resource/deployment.rb +11 -0
  231. data/lib/dapp/kube/kubernetes/client/resource/event.rb +8 -0
  232. data/lib/dapp/kube/kubernetes/client/resource/job.rb +27 -0
  233. data/lib/dapp/kube/kubernetes/client/resource/pod.rb +62 -0
  234. data/lib/dapp/kube/kubernetes/client/resource/replicaset.rb +8 -0
  235. data/lib/dapp/kube/kubernetes/client.rb +314 -0
  236. data/lib/dapp/kube/kubernetes/config.rb +132 -0
  237. data/lib/dapp/kube/kubernetes/error.rb +15 -0
  238. data/lib/dapp/kube/kubernetes/manager/base.rb +15 -0
  239. data/lib/dapp/kube/kubernetes/manager/container.rb +103 -0
  240. data/lib/dapp/kube/kubernetes/manager/deployment.rb +212 -0
  241. data/lib/dapp/kube/kubernetes/manager/job.rb +65 -0
  242. data/lib/dapp/kube/kubernetes/manager/pod.rb +69 -0
  243. data/lib/dapp/kube/kubernetes.rb +6 -0
  244. data/lib/dapp/kube/secret.rb +93 -0
  245. data/lib/dapp/kube.rb +1 -0
  246. data/lib/dapp/version.rb +2 -2
  247. data/lib/dapp.rb +155 -61
  248. metadata +208 -61
  249. data/lib/dapp/cli/base.rb +0 -63
  250. data/lib/dapp/config/base.rb +0 -54
  251. data/lib/dapp/config/error/config.rb +0 -7
  252. data/lib/dapp/dimg/build/stage/ga_archive_dependencies.rb +0 -27
  253. data/lib/dapp/dimg/build/stage/ga_dependencies_base.rb +0 -20
  254. data/lib/dapp/dimg/build/stage/install/ga_post_install_patch_dependencies.rb +0 -22
  255. data/lib/dapp/dimg/build/stage/install/ga_pre_install_patch_dependencies.rb +0 -22
  256. data/lib/dapp/dimg/build/stage/mod/git_artifact_dependencies.rb +0 -23
  257. data/lib/dapp/dimg/build/stage/setup/ga_post_setup_patch_dependencies.rb +0 -32
  258. data/lib/dapp/dimg/build/stage/setup/ga_pre_setup_patch_dependencies.rb +0 -22
  259. data/lib/dapp/dimg/cli/base.rb +0 -16
  260. data/lib/dapp/dimg/cli/bp.rb +0 -37
  261. data/lib/dapp/dimg/cli/build.rb +0 -64
  262. data/lib/dapp/dimg/cli/dimg.rb +0 -30
  263. data/lib/dapp/dimg/cli/push.rb +0 -61
  264. data/lib/dapp/dimg/cli/stages/flush_local.rb +0 -23
  265. data/lib/dapp/dimg/cli/stages/flush_repo.rb +0 -24
  266. data/lib/dapp/dimg/cli/stages/pull.rb +0 -28
  267. data/lib/dapp/dimg/cli/stages/push.rb +0 -24
  268. data/lib/dapp/dimg/cli/stages.rb +0 -22
  269. data/lib/dapp/dimg/cli/tag.rb +0 -24
  270. data/lib/dapp/dimg/config/artifact_dimg.rb +0 -17
  271. data/lib/dapp/dimg/config/artifact_group.rb +0 -43
  272. data/lib/dapp/dimg/config/base.rb +0 -7
  273. data/lib/dapp/dimg/config/dimg/instance_methods.rb +0 -179
  274. data/lib/dapp/dimg/config/dimg/validation.rb +0 -126
  275. data/lib/dapp/dimg/config/dimg.rb +0 -24
  276. data/lib/dapp/dimg/config/dimg_group.rb +0 -61
  277. data/lib/dapp/dimg/config/dimg_group_base.rb +0 -54
  278. data/lib/dapp/dimg/config/dimg_group_main.rb +0 -22
  279. data/lib/dapp/dimg/dapp/command.rb +0 -21
  280. data/lib/dapp/dimg/dimg/tags.rb +0 -65
  281. data/lib/dapp/dimg/docker_registry/base/authorization.rb +0 -63
  282. data/lib/dapp/dimg/docker_registry/base/request.rb +0 -34
  283. data/lib/dapp/dimg/docker_registry/default.rb +0 -18
  284. data/lib/dapp/dimg/error/base.rb +0 -7
  285. data/lib/dapp/dimg/error/config.rb +0 -7
  286. data/lib/dapp/dimg/exception/introspect_image.rb +0 -7
  287. data/lib/dapp/dimg/image/docker.rb +0 -134
@@ -1,41 +1,67 @@
1
1
  module Dapp
2
2
  class Dapp
3
3
  module Dappfile
4
- def local_git_artifact_exclude_paths(&blk)
5
- super do |exclude_paths|
6
- exclude_paths << 'Dappfile'
7
-
8
- yield exclude_paths if block_given?
9
- end
10
- end
11
-
12
- def build_configs
13
- @configs ||= begin
14
- dimgs(dappfile_path).flatten.tap do |dimgs|
15
- raise Error::Dapp, code: :no_such_dimg, data: { dimgs_patterns: dimgs_patterns.join(', ') } if dimgs.empty?
4
+ module Error
5
+ class DappfileYmlErrorResponse < ::Dapp::Error::Default
6
+ def initialize(error_code, response)
7
+ net_status = {}
8
+ net_status[:code] = error_code
9
+ net_status[:message] = response["message"] if response["message"]
10
+ super(net_status)
16
11
  end
17
12
  end
18
13
  end
19
14
 
20
- def dappfile_path
21
- raise Error::Dapp, code: :dappfile_not_found unless (dappfile_path = search_file_upward('Dappfile'))
22
- dappfile_path
23
- end
24
-
25
- def work_dir
26
- File.expand_path(cli_options[:dir] || Dir.pwd)
27
- end
28
-
29
15
  def expand_path(path, number = 1)
30
16
  path = File.expand_path(path)
31
17
  number.times.each { path = File.dirname(path) }
32
18
  path
33
19
  end
34
20
 
35
- def dimgs(dappfile_path)
36
- Dimg::Config::DimgGroupMain.new(dapp: self) do |conf|
21
+ def dappfile_exists?
22
+ File.exist?(path("dappfile.yml")) ||
23
+ File.exist?(path("dappfile.yaml")) ||
24
+ File.exist?(path("Dappfile")) ||
25
+ ENV["DAPP_LOAD_CONFIG_PATH"]
26
+ end
27
+
28
+ def config
29
+ @config ||= begin
30
+ config = nil
31
+
32
+ dappfile_yml = path("dappfile.yml").to_s
33
+ dappfile_yaml = path("dappfile.yaml").to_s
34
+ dappfile_ruby = path("Dappfile").to_s
35
+
36
+ if ENV["DAPP_LOAD_CONFIG_PATH"]
37
+ config = YAML.load_file ENV["DAPP_LOAD_CONFIG_PATH"]
38
+ elsif File.exist? dappfile_yml
39
+ config = load_dappfile_yml(dappfile_yml)
40
+ elsif File.exist? dappfile_yaml
41
+ config = load_dappfile_yml(dappfile_yaml)
42
+ elsif File.exist? dappfile_ruby
43
+ config = load_dappfile_ruby(dappfile_ruby)
44
+ else
45
+ raise ::Dapp::Error::Dapp, code: :dappfile_not_found
46
+ end
47
+
48
+ if ENV["DAPP_DUMP_CONFIG"]
49
+ puts "-- DAPP_DUMP_CONFIG BEGIN"
50
+ puts YAML.dump(config)
51
+ puts "-- DAPP_DUMP_CONFIG END"
52
+ end
53
+
54
+ config.tap do
55
+ config.after_parsing!
56
+ config.validate!
57
+ end
58
+ end # begin
59
+ end
60
+
61
+ def load_dappfile_ruby(dappfile_path)
62
+ ::Dapp::Config::Config.new(dapp: self).tap do |config|
37
63
  begin
38
- conf.instance_eval File.read(dappfile_path), dappfile_path
64
+ config.instance_eval File.read(dappfile_path), dappfile_path
39
65
  rescue SyntaxError, StandardError => e
40
66
  backtrace = e.backtrace.find { |line| line.start_with?(dappfile_path) }
41
67
  message = begin
@@ -49,12 +75,67 @@ module Dapp
49
75
  end
50
76
  end
51
77
  message = "#{backtrace[/.*(?=:in)/]}: #{message}" if backtrace
52
- raise Error::Dappfile, code: :incorrect, data: { error: e.class.name, message: message }
78
+ raise ::Dapp::Error::Dappfile, code: :incorrect, data: { error: e.class.name, message: message }
79
+ end # begin-rescue
80
+ end
81
+ end
82
+
83
+ def load_dappfile_yml(dappfile_path)
84
+ if dappfile_yml_bin_path = ENV["DAPP_BIN_DAPPFILE_YML"]
85
+ unless File.exists? dappfile_yml_bin_path
86
+ raise ::Dapp::Error::Dapp, code: :dappfile_yml_bin_path_not_found, data: {path: dappfile_yml_bin_path}
53
87
  end
54
- end._dimg.select { |dimg| dimgs_patterns.any? { |pattern| dimg._name.nil? || File.fnmatch(pattern, dimg._name) } }.tap do |dimgs|
55
- dimgs.each { |dimg| dimg.send(:validate!) }
88
+ else
89
+ dappfile_yml_bin_path = File.join(::Dapp::Dapp.home_dir, "bin", "dappfile-yml", ::Dapp::VERSION, "dappfile-yml")
90
+ unless File.exists? dappfile_yml_bin_path
91
+ download_dappfile_yml_bin(dappfile_yml_bin_path)
92
+ end
93
+ end
94
+
95
+ cmd_res = shellout "#{dappfile_yml_bin_path} -dappfile #{dappfile_path}"
96
+
97
+ raw_json_response = nil
98
+ if cmd_res.exitstatus == 0
99
+ raw_json_response = cmd_res.stdout
100
+ elsif cmd_res.exitstatus == 16
101
+ raw_json_response = cmd_res.stderr
102
+ else
103
+ shellout_cmd_should_succeed! cmd_res
56
104
  end
105
+
106
+ response = JSON.parse(raw_json_response)
107
+
108
+ log_warning(response["warning"]) unless response["warning"].empty?
109
+ raise ::Dapp::Dapp::Dappfile::Error::DappfileYmlErrorResponse.new(response["error"], response) if response["error"]
110
+
111
+ YAML.load response["dappConfig"]
57
112
  end
113
+
114
+ def download_dappfile_yml_bin(dappfile_yml_bin_path)
115
+ lock("downloader.bin.dappfile-yml", default_timeout: 1800) do
116
+ return if File.exists? dappfile_yml_bin_path
117
+
118
+ log_process("Downloading dappfile-yml dapp dependency") do
119
+ location = URI("https://dl.bintray.com/dapp/ruby2go/#{::Dapp::VERSION}/dappfile-yml")
120
+
121
+ tmp_bin_path = File.join(self.class.tmp_base_dir, "dappfile-yml-#{SecureRandom.uuid}")
122
+ ::Dapp::Downloader.download(location, tmp_bin_path, show_progress: true, progress_titile: dappfile_yml_bin_path)
123
+
124
+ checksum_location = URI("https://dl.bintray.com/dapp/ruby2go/#{::Dapp::VERSION}/dappfile-yml.sha")
125
+ tmp_bin_checksum_path = tmp_bin_path + ".checksum"
126
+ ::Dapp::Downloader.download(checksum_location, tmp_bin_checksum_path)
127
+
128
+ if Digest::SHA256.hexdigest(File.read(tmp_bin_path)) != File.read(tmp_bin_checksum_path).strip
129
+ raise ::Dapp::Error::Dapp, code: :download_failed_bad_dappfile_yml_checksum, data: {url: location.to_s, checksum_url: checksum_location.to_s}
130
+ end
131
+
132
+ File.chmod(0755, tmp_bin_path)
133
+ FileUtils.mkdir_p File.dirname(dappfile_yml_bin_path)
134
+ FileUtils.mv tmp_bin_path, dappfile_yml_bin_path
135
+ end # log_process
136
+ end # lock
137
+ end
138
+
58
139
  end # Dappfile
59
140
  end # Dapp
60
141
  end # Dapp
@@ -2,46 +2,23 @@ module Dapp
2
2
  class Dapp
3
3
  module Deps
4
4
  module Base
5
- BASE_VERSION = '0.1.15'.freeze
6
-
7
- def base_container_name # FIXME: hashsum(image) or dockersafe()
8
- "dappdeps_base_#{BASE_VERSION}"
5
+ def base_container
6
+ dappdeps_container(:base)
9
7
  end
10
8
 
11
- def base_container
12
- @base_container ||= begin
13
- if shellout("docker inspect #{base_container_name}").exitstatus.nonzero?
14
- log_secondary_process(t(code: 'process.base_container_creating'), short: true) do
15
- shellout!(
16
- ['docker create',
17
- "--name #{base_container_name}",
18
- "--volume /.dapp/deps/base/#{BASE_VERSION} dappdeps/base:#{BASE_VERSION}"].join(' ')
19
- )
20
- end
21
- end
22
- base_container_name
23
- end
9
+ def dappdeps_base_path
10
+ ruby2go_dappdeps_command(dappdeps: :base, command: :path)
24
11
  end
25
12
 
26
13
  %w(rm rsync diff date cat
27
- stat test sleep mkdir find
28
- install sed cp true
29
- bash tar sudo).each do |cmd|
30
- define_method("#{cmd}_bin") { "/.dapp/deps/base/#{BASE_VERSION}/bin/#{cmd}" }
14
+ stat readlink test sleep mkdir
15
+ install sed cp true find
16
+ bash tar sudo base64).each do |bin|
17
+ define_method("#{bin}_bin") { ruby2go_dappdeps_command(dappdeps: :base, command: :bin, options: { bin: bin }) }
31
18
  end
32
19
 
33
20
  def sudo_command(owner: nil, group: nil)
34
- sudo = ''
35
- if owner || group
36
- sudo = "#{sudo_bin} -E "
37
- sudo += "-u #{sudo_format_user(owner)} " if owner
38
- sudo += "-g #{sudo_format_user(group)} " if group
39
- end
40
- sudo
41
- end
42
-
43
- def sudo_format_user(user)
44
- user.to_s.to_i.to_s == user.to_s ? "\\\##{user}" : user
21
+ ruby2go_dappdeps_command(dappdeps: :base, command: :sudo_command, options: { owner: owner, group: group })
45
22
  end
46
23
  end # Base
47
24
  end # Deps
@@ -0,0 +1,26 @@
1
+ module Dapp
2
+ class Dapp
3
+ module Deps
4
+ module Common
5
+ def dappdeps_container(dappdeps)
6
+ dappdeps_containers[dappdeps] ||= ruby2go_dappdeps_command(dappdeps: dappdeps, command: :container)
7
+ end
8
+
9
+ def dappdeps_containers
10
+ @dappdeps_containers ||= {}
11
+ end
12
+
13
+ def ruby2go_dappdeps_command(dappdeps:, command:, **options)
14
+ (options[:options] ||= {}).merge!(host_docker_config_dir: self.class.host_docker_config_dir)
15
+ ruby2go_dappdeps(dappdeps: dappdeps, command: command, **options).tap do |res|
16
+ unless res["error"].nil?
17
+ raise Error::Dapp, code: :ruby2go_dappdeps_command_failed_unexpected_error,
18
+ data: { dappdeps: dappdeps, command: command, message: res["error"] }
19
+ end
20
+ break res['data']
21
+ end
22
+ end
23
+ end # Base
24
+ end # Deps
25
+ end # Dapp
26
+ end # Dapp
@@ -2,30 +2,12 @@ module Dapp
2
2
  class Dapp
3
3
  module Deps
4
4
  module Gitartifact
5
- GITARTIFACT_VERSION = '0.1.7'.freeze
6
-
7
- def gitartifact_container_name # FIXME: hashsum(image) or dockersafe()
8
- "dappdeps_gitartifact_#{GITARTIFACT_VERSION}"
9
- end
10
-
11
5
  def gitartifact_container
12
- @gitartifact_container ||= begin
13
- if shellout("docker inspect #{gitartifact_container_name}").exitstatus.nonzero?
14
- log_secondary_process(t(code: 'process.gitartifact_container_creating'), short: true) do
15
- shellout!(
16
- ['docker create',
17
- "--name #{gitartifact_container_name}",
18
- "--volume /.dapp/deps/gitartifact/#{GITARTIFACT_VERSION}",
19
- "dappdeps/gitartifact:#{GITARTIFACT_VERSION}"].join(' ')
20
- )
21
- end
22
- end
23
- gitartifact_container_name
24
- end
6
+ dappdeps_container(:gitartifact)
25
7
  end
26
8
 
27
9
  def git_bin
28
- "/.dapp/deps/gitartifact/#{GITARTIFACT_VERSION}/bin/git"
10
+ ruby2go_dappdeps_command(dappdeps: :gitartifact, command: :bin)
29
11
  end
30
12
  end # Gitartifact
31
13
  end # Deps
@@ -0,0 +1,11 @@
1
+ module Dapp
2
+ class Dapp
3
+ module Deps
4
+ module Toolchain
5
+ def toolchain_container
6
+ dappdeps_container(:toolchain)
7
+ end
8
+ end # Toolchain
9
+ end # Deps
10
+ end # Dapp
11
+ end # Dapp
@@ -1,10 +1,12 @@
1
1
  module Dapp
2
2
  class Dapp
3
3
  module GitArtifact
4
- def local_git_artifact_exclude_paths(&blk)
5
- @local_git_artifact_exclude_paths ||= [].tap do |exclude_paths|
6
- yield exclude_paths if block_given?
7
- end
4
+ def dimgstage_g_a_commit_label(paramshash)
5
+ "dapp-git-#{paramshash}-commit"
6
+ end
7
+
8
+ def dimgstage_g_a_type_label(paramshash)
9
+ "dapp-git-#{paramshash}-type"
8
10
  end
9
11
  end # GitArtifact
10
12
  end # Dapp
@@ -1,20 +1,21 @@
1
1
  module Dapp
2
2
  class Dapp
3
3
  module Lock
4
- def lock_path
5
- build_path.join('locks')
4
+ def locks_dir
5
+ File.join(self.class.home_dir, "locks")
6
6
  end
7
7
 
8
8
  def _lock(name)
9
9
  @_locks ||= {}
10
- @_locks[name] ||= ::Dapp::Dimg::Lock::File.new(lock_path, name)
10
+ @_locks[name] ||= ::Dapp::Dimg::Lock::File.new(locks_dir, name)
11
11
  end
12
12
 
13
- def lock(name, *_args, default_timeout: 300, **kwargs, &blk)
13
+ # default_timeout 24 hours
14
+ def lock(name, *_args, default_timeout: 86400, **kwargs, &blk)
14
15
  if dry_run?
15
16
  yield if block_given?
16
17
  else
17
- timeout = cli_options[:lock_timeout] || default_timeout
18
+ timeout = options[:lock_timeout] || default_timeout
18
19
  _lock(name).synchronize(
19
20
  timeout: timeout,
20
21
  on_wait: proc do |&do_wait|
@@ -2,32 +2,48 @@ module Dapp
2
2
  class Dapp
3
3
  module Logging
4
4
  module Base
5
+ class << self
6
+ def included(base)
7
+ base.send(:extend, ClassMethods)
8
+ end
9
+ end
10
+
11
+ module ClassMethods
12
+ def log_time
13
+ "#{DateTime.now.strftime('%Y-%m-%dT%T%z')} "
14
+ end
15
+ end
16
+
5
17
  def log_quiet?
6
- cli_options[:log_quiet]
18
+ option_quiet
7
19
  end
8
20
 
9
21
  def log_time?
10
- cli_options[:log_time]
22
+ option_time
11
23
  end
12
24
 
13
25
  def log_verbose?
14
- cli_options[:log_verbose]
26
+ option_verbose
15
27
  end
16
28
 
17
29
  def ignore_config_warning?
18
- cli_options[:ignore_config_warning]
30
+ !!options[:ignore_config_warning]
19
31
  end
20
32
 
21
33
  def introspect_error?
22
- cli_options[:introspect_error]
34
+ !!options[:introspect_error]
23
35
  end
24
36
 
25
37
  def introspect_before_error?
26
- cli_options[:introspect_before_error]
38
+ !!options[:introspect_before_error]
27
39
  end
28
40
 
29
41
  def dry_run?
30
- cli_options[:dry_run]
42
+ option_dry_run
43
+ end
44
+
45
+ def dev_mode?
46
+ option_dev
31
47
  end
32
48
 
33
49
  def log_info(*args, **kwargs)
@@ -42,9 +58,7 @@ module Dapp
42
58
 
43
59
  def log_step_with_indent(step)
44
60
  log_step(step)
45
- with_log_indent do
46
- yield
47
- end
61
+ with_log_indent { yield }
48
62
  end
49
63
 
50
64
  def log_step(*args, **kwargs)
@@ -82,7 +96,7 @@ module Dapp
82
96
  end
83
97
 
84
98
  def log_time
85
- "#{DateTime.now.strftime('%Y-%m-%dT%T%z')} "
99
+ self.class.log_time
86
100
  end
87
101
 
88
102
  def log_format_string(str, time: true, indent: true, style: nil)
@@ -92,12 +106,6 @@ module Dapp
92
106
  end.join
93
107
  end
94
108
 
95
- def log_with_indent(message = '', **kwargs)
96
- with_log_indent do
97
- log(message, **kwargs)
98
- end
99
- end
100
-
101
109
  def with_log_indent(with = true)
102
110
  log_indent_next if with
103
111
  yield
@@ -121,9 +129,13 @@ module Dapp
121
129
  end
122
130
  end
123
131
 
124
- class << self
125
- def included(base)
126
- base.extend(self)
132
+ def service_stream
133
+ @@service_stream ||= begin
134
+ fd = IO.sysopen("/tmp/dapp-service.log", "a")
135
+
136
+ stream = IO.new(fd)
137
+ stream.sync = true
138
+ stream
127
139
  end
128
140
  end
129
141
 
@@ -2,6 +2,10 @@ module Dapp
2
2
  class Dapp
3
3
  module Logging
4
4
  module I18n
5
+ class I18nError < ::NetStatus::Exception
6
+ include ::Dapp::Error::Mod::User
7
+ end
8
+
5
9
  def self.initialize
6
10
  ::I18n.load_path << Dir[File.join(::Dapp.root, 'config', '**', '*')].select { |path| File.file?(path) }
7
11
  ::I18n.reload!
@@ -16,7 +20,7 @@ module Dapp
16
20
  paths << [:common, code].join('.')
17
21
  ::I18n.t(*paths, **data, raise: true)
18
22
  rescue ::I18n::MissingTranslationData => _e
19
- raise ::NetStatus::Exception, code: :missing_translation, data: { code: code }
23
+ raise I18nError, code: :missing_translation, data: { code: code }
20
24
  end
21
25
  end
22
26
  end # Helper
@@ -36,24 +36,24 @@ module Dapp
36
36
 
37
37
  if quiet
38
38
  log_process_quiet(message.to_s, style: style, status: status, &blk)
39
- elsif log_verbose? && !short
39
+ elsif short
40
+ log_process_short(message.to_s, style: style, status: status, &blk)
41
+ else
40
42
  process ||= t(code: 'status.process.default')
41
43
  log_process_verbose(message.to_s, process: process, style: style, status: status, &blk)
42
- else
43
- log_process_short(message.to_s, style: style, status: status, &blk)
44
44
  end
45
45
  end
46
46
  # rubocop:enable Metrics/ParameterLists
47
47
 
48
48
  def log_secondary_process(message, **kwargs, &blk)
49
- log_process(message, **kwargs.merge(style: { message: :secondary, success: :secondary }, quiet: !log_verbose?), &blk)
49
+ log_process(message, **kwargs.merge(style: { message: :secondary, success: :secondary }), &blk)
50
50
  end
51
51
 
52
52
  protected
53
53
 
54
54
  def log_process_quiet(message, style: {}, status: {})
55
55
  yield
56
- rescue Error::Base => e
56
+ rescue Error::Default => e
57
57
  info = paint_string(slice(message), style[:message])
58
58
  failed_message = paint_string(rjust(status[:failed], info), style[:failed])
59
59
  before_error_messages = [log_indent + info + failed_message, e.net_status[:data][:before_error_messages]].flatten
@@ -80,7 +80,7 @@ module Dapp
80
80
  log info, inline: inline
81
81
  message = success_message
82
82
  start = Time.now
83
- yield
83
+ with_log_indent { yield }
84
84
  rescue Error::Base, SignalException, StandardError => _e
85
85
  message = failed_message
86
86
  raise
@@ -0,0 +1,98 @@
1
+ module Dapp
2
+ class Dapp
3
+ module OptionTags
4
+ def tagging_schemes
5
+ %w(git_tag git_branch git_commit custom ci)
6
+ end
7
+
8
+ def tags_by_scheme
9
+ @tags_by_scheme_name ||= begin
10
+ if slug_tags[:custom].any?
11
+ if settings.fetch("sentry", {}).fetch("detect-push-tag-usage", false)
12
+ sentry_message("--tag or --tag-slug usage detected", extra: {"slug_tags" => slug_tags})
13
+ end
14
+ end
15
+
16
+ {}.tap do |tags_by_scheme|
17
+ [slug_tags, branch_tags, ci_tags].each do |_tags_by_scheme|
18
+ _tags_by_scheme.each do |scheme, tags|
19
+ tags_by_scheme[scheme] ||= []
20
+ tags_by_scheme[scheme] += tags.map(&method(:consistent_uniq_slugify))
21
+ end
22
+ end
23
+
24
+ [plain_tags, commit_tags, build_tags].each do |_tags_by_scheme|
25
+ _tags_by_scheme.each do |scheme, tags|
26
+ tags_by_scheme[scheme] ||= []
27
+ tags_by_scheme[scheme] += tags
28
+ end
29
+ end
30
+
31
+ tags_by_scheme[:custom] = [:latest] if tags_by_scheme.values.flatten.empty?
32
+ end
33
+ end
34
+ end
35
+
36
+ def option_tags
37
+ tags_by_scheme.values.flatten
38
+ end
39
+
40
+ def slug_tags
41
+ { custom: [*options[:tag], *options[:tag_slug]]}
42
+ end
43
+
44
+ def plain_tags
45
+ { custom: options[:tag_plain] }
46
+ end
47
+
48
+ def branch_tags
49
+ return {} unless options[:tag_branch]
50
+ raise Error::Dapp, code: :git_branch_without_name if (branch = git_own_repo.head_branch_name) == 'HEAD'
51
+ { git_branch: [branch] }
52
+ end
53
+
54
+ def commit_tags
55
+ return {} unless options[:tag_commit]
56
+ { git_commit: [git_own_repo.head_commit] }
57
+ end
58
+
59
+ def build_tags
60
+ return {} unless options[:tag_build_id]
61
+
62
+ if ENV['GITLAB_CI']
63
+ build_id = ENV['CI_BUILD_ID'] || ENV['CI_JOB_ID']
64
+ elsif ENV['TRAVIS']
65
+ build_id = ENV['TRAVIS_BUILD_NUMBER']
66
+ else
67
+ raise Error::Dapp, code: :ci_environment_required
68
+ end
69
+
70
+ { ci: [build_id] }
71
+ end
72
+
73
+ def ci_tags
74
+ return {} unless options[:tag_ci]
75
+
76
+ {}.tap do |tags_by_scheme|
77
+ if ENV['GITLAB_CI']
78
+ if ENV['CI_BUILD_TAG'] || ENV['CI_COMMIT_TAG']
79
+ tags_by_scheme[:git_tag] = [ENV['CI_BUILD_TAG'] || ENV['CI_COMMIT_TAG']]
80
+ elsif ENV['CI_BUILD_REF_NAME'] || ENV['CI_COMMIT_REF_NAME']
81
+ tags_by_scheme[:git_branch] = [ENV['CI_BUILD_REF_NAME'] || ENV['CI_COMMIT_REF_NAME']]
82
+ end
83
+ elsif ENV['TRAVIS']
84
+ if ENV['TRAVIS_TAG']
85
+ tags_by_scheme[:git_tag] = [ENV['TRAVIS_TAG']]
86
+ elsif ENV['TRAVIS_BRANCH']
87
+ tags_by_scheme[:git_branch] = [ENV['TRAVIS_BRANCH']]
88
+ end
89
+ else
90
+ raise Error::Dapp, code: :ci_environment_required
91
+ end
92
+
93
+ tags_by_scheme.delete_if { |_, tags| tags.first.nil? }
94
+ end
95
+ end
96
+ end # Tags
97
+ end # Dapp
98
+ end # Dapp