s3cp 1.1.39 → 1.1.40

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
2
  SHA1:
3
- metadata.gz: dae74e198a84f87e2677d2d5f34a06d8b8d1bf98
4
- data.tar.gz: a2b805625ede7d6d8e0a10ddc52bc1af99463f39
3
+ metadata.gz: 0290c1eaaabbc90626e8a996868953051a421e66
4
+ data.tar.gz: c122054dbd6b8dcaa3ae610027c84667d57c06b3
5
5
  SHA512:
6
- metadata.gz: 2404847e0d7983e1b6b6a85570b064a8172c70e6477e98ccb8923005df97a99ba0606148b7f84ee1b226888ac5a298a28586a83019c6afe67eefb3e2f28f48fe
7
- data.tar.gz: 798e97b27f48650f9f44f70e4430b11b6561ff7f0f5b192c02dc1af148b034532c8a0222c2b4e4d90b74a353420015890f1bd64bfb76bae5a53e8460d2ce996b
6
+ metadata.gz: fe1d294a160d801372d7fa81590a037627033aaa2264644436598c258dd030e7abab6f2beca427e44f6588fa6288353a75b02071220e83af8aa3ac88951838b4
7
+ data.tar.gz: 4b98037c37e4d3a4e6fb4357204d20918cea037aac329c8dbcb3057c270c3618a17b94397e5d8f34589bf12e0f51a55f75b58c8a1b95b782f342f94b0d365ffb
@@ -1,3 +1,8 @@
1
+
2
+ === 1.1.40 (2015-12-21)
3
+
4
+ * Fixed: Don't load Ruby 1.8.x compatibility library for Ruby 2.1.8 (#18) [Chris Mear]
5
+
1
6
  === 1.1.39 (2015-03-02)
2
7
 
3
8
  * Upgrade gem dependencies: aws-sdk 1.63.0, nokogiri 1.6.6.2.
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env ruby
2
+ ARGV.unshift "--open"
3
+ require 's3cp/s3cat'
4
+
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env ruby
2
+ ARGV.unshift "--edit"
3
+ require 's3cp/s3cat'
4
+
@@ -0,0 +1,144 @@
1
+ # Copyright (C) 2010-2012 Alex Boisvert and Bizo Inc. / All rights reserved.
2
+ #
3
+ # Licensed to the Apache Software Foundation (ASF) under one or more contributor
4
+ # license agreements. See the NOTICE file distributed with this work for
5
+ # additional information regarding copyright ownership. The ASF licenses this
6
+ # file to you under the Apache License, Version 2.0 (the "License"); you may not
7
+ # use this file except in compliance with the License. You may obtain a copy of
8
+ # the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
14
+ # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
15
+ # License for the specific language governing permissions and limitations under
16
+ # the License.
17
+
18
+ require 's3cp/utils'
19
+ require 'progressbar'
20
+ require 'tempfile'
21
+
22
+ # Parse arguments
23
+ options = {}
24
+ options[:tty] = $stdout.isatty
25
+
26
+ op = OptionParser.new do |opts|
27
+ opts.banner = "s3cat [path]"
28
+ opts.separator ''
29
+
30
+ opts.on("--debug", "Debug mode") do
31
+ options[:debug] = true
32
+ end
33
+
34
+ opts.on("--tty", "TTY mode") do |tty|
35
+ options[:tty] = tty
36
+ end
37
+
38
+ opts.on("--edit", "Edit mode") do |edit|
39
+ options[:edit] = edit
40
+ end
41
+
42
+ opts.on("--head SIZE", "Download only 'head' part of the file, e.g. 4KB, 1024B, 2GB") do |size|
43
+ options[:head] = S3CP.size_in_bytes(size)
44
+ end
45
+
46
+ opts.on("--tail SIZE", "Download only 'tail' part of the file, e.g. 4KB, 1024B, 2GB") do |size|
47
+ options[:tail] = S3CP.size_in_bytes(size)
48
+ end
49
+
50
+ opts.on("--range START-END", "Download only range (in absolute positions) portion, e.g. 1GB-2GB, 16K-128k, 128k-, -128k") do |range|
51
+ range_start, range_end = range.split("-")
52
+ options[:range_start] = S3CP.size_in_bytes(range_start) if range_start && (!range_start.empty?)
53
+ options[:range_end] = S3CP.size_in_bytes(range_end) - 1 if range_end && (!range_end.empty?)
54
+ range_start, range_end = range.split("-")
55
+ end
56
+
57
+ opts.on_tail("-h", "--help", "Show this message") do
58
+ puts op
59
+ exit
60
+ end
61
+ end
62
+ op.parse!(ARGV)
63
+
64
+ unless ARGV.size > 0
65
+ puts op
66
+ exit
67
+ end
68
+
69
+ url = ARGV[0]
70
+
71
+ if options[:debug]
72
+ puts "URL: #{url}"
73
+ puts "Options: \n#{options.inspect}"
74
+ end
75
+
76
+ S3CP.standard_exception_handling(options) do
77
+ @bucket, @prefix = S3CP.bucket_and_key(url)
78
+ fail "Your URL looks funny, doesn't it?" unless @bucket
79
+
80
+ S3CP.load_config()
81
+
82
+ read_options = {}
83
+ read_options[:debug] = options[:debug]
84
+ read_options[:head] = options[:head] if options[:head]
85
+ read_options[:tail] = options[:tail] if options[:tail]
86
+ read_options[:range_start] = options[:range_start] if options[:range_start]
87
+ read_options[:range_end] = options[:range_end] if options[:range_end]
88
+
89
+ @s3 = S3CP.connect().buckets[@bucket]
90
+
91
+
92
+ if options[:edit] && (options[:head] || options[:tail] || options[:range_start] || options[:range_end])
93
+ fail "--edit option is not intended to be used with --head, --tail nor --range"
94
+ end
95
+
96
+ if options[:tty] || options[:edit]
97
+ # store contents to file to display with PAGER
98
+ size = @s3.objects[@prefix].content_length
99
+
100
+ progress_bar = ProgressBar.new(File.basename(@prefix), size).tap do |p|
101
+ p.file_transfer_mode
102
+ end
103
+
104
+ file = Tempfile.new(File.basename(@prefix) + '_')
105
+ out = File.new(file.path, "wb")
106
+ begin
107
+ @s3.objects[@prefix].read_as_stream(read_options) do |chunk|
108
+ out.write(chunk)
109
+ progress_bar.inc chunk.size
110
+ end
111
+ progress_bar.finish
112
+ ensure
113
+ out.close()
114
+ end
115
+ if options[:edit]
116
+ before_md5 = S3CP.md5(file.path)
117
+ system "#{ENV['EDITOR'] || 'vi'} #{file.path}"
118
+ if ($? == 0)
119
+ if (S3CP.md5(file.path) != before_md5)
120
+ ARGV.clear
121
+ ARGV << file.path
122
+ ARGV << url
123
+ load "s3cp/s3cp.rb"
124
+ else
125
+ puts "File unchanged."
126
+ end
127
+ else
128
+ puts "Edit aborted (result code #{$?})."
129
+ end
130
+ else
131
+ system "#{ENV['PAGER'] || 'less'} #{file.path}"
132
+ end
133
+ file.delete()
134
+ else
135
+ @s3.objects[@prefix].read_as_stream(read_options) do |chunk|
136
+ begin
137
+ $stdout.print(chunk)
138
+ rescue Errno::EPIPE
139
+ break
140
+ end
141
+ end
142
+ end
143
+ end
144
+
@@ -16,7 +16,7 @@
16
16
  # the License.
17
17
 
18
18
  require 'rubygems'
19
- require 'extensions/kernel' if RUBY_VERSION =~ /1.8/
19
+ require 'extensions/kernel' if RUBY_VERSION =~ /^1.8/
20
20
  require 'aws/s3'
21
21
  require 'optparse'
22
22
  require 'date'
@@ -16,5 +16,5 @@
16
16
  # the License.
17
17
 
18
18
  module S3CP
19
- VERSION = "1.1.39"
19
+ VERSION = "1.1.40"
20
20
  end
@@ -16,5 +16,5 @@
16
16
  # the License.
17
17
 
18
18
  module S3CP
19
- VERSION = "1.1.38"
19
+ VERSION = "1.1.39"
20
20
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: s3cp
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.39
4
+ version: 1.1.40
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alex Boisvert
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-03-03 00:00:00.000000000 Z
11
+ date: 2015-12-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: extensions
@@ -137,6 +137,7 @@ files:
137
137
  - lib/s3cp/completion.rb
138
138
  - lib/s3cp/s3buckets.rb
139
139
  - lib/s3cp/s3cat.rb
140
+ - lib/s3cp/s3cat.rb~
140
141
  - lib/s3cp/s3cp.rb
141
142
  - lib/s3cp/s3du.rb
142
143
  - lib/s3cp/s3lifecycle.rb
@@ -164,6 +165,8 @@ files:
164
165
  - bin/s3ls
165
166
  - bin/s3mod
166
167
  - bin/s3mv
168
+ - bin/s3open
169
+ - bin/s3open~
167
170
  - bin/s3rm
168
171
  - bin/s3stat
169
172
  - bin/s3tree