middleman-aws 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 7b1c91da6c20bd09bdd3deb9d8af1e144761303f
4
+ data.tar.gz: 9173e8f0f7504f905045a099bd88b43a07a6cffb
5
+ SHA512:
6
+ metadata.gz: 3e4664820bef0a0de6b97055bde8382a55ad10c321c191da047fa4e701d07250f03fd6841b6034e34cfe9ebee70cac9fd24b12649aacc6a584e612f55dfec1fa
7
+ data.tar.gz: a1711687dfaaaa2a749b9524adedba8f09ec11c361f1b4090370f198420633639563732a3d0fecaf5b70896b62ef47ffd87eba901e38043700bbea1e7c8ec278
data/.gitignore ADDED
@@ -0,0 +1,7 @@
1
+ # Ignore bundler lock file
2
+ /Gemfile.lock
3
+
4
+ # Ignore pkg folder
5
+ /pkg
6
+
7
+ .idea
data/.rvmrc ADDED
@@ -0,0 +1 @@
1
+ rvm use ruby-2.0.0@middleman-aws --create
data/Gemfile ADDED
@@ -0,0 +1,19 @@
1
+ # If you have OpenSSL installed, we recommend updating
2
+ # the following line to use "https"
3
+ source 'http://rubygems.org'
4
+
5
+ # Specify your gem's dependencies in middleman-aws.gemspec
6
+ gemspec
7
+
8
+ group :development do
9
+ gem 'rake'
10
+ gem 'rdoc'
11
+ gem 'yard'
12
+ end
13
+
14
+ group :test do
15
+ gem 'cucumber'
16
+ gem 'fivemat'
17
+ gem 'aruba'
18
+ gem 'rspec'
19
+ end
data/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2014 AlienFast, LLC
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,74 @@
1
+ middleman-aws
2
+ =============
3
+
4
+ Simple set of [middleman](http://middlemanapp.com/) rake tasks to build and deploy to AWS using s3_sync and cloudfront invalidation.
5
+
6
+ # Installation
7
+
8
+ ## Step 1: Require this gem in the `Gemfile`:
9
+ gem 'middleman-aws'
10
+
11
+ ## Step 2: Require this gem in the `Rakefile`:
12
+ gem 'middleman-aws'
13
+
14
+ # Configuration
15
+
16
+ ## Step 1: Add your aws credentials e.g. ~/.aws/acme.yml
17
+ This should contain the access and secret keys generated from the selected IAM user. This is the only file that will need to reside
18
+ outside the repository. `acme` is equivalent to the directory name for your project. Don't worry, validation will make sure you have it right.
19
+
20
+ access_key_id: XXXXXX
21
+ secret_access_key: XXXXXX
22
+
23
+ ## Step 2: Add the necessary s3_sync and Cloudfront sections to your config
24
+ This is a sample of how a common config is setup with variables extracted:
25
+
26
+ # Configuration variables specific to each project
27
+ #------------------------------------------------------------------------
28
+ AWS_BUCKET = 'acme.alienfast.com'
29
+ AWS_CLOUDFRONT_DISTRIBUTION_ID = 'xxxxxx'
30
+
31
+ # Variables: Sent in on CLI by rake task via ENV
32
+ #------------------------------------------------------------------------
33
+ AWS_ACCESS_KEY = ENV['AWS_ACCESS_KEY']
34
+ AWS_SECRET = ENV['AWS_SECRET']
35
+
36
+ # https://github.com/fredjean/middleman-s3_sync
37
+ activate :s3_sync do |s3_sync|
38
+ s3_sync.bucket = AWS_BUCKET # The name of the S3 bucket you are targeting. This is globally unique.
39
+ s3_sync.aws_access_key_id = AWS_ACCESS_KEY
40
+ s3_sync.aws_secret_access_key = AWS_SECRET
41
+ s3_sync.delete = false # We delete stray files by default.
42
+ end
43
+
44
+ # https://github.com/andrusha/middleman-cloudfront
45
+ activate :cloudfront do |cf|
46
+ cf.access_key_id = AWS_ACCESS_KEY
47
+ cf.secret_access_key = AWS_SECRET
48
+ cf.distribution_id = AWS_CLOUDFRONT_DISTRIBUTION_ID
49
+ # cf.filter = /\.html$/i
50
+ end
51
+
52
+ # Usage
53
+ Run the desired rake task. It's as simple as `rake mm:publish` in one step, or you can choose to do things one step at a time.
54
+ See the available rake tasks below or run `rake -T`
55
+
56
+ # Available Rake Tasks
57
+
58
+ rake mm:build # Compile all files in the build directory
59
+ rake mm:clobber # Remove all files in the build direcory
60
+ rake mm:deploy # Deploy to S3 and invalidate Cloudfront after a Git commit/push
61
+ rake mm:preview # Run the preview server at http://localhost:4567
62
+ rake mm:publish # One step clobber, build, deploy
63
+ rake mm:show_config # Show config
64
+
65
+ ## Contributing
66
+ 1. Fork it
67
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
68
+ 3. Commit your changes (`git commit -am 'Add some feature'`)
69
+ 4. Push to the branch (`git push origin my-new-feature`)
70
+ 5. Create new Pull Request
71
+
72
+ ## Copyright
73
+
74
+ Copyright (c) 2014 AlienFast, LLC. See MIT LICENSE.txt for further details.
data/Rakefile ADDED
@@ -0,0 +1,15 @@
1
+ require 'bundler/gem_tasks'
2
+ # require 'bundler'
3
+ # Bundler::GemHelper.install_tasks
4
+
5
+ # require 'cucumber/rake/task'
6
+ #
7
+ # Cucumber::Rake::Task.new(:cucumber, 'Run features that should pass') do |t|
8
+ # t.cucumber_opts = "--color --tags ~@wip --strict --format #{ENV['CUCUMBER_FORMAT'] || 'Fivemat'}"
9
+ # end
10
+ #
11
+ # require 'rake/clean'
12
+ #
13
+ # task test: ['cucumber']
14
+ #
15
+ # task default: :test
@@ -0,0 +1,4 @@
1
+ PROJECT_ROOT_PATH = File.dirname(File.dirname(File.dirname(__FILE__)))
2
+ require 'middleman-core'
3
+ require 'middleman-core/step_definitions'
4
+ require File.join(PROJECT_ROOT_PATH, 'lib', 'middleman-aws')
@@ -0,0 +1,5 @@
1
+ #require 'rake'
2
+
3
+ if defined?(Rake)
4
+ Rake.add_rakelib(File.expand_path('../tasks', __FILE__))
5
+ end
@@ -0,0 +1,95 @@
1
+ #------------------------------------------------------------------------
2
+ # Rakefile
3
+ #------------------------------------------------------------------------
4
+ require 'yaml'
5
+ require 'uri'
6
+
7
+ namespace :mm do
8
+
9
+ desc 'Remove all files in the build directory'
10
+ task :clobber do |t, args|
11
+ # kill the old package dir
12
+ rm_r 'build' rescue nil
13
+ end
14
+
15
+ desc 'Compile all files into the build directory'
16
+ task :build do
17
+ puts '## Compiling static pages'
18
+ status = system 'bundle exec middleman build'
19
+ puts status ? 'Build successful.' : 'Build failed.'
20
+ end
21
+
22
+ desc 'Deploy to S3 and invalidate Cloudfront after a Git commit/push'
23
+ task :deploy do
24
+
25
+ puts '## Deploy starting...'
26
+ cd 'build' do
27
+ # system 'git add .'
28
+ system 'git add -u'
29
+ message = "Site updated at #{Time.now}"
30
+ puts "## Commiting: #{message}"
31
+ system "git commit -m \"#{message}\""
32
+ # puts "## Pushing generated website"
33
+ # system "git push origin master"
34
+ # puts "## Github Pages deploy complete"
35
+ end
36
+
37
+ credentials!
38
+ aws_env = "AWS_ACCESS_KEY=#{credentials['access_key_id']} AWS_SECRET=#{credentials['secret_access_key']}"
39
+ puts '## Syncing to S3...'
40
+ system "#{aws_env} bundle exec middleman s3_sync"
41
+ puts '## Invalidating cloudfront...'
42
+ system "#{aws_env} bundle exec middleman invalidate"
43
+ puts '## Deploy complete.'
44
+ end
45
+
46
+ desc 'One step clobber, build, deploy'
47
+ task :publish => [:clobber, :build, :deploy] do
48
+ end
49
+
50
+
51
+ desc 'Run the preview server at http://localhost:4567'
52
+ task :preview do
53
+ system 'middleman server'
54
+ end
55
+
56
+ desc 'Show config'
57
+ task :show_config do |t, args|
58
+
59
+ credentials!
60
+
61
+ puts "\n----------------------------------------------------------------------------------"
62
+ puts 'Configuration:'
63
+ puts "\t:working directory: #{Rake.original_dir}"
64
+ puts "\t:project: #{project}"
65
+ puts "\t:aws_secrets_file: #{aws_secrets_file}"
66
+ puts "\t:access_key_id: #{credentials['access_key_id']}"
67
+ puts "----------------------------------------------------------------------------------\n"
68
+ end
69
+
70
+ # validate file exists
71
+ def credentials!
72
+ raise "\nFailed to load AWS secrets: #{aws_secrets_file}.\nFile contents should look like:\naccess_key_id: XXXX\nsecret_access_key: XXXX\n\n" unless File.exists?(aws_secrets_file)
73
+ credentials
74
+
75
+ ['access_key_id', 'secret_access_key'].each do |key|
76
+ value = credentials[key]
77
+ raise "\nThe #{key} must be specified in the #{aws_secrets_file}.\n\n" if value.nil?
78
+ end
79
+ end
80
+
81
+ # load from a user directory i.e. ~/.aws/acme.yml
82
+ def credentials
83
+ # load secrets from the user home directory
84
+ @credentials = YAML::load_file(aws_secrets_file) if @credentials.nil?
85
+ @credentials
86
+ end
87
+
88
+ def aws_secrets_file
89
+ File.expand_path("~/.aws/#{project}.yml")
90
+ end
91
+
92
+ def project
93
+ File.basename(Rake.original_dir)
94
+ end
95
+ end
@@ -0,0 +1,32 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path('../lib', __FILE__)
3
+
4
+ Gem::Specification.new do |s|
5
+ s.name = 'middleman-aws'
6
+ s.version = '0.0.5'
7
+ s.platform = Gem::Platform::RUBY
8
+
9
+ s.authors = ['Kevin Ross']
10
+ s.email = ['kevin.ross@alienfast.com']
11
+ s.description = <<-TEXT
12
+ Simple set of middleman rake tasks to build and deploy to AWS using s3_sync and cloudfront invalidation
13
+ TEXT
14
+ s.summary = <<-TEXT
15
+ Simple set of middleman rake tasks to build and deploy to AWS using s3_sync and cloudfront invalidation
16
+ TEXT
17
+ s.homepage = 'https://github.com/alienfast/middleman-aws'
18
+ s.license = 'MIT'
19
+
20
+ s.files = `git ls-files`.split("\n")
21
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
22
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
23
+ s.require_paths = ['lib']
24
+
25
+ # The version of middleman-core your extension depends on
26
+ # s.add_runtime_dependency 'middleman-core', ['>= 3.3.3']
27
+
28
+ s.add_runtime_dependency 'middleman-s3_sync' # https://github.com/fredjean/middleman-s3_sync
29
+ s.add_runtime_dependency 'middleman-cloudfront' # https://github.com/andrusha/middleman-cloudfront
30
+
31
+ s.add_dependency 'rake'
32
+ end
metadata ADDED
@@ -0,0 +1,100 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: middleman-aws
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.5
5
+ platform: ruby
6
+ authors:
7
+ - Kevin Ross
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-08-01 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: middleman-s3_sync
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '>='
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '>='
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: middleman-cloudfront
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - '>='
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ description: |2
56
+ Simple set of middleman rake tasks to build and deploy to AWS using s3_sync and cloudfront invalidation
57
+ email:
58
+ - kevin.ross@alienfast.com
59
+ executables: []
60
+ extensions: []
61
+ extra_rdoc_files: []
62
+ files:
63
+ - .gitignore
64
+ - .rvmrc
65
+ - Gemfile
66
+ - LICENSE
67
+ - README.md
68
+ - Rakefile
69
+ - features/support/env.rb
70
+ - lib/middleman-aws.rb
71
+ - lib/middleman-aws/tasks/aws.rake
72
+ - middleman-aws.gemspec
73
+ homepage: https://github.com/alienfast/middleman-aws
74
+ licenses:
75
+ - MIT
76
+ metadata: {}
77
+ post_install_message:
78
+ rdoc_options: []
79
+ require_paths:
80
+ - lib
81
+ required_ruby_version: !ruby/object:Gem::Requirement
82
+ requirements:
83
+ - - '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
86
+ required_rubygems_version: !ruby/object:Gem::Requirement
87
+ requirements:
88
+ - - '>='
89
+ - !ruby/object:Gem::Version
90
+ version: '0'
91
+ requirements: []
92
+ rubyforge_project:
93
+ rubygems_version: 2.0.3
94
+ signing_key:
95
+ specification_version: 4
96
+ summary: Simple set of middleman rake tasks to build and deploy to AWS using s3_sync
97
+ and cloudfront invalidation
98
+ test_files:
99
+ - features/support/env.rb
100
+ has_rdoc: