itamae 1.1.0 → 1.1.1
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 +8 -1
- data/lib/itamae/backend.rb +4 -0
- data/lib/itamae/resource.rb +1 -0
- data/lib/itamae/resource/base.rb +11 -0
- data/lib/itamae/resource/remote_directory.rb +84 -0
- data/lib/itamae/version.txt +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 44eee9b5132dfd112bce4aab19c8c2eb682f0594
|
4
|
+
data.tar.gz: 6b734f3066592d75c6010e84c7fb8d7a04bce474
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7dea2c537c25ee9df8969bae5028ad0820e9e32517cf0d1b4455b2c52dd326b22a77d9131cf894aeaa02a42a469bd93ccbf5ee6cb6558f093be0dba2049a4ff6
|
7
|
+
data.tar.gz: 118451e0e59cbbb5e679a1aa8344fda380ed251ac4121937a0b72f1935dc1b64a98b3ce9dca649b71cea7fa80d18b0af3730f5a94706bc1a386d7a658a6e3dff
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,13 @@
|
|
1
|
+
## v1.1.1
|
2
|
+
|
3
|
+
Features
|
4
|
+
|
5
|
+
- New resource `remote_directory` which transfers a directory from local to remote like `remote_file` resource. (Thanks to @k0kubun)
|
6
|
+
- https://github.com/ryotarai/itamae/pull/66
|
7
|
+
|
1
8
|
## v1.1.0
|
2
9
|
|
3
10
|
Incompatible changes
|
4
11
|
|
5
|
-
- `uid` and `gid` attributes of `user` resource
|
12
|
+
- `uid` and `gid` attributes of `user` resource accept only Integer. (https://github.com/ryotarai/itamae/pull/65)
|
6
13
|
|
data/lib/itamae/backend.rb
CHANGED
data/lib/itamae/resource.rb
CHANGED
@@ -2,6 +2,7 @@ require 'itamae'
|
|
2
2
|
require 'itamae/resource/base'
|
3
3
|
require 'itamae/resource/file'
|
4
4
|
require 'itamae/resource/package'
|
5
|
+
require 'itamae/resource/remote_directory'
|
5
6
|
require 'itamae/resource/remote_file'
|
6
7
|
require 'itamae/resource/directory'
|
7
8
|
require 'itamae/resource/template'
|
data/lib/itamae/resource/base.rb
CHANGED
@@ -236,6 +236,17 @@ module Itamae
|
|
236
236
|
backend.send_file(src, dst)
|
237
237
|
end
|
238
238
|
|
239
|
+
def send_directory(src, dst)
|
240
|
+
Logger.debug "Sending a directory from '#{src}' to '#{dst}'..."
|
241
|
+
unless ::File.directory?(src)
|
242
|
+
raise Error, "'#{src}' is not directory."
|
243
|
+
end
|
244
|
+
unless ::File.exist?(src)
|
245
|
+
raise Error, "The directory '#{src}' doesn't exist."
|
246
|
+
end
|
247
|
+
backend.send_directory(src, dst)
|
248
|
+
end
|
249
|
+
|
239
250
|
def do_not_run_because_of_only_if?
|
240
251
|
@only_if_command &&
|
241
252
|
run_command(@only_if_command, error: false).exit_status != 0
|
@@ -0,0 +1,84 @@
|
|
1
|
+
require 'itamae'
|
2
|
+
|
3
|
+
module Itamae
|
4
|
+
module Resource
|
5
|
+
class RemoteDirectory < Base
|
6
|
+
define_attribute :action, default: :create
|
7
|
+
define_attribute :path, type: String, default_name: true
|
8
|
+
define_attribute :source, type: String, required: true
|
9
|
+
define_attribute :mode, type: String
|
10
|
+
define_attribute :owner, type: String
|
11
|
+
define_attribute :group, type: String
|
12
|
+
|
13
|
+
def pre_action
|
14
|
+
directory = ::File.expand_path(attributes.source, ::File.dirname(@recipe.path))
|
15
|
+
src = ::File.expand_path(directory, ::File.dirname(@recipe.path))
|
16
|
+
|
17
|
+
@temppath = ::File.join(runner.tmpdir, Time.now.to_f.to_s)
|
18
|
+
send_directory(src, @temppath)
|
19
|
+
|
20
|
+
case @current_action
|
21
|
+
when :create
|
22
|
+
attributes.exist = true
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def set_current_attributes
|
27
|
+
current.exist = run_specinfra(:check_file_is_directory, attributes.path)
|
28
|
+
|
29
|
+
if current.exist
|
30
|
+
current.mode = run_specinfra(:get_file_mode, attributes.path).stdout.chomp
|
31
|
+
current.owner = run_specinfra(:get_file_owner_user, attributes.path).stdout.chomp
|
32
|
+
current.group = run_specinfra(:get_file_owner_group, attributes.path).stdout.chomp
|
33
|
+
else
|
34
|
+
current.mode = nil
|
35
|
+
current.owner = nil
|
36
|
+
current.group = nil
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def show_differences
|
41
|
+
super
|
42
|
+
|
43
|
+
if current.exist
|
44
|
+
diff = run_command(["diff", "-u", attributes.path, @temppath], error: false)
|
45
|
+
if diff.exit_status == 0
|
46
|
+
# no change
|
47
|
+
Logger.debug "directory content will not change"
|
48
|
+
else
|
49
|
+
Logger.info "diff:"
|
50
|
+
diff.stdout.each_line do |line|
|
51
|
+
Logger.info "#{line.strip}"
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
def action_create(options)
|
58
|
+
if attributes.mode
|
59
|
+
run_specinfra(:change_file_mode, @temppath, attributes.mode)
|
60
|
+
end
|
61
|
+
if attributes.owner || attributes.group
|
62
|
+
run_specinfra(:change_file_owner, @temppath, attributes.owner, attributes.group)
|
63
|
+
end
|
64
|
+
|
65
|
+
if run_specinfra(:check_file_is_file, attributes.path)
|
66
|
+
unless check_command(["diff", "-q", @temppath, attributes.path])
|
67
|
+
updated!
|
68
|
+
end
|
69
|
+
else
|
70
|
+
updated!
|
71
|
+
end
|
72
|
+
|
73
|
+
run_specinfra(:remove_file, attributes.path)
|
74
|
+
run_specinfra(:move_file, @temppath, attributes.path)
|
75
|
+
end
|
76
|
+
|
77
|
+
def action_delete(options)
|
78
|
+
if run_specinfra(:check_file_is_directory, attributes.path)
|
79
|
+
run_specinfra(:remove_file, attributes.path)
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
data/lib/itamae/version.txt
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.1.
|
1
|
+
1.1.1
|
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.
|
4
|
+
version: 1.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryota Arai
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-12-
|
11
|
+
date: 2014-12-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|
@@ -173,6 +173,7 @@ files:
|
|
173
173
|
- lib/itamae/resource/link.rb
|
174
174
|
- lib/itamae/resource/local_ruby_block.rb
|
175
175
|
- lib/itamae/resource/package.rb
|
176
|
+
- lib/itamae/resource/remote_directory.rb
|
176
177
|
- lib/itamae/resource/remote_file.rb
|
177
178
|
- lib/itamae/resource/service.rb
|
178
179
|
- lib/itamae/resource/template.rb
|