lobber 0.0.4 → 0.0.5

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
2
  SHA1:
3
- metadata.gz: c6297fe2c2aa579dcaa53373b9c035034f1c9bff
4
- data.tar.gz: eb9f47038dfe8a942e0d4e42327b1e47eba6a51a
3
+ metadata.gz: f3e4b64ac5a67f442ad4d770cae92ddd01fc6011
4
+ data.tar.gz: 430acda44cd0438a5e276d046d50dd928d5f98c6
5
5
  SHA512:
6
- metadata.gz: a544f8ddb49f759bdc364ac49d482e45b322d5d521cc9876d8321cced4656810fadf5a23aa96a0b4c9f7577135cbff86d6f6175a66670b452b453fc97cd35964
7
- data.tar.gz: dffadaaee5abbbfe5f1a86e9e287df61ccf376d3eb3f7ac99f52089a6e3d1b73680a0e43c7f5579425d8c631811e7426649c57ca4364ea574d495a42ec31859c
6
+ metadata.gz: 2a070ef094573df7e5d0e6a10cbff9db833771326926aad4e23862a17847b70af0c0f5a0dd2f1f988e043c0bd162860eece847d02dad0896d073ce4073ada93f
7
+ data.tar.gz: 688940cac81074d6abd126d2abcacb632ded2efbf7d4c3724720dfb145e004f78fa819cd9fe1feaf78115b26faa847ab22ef463f58f6b7ee9aac4e006b2e34ad
data/.gitignore CHANGED
@@ -1,3 +1,4 @@
1
+ .DS_Store
2
+ Gemfile.lock
1
3
  coverage
2
4
  pkg
3
- .DS_Store
@@ -1,4 +1,11 @@
1
1
  language: ruby
2
2
  rvm:
3
- - "2.0"
4
- script: rake
3
+ - 2.0.0
4
+ - 2.1
5
+ - 2.2
6
+ - ruby-head
7
+ - jruby-head
8
+ matrix:
9
+ allow_failures:
10
+ - rvm: ruby-head
11
+ - rvm: jruby-head
data/Gemfile CHANGED
@@ -5,3 +5,7 @@ gemspec
5
5
  group :development do
6
6
  gem "pry"
7
7
  end
8
+
9
+ group :test do
10
+ gem "rake"
11
+ end
data/README.md CHANGED
@@ -1,4 +1,5 @@
1
1
  [![Build Status](https://travis-ci.org/mdb/lobber.png?branch=master)](https://travis-ci.org/mdb/lobber)
2
+ [![Code Climate](https://codeclimate.com/github/mdb/lobber/badges/gpa.svg)](https://codeclimate.com/github/mdb/lobber)
2
3
 
3
4
  # Lobber
4
5
 
@@ -10,11 +11,22 @@ Quickly toss a directory to Amazon S3 from the command line.
10
11
 
11
12
  ## Usage
12
13
 
13
- lob some_directory
14
+ $ lob some_directory
15
+ some_directory/index.html -> index.html
16
+ some_directory/stylesheets/application.css -> stylesheets/application.css
14
17
 
15
- Or pass in a bucket name to substitute your $FOG_DIRECTORY env variable:
18
+ Pass in a bucket name to substitute your $FOG_DIRECTORY env variable:
19
+
20
+ $ lob some_directory --bucket some_aws_bucket
21
+
22
+ Set `--dry-run` to just see what files would be uploaded:
23
+
24
+ $ log some_directory --dry-run
25
+
26
+ Set `--no-verbose` to suppress printing filenames while uploading:
27
+
28
+ $ log some_directory --no-verbose
16
29
 
17
- lob some_directory --bucket some_aws_bucket
18
30
 
19
31
  ## Required Environment Variables
20
32
 
data/bin/lob CHANGED
@@ -4,6 +4,6 @@ $: << File.expand_path(File.join(File.dirname(__FILE__), "..", "lib"))
4
4
 
5
5
  require 'lobber'
6
6
 
7
- ARGV.unshift(:lob) if ARGV[0]
7
+ ARGV.unshift('lob') if ARGV[0]
8
8
 
9
9
  Lobber::CLI.start
@@ -5,7 +5,9 @@ module Lobber
5
5
  default_task :lob
6
6
 
7
7
  desc "DIRECTORY", "Upload a directory to Amazon S3"
8
- option :bucket
8
+ method_option :bucket, type: :string
9
+ method_option :dry_run, default: false, type: :boolean
10
+ method_option :verbose, default: true, type: :boolean
9
11
  def lob(directory = nil)
10
12
  return usage unless directory
11
13
 
@@ -14,7 +16,7 @@ module Lobber
14
16
  exit 1
15
17
  end
16
18
 
17
- Lobber.upload(directory, options[:bucket])
19
+ Lobber.upload(directory, options)
18
20
 
19
21
  say "Successfully uploaded #{directory}", "\033[32m"
20
22
  end
@@ -3,11 +3,14 @@ require 'rake'
3
3
 
4
4
  module Lobber
5
5
  class Uploader
6
- attr_reader :directory, :bucket_name
6
+ attr_reader :directory, :bucket_name, :dry_run, :verbose
7
7
 
8
- def initialize(directory, bucket_name = nil)
9
- @bucket_name = bucket_name
8
+ def initialize(directory, options = {})
10
9
  @directory = sanitize(directory)
10
+
11
+ @bucket_name = options.fetch('bucket', nil)
12
+ @dry_run = options.fetch('dry_run', false)
13
+ @verbose = options.fetch('verbose', true)
11
14
  end
12
15
 
13
16
  def upload
@@ -44,18 +47,29 @@ module Lobber
44
47
  end
45
48
 
46
49
  def create_directory directory
50
+ return if dry_run
47
51
  bucket.files.create(key: directory, public: true)
48
52
  end
49
53
 
50
54
  def create_file file
51
- bucket.files.create(key: file, public: true, body: File.open(file))
55
+ key = Pathname.new(file).relative_path_from(Pathname.new(directory)).to_s
56
+
57
+ if already_identical?(file, key)
58
+ log "#{file} identical"
59
+ return
60
+ end
61
+
62
+ log file, key
63
+ return if dry_run
64
+ bucket.files.create(key: key, public: true, body: File.open(file))
52
65
  end
53
66
 
54
67
  def s3
55
68
  @s3 ||= Fog::Storage.new(
56
69
  provider: :aws,
57
70
  aws_access_key_id: aws_access_key,
58
- aws_secret_access_key: aws_secret_key
71
+ aws_secret_access_key: aws_secret_key,
72
+ path_style: fog_directory.include?(?.)
59
73
  )
60
74
  end
61
75
 
@@ -80,11 +94,20 @@ module Lobber
80
94
  end
81
95
 
82
96
  def fog_directory
83
- @bucket_name || ENV['FOG_DIRECTORY']
97
+ bucket_name || ENV['FOG_DIRECTORY']
84
98
  end
85
99
 
86
100
  private
87
101
 
102
+ def already_identical?(file, key)
103
+ remote_file = bucket.files.head(key)
104
+ remote_file && Digest::MD5.hexdigest(File.read(file)) == remote_file.etag
105
+ end
106
+
107
+ def log(*strings)
108
+ puts strings.join(' -> ') if verbose
109
+ end
110
+
88
111
  def sanitize(directory_path)
89
112
  if directory_path.match(/\/$/)
90
113
  directory_path.chop
@@ -1,3 +1,3 @@
1
1
  module Lobber
2
- VERSION = "0.0.4"
2
+ VERSION = "0.0.5"
3
3
  end
@@ -21,8 +21,7 @@ Gem::Specification.new do |spec|
21
21
  spec.add_dependency "fog"
22
22
  spec.add_dependency "thor"
23
23
 
24
- spec.add_development_dependency "bundler", "~> 1.3"
25
- spec.add_development_dependency "rake"
24
+ spec.add_development_dependency "bundler"
26
25
  spec.add_development_dependency "rspec"
27
26
  spec.add_development_dependency "simplecov"
28
27
  end
@@ -14,7 +14,7 @@ describe Lobber::CLI do
14
14
  before do
15
15
  Fog.mock!
16
16
  File.open(input_filename, 'w') {|file| file.write some_file }
17
- cli.stub :say
17
+ allow(cli).to receive :say
18
18
  end
19
19
 
20
20
  after do
@@ -25,33 +25,38 @@ describe Lobber::CLI do
25
25
  describe "#lob" do
26
26
  context "it's not passed any arguments" do
27
27
  it "returns usage details" do
28
- cli.should_receive(:usage).exactly(1).times
28
+ expect(cli).to receive(:usage).exactly(1).times
29
29
  cli.lob
30
30
  end
31
31
  end
32
32
 
33
33
  context "it's passed a directory that does not exist" do
34
34
  it "reports that it was passed an invalid directory and exits with an exit code of 1" do
35
- Kernel.stub(:exit).and_return true
36
- File.stub(:directory?).and_return false
37
- cli.should_receive(:error).with("foo is not a valid directory")
38
- lambda { cli.lob 'foo' }.should exit_with_code(1)
35
+ allow(Kernel).to receive(:exit).and_return true
36
+ allow(File).to receive(:directory?).and_return false
37
+ expect(cli).to receive(:error).with("foo is not a valid directory")
38
+
39
+ begin
40
+ cli.lob('foo')
41
+ rescue SystemExit => e
42
+ expect(e.status).to eq(1)
43
+ end
39
44
  end
40
45
  end
41
46
 
42
47
  context "when it's passed a valid directory" do
43
48
  before :each do
44
- ENV.stub(:[]).and_return true
45
- File.stub(:directory?).and_return true
49
+ allow(ENV).to receive(:[]).and_return true
50
+ allow(File).to receive(:directory?).and_return true
46
51
  end
47
52
 
48
53
  it "uploads" do
49
- Lobber.should_receive(:upload).with("foo", nil)
54
+ expect(Lobber).to receive(:upload).with("foo", {})
50
55
  cli.lob "foo"
51
56
  end
52
57
 
53
58
  it "reports that the directory has been successfully uploaded" do
54
- cli.should_receive(:say).with("Successfully uploaded foo", "\e[32m")
59
+ expect(cli).to receive(:say).with("Successfully uploaded foo", "\e[32m")
55
60
  cli.lob "foo"
56
61
  end
57
62
  end
@@ -61,10 +66,10 @@ describe Lobber::CLI do
61
66
  subject(:usage) { cli.usage }
62
67
 
63
68
  it "displays version info, GitHub info, and help" do
64
- cli.should_receive(:say).with('Lobber 0.0.4')
65
- cli.should_receive(:say).with('https://github.com/mdb/lob')
66
- cli.should_receive(:say).with("\n")
67
- cli.should_receive(:help)
69
+ expect(cli).to receive(:say).with('Lobber 0.0.5')
70
+ expect(cli).to receive(:say).with('https://github.com/mdb/lob')
71
+ expect(cli).to receive(:say).with("\n")
72
+ expect(cli).to receive(:help)
68
73
 
69
74
  usage
70
75
  end
@@ -1,14 +1,18 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Lobber::Uploader do
4
+ subject(:uploader) { Lobber::Uploader.new(directory_name, options) }
5
+
4
6
  let(:directory_name) { 'spec' }
5
- let(:uploader) { Lobber::Uploader.new(directory_name) }
7
+ let(:options) { {} }
6
8
 
7
9
  before :each do
8
10
  Fog.mock!
9
- uploader.stub(:aws_access_key).and_return 'fake key'
10
- uploader.stub(:aws_secret_key).and_return 'fake key'
11
- uploader.stub(:fog_directory).and_return directory_name
11
+ allow(uploader).to receive(:aws_access_key).and_return 'fake key'
12
+ allow(uploader).to receive(:aws_secret_key).and_return 'fake key'
13
+ allow(uploader).to receive(:verbose).and_return false
14
+ allow(ENV).to receive(:[])
15
+ allow(ENV).to receive(:[]).with('FOG_DIRECTORY').and_return directory_name
12
16
  end
13
17
 
14
18
  after :each do
@@ -16,31 +20,31 @@ describe Lobber::Uploader do
16
20
  end
17
21
 
18
22
  it "exists as a class within the Lob module" do
19
- Lobber::Uploader.class.should eq Class
23
+ expect(Lobber::Uploader.class).to eq Class
20
24
  end
21
25
 
22
26
  describe "#upload" do
23
27
  before :each do
24
- uploader.stub(:verify_env_variables).and_return(true)
28
+ allow(uploader).to receive(:verify_env_variables).and_return(true)
25
29
  end
26
30
 
27
31
  it "verifies necessary environment variables" do
28
- uploader.should_receive :verify_env_variables
32
+ expect(uploader).to receive :verify_env_variables
29
33
  uploader.upload
30
34
  end
31
35
 
32
36
  it "calls #create_file_or_directory with each file or directory in the directory" do
33
- uploader.stub(:directory_content).and_return 'foo' => 'bar', 'baz' => 'bim'
34
- uploader.should_receive(:create_file_or_directory).with('foo', 'bar')
35
- uploader.should_receive(:create_file_or_directory).with('baz', 'bim')
37
+ allow(uploader).to receive(:directory_content).and_return 'foo' => 'bar', 'baz' => 'bim'
38
+ expect(uploader).to receive(:create_file_or_directory).with('foo', 'bar')
39
+ expect(uploader).to receive(:create_file_or_directory).with('baz', 'bim')
36
40
  uploader.upload
37
41
  end
38
42
  end
39
43
 
40
44
  describe "#directory_content" do
41
45
  it "returns the content for the directory it's passed" do
42
- File.stub(:read).and_return 'content'
43
- uploader.directory_content.should eq(
46
+ allow(File).to receive(:read).and_return 'content'
47
+ expect(uploader.directory_content).to eq(
44
48
  "spec/lib/" => :directory,
45
49
  "spec/lib/lobber/" => :directory,
46
50
  "spec/lib/lobber/uploader_spec.rb" => "content",
@@ -56,22 +60,22 @@ describe Lobber::Uploader do
56
60
 
57
61
  describe "#bucket" do
58
62
  it "creates a bucket of the same name" do
59
- uploader.bucket.class.should eq Fog::Storage::AWS::Directory
60
- uploader.bucket.key.should eq 'spec'
63
+ expect(uploader.bucket.class).to eq Fog::Storage::AWS::Directory
64
+ expect(uploader.bucket.key).to eq 'spec'
61
65
  end
62
66
  end
63
67
 
64
68
  describe "#create_file_or_directory" do
65
69
  context "when it is called with the directory flag" do
66
70
  it "calls #create_directory" do
67
- uploader.should_receive(:create_directory).with 'foo'
71
+ expect(uploader).to receive(:create_directory).with 'foo'
68
72
  uploader.create_file_or_directory 'foo', :directory
69
73
  end
70
74
  end
71
75
 
72
76
  context "when it is called without the directory flag" do
73
77
  it "calls #create_directory" do
74
- uploader.should_receive(:create_file).with 'foo'
78
+ expect(uploader).to receive(:create_file).with 'foo'
75
79
  uploader.create_file_or_directory 'foo', 'some_content'
76
80
  end
77
81
  end
@@ -79,48 +83,109 @@ describe Lobber::Uploader do
79
83
 
80
84
  describe "#create_directory" do
81
85
  it "creates an s3 directory" do
82
- uploader.bucket.files.should_receive(:create).with(key: 'foo', public: true)
86
+ expect(uploader.bucket.files).to receive(:create).with(key: 'foo', public: true)
83
87
  uploader.create_directory "foo"
84
88
  end
85
89
  end
86
90
 
87
91
  describe "#create_file" do
92
+ before do
93
+ allow(File).to receive(:open).and_return 'content'
94
+ end
95
+
96
+ let(:filename) { File.join(directory_name, 'foo.bar') }
97
+
88
98
  it "creates an s3 file" do
89
- File.stub(:open).and_return 'content'
90
- uploader.bucket.files.should_receive(:create).with(key: 'foo', public: true, body: 'content')
91
- uploader.create_file "foo"
99
+ expect(uploader.bucket.files)
100
+ .to receive(:create)
101
+ .with(key: 'foo.bar', public: true, body: 'content')
102
+ uploader.create_file filename
103
+ end
104
+
105
+ it "logs each file to the screen" do
106
+ expect(uploader).to receive(:log).with(filename, 'foo.bar')
107
+ uploader.create_file filename
108
+ end
109
+
110
+ context "when the local and remote file are identical" do
111
+ before do
112
+ allow(uploader).to receive(:already_identical?).and_return(true)
113
+ end
114
+
115
+ it "does not upload the file again" do
116
+ expect(uploader.bucket.files).to_not receive(:create)
117
+ uploader.create_file filename
118
+ end
119
+ end
120
+
121
+ context "with --dry-run" do
122
+ let(:options) { { 'dry_run' => true } }
123
+
124
+ it "does not create directories" do
125
+ expect(uploader.bucket.files).to_not receive(:create)
126
+ uploader.create_directory directory_name
127
+ end
128
+
129
+ it "does not upload files" do
130
+ expect(uploader.bucket.files).to_not receive(:create)
131
+ uploader.create_file filename
132
+ end
133
+ end
134
+
135
+ context "with a directory outside of the working path" do
136
+ let(:directory_name) { '/home/' }
137
+ let(:filename) { '/home/foo/bar.baz' }
138
+
139
+ it "strips the directory name from the upload key" do
140
+ expect(uploader.bucket.files)
141
+ .to receive(:create)
142
+ .with(key: 'foo/bar.baz', public: true, body: 'content')
143
+ uploader.create_file filename
144
+ end
92
145
  end
93
146
  end
94
147
 
95
148
  describe "#s3" do
96
149
  before :each do
97
- uploader.stub(:aws_access_key).and_return('aws_access_key')
98
- uploader.stub(:aws_secret_key).and_return('aws_secret_key')
150
+ allow(uploader).to receive(:aws_access_key).and_return('aws_access_key')
151
+ allow(uploader).to receive(:aws_secret_key).and_return('aws_secret_key')
99
152
  end
100
153
 
101
154
  it "it instantiates a new Fog::Storage class with the proper arguments" do
102
- Fog::Storage.should_receive(:new).with(
155
+ expect(Fog::Storage).to receive(:new).with(
103
156
  provider: :aws,
104
157
  aws_access_key_id: 'aws_access_key',
105
- aws_secret_access_key: 'aws_secret_key'
158
+ aws_secret_access_key: 'aws_secret_key',
159
+ path_style: false
106
160
  )
107
161
  uploader.s3
108
162
  end
163
+
164
+ context "with a fog directory that includes a period" do
165
+ let(:directory_name) { "foo.bar" }
166
+
167
+ it "sets path style to true to silence warnings" do
168
+ expect(Fog::Storage).to receive(:new) do |options|
169
+ expect(options[:path_style]).to eq(true)
170
+ end
171
+ uploader.s3
172
+ end
173
+ end
109
174
  end
110
175
 
111
176
  describe "#verify_env_variables" do
112
177
  context "when one of the required environment variables is absent" do
113
178
  it "raises an error reporting that the missing environment variable is required" do
114
- uploader.stub(:aws_access_key).and_return nil
179
+ allow(uploader).to receive(:aws_access_key).and_return nil
115
180
  expect { uploader.verify_env_variables }.to raise_error(RuntimeError, 'Required environment variables missing: ["AWS_ACCESS_KEY"]')
116
181
  end
117
182
  end
118
183
 
119
184
  context "when all of the required environment variables are defined" do
120
185
  before :each do
121
- uploader.stub(:aws_access_key).and_return true
122
- uploader.stub(:aws_secret_key).and_return true
123
- uploader.stub(:fog_directory).and_return true
186
+ allow(uploader).to receive(:aws_access_key).and_return true
187
+ allow(uploader).to receive(:aws_secret_key).and_return true
188
+ allow(uploader).to receive(:fog_directory).and_return true
124
189
  end
125
190
 
126
191
  it "it does not raise an error" do
@@ -128,7 +193,7 @@ describe Lobber::Uploader do
128
193
  end
129
194
 
130
195
  it "returns true" do
131
- uploader.verify_env_variables.should eq true
196
+ expect(uploader.verify_env_variables).to eq true
132
197
  end
133
198
  end
134
199
  end
@@ -136,8 +201,8 @@ describe Lobber::Uploader do
136
201
  describe "#aws_access_key" do
137
202
  it "returns the value of the AWS_ACCESS_KEY environment variable" do
138
203
  some_uploader = Lobber::Uploader.new 'foo'
139
- ENV.stub(:[])
140
- ENV.should_receive(:[]).with 'AWS_ACCESS_KEY'
204
+ allow(ENV).to receive(:[])
205
+ expect(ENV).to receive(:[]).with 'AWS_ACCESS_KEY'
141
206
  some_uploader.aws_access_key
142
207
  end
143
208
  end
@@ -145,8 +210,8 @@ describe Lobber::Uploader do
145
210
  describe "#aws_secret_key" do
146
211
  it "returns the value of the AWS_ACCESS_KEY environment variable" do
147
212
  some_uploader = Lobber::Uploader.new 'foo'
148
- ENV.stub(:[])
149
- ENV.should_receive(:[]).with 'AWS_SECRET_KEY'
213
+ allow(ENV).to receive(:[])
214
+ expect(ENV).to receive(:[]).with 'AWS_SECRET_KEY'
150
215
  some_uploader.aws_secret_key
151
216
  end
152
217
  end
@@ -154,17 +219,15 @@ describe Lobber::Uploader do
154
219
  describe "#fog_directory" do
155
220
  context "the uploader is not instantiated with a bucket name parameter" do
156
221
  it "returns the value of the FOG_DIRECTORY environment variable" do
157
- some_uploader = Lobber::Uploader.new 'foo'
158
- ENV.stub(:[])
159
- ENV.should_receive(:[]).with 'FOG_DIRECTORY'
160
- some_uploader.fog_directory
222
+ expect(uploader.fog_directory).to eq(directory_name)
161
223
  end
162
224
  end
163
225
 
164
226
  context "the uploader is instantiated with a bucket name parameter" do
227
+ let(:options) { { 'bucket' => 'bar' } }
228
+
165
229
  it "returns the value of the bucket name it was passed on instantiation" do
166
- some_uploader = Lobber::Uploader.new 'foo', 'bar'
167
- some_uploader.fog_directory.should eq 'bar'
230
+ expect(uploader.fog_directory).to eq('bar')
168
231
  end
169
232
  end
170
233
  end
@@ -2,7 +2,7 @@ require 'spec_helper'
2
2
 
3
3
  describe Lobber do
4
4
  it "exists as a module" do
5
- Lobber.class.should eq Module
5
+ expect(Lobber.class).to eq Module
6
6
  end
7
7
 
8
8
  describe ".upload" do
@@ -12,8 +12,8 @@ describe Lobber do
12
12
 
13
13
  context "it is only passed a directory name, and not an S3 bucket name" do
14
14
  it "verifies environment variables and uploads the directory and its contents to S3" do
15
- Lobber::Uploader.should_receive(:new).with('foo', nil).and_return(@uploader_double)
16
- @uploader_double.should_receive(:upload)
15
+ expect(Lobber::Uploader).to receive(:new).with('foo', nil).and_return(@uploader_double)
16
+ expect(@uploader_double).to receive(:upload)
17
17
 
18
18
  Lobber.upload 'foo'
19
19
  end
@@ -21,8 +21,8 @@ describe Lobber do
21
21
 
22
22
  context "it is passed a directory name and an S3 bucket name" do
23
23
  it "verifies environment variables and uploads the directory and its contents to the specified S3 bucket" do
24
- Lobber::Uploader.should_receive(:new).with('foo', 'bar').and_return(@uploader_double)
25
- @uploader_double.should_receive(:upload)
24
+ expect(Lobber::Uploader).to receive(:new).with('foo', 'bar').and_return(@uploader_double)
25
+ expect(@uploader_double).to receive(:upload)
26
26
 
27
27
  Lobber.upload 'foo', 'bar'
28
28
  end
@@ -8,11 +8,11 @@ RSpec::Matchers.define :exit_with_code do |exp_code|
8
8
  end
9
9
  actual and actual == exp_code
10
10
  end
11
- failure_message_for_should do |block|
11
+ failure_message do |block|
12
12
  "expected block to call exit(#{exp_code}) but exit" +
13
13
  (actual.nil? ? " not called" : "(#{actual}) was called")
14
14
  end
15
- failure_message_for_should_not do |block|
15
+ failure_message_when_negated do |block|
16
16
  "expected block not to call exit(#{exp_code})"
17
17
  end
18
18
  description do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lobber
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike Ball
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-09-22 00:00:00.000000000 Z
11
+ date: 2015-01-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: fog
@@ -40,20 +40,6 @@ dependencies:
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: bundler
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - ~>
46
- - !ruby/object:Gem::Version
47
- version: '1.3'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - ~>
53
- - !ruby/object:Gem::Version
54
- version: '1.3'
55
- - !ruby/object:Gem::Dependency
56
- name: rake
57
43
  requirement: !ruby/object:Gem::Requirement
58
44
  requirements:
59
45
  - - '>='
@@ -107,7 +93,6 @@ files:
107
93
  - .ruby-version
108
94
  - .travis.yml
109
95
  - Gemfile
110
- - Gemfile.lock
111
96
  - LICENSE.txt
112
97
  - README.md
113
98
  - Rakefile
@@ -142,7 +127,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
142
127
  version: '0'
143
128
  requirements: []
144
129
  rubyforge_project:
145
- rubygems_version: 2.0.3
130
+ rubygems_version: 2.2.2
146
131
  signing_key:
147
132
  specification_version: 4
148
133
  summary: Toss a directory to AWS S3
@@ -1,74 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- lobber (0.0.4)
5
- fog
6
- thor
7
-
8
- GEM
9
- remote: https://rubygems.org/
10
- specs:
11
- builder (3.2.2)
12
- coderay (1.0.9)
13
- diff-lcs (1.2.4)
14
- excon (0.25.3)
15
- ffi (1.9.0-java)
16
- fog (1.15.0)
17
- builder
18
- excon (~> 0.25.0)
19
- formatador (~> 0.2.0)
20
- mime-types
21
- multi_json (~> 1.0)
22
- net-scp (~> 1.1)
23
- net-ssh (>= 2.1.3)
24
- nokogiri (~> 1.5)
25
- ruby-hmac
26
- formatador (0.2.4)
27
- method_source (0.8.2)
28
- mime-types (1.25)
29
- mini_portile (0.5.1)
30
- multi_json (1.7.9)
31
- net-scp (1.1.2)
32
- net-ssh (>= 2.6.5)
33
- net-ssh (2.6.8)
34
- nokogiri (1.6.0)
35
- mini_portile (~> 0.5.0)
36
- pry (0.9.12.2)
37
- coderay (~> 1.0.5)
38
- method_source (~> 0.8)
39
- slop (~> 3.4)
40
- pry (0.9.12.2-java)
41
- coderay (~> 1.0.5)
42
- method_source (~> 0.8)
43
- slop (~> 3.4)
44
- spoon (~> 0.0)
45
- rake (10.1.0)
46
- rspec (2.14.1)
47
- rspec-core (~> 2.14.0)
48
- rspec-expectations (~> 2.14.0)
49
- rspec-mocks (~> 2.14.0)
50
- rspec-core (2.14.5)
51
- rspec-expectations (2.14.2)
52
- diff-lcs (>= 1.1.3, < 2.0)
53
- rspec-mocks (2.14.3)
54
- ruby-hmac (0.4.0)
55
- simplecov (0.7.1)
56
- multi_json (~> 1.0)
57
- simplecov-html (~> 0.7.1)
58
- simplecov-html (0.7.1)
59
- slop (3.4.6)
60
- spoon (0.0.4)
61
- ffi
62
- thor (0.18.1)
63
-
64
- PLATFORMS
65
- java
66
- ruby
67
-
68
- DEPENDENCIES
69
- bundler (~> 1.3)
70
- lobber!
71
- pry
72
- rake
73
- rspec
74
- simplecov