itamae 1.3.4 → 1.3.5
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 +4 -4
- data/CHANGELOG.md +10 -0
- data/README.md +5 -1
- data/lib/itamae/resource/file.rb +32 -13
- data/lib/itamae/version.txt +1 -1
- data/spec/integration/default_spec.rb +10 -3
- data/spec/integration/recipes/default.rb +15 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9b5da1c2ff4d918217ee4f29df62cb0660fdb7a9
|
4
|
+
data.tar.gz: 18078c7885176596c4c3396a8908ff5cc8baa72c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cc92d067302c74eabb5e20c0856540bf6a39486ed520f43744346150c82a69e338de577fa44277156fbdad8bb40ee67a1ee08bb28330c4ef8d6c81bdd414001a
|
7
|
+
data.tar.gz: 3932d9c1c1053356b4bb45fbfbbdadf73a35e2edcc7025ad12241b21b645e90834ea55c21bd7d3042a7d00830e38e666a45dadec937f6299eaa01f2092b8ba3c
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,13 @@
|
|
1
|
+
## v1.3.5
|
2
|
+
|
3
|
+
Improvements
|
4
|
+
|
5
|
+
- [`create` action of `file` resource without `content` attribute changes mode and owner without touching the content of the file](https://github.com/itamae-kitchen/itamae/compare/itamae-kitchen:d4a0abc...itamae-kitchen:3eae144)
|
6
|
+
|
7
|
+
Bugfixes
|
8
|
+
|
9
|
+
- [Edit action of file resource should set owner and mode if specified (by @eagletmt)](https://github.com/itamae-kitchen/itamae/pull/143)
|
10
|
+
|
1
11
|
## v1.3.4
|
2
12
|
|
3
13
|
Improvements
|
data/README.md
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
# Itamae [](http://badge.fury.io/rb/itamae) [](https://codeclimate.com/github/ryotarai/itamae) [](https://app.wercker.com/project/bykey/3e7be3b982d3671940a07e3ef45d9f5f) [](http://badge.fury.io/rb/itamae) [](https://codeclimate.com/github/ryotarai/itamae) [](https://app.wercker.com/project/bykey/3e7be3b982d3671940a07e3ef45d9f5f) [](https://itamae-slackin.herokuapp.com/)
|
2
2
|
|
3
3
|
Simple and lightweight configuration management tool inspired by Chef.
|
4
4
|
|
@@ -37,6 +37,10 @@ $ bundle exec rake spec
|
|
37
37
|
|
38
38
|
- [(in Japanese) Itamae - Infra as Code 現状確認会](https://speakerdeck.com/ryotarai/itamae-infra-as-code-xian-zhuang-que-ren-hui)
|
39
39
|
|
40
|
+
## Get Involved
|
41
|
+
|
42
|
+
[Don't hesitate to join our Slack team!](https://itamae-slackin.herokuapp.com/)
|
43
|
+
|
40
44
|
## Contributing
|
41
45
|
|
42
46
|
If you have a problem, please [create an issue](https://github.com/ryotarai/itamae/issues/new) or a pull request.
|
data/lib/itamae/resource/file.rb
CHANGED
@@ -5,7 +5,7 @@ module Itamae
|
|
5
5
|
class File < Base
|
6
6
|
define_attribute :action, default: :create
|
7
7
|
define_attribute :path, type: String, default_name: true
|
8
|
-
define_attribute :content, type: String, default:
|
8
|
+
define_attribute :content, type: String, default: nil
|
9
9
|
define_attribute :mode, type: String
|
10
10
|
define_attribute :owner, type: String
|
11
11
|
define_attribute :group, type: String
|
@@ -54,24 +54,28 @@ module Itamae
|
|
54
54
|
end
|
55
55
|
|
56
56
|
def action_create(options)
|
57
|
+
change_target = @temppath || attributes.path
|
58
|
+
|
57
59
|
if attributes.mode
|
58
|
-
run_specinfra(:change_file_mode,
|
60
|
+
run_specinfra(:change_file_mode, change_target, attributes.mode)
|
59
61
|
end
|
60
62
|
if attributes.owner || attributes.group
|
61
|
-
run_specinfra(:change_file_owner,
|
63
|
+
run_specinfra(:change_file_owner, change_target, attributes.owner, attributes.group)
|
62
64
|
end
|
63
65
|
|
64
|
-
if
|
65
|
-
|
66
|
-
|
66
|
+
if @temppath
|
67
|
+
if run_specinfra(:check_file_is_file, attributes.path)
|
68
|
+
unless check_command(["diff", "-q", @temppath, attributes.path])
|
69
|
+
# the file is modified
|
70
|
+
updated!
|
71
|
+
end
|
72
|
+
else
|
73
|
+
# new file
|
67
74
|
updated!
|
68
75
|
end
|
69
|
-
else
|
70
|
-
# new file
|
71
|
-
updated!
|
72
|
-
end
|
73
76
|
|
74
|
-
|
77
|
+
run_specinfra(:move_file, @temppath, attributes.path)
|
78
|
+
end
|
75
79
|
end
|
76
80
|
|
77
81
|
def action_delete(options)
|
@@ -81,8 +85,18 @@ module Itamae
|
|
81
85
|
end
|
82
86
|
|
83
87
|
def action_edit(options)
|
84
|
-
|
85
|
-
|
88
|
+
if attributes.mode
|
89
|
+
run_specinfra(:change_file_mode, @temppath, attributes.mode)
|
90
|
+
else
|
91
|
+
run_command(['chmod', '--reference', attributes.path, @temppath])
|
92
|
+
end
|
93
|
+
|
94
|
+
if attributes.owner || attributes.group
|
95
|
+
run_specinfra(:change_file_owner, @temppath, attributes.owner, attributes.group)
|
96
|
+
else
|
97
|
+
run_command(['chown', '--reference', attributes.path, @temppath])
|
98
|
+
end
|
99
|
+
|
86
100
|
run_specinfra(:move_file, @temppath, attributes.path)
|
87
101
|
end
|
88
102
|
|
@@ -116,6 +130,11 @@ module Itamae
|
|
116
130
|
end
|
117
131
|
|
118
132
|
def send_tempfile
|
133
|
+
if current.exist && !attributes.content && !content_file
|
134
|
+
@temppath = nil
|
135
|
+
return
|
136
|
+
end
|
137
|
+
|
119
138
|
begin
|
120
139
|
src = if content_file
|
121
140
|
content_file
|
data/lib/itamae/version.txt
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.3.
|
1
|
+
1.3.5
|
@@ -163,9 +163,9 @@ end
|
|
163
163
|
describe file('/tmp/file_edit_sample') do
|
164
164
|
it { should be_file }
|
165
165
|
its(:content) { should eq("Hello, Itamae") }
|
166
|
-
it { should be_mode
|
167
|
-
it { should be_owned_by "
|
168
|
-
it { should be_grouped_into "
|
166
|
+
it { should be_mode 400 }
|
167
|
+
it { should be_owned_by "itamae2" }
|
168
|
+
it { should be_grouped_into "itamae2" }
|
169
169
|
end
|
170
170
|
|
171
171
|
describe file('/home/itamae2') do
|
@@ -173,3 +173,10 @@ describe file('/home/itamae2') do
|
|
173
173
|
it { should be_owned_by "itamae2" }
|
174
174
|
it { should be_grouped_into "itamae2" }
|
175
175
|
end
|
176
|
+
|
177
|
+
describe file('/tmp/file_create_without_content') do
|
178
|
+
its(:content) { should eq("Hello, World") }
|
179
|
+
it { should be_mode 600 }
|
180
|
+
it { should be_owned_by "itamae" }
|
181
|
+
it { should be_grouped_into "itamae" }
|
182
|
+
end
|
@@ -263,6 +263,18 @@ end
|
|
263
263
|
|
264
264
|
#####
|
265
265
|
|
266
|
+
file "/tmp/file_create_without_content" do
|
267
|
+
content "Hello, World"
|
268
|
+
end
|
269
|
+
|
270
|
+
file "/tmp/file_create_without_content" do
|
271
|
+
owner "itamae"
|
272
|
+
group "itamae"
|
273
|
+
mode "600"
|
274
|
+
end
|
275
|
+
|
276
|
+
#####
|
277
|
+
|
266
278
|
execute 'true' do
|
267
279
|
verify 'true'
|
268
280
|
end
|
@@ -318,6 +330,9 @@ end
|
|
318
330
|
|
319
331
|
file '/tmp/file_edit_sample' do
|
320
332
|
action :edit
|
333
|
+
owner 'itamae2'
|
334
|
+
group 'itamae2'
|
335
|
+
mode '400'
|
321
336
|
block do |content|
|
322
337
|
content.gsub!('world', 'Itamae')
|
323
338
|
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.3.
|
4
|
+
version: 1.3.5
|
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-07-
|
11
|
+
date: 2015-07-13 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|