cartage-s3 1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 16aa1d98e9a68dba8de3548a4618047e0774861a
4
+ data.tar.gz: 779253a86e9be288e0ed0ae36bfb438bc74f75f6
5
+ SHA512:
6
+ metadata.gz: a88299b376895aeff8d1521f48e71eb551f86dfbb0d35bd9954babe25bda0e1433839a6db4bce0995ac653b4618c937ba662b2cbddeb20bcc021bbe3dd60915c
7
+ data.tar.gz: c5a70b38350fd3db62027d9e11d81793c0485eb76f59a5d156987fbd7d1647315c59ea0dfc57b4fc86997daf9f113f5816bff6c889746cac89e6fec0230eb1e7
@@ -0,0 +1,27 @@
1
+ # -*- ruby -*-
2
+
3
+ require "autotest/restart"
4
+
5
+ Autotest.add_hook :initialize do |at|
6
+ # .minitest.rb ensures that the gem version of minitest is used.
7
+ at.testlib = ".minitest.rb"
8
+ # at.testlib = "minitest/unit"
9
+ #
10
+ # at.extra_files << "../some/external/dependency.rb"
11
+ #
12
+ # at.libs << ":../some/external"
13
+ #
14
+ # at.add_exception "vendor"
15
+ #
16
+ # at.add_mapping(/dependency.rb/) do |f, _|
17
+ # at.files_matching(/test_.*rb$/)
18
+ # end
19
+ #
20
+ # %w(TestA TestB).each do |klass|
21
+ # at.extra_class_map[klass] = "test/test_misc.rb"
22
+ # end
23
+ end
24
+
25
+ # Autotest.add_hook :run_command do |at|
26
+ # system "rake build"
27
+ # end
@@ -0,0 +1 @@
1
+
@@ -0,0 +1,2 @@
1
+ gem "minitest"
2
+ require "minitest/autorun"
@@ -0,0 +1,63 @@
1
+ == Contributing
2
+
3
+ We value any contribution to cartage-s3 you can provide: a bug report, a
4
+ feature request, or code contributions.
5
+
6
+ cartage-s3 has a few contribution guidelines:
7
+
8
+ * Changes *will* *not* be accepted without tests. The test suite is written
9
+ with {Minitest}[https://github.com/seattlerb/minitest].
10
+ * Match our coding style.
11
+ * Use a thoughtfully-named topic branch that contains your change. Rebase your
12
+ commits into logical chunks as necessary.
13
+ * Use {quality commit messages}[http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html].
14
+ * Do not change the version number; when your patch is accepted and a release
15
+ is made, the version will be updated at that point.
16
+ * Submit a GitHub pull request with your changes.
17
+
18
+ === Test Dependencies
19
+
20
+ cartage-s3 uses Ryan Davis’s {Hoe}[https://github.com/seattlerb/hoe] to manage
21
+ the release process, and it adds a number of rake tasks. You will mostly be
22
+ interested in:
23
+
24
+ $ rake
25
+
26
+ which runs the tests the same way that:
27
+
28
+ $ rake test
29
+ $ rake travis
30
+
31
+ will do.
32
+
33
+ To assist with the installation of the development dependencies for cartage-s3,
34
+ I have provided the simplest possible Gemfile pointing to the (generated)
35
+ +cartage-s3.gemspec+ file. This will permit you to do:
36
+
37
+ $ bundle install
38
+
39
+ to get the development dependencies. If you aleady have +hoe+ installed, you
40
+ can accomplish the same thing with:
41
+
42
+ $ rake newb
43
+
44
+ This task will install any missing dependencies, run the tests/specs, and
45
+ generate the RDoc.
46
+
47
+ === Workflow
48
+
49
+ Here's the most direct way to get your work merged into the project:
50
+
51
+ * Fork the project.
52
+ * Clone down your fork (<tt>git clone git://github.com/KineticCafe/cartage-s3.git</tt>).
53
+ * Create a topic branch to contain your change (<tt>git checkout -b my\_awesome\_feature</tt>).
54
+ * Hack away, add tests. Not necessarily in that order.
55
+ * Make sure everything still passes by running +rake+.
56
+ * If necessary, rebase your commits into logical chunks, without errors.
57
+ * Push the branch up (<tt>git push origin my\_awesome\_feature</tt>).
58
+ * Create a pull request against KineticCafe/cartage-s3 and describe
59
+ what your change does and the why you think it should be merged.
60
+
61
+ === Contributors
62
+
63
+ * Austin Ziegler created cartage-s3.
data/Gemfile ADDED
@@ -0,0 +1,9 @@
1
+ # -*- ruby -*-
2
+
3
+ # NOTE: This file is not the canonical source of dependencies. Edit the
4
+ # Rakefile, instead.
5
+
6
+ source "https://rubygems.org/"
7
+ gemspec
8
+
9
+ # vim: syntax=ruby
@@ -0,0 +1,5 @@
1
+ === 1.0 / 2015-03-20
2
+
3
+ * 1 major enhancement
4
+
5
+ * Birthday!
@@ -0,0 +1,27 @@
1
+ == Licence
2
+
3
+ This software is available under an MIT-style licence.
4
+
5
+ * Copyright 2015 Kinetic Cafe
6
+
7
+ Permission is hereby granted, free of charge, to any person obtaining a copy of
8
+ this software and associated documentation files (the "Software"), to deal in
9
+ the Software without restriction, including without limitation the rights to
10
+ use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
11
+ of the Software, and to permit persons to whom the Software is furnished to do
12
+ so, subject to the following conditions:
13
+
14
+ * The names of its contributors may not be used to endorse or promote
15
+ products derived from this software without specific prior written
16
+ permission.
17
+
18
+ The above copyright notice and this permission notice shall be included in all
19
+ copies or substantial portions of the Software.
20
+
21
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
22
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
23
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
24
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
25
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
26
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
27
+ SOFTWARE.
@@ -0,0 +1,12 @@
1
+ .autotest
2
+ .gemtest
3
+ .minitest.rb
4
+ Contributing.rdoc
5
+ Gemfile
6
+ History.rdoc
7
+ Licence.rdoc
8
+ Manifest.txt
9
+ README.rdoc
10
+ Rakefile
11
+ lib/cartage/s3.rb
12
+ lib/cartage/s3/command.rb
@@ -0,0 +1,45 @@
1
+ = cartage-s3 by Kinetic Cafe
2
+
3
+ code :: https://github.com/KineticCafe/cartage-s3/
4
+ issues :: https://github.com/KineticCafe/cartage-s3/issues
5
+ continuous integration :: {<img src="https://travis-ci.org/KineticCafe/cartage-s3.png" />}[https://travis-ci.org/KineticCafe/cartage-s3]
6
+
7
+ == Description
8
+
9
+ cartage-s3 is a plug-in for {cartage}[https://github.com/KineticCafe/cartage]
10
+ to upload the built package to Amazon's S3 or a service with a similar
11
+ interface. Cartage provides a repeatable means to create a package for a Rails
12
+ application that can be used in deployment with a configuration tool like
13
+ Ansible, Chef, Puppet, or Salt. The package is created with its dependencies
14
+ bundled in `vendor/bundle`, so it can be deployed in environments with strict
15
+ access control rules and without requiring development tool access.
16
+
17
+ == Synopsis
18
+
19
+ # Build a package from the current machine, using the Manifest.txt, and
20
+ # uploads it to AWS S3.
21
+ cartage s3
22
+
23
+ == Install
24
+
25
+ Add cartage-s3 to your Gemfile:
26
+
27
+ gem 'cartage-s3', '~> 1.0'
28
+
29
+ Or manually install:
30
+
31
+ % gem install cartage-s3
32
+
33
+ == cartage-s3 Semantic Versioning
34
+
35
+ cartage-s3 uses a {Semantic Versioning}[http://semver.org/] scheme with one
36
+ change:
37
+
38
+ * When PATCH is zero (+0+), it will be omitted from version references.
39
+
40
+ cartage-s3 will generally track cartage for major versions to ensure plugin API
41
+ compatibility.
42
+
43
+ :include: Contributing.rdoc
44
+
45
+ :include: Licence.rdoc
@@ -0,0 +1,56 @@
1
+ # -*- ruby -*-
2
+
3
+ require 'rubygems'
4
+ require 'hoe'
5
+ require 'pathname'
6
+
7
+ Hoe.plugin :doofus
8
+ Hoe.plugin :email unless ENV['CI'] or ENV['TRAVIS']
9
+ Hoe.plugin :gemspec2
10
+ Hoe.plugin :git
11
+ Hoe.plugin :minitest
12
+ Hoe.plugin :rubygems
13
+
14
+ spec = Hoe.spec 'cartage-s3' do
15
+ developer('Austin Ziegler', 'aziegler@kineticcafe.com')
16
+
17
+ self.history_file = 'History.rdoc'
18
+ self.readme_file = 'README.rdoc'
19
+ self.extra_rdoc_files = FileList['*.rdoc'].to_a
20
+
21
+ license 'MIT'
22
+
23
+ self.extra_deps << ['cartage', '~> 1.0']
24
+ self.extra_deps << ['fog', '~> 1.27']
25
+
26
+ self.extra_dev_deps << ['rake', '~> 10.0']
27
+ self.extra_dev_deps << ['hoe-doofus', '~> 1.0']
28
+ self.extra_dev_deps << ['hoe-gemspec2', '~> 1.1']
29
+ self.extra_dev_deps << ['hoe-git', '~> 1.5']
30
+ self.extra_dev_deps << ['hoe-geminabox', '~> 0.3']
31
+ =begin
32
+ self.extra_dev_deps << ['minitest', '~> 5.4']
33
+ self.extra_dev_deps << ['minitest-autotest', '~> 1.0']
34
+ self.extra_dev_deps << ['minitest-bisect', '~> 1.2']
35
+ self.extra_dev_deps << ['minitest-focus', '~> 1.1']
36
+ self.extra_dev_deps << ['minitest-moar', '~> 0.0']
37
+ self.extra_dev_deps << ['minitest-pretty_diff', '~> 0.1']
38
+ self.extra_dev_deps << ['simplecov', '~> 0.7']
39
+ =end
40
+ end
41
+
42
+ =begin
43
+ namespace :test do
44
+ task :coverage do
45
+ prelude = <<-EOS
46
+ require 'simplecov'
47
+ SimpleCov.start('test_frameworks') { command_name 'Minitest' }
48
+ gem 'minitest'
49
+ EOS
50
+ spec.test_prelude = prelude.split($/).join('; ')
51
+ Rake::Task['test'].execute
52
+ end
53
+ end
54
+ =end
55
+
56
+ # vim: syntax=ruby
@@ -0,0 +1,151 @@
1
+ begin
2
+ require 'psych'
3
+ rescue LoadError
4
+ end
5
+ require 'yaml'
6
+ require 'erb'
7
+ require 'cartage/plugin'
8
+
9
+ class Cartage
10
+ # Upload the target package to S3.
11
+ #
12
+ # == Configuration
13
+ # Cartage::S3 is configured in the +plugins.s3+ section of the Cartage
14
+ # configuration file, and supports the following keys:
15
+ #
16
+ # +path+:: The path name or bucket name where the targets will be uploaded.
17
+ # The <tt>--path</tt> option will override a config-provided path
18
+ # setting.
19
+ # +credentials+:: A dictionary which, if present, will be used to initialize
20
+ # a Fog::Storage object. If +credentials+ is set in a
21
+ # configuration file, the command-line parameters
22
+ # <tt>--key-id</tt>, <tt>--secret-key</tt>, and
23
+ # <tt>--region</tt> will be ignored.
24
+ #
25
+ # For AWS in us-west-2, this configuration would look like this:
26
+ #
27
+ # ---
28
+ # plugins:
29
+ # s3:
30
+ # path: PATHNAME
31
+ # credentials:
32
+ # provider: AWS
33
+ # aws_access_key_id: YOUR_AWS_ACCESS_KEY_ID
34
+ # aws_secret_access_key: YOUR_AWS_SECRET_ACCESS_KEY
35
+ # region: us-west-2
36
+ #
37
+ # For Rackspace CloudFiles London, it would be:
38
+ #
39
+ # ---
40
+ # plugins:
41
+ # s3:
42
+ # path: PATHNAME
43
+ # credentials:
44
+ # provider: Rackspace
45
+ # rackspace_username: RACKSPACE_USERNAME
46
+ # rackspace_api_key: RACKSPACE_API_KEY
47
+ # rackspace_auth_url: lon.auth.api.rackspacecloud.com
48
+ #
49
+ # For Google Cloud Storage, it would be:
50
+ #
51
+ # ---
52
+ # plugins:
53
+ # s3:
54
+ # path: PATHNAME
55
+ # credentials:
56
+ # provider: Google
57
+ # google_storage_access_key_id: YOUR_SECRET_ACCESS_KEY_ID
58
+ # google_storage_secret_access_key: YOUR_SECRET_ACCESS_KEY
59
+ #
60
+ # If Cartage#environment has been set, that value will be used to select
61
+ # partitioned configuration values.
62
+ #
63
+ # ---
64
+ # development:
65
+ # plugins:
66
+ # s3:
67
+ # path: PATHNAME
68
+ # credentials:
69
+ # provider: AWS
70
+ # aws_access_key_id: YOUR_AWS_ACCESS_KEY_ID
71
+ # aws_secret_access_key: YOUR_AWS_SECRET_ACCESS_KEY
72
+ # region: us-west-2
73
+ #
74
+ # === Cloud Storage Security Considerations
75
+ #
76
+ # cartage-s3 does not create the target path and expects to place both
77
+ # files in the same directory. The only thing that is required from the
78
+ # access user is that it may put a file directly into the bucket/path. The
79
+ # files in question are timestamped UTC, so there is little chance for
80
+ # collision.
81
+ class S3 < Cartage::Plugin
82
+ VERSION = '1.0' #:nodoc:
83
+
84
+ # The AWS S3 path (bucket) to use for uploading the cartage package.
85
+ attr_accessor :path
86
+ # The AWS S3 Access Key ID. If a +credentials+ section is not present in
87
+ # the configuration file and this is not provided, this will be pulled from
88
+ # <tt>$AWS_ACCESS_KEY_ID</tt>.
89
+ attr_accessor :aws_access_key_id
90
+ # The AWS S3 Secret Access Key. If a +credentials+ section is not present
91
+ # in the configuration file and this is not provided, this will be pulled
92
+ # from <tt>$AWS_SECRET_ACCESS_KEY</tt>.
93
+ attr_accessor :aws_secret_access_key
94
+ # The AWS S3 Region name.
95
+ attr_accessor :region
96
+
97
+ # Perform the upload.
98
+ def upload
99
+ require 'fog'
100
+
101
+ connection = Fog::Storage.new(@access)
102
+
103
+ @cartage.display "Uploading #{@cartage.final_release_hashref.basename}..."
104
+ connection.put_object(@target, @cartage.final_release_hashref.basename.to_s,
105
+ @cartage.final_release_hashref.read)
106
+ @cartage.display "Uploading #{@cartage.final_tarball.basename}..."
107
+ connection.put_object(@target, @cartage.final_tarball.basename.to_s,
108
+ @cartage.final_tarball.read)
109
+ end
110
+
111
+ private
112
+
113
+ def resolve_config!(s3_config)
114
+ @target = s3_config && s3_config.path
115
+
116
+ @access = if s3_config && s3_config.credentials
117
+ s3_config.credentials.to_h
118
+ else
119
+ {
120
+ provider: 'AWS',
121
+ aws_access_key_id: value_for!(:aws_access_key_id),
122
+ aws_secret_access_key: value_for!(:aws_secret_access_key),
123
+ region: region
124
+ }
125
+ end
126
+
127
+ provider = @access[:provider]
128
+ raise ArgumentError, <<-exception if provider.nil? or provider.empty?
129
+ Cannot upload: no provider set.
130
+ exception
131
+
132
+ @target = path || @target
133
+ raise ArgumentError, <<-exception if @target.nil? or @target.empty?
134
+ Cannot upload to #{provider}: path is not set.
135
+ exception
136
+ end
137
+
138
+ def value_for!(name)
139
+ (send(name) || ENV[name.to_s.upcase]).tap do |value|
140
+ raise ArgumentError, <<-exception if value.nil? or value.empty?
141
+ Cannot upload: AWS S3 requires #{name.to_s.upcase} be provided.
142
+ exception
143
+ end
144
+ end
145
+
146
+ def self.commands
147
+ require_relative 's3/command'
148
+ [ Cartage::S3::Command ]
149
+ end
150
+ end
151
+ end
@@ -0,0 +1,43 @@
1
+ require 'cartage/command'
2
+
3
+ class Cartage::S3::Command < Cartage::Command #:nodoc:
4
+ def initialize(cartage)
5
+ super(cartage, 's3')
6
+ takes_commands(false)
7
+ short_desc('Build a release package and upload to cloud storage.')
8
+
9
+ @cartage = cartage
10
+ @s3 = cartage.s3
11
+
12
+ Cartage.common_build_options(options, cartage)
13
+
14
+ options do |opts|
15
+ opts.separator "Cartage S3 Options"
16
+ opts.on(
17
+ '-P', '--path PATH',
18
+ 'The bucket or path where the release package will be uploaded to.'
19
+ ) { |b| @s3.path = b }
20
+ opts.on(
21
+ '-K', '--key-id AWS_ACCESS_KEY_ID',
22
+ 'The AWS S3 access key ID.'
23
+ ) { |k| @s3.aws_access_key_id = k }
24
+ opts.on(
25
+ '-S', '--secret-key AWS_SECRET_ACCESS_KEY',
26
+ 'The AWS S3 secret access key.'
27
+ ) { |s| @s3.aws_secret_access_key = s }
28
+ opts.on(
29
+ '-R', '--region REGION',
30
+ 'The AWS S3 region for uploading.'
31
+ ) { |r| @s3.region = r }
32
+ end
33
+ end
34
+
35
+ def perform(*)
36
+ @cartage.pack
37
+ @s3.upload
38
+ end
39
+
40
+ def with_plugins
41
+ %w(s3)
42
+ end
43
+ end
metadata ADDED
@@ -0,0 +1,211 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: cartage-s3
3
+ version: !ruby/object:Gem::Version
4
+ version: '1.0'
5
+ platform: ruby
6
+ authors:
7
+ - Austin Ziegler
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-03-24 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: cartage
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: fog
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.27'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.27'
41
+ - !ruby/object:Gem::Dependency
42
+ name: minitest
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '5.5'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '5.5'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rdoc
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '4.0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '4.0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: rake
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '10.0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '10.0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: hoe-doofus
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '1.0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '1.0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: hoe-gemspec2
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '1.1'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '1.1'
111
+ - !ruby/object:Gem::Dependency
112
+ name: hoe-git
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '1.5'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '1.5'
125
+ - !ruby/object:Gem::Dependency
126
+ name: hoe-geminabox
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '0.3'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - "~>"
137
+ - !ruby/object:Gem::Version
138
+ version: '0.3'
139
+ - !ruby/object:Gem::Dependency
140
+ name: hoe
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - "~>"
144
+ - !ruby/object:Gem::Version
145
+ version: '3.13'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - "~>"
151
+ - !ruby/object:Gem::Version
152
+ version: '3.13'
153
+ description: |-
154
+ cartage-s3 is a plug-in for {cartage}[https://github.com/KineticCafe/cartage]
155
+ to upload the built package to Amazon's S3 or a service with a similar
156
+ interface. Cartage provides a repeatable means to create a package for a Rails
157
+ application that can be used in deployment with a configuration tool like
158
+ Ansible, Chef, Puppet, or Salt. The package is created with its dependencies
159
+ bundled in `vendor/bundle`, so it can be deployed in environments with strict
160
+ access control rules and without requiring development tool access.
161
+ email:
162
+ - aziegler@kineticcafe.com
163
+ executables: []
164
+ extensions: []
165
+ extra_rdoc_files:
166
+ - Contributing.rdoc
167
+ - History.rdoc
168
+ - Licence.rdoc
169
+ - Manifest.txt
170
+ - README.rdoc
171
+ files:
172
+ - ".autotest"
173
+ - ".gemtest"
174
+ - ".minitest.rb"
175
+ - Contributing.rdoc
176
+ - Gemfile
177
+ - History.rdoc
178
+ - Licence.rdoc
179
+ - Manifest.txt
180
+ - README.rdoc
181
+ - Rakefile
182
+ - lib/cartage/s3.rb
183
+ - lib/cartage/s3/command.rb
184
+ homepage: https://github.com/KineticCafe/cartage-s3/
185
+ licenses:
186
+ - MIT
187
+ metadata: {}
188
+ post_install_message:
189
+ rdoc_options:
190
+ - "--main"
191
+ - README.rdoc
192
+ require_paths:
193
+ - lib
194
+ required_ruby_version: !ruby/object:Gem::Requirement
195
+ requirements:
196
+ - - ">="
197
+ - !ruby/object:Gem::Version
198
+ version: '0'
199
+ required_rubygems_version: !ruby/object:Gem::Requirement
200
+ requirements:
201
+ - - ">="
202
+ - !ruby/object:Gem::Version
203
+ version: '0'
204
+ requirements: []
205
+ rubyforge_project:
206
+ rubygems_version: 2.2.2
207
+ signing_key:
208
+ specification_version: 4
209
+ summary: cartage-s3 is a plug-in for {cartage}[https://github.com/KineticCafe/cartage]
210
+ to upload the built package to Amazon's S3 or a service with a similar interface
211
+ test_files: []