provisioner 0.0.1

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,5 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
5
+ .rvmrc
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in provisioner.gemspec
4
+ gemspec
@@ -0,0 +1,44 @@
1
+ Provisioner
2
+ =============
3
+
4
+ This command-line tool reduces the amount of time and repetition involved in provisioning new Heroku app instances.
5
+
6
+ Installation
7
+ ------------
8
+
9
+ $ gem install provisioner
10
+
11
+
12
+ Basic Usage
13
+ -----------
14
+
15
+ To create a new Heroku app *and* configure the common (free) add-ons:
16
+
17
+ $ provisioner new application-name-staging
18
+
19
+ If you've already got a Heroku app, you can quickly configure the common (free) add-ons:
20
+
21
+ $ provisioner setup application-name-staging
22
+
23
+ There are some common add-ons that have a monthly cost associated with them. To enable those:
24
+
25
+ $ provisioner paid application-name-staging
26
+
27
+
28
+ Free Add-ons
29
+ ------------
30
+
31
+ * deployhooks:email
32
+ * cron:daily
33
+ * newrelic:standard
34
+ * pgbackups:auto-week
35
+ * sendgrid:starter
36
+ * ssl:piggyback
37
+ * stillalive:basic
38
+ * logging:expanded
39
+
40
+
41
+ Paid Add-ons
42
+ ------------
43
+
44
+ * hoptoad:basic ($2/mo)
@@ -0,0 +1 @@
1
+ require "bundler/gem_tasks"
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+ require 'provisioner/cli'
3
+ Provisioner::CLI.start
@@ -0,0 +1,5 @@
1
+ require "provisioner/version"
2
+
3
+ module Provisioner
4
+ # Your code goes here...
5
+ end
@@ -0,0 +1,87 @@
1
+ require 'thor'
2
+ require 'term/ansicolor'
3
+ module Provisioner
4
+
5
+ class CLI < Thor
6
+ include Term::ANSIColor
7
+
8
+ desc "new HEROKU_APP_NAME", "Creates a new Heroku app instance and sets up with common add-ons. (Free)"
9
+ def new(heroku_app_name)
10
+
11
+ print "\n"
12
+ print green + "Creating new Heroku instance." + clear + "\n"
13
+ system "heroku create #{heroku_app_name} --stack cedar"
14
+ setup(heroku_app_name)
15
+
16
+ end
17
+
18
+ desc "setup HEROKU_APP_NAME", "Set up common add-ons for an existing Heroku app instance. (Free)"
19
+ def setup(heroku_app_name)
20
+
21
+ app_flag = " --app #{heroku_app_name}"
22
+
23
+ # add email deployment notifications.
24
+ print "\n"
25
+ print green + "Enabling email deploy notifications." + clear + "\n"
26
+ print green + "We'll open a page where you can configure the email addresses to notify." + clear + "\n"
27
+ system "heroku addons:add deployhooks:email" + app_flag
28
+ system "open https://api.heroku.com/myapps/#{heroku_app_name}/addons/deployhooks:email"
29
+ print "\n"
30
+
31
+ # # add standardized staging error pages.
32
+ # print green + "Configuring helpful error and maintenance pages for staging." + clear + "\n"
33
+ # system "heroku config:add ERROR_PAGE_URL=http://wearetitans.net/staging/error MAINTENANCE_PAGE_URL=http://wearetitans.net/staging/maintenance" + app_flag
34
+
35
+ print green + "Enabling daily cron." + clear + "\n"
36
+ system "heroku addons:add cron:daily" + app_flag
37
+ print "\n"
38
+
39
+ print green + "Enabling the standard New Relic package." + clear + "\n"
40
+ system "heroku addons:add newrelic:standard" + app_flag
41
+ print "\n"
42
+
43
+ print green + "Enabling daily database backups with one week retention." + clear + "\n"
44
+ system "heroku addons:add pgbackups:auto-week" + app_flag
45
+ print "\n"
46
+
47
+ print green + "Enabling emails through SendGrid's starter package." + clear + "\n"
48
+ system "heroku addons:add sendgrid:starter" + app_flag
49
+ print "\n"
50
+
51
+ print green + "Enabling piggy-back SSL." + clear + "\n"
52
+ system "heroku addons:add ssl:piggyback" + app_flag
53
+ print "\n"
54
+
55
+ print green + "Enabling basic Still Alive service." + clear + "\n"
56
+ system "heroku addons:add stillalive:basic" + app_flag
57
+ print "\n"
58
+
59
+ print green + "Upgrading logging to expanded. (Still free.)" + clear + "\n"
60
+ system "heroku addons:upgrade logging:expanded" + app_flag
61
+ print "\n"
62
+
63
+ # print green + "Enabling custom domains."
64
+ # system "heroku addons:add custom_domains:basic" + app_flag
65
+ #
66
+ # # add titan's staging url
67
+ # if environment == 'staging'
68
+ # system "heroku domains:add #{heroku_app_name}.staging.titanclients.com" + app_flag
69
+ # end
70
+
71
+ end
72
+
73
+ desc "paid HEROKU_APP_NAME", "Add common but paid features to an existing Heroku app instance. ($2/mo)"
74
+ def paid(heroku_app_name)
75
+
76
+ app_flag = " --app #{heroku_app_name}"
77
+
78
+ print "\n"
79
+ print green + "Enabling the basic Hoptoad error notification package." + clear + "\n"
80
+ system "heroku addons:add hoptoad:basic" + app_flag
81
+ print "\n"
82
+
83
+ end
84
+
85
+ end
86
+
87
+ end
@@ -0,0 +1,3 @@
1
+ module Provisioner
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,27 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "provisioner/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "provisioner"
7
+ s.version = Provisioner::VERSION
8
+ s.authors = ["Andrew Culver"]
9
+ s.email = ["andrew.culver@gmail.com"]
10
+ s.homepage = "http://github.com/andrewculver/provisioner"
11
+ s.summary = %q{Create Heroku apps and set up common add-ons automatically}
12
+ s.description = %q{This command-line tool reduces the amount of time and repetition involved in provisioning new Heroku app instances.}
13
+
14
+ s.rubyforge_project = "provisioner"
15
+
16
+ s.files = `git ls-files`.split("\n")
17
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
18
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
19
+ s.require_paths = ["lib"]
20
+
21
+ # specify any dependencies here; for example:
22
+ # s.add_development_dependency "rspec"
23
+ s.add_runtime_dependency "rake"
24
+ s.add_runtime_dependency "thor"
25
+ s.add_runtime_dependency "heroku"
26
+ s.add_runtime_dependency "term-ansicolor"
27
+ end
metadata ADDED
@@ -0,0 +1,100 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: provisioner
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Andrew Culver
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-01-22 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rake
16
+ requirement: &70141887111580 !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: *70141887111580
25
+ - !ruby/object:Gem::Dependency
26
+ name: thor
27
+ requirement: &70141887111140 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ! '>='
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: *70141887111140
36
+ - !ruby/object:Gem::Dependency
37
+ name: heroku
38
+ requirement: &70141887110700 !ruby/object:Gem::Requirement
39
+ none: false
40
+ requirements:
41
+ - - ! '>='
42
+ - !ruby/object:Gem::Version
43
+ version: '0'
44
+ type: :runtime
45
+ prerelease: false
46
+ version_requirements: *70141887110700
47
+ - !ruby/object:Gem::Dependency
48
+ name: term-ansicolor
49
+ requirement: &70141887110260 !ruby/object:Gem::Requirement
50
+ none: false
51
+ requirements:
52
+ - - ! '>='
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ type: :runtime
56
+ prerelease: false
57
+ version_requirements: *70141887110260
58
+ description: This command-line tool reduces the amount of time and repetition involved
59
+ in provisioning new Heroku app instances.
60
+ email:
61
+ - andrew.culver@gmail.com
62
+ executables:
63
+ - provisioner
64
+ extensions: []
65
+ extra_rdoc_files: []
66
+ files:
67
+ - .gitignore
68
+ - Gemfile
69
+ - README.md
70
+ - Rakefile
71
+ - bin/provisioner
72
+ - lib/provisioner.rb
73
+ - lib/provisioner/cli.rb
74
+ - lib/provisioner/version.rb
75
+ - provisioner.gemspec
76
+ homepage: http://github.com/andrewculver/provisioner
77
+ licenses: []
78
+ post_install_message:
79
+ rdoc_options: []
80
+ require_paths:
81
+ - lib
82
+ required_ruby_version: !ruby/object:Gem::Requirement
83
+ none: false
84
+ requirements:
85
+ - - ! '>='
86
+ - !ruby/object:Gem::Version
87
+ version: '0'
88
+ required_rubygems_version: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
94
+ requirements: []
95
+ rubyforge_project: provisioner
96
+ rubygems_version: 1.8.10
97
+ signing_key:
98
+ specification_version: 3
99
+ summary: Create Heroku apps and set up common add-ons automatically
100
+ test_files: []