s3rsync 0.1.5 → 0.1.6
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 +8 -8
- data/README.md +9 -6
- data/lib/s3rsync/base.rb +2 -7
- data/lib/s3rsync/cli.rb +2 -1
- data/lib/s3rsync/sync.rb +14 -9
- data/lib/s3rsync/version.rb +1 -1
- data/s3rsync.json.example +7 -0
- data/spec/sync_spec.rb +5 -2
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
YjEyMWZhMDA1MDdmNTRkYWI4MjllMjhkMmQxZmFkMGRjMzVmOWQ1ZQ==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
OTcyYzAyMjg1YWRhYTFhYzI3NjYwMTdjNmRiMTA4YTAyMjVlN2M5Zg==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
MzM5OGE1MGRiYjhkYjZhOWU4OTk2MGE1MDBlMWU5YWM5ZTNkNTg3NmQzM2E3
|
10
|
+
OGM5OWZlZGIxN2U3ZGE4ZGNkN2FiNGI5ZmZiMjJhMjRkNzM5NjBmZWUwMzMz
|
11
|
+
NTUwZTc1NjU0NWVmY2M0MjYzYTc5ZGZiYzAwYmY3ODkxMzY1NDM=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
YzZjMmFhNTE5OTI2NzdlNjdkMjg4MTZhMTcxZDhmNzFlMTYxZWQ3OGNmODc3
|
14
|
+
M2VhZTgwYTUyOGY4ZGU0MzI0NzMwYTdhODcxNGM1NzIxNmMxMWJkNGE1MDk3
|
15
|
+
ODk3YmQzM2FmMDA1MGE1YTllY2M5MWY4NTY4MTI1OWM3MTRkYTU=
|
data/README.md
CHANGED
@@ -8,12 +8,12 @@ s3rsync
|
|
8
8
|
[travis]: http://travis-ci.org/idevops/s3rsync
|
9
9
|
[coveralls]: https://coveralls.io/r/idevops/s3rsync
|
10
10
|
|
11
|
-
Wrapper gem to sync files with s3cmd tool.
|
11
|
+
Wrapper gem used to sync files with s3cmd tool.
|
12
12
|
Remote update protocol between local set of files and S3 storage.
|
13
13
|
|
14
14
|
Prerequisites
|
15
15
|
-------------
|
16
|
-
|
16
|
+
You will need the following:
|
17
17
|
|
18
18
|
- Ruby 1.9+
|
19
19
|
- Bundler
|
@@ -35,14 +35,17 @@ Or install it yourself as:
|
|
35
35
|
|
36
36
|
## Usage
|
37
37
|
|
38
|
-
$ s3rsync help [COMMAND]
|
39
|
-
$ s3rsync upload -c, --config-path=CONFIG_PATH -
|
40
|
-
$ s3rsync download -c, --config-path=CONFIG_PATH -
|
38
|
+
$ s3rsync help [COMMAND] # Describe expanded available commands or one specific command
|
39
|
+
$ s3rsync upload -c, --config-path=CONFIG_PATH -p, --path=PATH # Sync local path to s3 location
|
40
|
+
$ s3rsync download -c, --config-path=CONFIG_PATH -p, --path=PATH # Sync from s3 to local path
|
41
|
+
|
42
|
+
## Configuration
|
41
43
|
|
44
|
+
json config [s3rsync.json.example](https://github.com/idevops/s3rsync/blob/master/s3rsync.json.example)
|
42
45
|
|
43
46
|
## Contributing
|
44
47
|
|
45
|
-
1. Fork it
|
48
|
+
1. [Fork it]( https://github.com/idevops/s3rsync/fork )
|
46
49
|
2. Create your feature branch (`git checkout -b my-new-feature`)
|
47
50
|
3. Commit your changes (`git commit -am 'Add some feature'`)
|
48
51
|
4. Push to the branch (`git push origin my-new-feature`)
|
data/lib/s3rsync/base.rb
CHANGED
@@ -23,14 +23,9 @@ module S3Rsync
|
|
23
23
|
statsd
|
24
24
|
end
|
25
25
|
|
26
|
-
def error_exit(msg)
|
26
|
+
def error_exit(msg, exit_code = 1)
|
27
27
|
@log.error msg
|
28
|
-
|
29
|
-
end
|
30
|
-
|
31
|
-
def error_exit(msg)
|
32
|
-
@log.error msg
|
33
|
-
return 1
|
28
|
+
exit exit_code
|
34
29
|
end
|
35
30
|
|
36
31
|
def pass_cli(cmd, valid_out_pattern = nil)
|
data/lib/s3rsync/cli.rb
CHANGED
@@ -2,13 +2,14 @@ require 'thor'
|
|
2
2
|
|
3
3
|
module S3Rsync
|
4
4
|
class CLI < Thor
|
5
|
-
|
5
|
+
|
6
6
|
def self.common_opts
|
7
7
|
method_option :path, :aliases => "-p", :required => true
|
8
8
|
method_option :'config-path', :aliases => "-c", :required => true
|
9
9
|
method_option :'s3-prefix', :aliases => "-s", :default => 's3rsync'
|
10
10
|
method_option :'log-path', :aliases => "-l"
|
11
11
|
method_option :'dry-run', :aliases => "-d", :type => :boolean, :default => false
|
12
|
+
method_option :'make-public', :aliases => "-m", :type => :boolean, :default => false
|
12
13
|
end
|
13
14
|
|
14
15
|
desc "upload", "sync from local to s3"
|
data/lib/s3rsync/sync.rb
CHANGED
@@ -14,14 +14,13 @@ module S3Rsync
|
|
14
14
|
@params[:s3_prefix] = opt['s3-prefix']
|
15
15
|
@params[:config_path] = opt['config-path']
|
16
16
|
@params[:s3cmd_conf] = @params[:config_path].sub('.json', '_s3rsync.conf')
|
17
|
+
@params[:dry_run] = opt['dry-run']
|
18
|
+
@params[:make_public] = opt['make-public']
|
17
19
|
@log.debug "@params[:config_path]: #{@params[:config_path]}"
|
18
20
|
begin
|
19
21
|
conf = JSON.parse File.read(@params[:config_path])
|
20
22
|
rescue Exception => e
|
21
|
-
|
22
|
-
@log.error mgs
|
23
|
-
raise mgs
|
24
|
-
exit 1
|
23
|
+
error_exit "ERROR: opening or parsing config file failed: #{e.inspect}"
|
25
24
|
end
|
26
25
|
|
27
26
|
@log.debug "conf: #{conf}"
|
@@ -35,7 +34,7 @@ module S3Rsync
|
|
35
34
|
@log.debug "@statsd: #{@statsd.inspect}"
|
36
35
|
|
37
36
|
init_s3cmd_conf
|
38
|
-
@s3cmd = "s3cmd
|
37
|
+
@s3cmd = "s3cmd"
|
39
38
|
end
|
40
39
|
|
41
40
|
def get_lock(name = 'common')
|
@@ -60,8 +59,7 @@ module S3Rsync
|
|
60
59
|
@log.debug "rendered_template: #{rendered_template}"
|
61
60
|
File.write @params[:s3cmd_conf], rendered_template
|
62
61
|
rescue Exception => e
|
63
|
-
|
64
|
-
exit 1
|
62
|
+
error_exit "generating s3cmd config failed: #{e.inspect}"
|
65
63
|
end
|
66
64
|
@log.info "Dynamic s3cfg generated: #{@params[:s3cmd_conf]}"
|
67
65
|
end
|
@@ -94,10 +92,17 @@ module S3Rsync
|
|
94
92
|
sync_output = 1
|
95
93
|
begin
|
96
94
|
lockfile.lock
|
97
|
-
|
95
|
+
s3cmd_args = {}
|
96
|
+
s3cmd_args['-c'] = @params[:s3cmd_conf]
|
97
|
+
s3cmd_args['--dry-run'] = '' if @params[:dry_run]
|
98
|
+
s3cmd_args['--acl-public'] = '' if @params[:make_public]
|
99
|
+
@log.debug "s3cmd_args: #{s3cmd_args.inspect}"
|
100
|
+
compiled_args = s3cmd_args.to_a.flatten.reject { |v| v.empty? }.join(' ')
|
101
|
+
@log.debug "compiled_args: #{compiled_args.inspect}"
|
102
|
+
cmd = "#{@s3cmd} #{compiled_args} sync #{sync_locations}"
|
98
103
|
@log.debug "cmd: #{cmd}"
|
99
104
|
sync_output = pass_cli cmd
|
100
|
-
@log.debug "sync_output: #{sync_output}"
|
105
|
+
@log.debug "sync_output: #{sync_output.inspect}"
|
101
106
|
rescue Exception => e
|
102
107
|
sync_output = 1
|
103
108
|
@log.error "something wrong while trying to run the sync: #{e.inspect}"
|
data/lib/s3rsync/version.rb
CHANGED
data/spec/sync_spec.rb
CHANGED
@@ -10,6 +10,8 @@ describe S3Rsync::Sync do
|
|
10
10
|
'path' => '/parent_test_dir/test_dir',
|
11
11
|
's3-prefix' => 's3rsync',
|
12
12
|
'config-path' => 'test_json_conf_path.json',
|
13
|
+
'dry-run' => false,
|
14
|
+
'make-public' => false,
|
13
15
|
}
|
14
16
|
}
|
15
17
|
|
@@ -23,6 +25,7 @@ describe S3Rsync::Sync do
|
|
23
25
|
|
24
26
|
let(:s3_conf_path) { opt['config-path'].sub('.json', '_s3rsync.conf') }
|
25
27
|
let(:base_sync_path) { opt['path'].split('/').last }
|
28
|
+
let(:common_args) { ['-c', s3_conf_path].join(' ') }
|
26
29
|
|
27
30
|
before do
|
28
31
|
allow(File).to receive(:read).and_return(nil)
|
@@ -45,7 +48,7 @@ describe S3Rsync::Sync do
|
|
45
48
|
end
|
46
49
|
|
47
50
|
it "uploads dir" do
|
48
|
-
cmd = "s3cmd
|
51
|
+
cmd = "s3cmd #{common_args} sync #{opt['path']}/ s3://#{json_conf['env.static.s3.bucket']}/#{opt['s3-prefix']}/#{base_sync_path}/"
|
49
52
|
allow_any_instance_of(S3Rsync::Sync).to receive(:pass_cli).with(cmd).and_return('Success')
|
50
53
|
|
51
54
|
sync = S3Rsync::Sync.new(opt)
|
@@ -53,7 +56,7 @@ describe S3Rsync::Sync do
|
|
53
56
|
end
|
54
57
|
|
55
58
|
it "downloads dir" do
|
56
|
-
cmd = "s3cmd
|
59
|
+
cmd = "s3cmd #{common_args} sync s3://#{json_conf['env.static.s3.bucket']}/#{opt['s3-prefix']}/#{base_sync_path}/ #{opt['path']}/"
|
57
60
|
allow_any_instance_of(S3Rsync::Sync).to receive(:pass_cli).with(cmd).and_return('Success')
|
58
61
|
|
59
62
|
sync = S3Rsync::Sync.new(opt)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: s3rsync
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- idevops
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-08-
|
11
|
+
date: 2014-08-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|
@@ -203,6 +203,7 @@ files:
|
|
203
203
|
- lib/s3rsync/templates/s3cmd_conf.erb
|
204
204
|
- lib/s3rsync/version.rb
|
205
205
|
- s3rsync.gemspec
|
206
|
+
- s3rsync.json.example
|
206
207
|
- spec/spec_helper.rb
|
207
208
|
- spec/sync_spec.rb
|
208
209
|
homepage: ''
|