dapp 0.7.9 → 0.7.10

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 (41) hide show
  1. checksums.yaml +4 -4
  2. data/config/en/common.yml +3 -0
  3. data/config/en/net_status.yml +28 -30
  4. data/lib/dapp/cli.rb +9 -9
  5. data/lib/dapp/cli/bp.rb +2 -2
  6. data/lib/dapp/cli/build.rb +2 -2
  7. data/lib/dapp/cli/cleanup.rb +2 -2
  8. data/lib/dapp/cli/list.rb +2 -2
  9. data/lib/dapp/cli/push.rb +2 -2
  10. data/lib/dapp/cli/run.rb +2 -2
  11. data/lib/dapp/cli/spush.rb +2 -2
  12. data/lib/dapp/cli/stage_image.rb +2 -2
  13. data/lib/dapp/cli/stages.rb +6 -6
  14. data/lib/dapp/cli/stages/cleanup_local.rb +2 -2
  15. data/lib/dapp/cli/stages/cleanup_repo.rb +2 -2
  16. data/lib/dapp/cli/stages/flush_local.rb +2 -2
  17. data/lib/dapp/cli/stages/flush_repo.rb +2 -2
  18. data/lib/dapp/cli/stages/pull.rb +2 -2
  19. data/lib/dapp/cli/stages/push.rb +2 -2
  20. data/lib/dapp/cli/tag.rb +2 -2
  21. data/lib/dapp/config/artifact_group.rb +4 -4
  22. data/lib/dapp/config/base.rb +20 -2
  23. data/lib/dapp/config/dimg/instance_methods.rb +10 -8
  24. data/lib/dapp/config/directive/artifact.rb +25 -8
  25. data/lib/dapp/config/directive/artifact_base.rb +6 -5
  26. data/lib/dapp/config/directive/base.rb +1 -5
  27. data/lib/dapp/config/directive/chef.rb +2 -2
  28. data/lib/dapp/config/directive/docker/dimg.rb +3 -3
  29. data/lib/dapp/config/directive/git_artifact_remote.rb +2 -2
  30. data/lib/dapp/config/directive/mount.rb +3 -2
  31. data/lib/dapp/config/directive/shell/dimg.rb +5 -8
  32. data/lib/dapp/core_ext/hash.rb +1 -1
  33. data/lib/dapp/image/stage.rb +2 -0
  34. data/lib/dapp/project/command/common.rb +16 -0
  35. data/lib/dapp/project/command/push.rb +1 -1
  36. data/lib/dapp/project/command/run.rb +1 -1
  37. data/lib/dapp/project/command/spush.rb +2 -2
  38. data/lib/dapp/project/command/stage_image.rb +1 -1
  39. data/lib/dapp/project/command/tag.rb +1 -1
  40. data/lib/dapp/version.rb +1 -1
  41. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: edc2314d803e1a087df9dd6c8e7bebf4f5c6659c
4
- data.tar.gz: 644c73cfe0ed65e26b625f435264e539c5dad3d5
3
+ metadata.gz: 2f2da7e934e3e3b6d9e08042e859d7614701c769
4
+ data.tar.gz: 1358edc575c90ad5b33be8dc024da8e660c241b8
5
5
  SHA512:
6
- metadata.gz: 6e97c0a4199cb7659fab736b9cbb7ed999f4f37da8d6cb6c42b857a0a7c78765300fb5b392eb793a0f6612eacd7fe6e1912269a3e4178b76f389c0b88ed4ef0a
7
- data.tar.gz: 1fa49615e8c037f0ef24c3ffae307b3a24bc15f95f9371f36b42e267f05b8448ac65f2ecc64fdabe53c25960d7da61381a48d9665e8f5ba8b95f4039cf59e065
6
+ metadata.gz: 2443ae77043f7191132924f08848706514276b915e931dae425e630519a9feca503f22d86355e7c7cc17f6a9b936ae4b54d83d20d149740794d5e62f724453ed
7
+ data.tar.gz: 5e7326b71d8655d03100169fb492ed3c73f6b2580810dcd06711044eafc2ca002dc4322f2ebe1b6fde4402e1bd7d67eb482ceb8f94bb7c5c9c836c36a3a62482
data/config/en/common.yml CHANGED
@@ -8,6 +8,8 @@ en:
8
8
  difference: "difference: %{value} MB"
9
9
  commands: "commands:"
10
10
  instructions: "instructions:"
11
+ container:
12
+ launched_command: "Launched command: '%{command}'"
11
13
  process:
12
14
  artifact_copy: "copying artifact '%{name}'"
13
15
  artifact_building: "building artifact '%{name}'"
@@ -50,6 +52,7 @@ en:
50
52
  another_image_already_tagged: 'WARNING: image with other id already exist.'
51
53
  tag_ignored: "WARNING: tag '%{tag}' ignored."
52
54
  dimg_not_found_in_registry: "WARNING: Dimg not found in registry."
55
+ stage_artifact_rewritten: "WARNING: Artifact stage rewritten from %{conflict_stage} to %{stage}."
53
56
  group:
54
57
  install_group: 'Install group'
55
58
  setup_group: 'Setup group'
@@ -1,6 +1,6 @@
1
1
  en:
2
2
  net_status:
3
- missing_translation: "Missing translation for code: '%{code}'!"
3
+ missing_translation: "Missing translation for code: `%{code}`!"
4
4
  shellout:
5
5
  shell_command_failed: ">>> START STREAM\n%{stream}\n>>> END STREAM"
6
6
  dimg:
@@ -8,9 +8,9 @@ en:
8
8
  dimg_not_run: "Dimg run failed!"
9
9
  git_branch_without_name: "Dimg has specific revision that isn't associated with a branch name!"
10
10
  ci_environment_required: 'CI environment required (Travis or GitLab CI)!'
11
- chef_stage_checksum_not_calculated: "Chef stage '%{stage}' checksum is not calculated yet, run build first"
11
+ chef_stage_checksum_not_calculated: "Chef stage `%{stage}` checksum is not calculated yet, run build first"
12
12
  dappfile:
13
- incorrect: "Dappfile with '%{error}':\n%{message}"
13
+ incorrect: "Dappfile with `%{error}`:\n%{message}"
14
14
  build:
15
15
  from_image_required: 'Missing from_image!'
16
16
  image_already_untagged: "Image `%{name}` already untagged!"
@@ -18,51 +18,49 @@ en:
18
18
  built_id_not_defined: '`from.built_id` not defined!'
19
19
  from_image_not_found: 'Image `%{name}` not found!'
20
20
  project:
21
- spush_command_unexpected_dimgs_number: "Command 'spush' can process only one dimg!"
22
- command_unexpected_dimgs_number: "Command can process only one dimg!"
23
- no_such_dimg: "No such dimg: '%{dimgs_patterns}'!"
24
- tag_command_unexpected_dimgs_number: "Command 'tag' can process only one dimg!"
25
- tag_command_incorrect_tag: "Incorrect tag ('%{name}') given!"
26
- repo_name_incorrect: "Incorrect repo ('%{name}') given!"
21
+ command_unexpected_dimgs_number: "Command can process only one dimg!\nAmbiguous dimg pattern: `%{dimgs_names}`!"
22
+ no_such_dimg: "No such dimg: `%{dimgs_patterns}`!"
23
+ tag_command_incorrect_tag: "Incorrect tag (`%{name}`) given!"
24
+ repo_name_incorrect: "Incorrect repo (`%{name}`) given!"
27
25
  dappfile_not_found: "Dappfile not found!"
28
26
  cannot_run_ssh_agent: "Cannot run ssh-agent"
29
- ssh_key_not_found: "Ssh key '%{path}' not exist!"
30
- mrproper_required_option: "Expected command option '--improper-dev-mode-cache', '--improper-cache-version-stages' or '--all'!"
27
+ ssh_key_not_found: "Ssh key `%{path}` not exist!"
28
+ mrproper_required_option: "Expected command option `--improper-dev-mode-cache`, `--improper-cache-version-stages` or `--all`!"
31
29
  config:
32
30
  dimg_name_required: 'Dimg name required!'
33
- dimg_name_incorrect: "Dimg has incorrect name '%{name}': doesn't match regex '%{reg}'!"
34
- export_to_required: "Export: 'to' directive required!"
31
+ dimg_name_incorrect: "Dimg has incorrect name `%{name}`: doesn't match regex `%{reg}`!"
32
+ export_to_required: "Export: `to` directive required!"
35
33
  export_cwd_absolute_path_required: "Export: given cwd path must be absolute!"
36
- export_to_absolute_path_required: "Export: given 'to' path must be absolute!"
37
- export_include_paths_relative_path_required: "Export: given 'include_paths' path must be relative!"
38
- export_exclude_paths_relative_path_required: "Export: given 'exclude_paths' path must be relative!"
39
- mount_from_absolute_path_required: "Mount: given 'from' path must be absolute!"
40
- mount_from_type_required: "Mount: 'from' directive expect 'build_dir' or 'tmp_dir' type!"
34
+ export_to_absolute_path_required: "Export: given `to` path must be absolute!"
35
+ export_include_paths_relative_path_required: "Export: given `include_paths` path must be relative!"
36
+ export_exclude_paths_relative_path_required: "Export: given `exclude_paths` path must be relative!"
37
+ mount_from_absolute_path_required: "Mount: given `from` path must be absolute!"
38
+ mount_from_type_required: "Mount: `from` directive expect `build_dir` or `tmp_dir` type!"
41
39
  builder_type_conflict: 'Conflict between builder types!'
42
40
  builder_type_unsupported: "Defined unsupported builder type `%{type}`!"
43
41
  docker_from_incorrect: "`docker.from` has incorrect value `%{name}`!"
44
- stage_artifact_not_associated: "Artifact not associated with any stage: expected 'before' or 'after' attribute!"
45
- stage_artifact_double_associate: "Artifact cannot use with both associated attributes 'before' and 'after'!"
46
- stage_artifact_not_supported_associated_stage: "Artifact not supported associated stage '%{stage}'!"
42
+ stage_artifact_not_associated: "Artifact not associated with any stage: expected `before` or `after` attribute!"
43
+ stage_artifact_double_associate: "Cannot use `%{stage}` stage for artifact, already used in `%{conflict_stage}` stage!"
44
+ stage_artifact_not_supported_associated_stage: "Bad artifact stage `%{stage}`!"
47
45
  artifact_conflict: "Conflict between artifacts paths!"
48
- scratch_unsupported_directive: "Scratch dimg has unsupported directive '%{directive}'!"
46
+ scratch_unsupported_directive: "Scratch dimg has unsupported directive `%{directive}`!"
49
47
  scratch_artifact_required: "Scratch dimg without artifacts!"
50
- scratch_artifact_associated: "Scratch artifact cannot be associated: not expected 'before'/'after' attribute!"
51
- scratch_artifact_docker_from: "Scratch artifact must have directive 'docker.from'!"
48
+ scratch_artifact_associated: "Scratch artifact cannot be associated: not expected `before`/`after` attribute!"
49
+ scratch_artifact_docker_from: "Scratch artifact must have directive `docker.from`!"
52
50
  chef:
53
- stage_path_overlap: "Cannot install '%{cookbook}' cookbook's path %{from} into %{to}: already exists"
54
- mdapp_dependency_in_metadata_forbidden: "Using mdapp as dependency in metadata.rb forbidden: detected '%{dependency}'"
51
+ stage_path_overlap: "Cannot install `%{cookbook}` cookbook's path %{from} into %{to}: already exists"
52
+ mdapp_dependency_in_metadata_forbidden: "Using mdapp as dependency in metadata.rb forbidden: detected `%{dependency}`"
55
53
  cookbook_path_not_found: "Dapp cookbook directory not found at %{path}"
56
54
  cookbook_berksfile_not_found: "Dapp cookbook Berksfile not found at %{path}"
57
55
  cookbook_metadata_not_found: "Dapp cookbook metadata.rb file not found at %{path}"
58
- cookbook_not_specified_in_berksfile: "Dapp cookbook '%{name}' not specified in Berksfile at %{path}"
56
+ cookbook_not_specified_in_berksfile: "Dapp cookbook `%{name}` not specified in Berksfile at %{path}"
59
57
  registry:
60
58
  incorrect_repo: 'Incorrect repository!'
61
59
  no_such_dimg: 'No such dimg in registry!'
62
60
  authenticate_type_not_supported: 'Registry authenticate type not supported!'
63
- page_not_found: "Page '%{url}' not found!"
61
+ page_not_found: "Page `%{url}` not found!"
64
62
  user_not_authorized: 'User not authorized!'
65
63
  response_with_error_status: 'Response with error status!'
66
- berksfile_absolute_path_forbidden: "Absolute paths in Berksfile are not allowed (cookbook '%{cookbook}', path: '%{path}')"
64
+ berksfile_absolute_path_forbidden: "Absolute paths in Berksfile are not allowed (cookbook `%{cookbook}`, path: `%{path}`)"
67
65
  lock:
68
- timeout: "Could not obtain lock for '%{name}' within %{timeout} seconds"
66
+ timeout: "Could not obtain lock for `%{name}` within %{timeout} seconds"
data/lib/dapp/cli.rb CHANGED
@@ -12,16 +12,16 @@ Usage: dapp [options] sub-command [sub-command options]
12
12
 
13
13
  Available subcommands: (for details, dapp SUB-COMMAND --help)
14
14
 
15
- dapp build [options] [DIMGS PATTERN ...]
16
- dapp bp [options] [DIMGS PATTERN ...] REPO
17
- dapp push [options] [DIMGS PATTERN] REPO
18
- dapp spush [options] [DIMG PATTERN ...] REPO
19
- dapp tag [options] [DIMG PATTERN ...] TAG
20
- dapp list [options] [DIMGS PATTERN ...]
21
- dapp run [options] [DIMG PATTERN] [DOCKER ARGS]
22
- dapp cleanup [options] [DIMGS PATTERN ...]
15
+ dapp build [options] [DIMG ...]
16
+ dapp bp [options] [DIMG ...] REPO
17
+ dapp push [options] [DIMG ...] REPO
18
+ dapp spush [options] [DIMG] REPO
19
+ dapp tag [options] [DIMG] TAG
20
+ dapp list [options] [DIMG ...]
21
+ dapp run [options] [DIMG] [DOCKER ARGS]
22
+ dapp cleanup [options] [DIMG ...]
23
23
  dapp mrproper [options]
24
- dapp stage image [options] [DIMG PATTERN]
24
+ dapp stage image [options] [DIMG]
25
25
  dapp stages
26
26
 
27
27
  Options:
data/lib/dapp/cli/bp.rb CHANGED
@@ -6,9 +6,9 @@ module Dapp
6
6
  Version: #{Dapp::VERSION}
7
7
 
8
8
  Usage:
9
- dapp bp [options] [DIMGS PATTERNS] REPO
9
+ dapp bp [options] [DIMG ...] REPO
10
10
 
11
- DIMGS PATTERN Dapp images to process [default: *].
11
+ DIMG Dapp image to process [default: *].
12
12
  REPO Pushed image name.
13
13
 
14
14
  Options:
@@ -6,9 +6,9 @@ module Dapp
6
6
  Version: #{Dapp::VERSION}
7
7
 
8
8
  Usage:
9
- dapp build [options] [DIMGS PATTERN ...]
9
+ dapp build [options] [DIMG ...]
10
10
 
11
- DIMGS PATTERN Dapp images to process [default: *].
11
+ DIMG Dapp image to process [default: *].
12
12
 
13
13
  Options:
14
14
  BANNER
@@ -6,9 +6,9 @@ module Dapp
6
6
  Version: #{Dapp::VERSION}
7
7
 
8
8
  Usage:
9
- dapp cleanup [options] [DIMGS PATTERN ...]
9
+ dapp cleanup [options] [DIMG ...]
10
10
 
11
- DIMGS PATTERN Dapp images to process [default: *].
11
+ DIMG Dapp image to process [default: *].
12
12
 
13
13
  Options:
14
14
  BANNER
data/lib/dapp/cli/list.rb CHANGED
@@ -6,9 +6,9 @@ module Dapp
6
6
  Version: #{Dapp::VERSION}
7
7
 
8
8
  Usage:
9
- dapp list [options] [DIMGS PATTERN ...]
9
+ dapp list [options] [DIMG ...]
10
10
 
11
- DIMGS PATTERN Dapp images to process [default: *].
11
+ DIMG Dapp image to process [default: *].
12
12
 
13
13
  Options:
14
14
  BANNER
data/lib/dapp/cli/push.rb CHANGED
@@ -6,9 +6,9 @@ module Dapp
6
6
  Version: #{Dapp::VERSION}
7
7
 
8
8
  Usage:
9
- dapp push [options] [DIMG PATTERN] REPO
9
+ dapp push [options] [DIMG ...] REPO
10
10
 
11
- DIMG PATTERN Dapp images to process [default: *].
11
+ DIMG Dapp image to process [default: *].
12
12
 
13
13
  Options:
14
14
  BANNER
data/lib/dapp/cli/run.rb CHANGED
@@ -6,9 +6,9 @@ module Dapp
6
6
  Version: #{Dapp::VERSION}
7
7
 
8
8
  Usage:
9
- dapp run [options] [DIMG PATTERN] [DOCKER ARGS]
9
+ dapp run [options] [DIMG] [DOCKER ARGS]
10
10
 
11
- DIMG PATTERN Dapp image to process [default: *].
11
+ DIMG Dapp image to process [default: *].
12
12
  DOCKER ARGS Docker run options and command separated by '--'
13
13
 
14
14
  Options:
@@ -6,9 +6,9 @@ module Dapp
6
6
  Version: #{Dapp::VERSION}
7
7
 
8
8
  Usage:
9
- dapp spush [options] [DIMGS PATTERN ...] REPO
9
+ dapp spush [options] [DIMG] REPO
10
10
 
11
- DIMGS PATTERN Dapp images to process [default: *].
11
+ DIMG Dapp image to process [default: *].
12
12
  REPO Pushed image name.
13
13
 
14
14
  Options:
@@ -6,9 +6,9 @@ module Dapp
6
6
  Version: #{Dapp::VERSION}
7
7
 
8
8
  Usage:
9
- dapp stage image [options] [DIMG PATTERN ...]
9
+ dapp stage image [options] [DIMG]
10
10
 
11
- DIMG PATTERN Dapp image to process [default: *].
11
+ DIMG Dapp image to process [default: *].
12
12
 
13
13
  Options:
14
14
  BANNER
@@ -9,12 +9,12 @@ Version: #{Dapp::VERSION}
9
9
 
10
10
  Available subcommands: (for details, dapp SUB-COMMAND --help)
11
11
 
12
- dapp stages cleanup local
13
- dapp stages cleanup repo
14
- dapp stages flush local
15
- dapp stages flush repo
16
- dapp stages push
17
- dapp stages pull
12
+ dapp stages cleanup local [options] [DIMG ...] REPO
13
+ dapp stages cleanup repo [options] [DIMG ...] REPO
14
+ dapp stages flush local [options] [DIMG ...]
15
+ dapp stages flush repo [options] [DIMG ...] REPO
16
+ dapp stages push [options] [DIMG ...] REPO
17
+ dapp stages pull [options] [DIMG ...] REPO
18
18
 
19
19
  Options:
20
20
  BANNER
@@ -7,9 +7,9 @@ module Dapp
7
7
  Version: #{Dapp::VERSION}
8
8
 
9
9
  Usage:
10
- dapp stages cleanup local [options] [DIMGS PATTERN ...] REPO
10
+ dapp stages cleanup local [options] [DIMG ...] REPO
11
11
 
12
- DIMGS PATTERN Dapp images to process [default: *].
12
+ DIMG Dapp image to process [default: *].
13
13
 
14
14
  Options:
15
15
  BANNER
@@ -7,9 +7,9 @@ module Dapp
7
7
  Version: #{Dapp::VERSION}
8
8
 
9
9
  Usage:
10
- dapp stages cleanup repo [options] [DIMGS PATTERN ...] REPO
10
+ dapp stages cleanup repo [options] [DIMG ...] REPO
11
11
 
12
- DIMGS PATTERN Dapp images to process [default: *].
12
+ DIMG Dapp image to process [default: *].
13
13
 
14
14
  Options:
15
15
  BANNER
@@ -7,9 +7,9 @@ module Dapp
7
7
  Version: #{Dapp::VERSION}
8
8
 
9
9
  Usage:
10
- dapp stages flush local [options] [DIMGS PATTERN ...]
10
+ dapp stages flush local [options] [DIMG ...]
11
11
 
12
- DIMGS PATTERN Dapp images to process [default: *].
12
+ DIMG Dapp image to process [default: *].
13
13
 
14
14
  Options:
15
15
  BANNER
@@ -7,9 +7,9 @@ module Dapp
7
7
  Version: #{Dapp::VERSION}
8
8
 
9
9
  Usage:
10
- dapp stages flush repo [options] [DIMGS PATTERN ...] REPO
10
+ dapp stages flush repo [options] [DIMG ...] REPO
11
11
 
12
- DIMGS PATTERN Dapp images to process [default: *].
12
+ DIMG Dapp image to process [default: *].
13
13
 
14
14
  Options:
15
15
  BANNER
@@ -7,9 +7,9 @@ module Dapp
7
7
  Version: #{Dapp::VERSION}
8
8
 
9
9
  Usage:
10
- dapp stages pull [options] [DIMG PATTERN] REPO
10
+ dapp stages pull [options] [DIMG ...] REPO
11
11
 
12
- DIMG PATTERN Dapp image to process [default: *].
12
+ DIMG Dapp image to process [default: *].
13
13
 
14
14
  Options:
15
15
  BANNER
@@ -7,9 +7,9 @@ module Dapp
7
7
  Version: #{Dapp::VERSION}
8
8
 
9
9
  Usage:
10
- dapp stages push [options] [DIMG PATTERN] REPO
10
+ dapp stages push [options] [DIMG ...] REPO
11
11
 
12
- DIMG PATTERN Dapp image to process [default: *].
12
+ DIMG Dapp image to process [default: *].
13
13
 
14
14
  Options:
15
15
  BANNER
data/lib/dapp/cli/tag.rb CHANGED
@@ -6,9 +6,9 @@ module Dapp
6
6
  Version: #{Dapp::VERSION}
7
7
 
8
8
  Usage:
9
- dapp tag [options] [DIMG PATTERN ...] TAG
9
+ dapp tag [options] [DIMG] TAG
10
10
 
11
- DIMG PATTERN Dapp image to process [default: *].
11
+ DIMG Dapp image to process [default: *].
12
12
  REPO Pushed image name.
13
13
 
14
14
  Options:
@@ -12,11 +12,11 @@ module Dapp
12
12
  end
13
13
 
14
14
  def _shell(&blk)
15
- @_shell ||= Directive::Shell::Artifact.new(&blk)
15
+ @_shell ||= Directive::Shell::Artifact.new(project: project, &blk)
16
16
  end
17
17
 
18
18
  def _docker(&blk)
19
- @_docker ||= Directive::Docker::Artifact.new(&blk)
19
+ @_docker ||= Directive::Docker::Artifact.new(project: project, &blk)
20
20
  end
21
21
 
22
22
  undef :artifact
@@ -32,7 +32,7 @@ module Dapp
32
32
  def export(*args, &blk)
33
33
  @_export.concat begin
34
34
  artifact_config = pass_to_default(ArtifactDimg.new("artifact-#{SecureRandom.hex(2)}", project: project))
35
- artifact = Directive::Artifact.new(config: artifact_config)
35
+ artifact = Directive::Artifact.new(project: project, config: artifact_config)
36
36
  artifact.send(:export, *args, &blk)
37
37
  artifact._export
38
38
  end
@@ -46,7 +46,7 @@ module Dapp
46
46
 
47
47
  def pass_to_default(obj)
48
48
  super(obj).tap do |artifact_dimg|
49
- artifact_dimg.instance_variable_set(:@_artifact_dependencies, marshal_dup(_artifact_dependencies))
49
+ artifact_dimg.instance_variable_set(:@_artifact_dependencies, _artifact_dependencies.dup)
50
50
  end
51
51
  end
52
52
  end
@@ -11,8 +11,26 @@ module Dapp
11
11
 
12
12
  attr_reader :project
13
13
 
14
- def marshal_dup(obj)
15
- Marshal.load(Marshal.dump(obj))
14
+ def marshal_dump
15
+ instance_variables
16
+ .reject {|variable| variable == :@project}
17
+ .map {|variable| [variable, instance_variable_get(variable)]}
18
+ end
19
+
20
+ def marshal_load(variable_values)
21
+ variable_values.each do |variable, value|
22
+ instance_variable_set(variable, value)
23
+ end
24
+
25
+ self
26
+ end
27
+
28
+ def _clone
29
+ Marshal.load Marshal.dump(self)
30
+ end
31
+
32
+ def _clone_to(obj)
33
+ obj.marshal_load marshal_dump
16
34
  end
17
35
  end
18
36
  end
@@ -47,7 +47,7 @@ module Dapp
47
47
  end
48
48
 
49
49
  def mount(to, &blk)
50
- _mount << Directive::Mount.new(to, &blk)
50
+ _mount << Directive::Mount.new(to, project: project, &blk)
51
51
  end
52
52
 
53
53
  def _dev_mode
@@ -59,15 +59,15 @@ module Dapp
59
59
  end
60
60
 
61
61
  def _chef
62
- @_chef ||= Directive::Chef.new
62
+ @_chef ||= Directive::Chef.new(project: project)
63
63
  end
64
64
 
65
65
  def _shell
66
- @_shell ||= Directive::Shell::Dimg.new
66
+ @_shell ||= Directive::Shell::Dimg.new(project: project)
67
67
  end
68
68
 
69
69
  def _docker
70
- @_docker ||= Directive::Docker::Dimg.new
70
+ @_docker ||= Directive::Docker::Dimg.new(project: project)
71
71
  end
72
72
 
73
73
  def _mount
@@ -75,7 +75,7 @@ module Dapp
75
75
  end
76
76
 
77
77
  def _git_artifact
78
- @_git_artifact ||= GitArtifact.new
78
+ @_git_artifact ||= GitArtifact.new(project: project)
79
79
  end
80
80
 
81
81
  [:build_dir, :tmp_dir].each do |mount_type|
@@ -114,17 +114,19 @@ module Dapp
114
114
  class GitArtifact < Directive::Base
115
115
  attr_reader :_local, :_remote
116
116
 
117
- def initialize
117
+ def initialize(**kwargs, &blk)
118
118
  @_local = []
119
119
  @_remote = []
120
+
121
+ super(**kwargs, &blk)
120
122
  end
121
123
 
122
124
  def local(_, &blk)
123
- @_local << Directive::GitArtifactLocal.new(&blk)
125
+ @_local << Directive::GitArtifactLocal.new(project: project, &blk)
124
126
  end
125
127
 
126
128
  def remote(repo_url, &blk)
127
- @_remote << Directive::GitArtifactRemote.new(repo_url, &blk)
129
+ @_remote << Directive::GitArtifactRemote.new(repo_url, project: project, &blk)
128
130
  end
129
131
 
130
132
  def _local
@@ -6,9 +6,10 @@ module Dapp
6
6
  class Artifact < ArtifactBase
7
7
  attr_reader :_config
8
8
 
9
- def initialize(config:)
9
+ def initialize(config:, **kwargs, &blk)
10
10
  @_config = config
11
- super()
11
+
12
+ super(**kwargs, &blk)
12
13
  end
13
14
 
14
15
  def _export
@@ -31,19 +32,35 @@ module Dapp
31
32
  protected
32
33
 
33
34
  def before(stage)
34
- associate_validation!(:before, stage)
35
+ stage = stage.to_sym
36
+ associate_validation!(:before, stage, @_before)
35
37
  @_before = stage
36
38
  end
37
39
 
38
40
  def after(stage)
39
- associate_validation!(:after, stage)
41
+ stage = stage.to_sym
42
+ associate_validation!(:after, stage, @_after)
40
43
  @_after = stage
41
44
  end
42
45
 
43
- def associate_validation!(type, stage)
44
- another = [:before, :after].find { |t| t != type }
45
- raise Error::Config, code: :stage_artifact_double_associate unless send("_#{another}").nil?
46
- raise Error::Config, code: :stage_artifact_not_supported_associated_stage unless [:install, :setup].include? stage
46
+ def associate_validation!(type, stage, old_stage)
47
+ conflict_type = [:before, :after].find { |t| t != type }
48
+ conflict_stage = send("_#{conflict_type}")
49
+
50
+ raise Error::Config, code: :stage_artifact_not_supported_associated_stage,
51
+ data: { stage: "#{type} #{stage.inspect}" } unless [:install, :setup].include? stage
52
+
53
+ raise Error::Config, code: :stage_artifact_double_associate,
54
+ data: { stage: "#{type} #{stage.inspect}",
55
+ conflict_stage: "#{conflict_type} #{conflict_stage.inspect}" } if conflict_stage
56
+
57
+ defined_stage = send("_#{type}")
58
+ project.log_config_warning(desc: {
59
+ code: :stage_artifact_rewritten,
60
+ context: :warning,
61
+ data: { stage: "#{type} #{stage.inspect}",
62
+ conflict_stage: "#{type} #{defined_stage.inspect}" }
63
+ }) if defined_stage
47
64
  end
48
65
  end
49
66
  end
@@ -5,9 +5,10 @@ module Dapp
5
5
  class ArtifactBase < Base
6
6
  attr_reader :_owner, :_group
7
7
 
8
- def initialize
8
+ def initialize(**kwargs, &blk)
9
9
  @_export = []
10
- super
10
+
11
+ super(**kwargs, &blk)
11
12
  end
12
13
 
13
14
  def _export
@@ -23,13 +24,13 @@ module Dapp
23
24
  class Export < Directive::Base
24
25
  attr_accessor :_cwd, :_to, :_include_paths, :_exclude_paths, :_owner, :_group
25
26
 
26
- def initialize(cwd = '/')
27
+ def initialize(cwd = '/', **kwargs, &blk)
27
28
  raise Error::Config, code: :export_cwd_absolute_path_required unless Pathname(cwd).absolute?
28
29
  @_cwd = cwd
29
30
  @_include_paths ||= []
30
31
  @_exclude_paths ||= []
31
32
 
32
- super()
33
+ super(**kwargs, &blk)
33
34
  end
34
35
 
35
36
  def _artifact_options
@@ -84,7 +85,7 @@ module Dapp
84
85
  end
85
86
 
86
87
  def export(absolute_dir_path = '/', &blk)
87
- @_export << self.class.const_get('Export').new(absolute_dir_path, &blk)
88
+ @_export << self.class.const_get('Export').new(absolute_dir_path, project: project, &blk)
88
89
  end
89
90
  end
90
91
  end
@@ -3,14 +3,10 @@ module Dapp
3
3
  module Directive
4
4
  # Base
5
5
  class Base < Config::Base
6
- def initialize(&blk)
7
- instance_eval(&blk) unless blk.nil?
8
- end
9
-
10
6
  protected
11
7
 
12
8
  def clone
13
- marshal_dup(self)
9
+ _clone
14
10
  end
15
11
 
16
12
  def clone_to_artifact
@@ -5,11 +5,11 @@ module Dapp
5
5
  class Chef < Base
6
6
  attr_accessor :_dimod, :_recipe, :_attributes
7
7
 
8
- def initialize
8
+ def initialize(**kwargs, &blk)
9
9
  @_dimod = []
10
10
  @_recipe = []
11
11
 
12
- super
12
+ super(**kwargs, &blk)
13
13
  end
14
14
 
15
15
  def dimod(*args)
@@ -6,7 +6,7 @@ module Dapp
6
6
  class Dimg < Base
7
7
  attr_reader :_volume, :_expose, :_env, :_label, :_cmd, :_onbuild, :_workdir, :_user, :_entrypoint
8
8
 
9
- def initialize
9
+ def initialize(**kwargs, &blk)
10
10
  @_volume = []
11
11
  @_expose = []
12
12
  @_env = {}
@@ -14,7 +14,7 @@ module Dapp
14
14
  @_cmd = []
15
15
  @_onbuild = []
16
16
 
17
- super
17
+ super(**kwargs, &blk)
18
18
  end
19
19
 
20
20
  def volume(*args)
@@ -70,7 +70,7 @@ module Dapp
70
70
  protected
71
71
 
72
72
  def clone_to_artifact
73
- Artifact.new.tap do |docker|
73
+ Artifact.new(project: project).tap do |docker|
74
74
  docker.instance_variable_set('@_from', @_from)
75
75
  end
76
76
  end
@@ -5,11 +5,11 @@ module Dapp
5
5
  class GitArtifactRemote < GitArtifactLocal
6
6
  attr_reader :_url, :_name, :_branch, :_commit
7
7
 
8
- def initialize(url)
8
+ def initialize(url, **kwargs, &blk)
9
9
  @_url = url
10
10
  @_name = url.gsub(%r{.*?([^\/ ]+)\.git}, '\\1')
11
11
 
12
- super()
12
+ super(**kwargs, &blk)
13
13
  end
14
14
 
15
15
  def _export
@@ -6,10 +6,11 @@ module Dapp
6
6
  attr_reader :_from, :_to
7
7
  attr_reader :_type
8
8
 
9
- def initialize(to)
9
+ def initialize(to, **kwargs, &blk)
10
10
  raise Error::Config, code: :mount_to_absolute_path_required unless Pathname((to = to.to_s)).absolute?
11
11
  @_to = to
12
- super()
12
+
13
+ super(**kwargs, &blk)
13
14
  end
14
15
 
15
16
  protected
@@ -13,7 +13,7 @@ module Dapp
13
13
 
14
14
  def self.stage_command_generator(stage)
15
15
  define_method stage do |&blk|
16
- (variable = instance_variable_get("@_#{stage}") || StageCommand.new).instance_eval(&blk)
16
+ (variable = instance_variable_get("@_#{stage}") || StageCommand.new(project: project)).instance_eval(&blk)
17
17
  instance_variable_set("@_#{stage}", variable)
18
18
  end
19
19
 
@@ -34,9 +34,10 @@ module Dapp
34
34
  attr_reader :_version
35
35
  attr_reader :_run
36
36
 
37
- def initialize
37
+ def initialize(**kwargs, &blk)
38
38
  @_run = []
39
- super
39
+
40
+ super(**kwargs, &blk)
40
41
  end
41
42
 
42
43
  def run(*args)
@@ -55,11 +56,7 @@ module Dapp
55
56
  end
56
57
 
57
58
  def clone_to_artifact
58
- Artifact.new.tap do |shell|
59
- instance_variables.each do |variable|
60
- shell.instance_variable_set(variable, instance_variable_get(marshal_dup(variable)))
61
- end
62
- end
59
+ _clone_to Artifact.new(project: project)
63
60
  end
64
61
  end
65
62
  end
@@ -6,7 +6,7 @@ module Dapp
6
6
  def in_depth_merge(hash) # do not conflict with activesupport`s deep_merge
7
7
  merge(hash) do |_, v1, v2|
8
8
  if v1.is_a?(::Hash) && v2.is_a?(::Hash)
9
- v1.merge(v2)
9
+ v1.in_depth_merge(v2)
10
10
  elsif v1.is_a?(::Array) || v2.is_a?(::Array)
11
11
  [v1, v2].flatten
12
12
  else
@@ -72,6 +72,8 @@ module Dapp
72
72
  raise Error::Build, code: :built_id_not_defined if from.built_id.nil?
73
73
  project.shellout!("docker run #{prepared_options} #{from.built_id} -ec '#{prepared_bash_command}'", log_verbose: true)
74
74
  rescue Error::Shellout => error
75
+ project.log_warning(desc: { code: :launched_command, data: { command: prepared_commands.join(' && ') }, context: :container })
76
+
75
77
  raise unless project.introspect_error? || project.introspect_before_error?
76
78
  built_id = project.introspect_error? ? commit! : from.built_id
77
79
  raise Exception::IntrospectImage, data: { built_id: built_id,
@@ -66,6 +66,22 @@ module Dapp
66
66
  def log_proper_cache(&blk)
67
67
  log_step_with_indent(:'proper cache', &blk)
68
68
  end
69
+
70
+ def one_dimg!
71
+ raise Error::Project, code: :command_unexpected_dimgs_number, data: { dimgs_names: build_configs.map(&:_name).join(' ') } unless build_configs.one?
72
+ end
73
+
74
+ def push_format(dimg_name)
75
+ if dimg_name.nil?
76
+ spush_format
77
+ else
78
+ '%{repo}:%{dimg_name}-%{tag}'
79
+ end
80
+ end
81
+
82
+ def spush_format
83
+ '%{repo}:%{tag}'
84
+ end
69
85
  end
70
86
  end
71
87
  end # Project
@@ -11,7 +11,7 @@ module Dapp
11
11
  build_configs.each do |config|
12
12
  log_dimg_name_with_indent(config) do
13
13
  Dimg.new(config: config, project: self, ignore_git_fetch: true, should_be_built: true).tap do |dimg|
14
- dimg.export!(repo, format: '%{repo}:%{dimg_name}-%{tag}')
14
+ dimg.export!(repo, format: push_format(config._name))
15
15
  end
16
16
  end
17
17
  end
@@ -6,7 +6,7 @@ module Dapp
6
6
  # Run
7
7
  module Run
8
8
  def run(docker_options, command)
9
- raise Error::Project, code: :command_unexpected_dimgs_number unless build_configs.one?
9
+ one_dimg!
10
10
  Dimg.new(config: build_configs.first, project: self, ignore_git_fetch: true, should_be_built: true).run(docker_options, command)
11
11
  end
12
12
  end
@@ -7,9 +7,9 @@ module Dapp
7
7
  module Spush
8
8
  def spush(repo)
9
9
  validate_repo_name(repo)
10
- raise Error::Project, code: :spush_command_unexpected_dimgs_number unless build_configs.one?
10
+ one_dimg!
11
11
  Dimg.new(config: build_configs.first, project: self, ignore_git_fetch: true, should_be_built: true).tap do |dimg|
12
- dimg.export!(repo, format: '%{repo}:%{tag}')
12
+ dimg.export!(repo, format: spush_format)
13
13
  end
14
14
  end
15
15
  end
@@ -6,7 +6,7 @@ module Dapp
6
6
  # StageImage
7
7
  module StageImage
8
8
  def stage_image
9
- raise Error::Project, code: :command_unexpected_dimgs_number unless build_configs.one?
9
+ one_dimg!
10
10
  puts Dimg.new(config: build_configs.first, project: self, ignore_git_fetch: true).stage_image_name(cli_options[:stage])
11
11
  end
12
12
  end
@@ -6,7 +6,7 @@ module Dapp
6
6
  # Tag
7
7
  module Tag
8
8
  def tag(tag)
9
- raise Error::Project, code: :tag_command_unexpected_dimgs_number unless build_configs.one?
9
+ one_dimg!
10
10
  raise Error::Project, code: :tag_command_incorrect_tag, data: { name: tag } unless Image::Docker.image_name?(tag)
11
11
  Dimg.new(config: build_configs.first, project: self, ignore_git_fetch: true, should_be_built: true).tap do |app|
12
12
  app.tag!(tag)
data/lib/dapp/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # Version
2
2
  module Dapp
3
- VERSION = '0.7.9'.freeze
3
+ VERSION = '0.7.10'.freeze
4
4
  BUILD_CACHE_VERSION = 6
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dapp
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.7.9
4
+ version: 0.7.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dmitry Stolyarov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-11-24 00:00:00.000000000 Z
11
+ date: 2016-11-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mixlib-shellout