itamae 1.1.7 → 1.1.8

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: 46e8d6ca2f0b4e05123719182e0244d54455a866
4
- data.tar.gz: e35404ee8a2abcdfcd55849c69a9166fdde7ef64
3
+ metadata.gz: d44fdcac91acf929fbf94754542e1521a8528b67
4
+ data.tar.gz: 17770615b03da709e699397bddffe2556f01a9c3
5
5
  SHA512:
6
- metadata.gz: 25fce8fab5558c1fd3240610ff2c52aea30f6427343051e3b5d50950e0814bbe738ad7788159bae53a20385cceb3d6d5108216af6e6c11bbdd55c35ac8195aea
7
- data.tar.gz: 93cf42c6d44dfb803de6cb82967e57b9cadc4799233f24dabf3b1da863ec2897e8581dd3ed6774dbaf6857c627653edb7bb4cff45d57e518ce1a6dbb29666ecb
6
+ metadata.gz: 20e405c5105a2b00d04e20669c4304a73ad21ea6490876dcc4321eb8ef5f837f0f488cb2b2aaef8b36cf5d13b2551920d5b0da88750299cec071ded07a18e4a6
7
+ data.tar.gz: 0e0761e611fda6e8fef0ddbbfa23b1f3a13bb9a2a02d0cf13e91b0f372545dbc812ac6af7b8e0484723946ef54cae57678d871a34883aa7c58b4c167643e925a
data/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # Itamae [![Gem Version](https://badge.fury.io/rb/itamae.svg)](http://badge.fury.io/rb/itamae) [![Code Climate](https://codeclimate.com/github/ryotarai/itamae/badges/gpa.svg)](https://codeclimate.com/github/ryotarai/itamae) [![wercker status](https://app.wercker.com/status/d44df82d2f4529ff664f32fa54ce12f5/s/master "wercker status")](https://app.wercker.com/project/bykey/d44df82d2f4529ff664f32fa54ce12f5) [![Gitter](https://badges.gitter.im/Join Chat.svg)](https://gitter.im/ryotarai/itamae?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
1
+ # Itamae [![Gem Version](https://badge.fury.io/rb/itamae.svg)](http://badge.fury.io/rb/itamae) [![Code Climate](https://codeclimate.com/github/ryotarai/itamae/badges/gpa.svg)](https://codeclimate.com/github/ryotarai/itamae) [![wercker status](https://app.wercker.com/status/3e7be3b982d3671940a07e3ef45d9f5f/s "wercker status")](https://app.wercker.com/project/bykey/3e7be3b982d3671940a07e3ef45d9f5f) [![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/itamae-kitchen/itamae?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge)
2
2
 
3
3
  Simple and lightweight configuration management tool inspired by Chef.
4
4
 
data/Rakefile CHANGED
@@ -46,6 +46,7 @@ namespace :spec do
46
46
  cmd << " -j spec/integration/recipes/node.json"
47
47
  cmd << " spec/integration/recipes/default.rb"
48
48
  cmd << " spec/integration/recipes/default2.rb"
49
+ cmd << " spec/integration/recipes/redefine.rb"
49
50
 
50
51
  puts cmd
51
52
  system cmd
@@ -7,6 +7,7 @@ module Itamae
7
7
  class Formatter
8
8
  attr_accessor :colored
9
9
  attr_accessor :depth
10
+ attr_accessor :color
10
11
 
11
12
  INDENT_LENGTH = 3
12
13
 
@@ -19,7 +20,7 @@ module Itamae
19
20
  def call(severity, datetime, progname, msg)
20
21
  log = "%s : %s%s\n" % ["%5s" % severity, ' ' * INDENT_LENGTH * depth , msg2str(msg)]
21
22
  if colored
22
- color(log, severity)
23
+ colorize(log, severity)
23
24
  else
24
25
  log
25
26
  end
@@ -32,6 +33,14 @@ module Itamae
32
33
  @depth -= 1
33
34
  end
34
35
 
36
+ def color(code)
37
+ @prev_color = @color
38
+ @color = code
39
+ yield
40
+ ensure
41
+ @color = @prev_color
42
+ end
43
+
35
44
  private
36
45
  def msg2str(msg)
37
46
  case msg
@@ -45,17 +54,21 @@ module Itamae
45
54
  end
46
55
  end
47
56
 
48
- def color(str, severity)
49
- color_code = case severity
50
- when "INFO"
51
- :green
52
- when "WARN"
53
- :magenta
54
- when "ERROR"
55
- :red
56
- else
57
- :clear
58
- end
57
+ def colorize(str, severity)
58
+ if @color
59
+ color_code = @color
60
+ else
61
+ color_code = case severity
62
+ when "INFO"
63
+ :clear
64
+ when "WARN"
65
+ :magenta
66
+ when "ERROR"
67
+ :red
68
+ else
69
+ :clear
70
+ end
71
+ end
59
72
  ANSI.public_send(color_code) { str }
60
73
  end
61
74
  end
@@ -73,7 +86,7 @@ module Itamae
73
86
  @log_device = value
74
87
  @logger = create_logger
75
88
  end
76
-
89
+
77
90
  private
78
91
 
79
92
  def create_logger
@@ -80,6 +80,12 @@ module Itamae
80
80
  end
81
81
 
82
82
  def define(name, params = {}, &block)
83
+ class_name = Resource.get_resource_class_name(name)
84
+ if Resource.const_defined?(class_name)
85
+ Logger.warn "Redefine class. (#{class_name})"
86
+ return
87
+ end
88
+
83
89
  Resource.const_set(
84
90
  Resource.get_resource_class_name(name),
85
91
  Definition.create_class(name, params, &block)
@@ -205,11 +205,15 @@ module Itamae
205
205
  if current_value.nil? && value.nil?
206
206
  # ignore
207
207
  elsif current_value.nil? && !value.nil?
208
- Logger.info "#{key} will be '#{value}'"
208
+ Logger.formatter.color :green do
209
+ Logger.info "#{key} will be '#{value}'"
210
+ end
209
211
  elsif current_value == value || value.nil?
210
212
  Logger.debug "#{key} will not change (current value is '#{current_value}')"
211
213
  else
212
- Logger.info "#{key} will change from '#{current_value}' to '#{value}'"
214
+ Logger.formatter.color :green do
215
+ Logger.info "#{key} will change from '#{current_value}' to '#{value}'"
216
+ end
213
217
  end
214
218
  end
215
219
  end
@@ -310,9 +314,7 @@ module Itamae
310
314
  end
311
315
 
312
316
  def updated!
313
- unless @updated
314
- Logger.debug "This resource is updated."
315
- end
317
+ Logger.debug "This resource is updated."
316
318
  @updated = true
317
319
  end
318
320
 
@@ -1 +1 @@
1
- 1.1.7
1
+ 1.1.8
@@ -108,3 +108,7 @@ describe file('/tmp/never_exist4') do
108
108
  it { should_not be_file }
109
109
  end
110
110
 
111
+ describe file('/tmp/created_in_redefine') do
112
+ it { should be_file }
113
+ its(:content) { should match(/first/) }
114
+ end
@@ -0,0 +1,20 @@
1
+ # spec/integration/recipes/redefine.rb
2
+ define :echo_hello, version: nil do
3
+ file "put file in redefine.rb" do
4
+ action :create
5
+ path "/tmp/created_in_redefine"
6
+ content 'first'
7
+ end
8
+ end
9
+
10
+ # Duplicated definitions
11
+ define :echo_hello, version: nil do
12
+ file "put file in redefine.rb" do
13
+ action :create
14
+ path "/tmp/created_in_redefine"
15
+ content 'second'
16
+ end
17
+ end
18
+
19
+ # Execute
20
+ echo_hello "execute echo_hello!"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: itamae
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.7
4
+ version: 1.1.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryota Arai
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-02-12 00:00:00.000000000 Z
11
+ date: 2015-02-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -190,6 +190,7 @@ files:
190
190
  - spec/integration/recipes/hello.txt
191
191
  - spec/integration/recipes/included.rb
192
192
  - spec/integration/recipes/node.json
193
+ - spec/integration/recipes/redefine.rb
193
194
  - spec/integration/spec_helper.rb
194
195
  - spec/unit/lib/itamae/config_spec.rb
195
196
  - spec/unit/lib/itamae/logger_spec.rb
@@ -233,6 +234,7 @@ test_files:
233
234
  - spec/integration/recipes/hello.txt
234
235
  - spec/integration/recipes/included.rb
235
236
  - spec/integration/recipes/node.json
237
+ - spec/integration/recipes/redefine.rb
236
238
  - spec/integration/spec_helper.rb
237
239
  - spec/unit/lib/itamae/config_spec.rb
238
240
  - spec/unit/lib/itamae/logger_spec.rb