dapp 0.7.1 → 0.7.2

Sign up to get free protection for your applications and to get access to all the features.
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