lobber 0.0.4 → 0.0.5

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: 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