dapp 0.7.1 → 0.7.2

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5421a51c8a7e4aa97dd4366da97409289c335b88
4
- data.tar.gz: 29d5b0434a33f376ce6809a5c32bfada6ab19528
3
+ metadata.gz: 8d611af62545ae4ad1322d6534e2ecb72f8e9ff5
4
+ data.tar.gz: 2df141836542876fb905510294f9ccdc1349f5c0
5
5
  SHA512:
6
- metadata.gz: 557da43530e8da7dd3051ce4e47de1e20bb3b4bb9d68b7c16e3dca37beebb334fe2be645b07e06a15113f79fc2d58ccb6e7e49383f46f7ffd18636a7d586d3b7
7
- data.tar.gz: 9db7eea346c214b0990d7c823d7c95fcb179fc948e623ae17d3f09cc5f759f0fdb88cfd401e6bc4f70738f6acf4266f5620bafdb0cd112f24f21034617b5abf3
6
+ metadata.gz: 268e5c5c069fb04af95505e33c835cc7c305a55756944444ee5964b34407e1a5b05b8c4bff0e3d7f3f0bca8d26e70ddba99e995e659935a740074d38adcd76d6
7
+ data.tar.gz: 406cadcaa4493ed0b6654651281ee0a31b71a9281bfb061239fc8731805cbf0e8ada7a99008e4026b827dc9a3e3523b307c84cf8197930ca2a3b929f75546a50
@@ -24,7 +24,7 @@ en:
24
24
  dappfile_not_found: "Dappfile not found!"
25
25
  cannot_run_ssh_agent: "Cannot run ssh-agent"
26
26
  ssh_key_not_found: "Ssh key '%{path}' not exist!"
27
- mrproper_required_option: "Expected command option '--all' or '--improper-cache-version-stages'!"
27
+ mrproper_required_option: "Expected command option '--improper-dev-mode-cache', '--improper-cache-version-stages' or '--all'!"
28
28
  config:
29
29
  dimg_name_required: 'Dimg name required!'
30
30
  dimg_name_incorrect: "Dimg has incorrect name '%{name}': doesn't match regex '%{reg}'!"
@@ -79,6 +79,7 @@ module Dapp
79
79
  image_add_volumes
80
80
  image.add_service_change_label dapp: dimg.stage_dapp_label
81
81
  image.add_service_change_label 'dapp-cache-version'.to_sym => Dapp::BUILD_CACHE_VERSION
82
+ image.add_service_change_label 'dapp-dev-mode'.to_sym => true if dimg.dev_mode?
82
83
 
83
84
  if dimg.project.ssh_auth_sock
84
85
  image.add_volume "#{dimg.project.ssh_auth_sock}:/tmp/dapp-ssh-agent"
@@ -124,7 +125,13 @@ module Dapp
124
125
  if empty?
125
126
  prev_stage.signature
126
127
  else
127
- hashsum [prev_stage.signature, builder_checksum, *dependencies.flatten]
128
+ args = []
129
+ args << prev_stage.signature unless prev_stage.nil?
130
+ args << dimg.build_cache_version
131
+ args << builder_checksum
132
+ args.concat(dependencies.flatten)
133
+
134
+ hashsum args
128
135
  end
129
136
  end
130
137
 
@@ -3,12 +3,8 @@ module Dapp
3
3
  module Stage
4
4
  # From
5
5
  class From < Base
6
- def signature
7
- hashsum [*dependencies.flatten]
8
- end
9
-
10
6
  def dependencies
11
- [from_image_name, dimg.config._docker._from_cache_version, Dapp::BUILD_CACHE_VERSION]
7
+ [from_image_name, dimg.config._docker._from_cache_version]
12
8
  end
13
9
 
14
10
  protected
@@ -17,6 +17,10 @@ BANNER
17
17
  option :proper_cache_version,
18
18
  long: '--improper-cache-version-stages',
19
19
  boolean: true
20
+
21
+ option :proper_dev_mode_cache,
22
+ long: '--improper-dev-mode-cache',
23
+ boolean: true
20
24
  end
21
25
  end
22
26
  end
@@ -7,6 +7,10 @@ module Dapp
7
7
  attr_reader :_chef, :_shell, :_docker, :_git_artifact, :_mount, :_artifact
8
8
  attr_reader :_install_dependencies, :_setup_dependencies
9
9
 
10
+ def dev_mode
11
+ @_dev_mode = true
12
+ end
13
+
10
14
  def install_depends_on(*args)
11
15
  @_install_dependencies.concat(args)
12
16
  end
@@ -46,6 +50,10 @@ module Dapp
46
50
  _mount << Directive::Mount.new(to, &blk)
47
51
  end
48
52
 
53
+ def _dev_mode
54
+ !!@_dev_mode
55
+ end
56
+
49
57
  def _builder
50
58
  @_builder || :none
51
59
  end
@@ -147,6 +155,7 @@ module Dapp
147
155
 
148
156
  def directive_eval(directive, &blk)
149
157
  directive.instance_eval(&blk) if block_given?
158
+ directive
150
159
  end
151
160
 
152
161
  def pass_to_default(dimg)
@@ -171,7 +180,7 @@ module Dapp
171
180
  end
172
181
 
173
182
  def passed_directives
174
- [:@_chef, :@_shell, :@_docker, :@_git_artifact, :@_mount, :@_artifact, :@_builder]
183
+ [:@_chef, :@_shell, :@_docker, :@_git_artifact, :@_mount, :@_artifact, :@_builder, :@_dev_mode]
175
184
  end
176
185
  end
177
186
  end
@@ -11,6 +11,10 @@ module Dapp
11
11
  super(project: project)
12
12
  end
13
13
 
14
+ def dev_mode
15
+ @_dev_mode = true
16
+ end
17
+
14
18
  def dimg(name = nil, &blk)
15
19
  Config::Dimg.new(name, project: project).tap do |dimg|
16
20
  before_dimg_eval(dimg)
@@ -29,7 +33,8 @@ module Dapp
29
33
 
30
34
  protected
31
35
 
32
- def before_dimg_eval(_dimg)
36
+ def before_dimg_eval(dimg)
37
+ dimg.instance_variable_set(:@_dev_mode, @_dev_mode)
33
38
  end
34
39
  end
35
40
  end
@@ -30,7 +30,7 @@ module Dapp
30
30
  begin
31
31
  last_stage.build!
32
32
  ensure
33
- last_stage.save_in_cache! if last_stage.image.built? || project.dev_mode?
33
+ last_stage.save_in_cache! if last_stage.image.built? || dev_mode?
34
34
  end
35
35
  end
36
36
  end
@@ -126,6 +126,14 @@ module Dapp
126
126
  config._docker._from.nil?
127
127
  end
128
128
 
129
+ def dev_mode?
130
+ config._dev_mode || project.dev_mode?
131
+ end
132
+
133
+ def build_cache_version
134
+ [Dapp::BUILD_CACHE_VERSION, dev_mode? ? 1 : 0]
135
+ end
136
+
129
137
  protected
130
138
 
131
139
  def should_be_built?
@@ -8,12 +8,13 @@ module Dapp
8
8
  def mrproper
9
9
  log_step_with_indent(:mrproper) do
10
10
  if proper_all?
11
- log_step_with_indent(:containers) { dapp_containers_flush }
12
- log_step_with_indent(:images) { dapp_images_flush }
11
+ flush_by_label('dapp')
12
+ elsif proper_dev_mode_cache?
13
+ flush_by_label('dapp-dev-mode')
13
14
  elsif proper_cache_version?
14
15
  log_proper_cache do
15
16
  proper_cache_images = proper_cache_all_images
16
- remove_images(dapp_images.lines.select { |id| !proper_cache_images.lines.include?(id) }.map(&:strip))
17
+ remove_images(dapp_images_by_label('dapp').lines.select { |id| !proper_cache_images.lines.include?(id) }.map(&:strip))
17
18
  end
18
19
  else
19
20
  raise Error::Project, code: :mrproper_required_option
@@ -23,25 +24,34 @@ module Dapp
23
24
 
24
25
  protected
25
26
 
27
+ def flush_by_label(label)
28
+ log_step_with_indent(:containers) { dapp_containers_flush_by_label(label) }
29
+ log_step_with_indent(:images) { dapp_images_flush_be_label(label) }
30
+ end
31
+
26
32
  def proper_all?
27
33
  !!cli_options[:proper_all]
28
34
  end
29
35
 
30
- def dapp_containers_flush
31
- remove_containers_by_query('docker ps -a -f "label=dapp" -q', force: true)
36
+ def proper_dev_mode_cache?
37
+ !!cli_options[:proper_dev_mode_cache]
38
+ end
39
+
40
+ def dapp_containers_flush_by_label(label)
41
+ remove_containers_by_query(%(docker ps -a -f "label=#{label}" -q), force: true)
32
42
  end
33
43
 
34
- def dapp_dangling_images_flush
35
- remove_images_by_query('docker images -f "dangling=true" -f "label=dapp" -q', force: true)
44
+ def dapp_dangling_images_flush_by_label(label)
45
+ remove_images_by_query(%(docker images -f "dangling=true" -f "label=#{label}" -q), force: true)
36
46
  end
37
47
 
38
- def dapp_images_flush
39
- dapp_dangling_images_flush
40
- remove_images(dapp_images.lines.map(&:strip), force: true)
48
+ def dapp_images_flush_be_label(label)
49
+ dapp_dangling_images_flush_by_label(label)
50
+ remove_images(dapp_images_by_label(label).lines.map(&:strip), force: true)
41
51
  end
42
52
 
43
- def dapp_images
44
- @dapp_images ||= shellout!('docker images -f "dangling=false" --format="{{.Repository}}:{{.Tag}}" -f "label=dapp"').stdout.strip
53
+ def dapp_images_by_label(label)
54
+ @dapp_images ||= shellout!(%(docker images -f "dangling=false" --format="{{.Repository}}:{{.Tag}}" -f "label=#{label}")).stdout.strip
45
55
  end
46
56
 
47
57
  def proper_cache_all_images
@@ -42,7 +42,16 @@ module Dapp
42
42
  conf.instance_eval File.read(dappfile_path), dappfile_path
43
43
  rescue SyntaxError, StandardError => e
44
44
  backtrace = e.backtrace.find { |line| line.start_with?(dappfile_path) }
45
- message = [NoMethodError, NameError].any? { |err| e.is_a?(err) } ? e.message[/.*(?= for)/] : e.message
45
+ message = begin
46
+ case e
47
+ when NoMethodError
48
+ e.message =~ /`.*'/
49
+ "undefined method #{Regexp.last_match}"
50
+ when NameError then e.message[/.*(?= for)/]
51
+ else
52
+ e.message
53
+ end
54
+ end
46
55
  message = "#{backtrace[/.*(?=:in)/]}: #{message}" if backtrace
47
56
  raise Error::Dappfile, code: :incorrect, data: { error: e.class.name, message: message }
48
57
  end
@@ -1,5 +1,5 @@
1
1
  # Version
2
2
  module Dapp
3
- VERSION = '0.7.1'.freeze
4
- BUILD_CACHE_VERSION = 5
3
+ VERSION = '0.7.2'.freeze
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.1
4
+ version: 0.7.2
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-10 00:00:00.000000000 Z
11
+ date: 2016-11-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: mixlib-shellout