sink3 0.0.1 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 1ef001742f3059209bd54b3778591bd9a292d443
4
- data.tar.gz: e6c713ef21bba1549c35aae6d28c94e819b960ae
2
+ SHA256:
3
+ metadata.gz: ff3e1daf52d984a4a933a813cab8eb3062266358b3e11b3eeed34103cc7b80c3
4
+ data.tar.gz: 3dc130fc49e9020effd4576f77fc979f2759c2d65a87aa44e1a6ba3965a2d123
5
5
  SHA512:
6
- metadata.gz: 47c61011df93d6ab1d7a89ef341d7683d25f07ce446fd1a3fe624b6865f1d448464fc04bf03c3b5f82a3f178d73b58e77a838d46a435d78b736d6594477c8245
7
- data.tar.gz: a813ea97a399779eb60cbf0beeba3340c337beb6f3cc939a88d0a3738a00b8d0f4525290badcb35513c6da855cfc8cb4b5292f6a6e9d6b7005af0849fd61878a
6
+ metadata.gz: 33da8314c6d408ae31106123d3a3f3d6d7ce85ac209adf924da94fe06edb4c9e85619992b891bd089ae6f74bda9d54de2ea4b892287f85cd5c5b400ec0a384fe
7
+ data.tar.gz: 463ec18e4df590604cca9c5bcda43dd32fa1c25e3c14c856a91b6d434ff2dab712eeeeafbf4024ac32fd8005dc0ce8de81440ba33bb0157b00a07585290305ae
data/lib/sink3.rb CHANGED
@@ -15,6 +15,8 @@ module Sink3
15
15
 
16
16
  class Configuration
17
17
  attr_accessor :delete_after_upload
18
+ attr_accessor :skip_overwrite
19
+ attr_accessor :verbose
18
20
 
19
21
  def delete_after_upload
20
22
  !!@delete_after_upload
data/lib/sink3/main.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  require 'thor'
2
2
  require 'dotenv'
3
- require 'aws-sdk'
3
+ require 'aws-sdk-v1'
4
4
 
5
5
  lib = File.expand_path('../..', __FILE__)
6
6
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
@@ -9,22 +9,28 @@ require 'sink3/path_crawler'
9
9
 
10
10
  module Sink3
11
11
  class Main < Thor
12
- option :delete, type: :boolean
13
-
12
+ #
14
13
  # option :path, :required => true
15
- desc "Send file to S3", "Send files to S3 in write only mode"
14
+ desc "send", "Send files to S3 in write only mode"
16
15
 
17
- def send(path)
18
- configure
19
- path = Pathname.new(path)
20
- raise "specified path does not exist" unless path.exist?
16
+ option :delete, type: :boolean, desc: "delete origin file on succesful send"
17
+ option :skip_overwrite, type: :boolean, desc: "skip sending file if exists"
18
+ option :verbose, type: :boolean, desc: "verbose"
21
19
 
20
+ def send(*paths)
21
+ configure
22
22
  # overwrite hostname if configured
23
23
  Dotenv.overload('~/.sink3cfg')
24
+
24
25
  validate_env
25
26
 
26
- prefix = path.realdirpath.basename
27
- Sink3::PathCrawler.new(path, prefix).start
27
+ [paths].flatten.each do |path|
28
+ path = Pathname.new(path)
29
+ raise "specified path does not exist" unless path.exist?
30
+ prefix = path.realdirpath.basename
31
+
32
+ Sink3::PathCrawler.new(path, prefix).start
33
+ end
28
34
  end
29
35
 
30
36
  private
@@ -34,6 +40,8 @@ module Sink3
34
40
 
35
41
  Sink3.configure do |config|
36
42
  config.delete_after_upload = options[:delete]
43
+ config.skip_overwrite = options[:skip_overwrite]
44
+ config.verbose = options[:verbose]
37
45
  end
38
46
  end
39
47
 
@@ -44,10 +44,27 @@ module Sink3
44
44
  s3.buckets[ENV['BUCKET']]
45
45
  end
46
46
 
47
+ def check_exists remote_file
48
+ remote_file.exists?
49
+ rescue AWS::S3::Errors::Forbidden
50
+ # expect this error to be returned when file exists
51
+ # and we don't have access to read the file
52
+ true
53
+ end
54
+
47
55
  def send_to_remote
48
- remote_path = "#{ENV['HOSTNAME'].strip}/#{formatted_date}/#{prefix_and_path}"
56
+ remote_path = "#{ENV['HOSTNAME'].strip}/#{formatted_date}#{prefix_and_path}"
49
57
  remote_file = bucket.objects[remote_path]
50
- remote_file.write(@path)
58
+ if Sink3.config.skip_overwrite
59
+ if ! check_exists(remote_file)
60
+ puts "remote file does not exist" if Sink3.config.verbose
61
+ remote_file.write(@path)
62
+ else
63
+ puts "skpping overwrite of #{remote_path}" if Sink3.config.verbose
64
+ end
65
+ else
66
+ remote_file.write(@path)
67
+ end
51
68
 
52
69
  if Sink3.config.delete_after_upload?
53
70
  FileUtils.rm @path
@@ -55,7 +72,11 @@ module Sink3
55
72
  end
56
73
 
57
74
  def formatted_date
58
- Time.now.strftime "%Y-%m-%d"
75
+ if !ENV['SKIP_DATE_PARTITION']
76
+ return "#{Time.now.strftime "%Y-%m-%d"}/"
77
+ else
78
+ return ""
79
+ end
59
80
  end
60
81
 
61
82
  def prefix_and_path
data/lib/sink3/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Sink3
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.6"
3
3
  end
data/sink3.gemspec CHANGED
@@ -18,9 +18,9 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ["lib"]
20
20
 
21
- spec.add_dependency "aws-sdk", "< 2.0"
22
- spec.add_dependency "dotenv"
23
- spec.add_dependency "thor"
21
+ spec.add_dependency "aws-sdk-v1", "~> 1.61.0"
22
+ spec.add_dependency "dotenv", "~> 0.11.1"
23
+ spec.add_dependency "thor", "~> 0.19.1"
24
24
 
25
25
  spec.add_development_dependency "bundler", "~> 1.5"
26
26
  spec.add_development_dependency "rake"
metadata CHANGED
@@ -1,83 +1,83 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sink3
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Fabrizio Regini
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-01-22 00:00:00.000000000 Z
11
+ date: 2021-05-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: aws-sdk
14
+ name: aws-sdk-v1
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - <
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '2.0'
19
+ version: 1.61.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - <
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '2.0'
26
+ version: 1.61.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: dotenv
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '>='
31
+ - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '0'
33
+ version: 0.11.1
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - '>='
38
+ - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '0'
40
+ version: 0.11.1
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: thor
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - '>='
45
+ - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '0'
47
+ version: 0.19.1
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - '>='
52
+ - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '0'
54
+ version: 0.19.1
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: bundler
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ~>
59
+ - - "~>"
60
60
  - !ruby/object:Gem::Version
61
61
  version: '1.5'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ~>
66
+ - - "~>"
67
67
  - !ruby/object:Gem::Version
68
68
  version: '1.5'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: rake
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - '>='
73
+ - - ">="
74
74
  - !ruby/object:Gem::Version
75
75
  version: '0'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - '>='
80
+ - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  description: Sink3 is an S3 backup designed to work with write-only keys.
@@ -88,8 +88,8 @@ executables:
88
88
  extensions: []
89
89
  extra_rdoc_files: []
90
90
  files:
91
- - .gitignore
92
- - .rspec
91
+ - ".gitignore"
92
+ - ".rspec"
93
93
  - Gemfile
94
94
  - LICENSE.txt
95
95
  - README.md
@@ -116,17 +116,16 @@ require_paths:
116
116
  - lib
117
117
  required_ruby_version: !ruby/object:Gem::Requirement
118
118
  requirements:
119
- - - '>='
119
+ - - ">="
120
120
  - !ruby/object:Gem::Version
121
121
  version: '0'
122
122
  required_rubygems_version: !ruby/object:Gem::Requirement
123
123
  requirements:
124
- - - '>='
124
+ - - ">="
125
125
  - !ruby/object:Gem::Version
126
126
  version: '0'
127
127
  requirements: []
128
- rubyforge_project:
129
- rubygems_version: 2.2.1
128
+ rubygems_version: 3.0.8
130
129
  signing_key:
131
130
  specification_version: 4
132
131
  summary: S3 backup designed for servers