itamae 1.9.6 → 1.9.7.pre

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: 22cb29d51218a3ccdd9cdbe7639e845304de437f
4
- data.tar.gz: c0df1a26bed2e1525edeb1f525296adcae879916
3
+ metadata.gz: 063ccd6fdae32d852d450265017ede39586ea176
4
+ data.tar.gz: e4456e84fc2421e01c86247f926aa6625f6921c5
5
5
  SHA512:
6
- metadata.gz: 1ea7c9dda884abe52f924b092efb824471f0aebf75d926a1cf609f3dd2cefd3bc82a9d2cd265196974886b3f1bbe8dea87fc580789b3786e89a132e4962abbd3
7
- data.tar.gz: dae45b57a02792e4657a75716fd473f23cc3b2bb6f869284c3785d01b063692a3f2b2307d748d9cdd31be32b67afbb9894c6ba714f731e1b29adb686afd00e47
6
+ metadata.gz: b88477096228dfad7451b746f41ccf727ee5ddf0b0da023d019e348467cd591e4f014cb4cd1417317599dbeb6e288e67657c775490db98b9064865e109d30191
7
+ data.tar.gz: e73bfa3cf90a183b5e6ef4931679d56bf88d420d0c946c591fda609a167c3fb4d8cb9298565b5d0cd142f09badc8226e3d697d73c8c68bb4a64c01fd955d3206
@@ -1,13 +1,20 @@
1
+ ## v1.9.7 (pre)
2
+
3
+ Bugfixes
4
+
5
+ - [Mark a file as updated in dry-run mode (by @ryotarai)](https://github.com/itamae-kitchen/itamae/pull/208)
6
+ - [Do not surround LF with the ANSI escape sequence (by @daic-h)](https://github.com/itamae-kitchen/itamae/pull/209)
7
+
1
8
  ## v1.9.6
2
9
 
3
10
  Features
4
11
 
5
- - [Introduce `--detailed-exitcode` option.](https://github.com/itamae-kitchen/itamae/pull/206)
12
+ - [Introduce `--detailed-exitcode` option. (by @ryotarai)](https://github.com/itamae-kitchen/itamae/pull/206)
6
13
 
7
14
  Bugfixes
8
15
 
9
- - [If `git rev-list` fails, do `git fetch origin`](https://github.com/itamae-kitchen/itamae/pull/205)
10
- - [If gid passed to user resource is a String, treat it as group name.](https://github.com/itamae-kitchen/itamae/pull/207)
16
+ - [If `git rev-list` fails, do `git fetch origin` (by @ryotarai)](https://github.com/itamae-kitchen/itamae/pull/205)
17
+ - [If gid passed to user resource is a String, treat it as group name. (by @ryotarai)](https://github.com/itamae-kitchen/itamae/pull/207)
11
18
 
12
19
  ## v1.9.5
13
20
 
@@ -48,7 +55,7 @@ Improvements
48
55
 
49
56
  Features
50
57
 
51
- - [Add `get`, `post`, `put`, `delete` and `options` actions to `http_request` resource](https://github.com/itamae-kitchen/itamae/pull/184)
58
+ - [Add `get`, `post`, `put`, `delete` and `options` actions to `http_request` resource (by @hico-horiuchi)](https://github.com/itamae-kitchen/itamae/pull/184)
52
59
 
53
60
  ## v1.9.0
54
61
 
@@ -73,12 +73,9 @@ module Itamae
73
73
  attr_accessor :colored
74
74
 
75
75
  def call(severity, datetime, progname, msg)
76
- log = "%s : %s\n" % ["%5s" % severity, msg2str(msg)]
77
- if colored
78
- colorize(log, severity)
79
- else
80
- log
81
- end
76
+ log = "%s : %s" % ["%5s" % severity, msg2str(msg)]
77
+
78
+ (colored ? colorize(log, severity) : log) + "\n"
82
79
  end
83
80
 
84
81
  def color(code)
@@ -30,9 +30,11 @@ module Itamae
30
30
  end
31
31
 
32
32
  send_tempfile
33
+ compare_file
33
34
  end
34
35
 
35
36
  def set_current_attributes
37
+ current.modified = false
36
38
  if current.exist
37
39
  current.mode = run_specinfra(:get_file_mode, attributes.path).stdout.chomp
38
40
  current.owner = run_specinfra(:get_file_owner_user, attributes.path).stdout.chomp
@@ -51,7 +53,7 @@ module Itamae
51
53
  super
52
54
 
53
55
  if @temppath && @current_action != :delete
54
- compare_file
56
+ show_content_diff
55
57
  end
56
58
  end
57
59
 
@@ -60,19 +62,7 @@ module Itamae
60
62
  run_command(["touch", attributes.path])
61
63
  end
62
64
 
63
- if @temppath
64
- if run_specinfra(:check_file_is_file, attributes.path)
65
- unless check_command(["diff", "-q", @temppath, attributes.path])
66
- # the file is modified
67
- updated!
68
- end
69
- else
70
- # new file
71
- updated!
72
- end
73
- end
74
-
75
- change_target = @temppath && updated? ? @temppath : attributes.path
65
+ change_target = attributes.modified ? @temppath : attributes.path
76
66
 
77
67
  if attributes.mode
78
68
  run_specinfra(:change_file_mode, change_target, attributes.mode)
@@ -82,7 +72,7 @@ module Itamae
82
72
  run_specinfra(:change_file_owner, change_target, attributes.owner, attributes.group)
83
73
  end
84
74
 
85
- if @temppath && updated?
75
+ if attributes.modified
86
76
  run_specinfra(:move_file, @temppath, attributes.path)
87
77
  end
88
78
  end
@@ -110,29 +100,39 @@ module Itamae
110
100
  run_specinfra(:change_file_group, @temppath, group)
111
101
  end
112
102
 
113
- unless check_command(["diff", "-q", @temppath, attributes.path])
114
- # the file is modified
115
- updated!
116
- end
117
-
118
103
  run_specinfra(:move_file, @temppath, attributes.path)
119
104
  end
120
105
 
121
106
  private
122
107
 
123
- def compare_file
124
- compare_to = if current.exist
125
- attributes.path
126
- else
127
- '/dev/null'
128
- end
129
-
130
- diff = run_command(["diff", "-u", compare_to, @temppath], error: false)
131
- if diff.exit_status == 0
132
- # no change
133
- Itamae.logger.debug "file content will not change"
108
+ def compare_to
109
+ if current.exist
110
+ attributes.path
134
111
  else
112
+ '/dev/null'
113
+ end
114
+ end
115
+
116
+ def compare_file
117
+ attributes.modified = false
118
+ unless @temppath
119
+ return
120
+ end
121
+
122
+ case run_command(["diff", "-q", compare_to, @temppath], error: false).exit_status
123
+ when 1
124
+ # diff found
125
+ attributes.modified = true
126
+ when 2
127
+ # error
128
+ raise Itamae::Backend::CommandExecutionError, "diff command exited with 2"
129
+ end
130
+ end
131
+
132
+ def show_content_diff
133
+ if attributes.modified
135
134
  Itamae.logger.info "diff:"
135
+ diff = run_command(["diff", "-u", compare_to, @temppath], error: false)
136
136
  diff.stdout.each_line do |line|
137
137
  color = if line.start_with?('+')
138
138
  :green
@@ -146,6 +146,9 @@ module Itamae
146
146
  end
147
147
  end
148
148
  runner.handler.event(:file_content_changed, diff: diff.stdout)
149
+ else
150
+ # no change
151
+ Itamae.logger.debug "file content will not change"
149
152
  end
150
153
  end
151
154
 
@@ -7,6 +7,9 @@ module Itamae
7
7
  class HttpRequest < File
8
8
  RedirectLimitExceeded = Class.new(StandardError)
9
9
 
10
+ alias_method :_action_create, :action_create
11
+ undef_method :action_create, :action_delete, :action_edit
12
+
10
13
  define_attribute :action, default: :get
11
14
  define_attribute :headers, type: Hash, default: {}
12
15
  define_attribute :message, type: String, default: ""
@@ -14,6 +17,23 @@ module Itamae
14
17
  define_attribute :url, type: String, required: true
15
18
 
16
19
  def pre_action
20
+ attributes.exist = true
21
+ attributes.content = fetch_content
22
+
23
+ send_tempfile
24
+ compare_file
25
+ end
26
+
27
+ def show_differences
28
+ current.mode = current.mode.rjust(4, '0') if current.mode
29
+ attributes.mode = attributes.mode.rjust(4, '0') if attributes.mode
30
+
31
+ super
32
+
33
+ show_content_diff
34
+ end
35
+
36
+ def fetch_content
17
37
  uri = URI.parse(attributes.url)
18
38
  response = nil
19
39
  redirects_followed = 0
@@ -42,29 +62,27 @@ module Itamae
42
62
  end
43
63
  end
44
64
 
45
- attributes.content = response.body
46
-
47
- super
65
+ response.body
48
66
  end
49
67
 
50
68
  def action_delete(options)
51
- action_create(options)
69
+ _action_create(options)
52
70
  end
53
71
 
54
72
  def action_get(options)
55
- action_create(options)
73
+ _action_create(options)
56
74
  end
57
75
 
58
76
  def action_options(options)
59
- action_create(options)
77
+ _action_create(options)
60
78
  end
61
79
 
62
80
  def action_post(options)
63
- action_create(options)
81
+ _action_create(options)
64
82
  end
65
83
 
66
84
  def action_put(options)
67
- action_create(options)
85
+ _action_create(options)
68
86
  end
69
87
  end
70
88
  end
@@ -1,3 +1,3 @@
1
1
  module Itamae
2
- VERSION = "1.9.6"
2
+ VERSION = "1.9.7.pre"
3
3
  end
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.9.6
4
+ version: 1.9.7.pre
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryota Arai
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-04-07 00:00:00.000000000 Z
11
+ date: 2016-04-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -308,9 +308,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
308
308
  version: '0'
309
309
  required_rubygems_version: !ruby/object:Gem::Requirement
310
310
  requirements:
311
- - - ">="
311
+ - - ">"
312
312
  - !ruby/object:Gem::Version
313
- version: '0'
313
+ version: 1.3.1
314
314
  requirements: []
315
315
  rubyforge_project:
316
316
  rubygems_version: 2.5.1