dapp 0.11.0 → 0.12.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (154) hide show
  1. checksums.yaml +4 -4
  2. data/config/en/net_status.yml +36 -4
  3. data/lib/dapp.rb +84 -36
  4. data/lib/dapp/cli.rb +3 -2
  5. data/lib/dapp/cli/command/base.rb +69 -0
  6. data/lib/dapp/config/config.rb +17 -0
  7. data/lib/dapp/config/directive/base.rb +90 -3
  8. data/lib/dapp/dapp.rb +6 -14
  9. data/lib/dapp/dapp/dappfile.rb +20 -27
  10. data/lib/dapp/dapp/deps/base.rb +2 -2
  11. data/lib/dapp/dapp/lock.rb +1 -1
  12. data/lib/dapp/dapp/logging/base.rb +11 -7
  13. data/lib/dapp/dapp/logging/process.rb +4 -2
  14. data/lib/dapp/dapp/shellout/base.rb +2 -2
  15. data/lib/dapp/dapp/ssh_agent.rb +2 -2
  16. data/lib/dapp/deployment.rb +1 -0
  17. data/lib/dapp/deployment/app.rb +120 -0
  18. data/lib/dapp/deployment/cli/cli.rb +1 -0
  19. data/lib/dapp/deployment/cli/command/base.rb +14 -0
  20. data/lib/dapp/deployment/cli/command/deployment.rb +21 -0
  21. data/lib/dapp/deployment/cli/command/deployment/apply.rb +26 -0
  22. data/lib/dapp/deployment/cli/command/deployment/minikube_setup.rb +13 -0
  23. data/lib/dapp/deployment/cli/command/deployment/mrproper.rb +13 -0
  24. data/lib/dapp/deployment/cli/command/deployment/secret_generate.rb +13 -0
  25. data/lib/dapp/deployment/cli/command/deployment/secret_key_generate.rb +13 -0
  26. data/lib/dapp/deployment/config/config.rb +46 -0
  27. data/lib/dapp/deployment/config/directive/app.rb +28 -0
  28. data/lib/dapp/deployment/config/directive/app/instance_methods.rb +51 -0
  29. data/lib/dapp/deployment/config/directive/base.rb +13 -0
  30. data/lib/dapp/deployment/config/directive/deployment.rb +11 -0
  31. data/lib/dapp/deployment/config/directive/expose.rb +68 -0
  32. data/lib/dapp/deployment/config/directive/group.rb +27 -0
  33. data/lib/dapp/deployment/config/directive/job.rb +28 -0
  34. data/lib/dapp/deployment/config/directive/mod/group.rb +22 -0
  35. data/lib/dapp/deployment/config/directive/mod/jobs.rb +26 -0
  36. data/lib/dapp/deployment/config/directive/namespace.rb +26 -0
  37. data/lib/dapp/deployment/config/directive/namespace/instance_methods.rb +37 -0
  38. data/lib/dapp/deployment/core_ext/hash.rb +19 -0
  39. data/lib/dapp/deployment/dapp/command/apply.rb +83 -0
  40. data/lib/dapp/deployment/dapp/command/common.rb +17 -0
  41. data/lib/dapp/deployment/dapp/command/minikube_setup.rb +393 -0
  42. data/lib/dapp/deployment/dapp/command/mrproper.rb +12 -0
  43. data/lib/dapp/deployment/dapp/command/secret_generate.rb +17 -0
  44. data/lib/dapp/deployment/dapp/command/secret_key_generate.rb +13 -0
  45. data/lib/dapp/deployment/dapp/dapp.rb +18 -0
  46. data/lib/dapp/deployment/dapp/dappfile.rb +23 -0
  47. data/lib/dapp/deployment/deployment.rb +46 -0
  48. data/lib/dapp/deployment/error/app.rb +7 -0
  49. data/lib/dapp/deployment/error/base.rb +7 -0
  50. data/lib/dapp/deployment/error/command.rb +7 -0
  51. data/lib/dapp/deployment/error/config.rb +7 -0
  52. data/lib/dapp/deployment/error/deployment.rb +7 -0
  53. data/lib/dapp/deployment/error/kubernetes.rb +7 -0
  54. data/lib/dapp/deployment/kube_app.rb +277 -0
  55. data/lib/dapp/deployment/kube_base.rb +97 -0
  56. data/lib/dapp/deployment/kube_deployment.rb +51 -0
  57. data/lib/dapp/deployment/kubernetes.rb +174 -0
  58. data/lib/dapp/deployment/kubernetes/error.rb +20 -0
  59. data/lib/dapp/deployment/mod/jobs.rb +37 -0
  60. data/lib/dapp/deployment/mod/namespace.rb +58 -0
  61. data/lib/dapp/deployment/mod/system_environments.rb +30 -0
  62. data/lib/dapp/deployment/secret.rb +93 -0
  63. data/lib/dapp/dimg/artifact.rb +1 -1
  64. data/lib/dapp/dimg/build/stage/artifact_default.rb +35 -23
  65. data/lib/dapp/dimg/build/stage/base.rb +1 -1
  66. data/lib/dapp/dimg/build/stage/before_setup.rb +0 -2
  67. data/lib/dapp/dimg/build/stage/build_artifact.rb +0 -2
  68. data/lib/dapp/dimg/build/stage/ga_latest_patch.rb +2 -2
  69. data/lib/dapp/dimg/build/stage/install/install.rb +0 -1
  70. data/lib/dapp/dimg/build/stage/setup/setup.rb +0 -1
  71. data/lib/dapp/dimg/cli/cli.rb +1 -1
  72. data/lib/dapp/dimg/cli/command/base.rb +14 -0
  73. data/lib/dapp/dimg/cli/{dimg.rb → command/dimg.rb} +5 -7
  74. data/lib/dapp/dimg/cli/{bp.rb → command/dimg/bp.rb} +3 -3
  75. data/lib/dapp/dimg/cli/{build.rb → command/dimg/build.rb} +3 -3
  76. data/lib/dapp/dimg/cli/{build_context.rb → command/dimg/build_context.rb} +3 -3
  77. data/lib/dapp/dimg/cli/{build_context → command/dimg/build_context}/export.rb +4 -4
  78. data/lib/dapp/dimg/cli/{build_context → command/dimg/build_context}/import.rb +4 -4
  79. data/lib/dapp/dimg/cli/{cleanup.rb → command/dimg/cleanup.rb} +3 -3
  80. data/lib/dapp/dimg/cli/{list.rb → command/dimg/list.rb} +3 -3
  81. data/lib/dapp/dimg/cli/{mrproper.rb → command/dimg/mrproper.rb} +4 -4
  82. data/lib/dapp/dimg/cli/{push.rb → command/dimg/push.rb} +5 -5
  83. data/lib/dapp/dimg/cli/{run.rb → command/dimg/run.rb} +8 -8
  84. data/lib/dapp/dimg/cli/{spush.rb → command/dimg/spush.rb} +4 -4
  85. data/lib/dapp/dimg/cli/{stage_image.rb → command/dimg/stage_image.rb} +3 -3
  86. data/lib/dapp/dimg/cli/{stages.rb → command/dimg/stages.rb} +3 -3
  87. data/lib/dapp/dimg/cli/{stages → command/dimg/stages}/cleanup_local.rb +6 -6
  88. data/lib/dapp/dimg/cli/{stages → command/dimg/stages}/cleanup_repo.rb +5 -5
  89. data/lib/dapp/dimg/cli/{stages → command/dimg/stages}/flush_local.rb +5 -5
  90. data/lib/dapp/dimg/cli/{stages → command/dimg/stages}/flush_repo.rb +6 -6
  91. data/lib/dapp/dimg/cli/{stages → command/dimg/stages}/pull.rb +6 -6
  92. data/lib/dapp/dimg/cli/{stages → command/dimg/stages}/push.rb +6 -6
  93. data/lib/dapp/dimg/cli/{tag.rb → command/dimg/tag.rb} +6 -6
  94. data/lib/dapp/dimg/config/config.rb +20 -0
  95. data/lib/dapp/dimg/config/directive/artifact_dimg.rb +19 -0
  96. data/lib/dapp/dimg/config/directive/artifact_group.rb +45 -0
  97. data/lib/dapp/dimg/config/directive/dimg.rb +36 -0
  98. data/lib/dapp/dimg/config/directive/dimg/instance_methods.rb +149 -0
  99. data/lib/dapp/dimg/config/directive/dimg/validation.rb +128 -0
  100. data/lib/dapp/dimg/config/directive/dimg_group.rb +64 -0
  101. data/lib/dapp/dimg/config/directive/dimg_group_base.rb +46 -0
  102. data/lib/dapp/dimg/config/directive/docker/dimg.rb +4 -4
  103. data/lib/dapp/dimg/config/directive/shell/dimg.rb +1 -1
  104. data/lib/dapp/dimg/dapp/command/bp.rb +4 -4
  105. data/lib/dapp/dimg/dapp/command/build.rb +2 -2
  106. data/lib/dapp/dimg/dapp/command/build_context/common.rb +2 -2
  107. data/lib/dapp/dimg/dapp/command/build_context/export.rb +1 -1
  108. data/lib/dapp/dimg/dapp/command/build_context/import.rb +1 -1
  109. data/lib/dapp/dimg/dapp/command/cleanup.rb +1 -1
  110. data/lib/dapp/dimg/dapp/command/common.rb +19 -4
  111. data/lib/dapp/dimg/dapp/command/list.rb +1 -1
  112. data/lib/dapp/dimg/dapp/command/mrproper.rb +3 -3
  113. data/lib/dapp/dimg/dapp/command/push.rb +6 -5
  114. data/lib/dapp/dimg/dapp/command/run.rb +1 -1
  115. data/lib/dapp/dimg/dapp/command/spush.rb +4 -3
  116. data/lib/dapp/dimg/dapp/command/stage_image.rb +2 -2
  117. data/lib/dapp/dimg/dapp/command/stages/cleanup_local.rb +1 -1
  118. data/lib/dapp/dimg/dapp/command/stages/cleanup_repo.rb +3 -3
  119. data/lib/dapp/dimg/dapp/command/stages/common.rb +4 -4
  120. data/lib/dapp/dimg/dapp/command/stages/flush_local.rb +1 -1
  121. data/lib/dapp/dimg/dapp/command/stages/flush_repo.rb +1 -1
  122. data/lib/dapp/dimg/dapp/command/stages/pull.rb +5 -4
  123. data/lib/dapp/dimg/dapp/command/stages/push.rb +4 -3
  124. data/lib/dapp/dimg/dapp/command/tag.rb +3 -2
  125. data/lib/dapp/dimg/dapp/dapp.rb +33 -0
  126. data/lib/dapp/dimg/dapp/dappfile.rb +25 -0
  127. data/lib/dapp/dimg/dimg.rb +3 -3
  128. data/lib/dapp/dimg/dimg/path.rb +1 -1
  129. data/lib/dapp/dimg/dimg/stages.rb +1 -1
  130. data/lib/dapp/dimg/dimg/tags.rb +5 -5
  131. data/lib/dapp/dimg/docker_registry.rb +3 -7
  132. data/lib/dapp/dimg/git_artifact.rb +30 -14
  133. data/lib/dapp/dimg/git_repo/base.rb +13 -1
  134. data/lib/dapp/dimg/git_repo/own.rb +9 -1
  135. data/lib/dapp/dimg/image/docker.rb +9 -3
  136. data/lib/dapp/helper/cli.rb +3 -1
  137. data/lib/dapp/helper/net_status.rb +5 -1
  138. data/lib/dapp/helper/trivia.rb +1 -1
  139. data/lib/dapp/version.rb +2 -2
  140. metadata +84 -38
  141. data/lib/dapp/cli/base.rb +0 -63
  142. data/lib/dapp/config/base.rb +0 -54
  143. data/lib/dapp/dimg/build/stage/mod/git_artifact_dependencies.rb +0 -23
  144. data/lib/dapp/dimg/cli/base.rb +0 -16
  145. data/lib/dapp/dimg/config/artifact_dimg.rb +0 -17
  146. data/lib/dapp/dimg/config/artifact_group.rb +0 -43
  147. data/lib/dapp/dimg/config/base.rb +0 -7
  148. data/lib/dapp/dimg/config/dimg.rb +0 -24
  149. data/lib/dapp/dimg/config/dimg/instance_methods.rb +0 -179
  150. data/lib/dapp/dimg/config/dimg/validation.rb +0 -126
  151. data/lib/dapp/dimg/config/dimg_group.rb +0 -61
  152. data/lib/dapp/dimg/config/dimg_group_base.rb +0 -54
  153. data/lib/dapp/dimg/config/dimg_group_main.rb +0 -22
  154. data/lib/dapp/dimg/dapp/command.rb +0 -21
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: b9bde6d6e0a2f2f7d9d630dfd5307d87900aefba
4
- data.tar.gz: 4cfa173162595e257a8e5e0f0c8fbd70dba8c576
3
+ metadata.gz: 75c3a3047f2f78af31a7a33c972454b929a165f2
4
+ data.tar.gz: 9047d134234568ac750fd1ba4726e6628a9e515d
5
5
  SHA512:
6
- metadata.gz: 0a5fcb98d67e9d4111b22d4252623e661c348dfdb1bc0d7ff4404a2db8d9f1ba164782aa0953c8186edd641363f067261d251ecf8f505805daa18add74f5088e
7
- data.tar.gz: 7d001567b2075340f756334d281c23d7eb4bff6331d34299e23203d79a04fb0e0730217f2c8ccf424b52862d30adf65c4f07f0046424e0046c557ae4fff0f333
6
+ metadata.gz: f0d3db56d2c2035b3a4c4a1e4f9f71c72874201110de648f880ad3b853d794f316438b8f8e5988b5941a9cacf0ee32ffd08ba02a98783a524b3629fa455fb947
7
+ data.tar.gz: 0e03117d5a43c2c1285ad2c77e3be37ce6c3a4d0d58b2a9c2da4652508694cca346b6cc1aac49e4d87442c62295baf23af19ab4fbb28da3bfa484f3f7407c0d7
@@ -22,18 +22,23 @@ en:
22
22
  command_unexpected_dimgs_number: "Command can process only one dimg!\nAmbiguous dimg pattern: `%{dimgs_names}`!"
23
23
  mrproper_required_option: "Expected command option `--improper-dev-mode-cache`, `--improper-cache-version-stages` or `--all`!"
24
24
  stages_cleanup_required_option: "Expected command option `--improper-cache-version`, `--improper-git-commit` or `--improper-repo-cache`!"
25
- tag_command_incorrect_tag: "Incorrect tag (`%{name}`) given!"
26
- repo_name_incorrect: "Incorrect repo (`%{name}`) given!"
25
+ repo_name_incorrect: "Incorrect repo name `%{name}` given!"
26
+ image_name_incorrect: "Incorrect image name `%{name}` given!"
27
+ tag_name_incorrect: "Incorrect tag name `%{name}` given!"
27
28
  context_directory_not_found: "Context directory `%{path}` not found!"
28
29
  stored_build_dir_already_exist: "Cannot store current build_dir `%{path}`: restore or delete old build_dir!"
30
+ secret_key_not_found: "Secret key `DAPP_SECRET_KEY` not found!"
31
+ minikube_not_found: "Minikube not found: install minikube (https://github.com/kubernetes/minikube/releases)!"
32
+ minikube_not_started: "Minikube not started!"
29
33
  dapp:
30
34
  no_such_dimg: "No such dimg: `%{dimgs_patterns}`!"
35
+ no_such_app: "No such app: `%{apps_patterns}`!"
31
36
  dappfile_not_found: "Dappfile not found!"
32
37
  cannot_run_ssh_agent: "Cannot run ssh-agent"
33
38
  ssh_key_not_found: "Ssh key `%{path}` not exist!"
34
39
  config:
35
40
  dimg_name_required: 'Dimg name required!'
36
- dimg_name_incorrect: "Dimg has incorrect name `%{name}`: doesn't match regex `%{reg}`!"
41
+ dimg_name_incorrect: "Dimg has incorrect name `%{value}`: doesn't match regex `%{pattern}`!"
37
42
  mount_from_required: "Mount: `from` directive required!"
38
43
  export_to_required: "Export: `to` directive required!"
39
44
  add_to_required: "Add: `to` directive required!"
@@ -45,7 +50,6 @@ en:
45
50
  mount_from_absolute_path_required: "Mount: given `from` path must be absolute!"
46
51
  mount_from_type_required: "Mount: `from` directive expect `build_dir` or `tmp_dir` type!"
47
52
  builder_type_conflict: 'Conflict between builder types!'
48
- builder_type_unsupported: "Defined unsupported builder type `%{type}`!"
49
53
  docker_from_incorrect: "`docker.from` has incorrect value `%{name}`!"
50
54
  docker_from_without_tag: "`docker.from`: image `%{name}` without tag!"
51
55
  stage_artifact_not_associated: "Artifact not associated with any stage: expected `before` or `after` attribute!"
@@ -58,6 +62,22 @@ en:
58
62
  scratch_artifact_required: "Scratch dimg without artifacts!"
59
63
  scratch_artifact_associated: "Scratch artifact cannot be associated: not expected `before`/`after` attribute!"
60
64
  scratch_artifact_docker_from: "Scratch artifact must have directive `docker.from`!"
65
+ unsupported_scale_value: "Define unsupported scale value `%{value}`!"
66
+ app_name_required: 'App name required!'
67
+ app_dimg_not_found: 'Not found dimg `%{dimg}` for app `%{app}`!'
68
+ app_dimg_not_defined: 'Not defined dimg for app `%{app}`!'
69
+ app_bootstrap_dimg_not_defined: "Not defined dimg for app.bootstrap!"
70
+ app_bootstrap_dimg_not_found: "Not found dimg `%{dimg}` for app.bootstrap!"
71
+ app_before_apply_job_dimg_not_defined: "Not defined dimg for app.before_apply_job!"
72
+ app_before_apply_job_dimg_not_found: "Not found dimg `%{dimg}` for app.before_apply_job!"
73
+ unsupported_port_number: 'Port number `%{number}` doesn`t support!'
74
+ unsupported_target_number: 'Target number `%{number}` doesn`t support!'
75
+ app_name_incorrect: "App has incorrect name `%{value}`: doesn't match regex `%{pattern}`!"
76
+ namespace_name_incorrect: "Namespace has incorrect name `%{value}`: doesn't match regex `%{pattern}`!"
77
+ deployment_bootstrap_dimg_not_defined: "Not defined dimg for deployment.bootstrap!"
78
+ deployment_bootstrap_dimg_not_found: "Not found dimg `%{dimg}` for deployment.bootstrap!"
79
+ deployment_before_apply_job_dimg_not_defined: "Not defined dimg for deployment.before_apply_job!"
80
+ deployment_before_apply_job_dimg_not_found: "Not found dimg `%{dimg}` for deployment.before_apply_job!"
61
81
  chef:
62
82
  stage_checksum_not_calculated: "Chef stage `%{stage}` checksum is not calculated yet, run build first"
63
83
  stage_path_overlap: "Cannot install `%{cookbook}` cookbook's path %{from} into %{to}: already exists"
@@ -77,3 +97,15 @@ en:
77
97
  branch_not_exist_in_remote_git_repository: "Remote git repo `%{url}`: branch `%{branch}` not exist!"
78
98
  lock:
79
99
  timeout: "Could not obtain lock for `%{name}` within %{timeout} seconds"
100
+ app:
101
+ namespace_not_found: "App `%{name}`: namespace `%{namespace}` not found!"
102
+ namespace_not_defined: "App `%{name}`: namespace not defined!"
103
+ deployment:
104
+ namespace_not_found: "Deployment `%{name}`: namespace `%{namespace}` not found!"
105
+ namespace_not_defined: "Deployment `%{name}`: namespace not defined!"
106
+ bootstrap_failed: "Bootstrap failed:\n phase: `%{phase}`\n message: `%{message}`"
107
+ bootstrap_command_failed: "Bootstrap failed:\n reason: `%{reason}`\n message: `%{message}`\n exit_code: `%{exit_code}`"
108
+ bootstrap_image_not_found: "Bootstrap failed because `%{reason}`: `%{message}`"
109
+ kubernetes:
110
+ kube_config_not_found: "Kube config `%{path}` not found!"
111
+ kube_server_connection_refused: "Kube server `%{url}` connection refused!"
@@ -18,8 +18,10 @@ require 'inifile'
18
18
  require 'rugged'
19
19
  require 'rubygems/package'
20
20
  require 'murmurhash3'
21
-
22
21
  require 'net_status'
22
+ require 'yaml'
23
+ require 'openssl'
24
+ require 'etc'
23
25
 
24
26
  require 'dapp/version'
25
27
  require 'dapp/core_ext/hash'
@@ -35,9 +37,9 @@ require 'dapp/error/dappfile'
35
37
  require 'dapp/error/shellout'
36
38
  require 'dapp/exception/base'
37
39
  require 'dapp/cli'
38
- require 'dapp/cli/base'
39
- require 'dapp/config/base'
40
+ require 'dapp/cli/command/base'
40
41
  require 'dapp/config/directive/base'
42
+ require 'dapp/config/config'
41
43
  require 'dapp/config/error/config'
42
44
  require 'dapp/dapp/lock'
43
45
  require 'dapp/dapp/ssh_agent'
@@ -53,6 +55,53 @@ require 'dapp/dapp/deps/gitartifact'
53
55
  require 'dapp/dapp/shellout/streaming'
54
56
  require 'dapp/dapp/shellout/base'
55
57
  require 'dapp/dapp'
58
+ require 'dapp/deployment'
59
+ require 'dapp/deployment/config/directive/mod/group'
60
+ require 'dapp/deployment/config/directive/mod/jobs'
61
+ require 'dapp/deployment/error/base'
62
+ require 'dapp/deployment/error/config'
63
+ require 'dapp/deployment/error/app'
64
+ require 'dapp/deployment/error/command'
65
+ require 'dapp/deployment/error/kubernetes'
66
+ require 'dapp/deployment/error/deployment'
67
+ require 'dapp/deployment/config/directive/base'
68
+ require 'dapp/deployment/config/directive/expose'
69
+ require 'dapp/deployment/config/directive/namespace/instance_methods'
70
+ require 'dapp/deployment/config/directive/namespace'
71
+ require 'dapp/deployment/config/directive/app/instance_methods'
72
+ require 'dapp/deployment/config/directive/app'
73
+ require 'dapp/deployment/config/directive/group'
74
+ require 'dapp/deployment/config/directive/deployment'
75
+ require 'dapp/deployment/config/directive/job'
76
+ require 'dapp/deployment/config/config'
77
+ require 'dapp/deployment/core_ext/hash'
78
+ require 'dapp/deployment/mod/namespace'
79
+ require 'dapp/deployment/mod/system_environments'
80
+ require 'dapp/deployment/mod/jobs'
81
+ require 'dapp/deployment/app'
82
+ require 'dapp/deployment/deployment'
83
+ require 'dapp/deployment/kube_base'
84
+ require 'dapp/deployment/kube_app'
85
+ require 'dapp/deployment/kube_deployment'
86
+ require 'dapp/deployment/kubernetes'
87
+ require 'dapp/deployment/kubernetes/error'
88
+ require 'dapp/deployment/cli/command/base'
89
+ require 'dapp/deployment/cli/command/deployment'
90
+ require 'dapp/deployment/cli/command/deployment/apply'
91
+ require 'dapp/deployment/cli/command/deployment/mrproper'
92
+ require 'dapp/deployment/cli/command/deployment/secret_key_generate'
93
+ require 'dapp/deployment/cli/command/deployment/secret_generate'
94
+ require 'dapp/deployment/cli/command/deployment/minikube_setup'
95
+ require 'dapp/deployment/cli/cli'
96
+ require 'dapp/deployment/dapp/command/mrproper'
97
+ require 'dapp/deployment/dapp/command/apply'
98
+ require 'dapp/deployment/dapp/command/secret_key_generate'
99
+ require 'dapp/deployment/dapp/command/secret_generate'
100
+ require 'dapp/deployment/dapp/command/minikube_setup'
101
+ require 'dapp/deployment/dapp/command/common'
102
+ require 'dapp/deployment/dapp/dappfile'
103
+ require 'dapp/deployment/dapp/dapp'
104
+ require 'dapp/deployment/secret'
56
105
  require 'dapp/dimg'
57
106
  require 'dapp/dimg/builder'
58
107
  require 'dapp/dimg/builder/base'
@@ -64,7 +113,6 @@ require 'dapp/dimg/builder/shell'
64
113
  require 'dapp/dimg/builder/none'
65
114
  require 'dapp/dimg/build/stage/mod/logging'
66
115
  require 'dapp/dimg/build/stage/mod/group'
67
- require 'dapp/dimg/build/stage/mod/git_artifact_dependencies'
68
116
  require 'dapp/dimg/build/stage/base'
69
117
  require 'dapp/dimg/build/stage/ga_base'
70
118
  require 'dapp/dimg/build/stage/ga_dependencies_base'
@@ -94,39 +142,37 @@ require 'dapp/dimg/build/stage/ga_latest_patch'
94
142
  require 'dapp/dimg/build/stage/docker_instructions'
95
143
  require 'dapp/dimg/build/stage/ga_artifact_patch'
96
144
  require 'dapp/dimg/build/stage/build_artifact'
97
- require 'dapp/dimg/cli/base'
98
- require 'dapp/dimg/cli/dimg'
99
- require 'dapp/dimg/cli/build'
100
- require 'dapp/dimg/cli/push'
101
- require 'dapp/dimg/cli/spush'
102
- require 'dapp/dimg/cli/tag'
103
- require 'dapp/dimg/cli/list'
104
- require 'dapp/dimg/cli/build_context'
105
- require 'dapp/dimg/cli/build_context/export'
106
- require 'dapp/dimg/cli/build_context/import'
107
- require 'dapp/dimg/cli/stages'
108
- require 'dapp/dimg/cli/stages/flush_local'
109
- require 'dapp/dimg/cli/stages/flush_repo'
110
- require 'dapp/dimg/cli/stages/cleanup_local'
111
- require 'dapp/dimg/cli/stages/cleanup_repo'
112
- require 'dapp/dimg/cli/stages/push'
113
- require 'dapp/dimg/cli/stages/pull'
114
- require 'dapp/dimg/cli/run'
115
- require 'dapp/dimg/cli/cleanup'
116
- require 'dapp/dimg/cli/bp'
117
- require 'dapp/dimg/cli/mrproper'
118
- require 'dapp/dimg/cli/stage_image'
145
+ require 'dapp/dimg/cli/command/base'
146
+ require 'dapp/dimg/cli/command/dimg'
147
+ require 'dapp/dimg/cli/command/dimg/build'
148
+ require 'dapp/dimg/cli/command/dimg/push'
149
+ require 'dapp/dimg/cli/command/dimg/spush'
150
+ require 'dapp/dimg/cli/command/dimg/tag'
151
+ require 'dapp/dimg/cli/command/dimg/list'
152
+ require 'dapp/dimg/cli/command/dimg/build_context'
153
+ require 'dapp/dimg/cli/command/dimg/build_context/export'
154
+ require 'dapp/dimg/cli/command/dimg/build_context/import'
155
+ require 'dapp/dimg/cli/command/dimg/stages'
156
+ require 'dapp/dimg/cli/command/dimg/stages/flush_local'
157
+ require 'dapp/dimg/cli/command/dimg/stages/flush_repo'
158
+ require 'dapp/dimg/cli/command/dimg/stages/cleanup_local'
159
+ require 'dapp/dimg/cli/command/dimg/stages/cleanup_repo'
160
+ require 'dapp/dimg/cli/command/dimg/stages/push'
161
+ require 'dapp/dimg/cli/command/dimg/stages/pull'
162
+ require 'dapp/dimg/cli/command/dimg/run'
163
+ require 'dapp/dimg/cli/command/dimg/cleanup'
164
+ require 'dapp/dimg/cli/command/dimg/bp'
165
+ require 'dapp/dimg/cli/command/dimg/mrproper'
166
+ require 'dapp/dimg/cli/command/dimg/stage_image'
119
167
  require 'dapp/dimg/cli/cli'
120
- require 'dapp/dimg/config/base'
121
168
  require 'dapp/dimg/config/directive/base'
122
- require 'dapp/dimg/config/dimg/instance_methods'
123
- require 'dapp/dimg/config/dimg/validation'
124
- require 'dapp/dimg/config/dimg'
125
- require 'dapp/dimg/config/artifact_dimg'
126
- require 'dapp/dimg/config/dimg_group_base'
127
- require 'dapp/dimg/config/dimg_group_main'
128
- require 'dapp/dimg/config/dimg_group'
129
- require 'dapp/dimg/config/artifact_group'
169
+ require 'dapp/dimg/config/directive/dimg/instance_methods'
170
+ require 'dapp/dimg/config/directive/dimg/validation'
171
+ require 'dapp/dimg/config/directive/dimg'
172
+ require 'dapp/dimg/config/directive/artifact_dimg'
173
+ require 'dapp/dimg/config/directive/dimg_group_base'
174
+ require 'dapp/dimg/config/directive/dimg_group'
175
+ require 'dapp/dimg/config/directive/artifact_group'
130
176
  require 'dapp/dimg/config/directive/artifact_base'
131
177
  require 'dapp/dimg/config/directive/git_artifact_local'
132
178
  require 'dapp/dimg/config/directive/git_artifact_remote'
@@ -138,6 +184,7 @@ require 'dapp/dimg/config/directive/docker/base'
138
184
  require 'dapp/dimg/config/directive/docker/dimg'
139
185
  require 'dapp/dimg/config/directive/docker/artifact'
140
186
  require 'dapp/dimg/config/directive/mount'
187
+ require 'dapp/dimg/config/config'
141
188
  require 'dapp/dimg/dapp/command/common'
142
189
  require 'dapp/dimg/dapp/command/build'
143
190
  require 'dapp/dimg/dapp/command/bp'
@@ -159,7 +206,8 @@ require 'dapp/dimg/dapp/command/stages/pull'
159
206
  require 'dapp/dimg/dapp/command/build_context/export'
160
207
  require 'dapp/dimg/dapp/command/build_context/import'
161
208
  require 'dapp/dimg/dapp/command/build_context/common'
162
- require 'dapp/dimg/dapp/command'
209
+ require 'dapp/dimg/dapp/dappfile'
210
+ require 'dapp/dimg/dapp/dapp'
163
211
  require 'dapp/dimg/docker_registry'
164
212
  require 'dapp/dimg/docker_registry/base/request'
165
213
  require 'dapp/dimg/docker_registry/base/authorization'
@@ -5,14 +5,15 @@ module Dapp
5
5
  extend Helper::Cli
6
6
  include Helper::Trivia
7
7
 
8
- SUBCOMMANDS = ['dimg'].freeze
8
+ SUBCOMMANDS = ['dimg', 'deployment'].freeze
9
9
 
10
10
  banner <<BANNER.freeze
11
- Usage: dapp [options] sub-command [sub-command options]
11
+ Usage: dapp sub-command [sub-command options]
12
12
 
13
13
  Available subcommands: (for details, dapp SUB-COMMAND --help)
14
14
 
15
15
  dapp dimg
16
+ dapp deployment
16
17
 
17
18
  Options:
18
19
  BANNER
@@ -0,0 +1,69 @@
1
+ module Dapp
2
+ class CLI
3
+ module Command
4
+ class Base < ::Dapp::CLI
5
+ option :dir,
6
+ long: '--dir PATH',
7
+ description: 'Change to directory',
8
+ on: :head
9
+
10
+ option :build_dir,
11
+ long: '--build-dir PATH',
12
+ description: 'Directory where build cache stored (DIR/.dapp_build by default)'
13
+
14
+ option :log_quiet,
15
+ short: '-q',
16
+ long: '--quiet',
17
+ description: 'Suppress logging',
18
+ default: false,
19
+ boolean: true
20
+
21
+ option :log_verbose,
22
+ long: '--verbose',
23
+ description: 'Enable verbose output',
24
+ default: false,
25
+ boolean: true
26
+
27
+ option :log_time,
28
+ long: '--time',
29
+ description: 'Enable output with time',
30
+ default: false,
31
+ boolean: true
32
+
33
+ option :ignore_config_warning,
34
+ long: '--ignore-config-sequential-processing-warnings',
35
+ default: false,
36
+ boolean: true
37
+
38
+ option :log_color,
39
+ long: '--color MODE',
40
+ description: 'Display output in color on the terminal',
41
+ in: %w(auto on off),
42
+ default: 'auto'
43
+
44
+ option :dry_run,
45
+ long: '--dry-run',
46
+ default: false,
47
+ boolean: true
48
+
49
+ option :dev,
50
+ long: '--dev',
51
+ default: false,
52
+ boolean: true
53
+
54
+ def initialize
55
+ self.class.options.merge!(Base.options)
56
+ super()
57
+ end
58
+
59
+ def run(_argv = ARGV)
60
+ raise
61
+ end
62
+
63
+ def cli_options(**kvargs)
64
+ config.merge(**kvargs)
65
+ end
66
+ end
67
+ end
68
+ end
69
+ end
@@ -0,0 +1,17 @@
1
+ module Dapp
2
+ module Config
3
+ class Config < Directive::Base
4
+ def dev_mode
5
+ @_dev_mode = true
6
+ end
7
+
8
+ def _dev_mode
9
+ !!@_dev_mode
10
+ end
11
+
12
+ def validate!
13
+ do_all!('_validate!')
14
+ end
15
+ end
16
+ end
17
+ end
@@ -1,20 +1,107 @@
1
1
  module Dapp
2
2
  module Config
3
3
  module Directive
4
- class Base < Config::Base
4
+ class Base
5
+ def initialize(dapp:, &blk)
6
+ @dapp = dapp
7
+ initialize_variables
8
+ instance_eval(&blk) if block_given?
9
+ end
10
+
5
11
  def clone
6
12
  _clone
7
13
  end
8
14
 
9
15
  protected
10
16
 
17
+ attr_reader :dapp
18
+
19
+ def path_format(path)
20
+ path.to_s.chomp('/')
21
+ end
22
+
23
+ def validate_compliance!(pattern, value, error_code)
24
+ raise Error::Config, code: error_code, data: { value: value, pattern: pattern } unless /^#{pattern}$/ =~ value
25
+ end
26
+
27
+ def initialize_variables
28
+ do_all!('_init_variables!')
29
+ end
30
+
31
+ def do_all!(postfix)
32
+ methods
33
+ .select { |m| m.to_s.end_with? postfix }
34
+ .each(&method(:send))
35
+ end
36
+
37
+ def directive_eval(directive, &blk)
38
+ directive.instance_eval(&blk) if block_given?
39
+ directive
40
+ end
41
+
11
42
  def sub_directive_eval
12
43
  yield if block_given?
13
44
  self
14
45
  end
15
46
 
16
- def path_format(path)
17
- path.to_s.chomp('/')
47
+ def pass_to(obj, clone_method = :clone)
48
+ passed_directives.each do |directive|
49
+ next if (variable = instance_variable_get(directive)).nil?
50
+
51
+ obj.instance_variable_set(directive, begin
52
+ case variable
53
+ when Base then variable.public_send(clone_method)
54
+ when String, Symbol, Integer, TrueClass, FalseClass then variable
55
+ when Array, Hash then marshal_clone(variable)
56
+ else
57
+ raise
58
+ end
59
+ end)
60
+ end
61
+ obj
62
+ end
63
+
64
+ def passed_directives
65
+ []
66
+ end
67
+
68
+ def ref_variables
69
+ [:@dapp]
70
+ end
71
+
72
+ def marshal_dump
73
+ instance_variables
74
+ .reject {|variable| ref_variables.include? variable}
75
+ .map {|variable| [variable, instance_variable_get(variable)]}
76
+ end
77
+
78
+ def marshal_load(variable_values)
79
+ variable_values.each do |variable, value|
80
+ instance_variable_set(variable, value)
81
+ end
82
+
83
+ self
84
+ end
85
+
86
+ def _clone
87
+ marshal_clone(self).tap do |obj|
88
+ _set_ref_variables_to(obj)
89
+ end
90
+ end
91
+
92
+ def _clone_to(obj)
93
+ obj.marshal_load(marshal_dump)
94
+ _set_ref_variables_to(obj)
95
+ end
96
+
97
+ def _set_ref_variables_to(obj)
98
+ ref_variables.each do |ref_variable|
99
+ obj.instance_variable_set(ref_variable, instance_variable_get(ref_variable))
100
+ end
101
+ end
102
+
103
+ def marshal_clone(obj)
104
+ Marshal.load(Marshal.dump(obj))
18
105
  end
19
106
  end
20
107
  end