cartage-s3 1.0

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.
@@ -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: []