sink3 0.0.1 → 0.0.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 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