capistrano-campout 0.0.2 → 1.0.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.
data/README.md CHANGED
@@ -36,16 +36,24 @@ Or install it yourself as:
36
36
 
37
37
  $ gem install capistrano-campout
38
38
 
39
- ## Usage
39
+ ## Setup
40
40
 
41
- Add a:
41
+ You can generate a configuration by running
42
+
43
+ campout generate_config
44
+
45
+ This will prompt you for your campfire configuration settings and create config/campout.yml and config/campout.local.yml files for you, adding config/campout.local.yml to your .gitignore file (if present) and adding a require 'capistrano-campout' to your config/deploy.rb file.
46
+
47
+ ## Manual Setup
48
+
49
+ Alternatively add a:
42
50
 
43
51
  require "capistrano-campout"
44
52
 
45
53
  to your capistrano deploy.rb and create a config/campout.yml and/or a config/campout.local.yml with your campfire settings (required)
46
54
 
47
55
  campfire:
48
- domain: 'your_campfire_domain'
56
+ domain: your_campfire_domain
49
57
  room: room_id_to_post_to
50
58
  token: your_campfire_api_token
51
59
 
@@ -53,9 +61,11 @@ to your capistrano deploy.rb and create a config/campout.yml and/or a config/cam
53
61
 
54
62
  "config/campout.local.yml" is meant as a local/private configuration file - I'd recommend adding the file to the .gitignore
55
63
 
56
- ## Additional Settings
64
+ ## Settings
65
+
66
+ Run the 'campout generate_config' command - and the config/campout.yml file will have a list of all the known settings.
57
67
 
58
- I'll write those up one day. Until that day, use the source, Luke.
68
+ Otherwise, use the source, Luke.
59
69
 
60
70
  ## Known Limitations
61
71
 
@@ -63,7 +73,7 @@ I'll write those up one day. Until that day, use the source, Luke.
63
73
 
64
74
  Capistrano::Campout requires [Tinder](https://github.com/collectiveidea/tinder) - which requires [ActiveSupport](https://github.com/rails/rails/tree/master/activesupport)
65
75
 
66
- Apparently, Capistrano's "deploy:cleanup" task breaks due to conflicts between Capistrano and ActiveSupport
76
+ Apparently, Capistrano's "deploy:cleanup" task breaks in some situations due to conflicts between Capistrano and ActiveSupport
67
77
 
68
78
  See:
69
79
 
data/bin/campout ADDED
@@ -0,0 +1,40 @@
1
+ #!/usr/bin/env ruby
2
+ # Copyright (c) 2012 Jason Adam Young
3
+ #
4
+ # MIT License
5
+ #
6
+ # Permission is hereby granted, free of charge, to any person obtaining
7
+ # a copy of this software and associated documentation files (the
8
+ # "Software"), to deal in the Software without restriction, including
9
+ # without limitation the rights to use, copy, modify, merge, publish,
10
+ # distribute, sublicense, and/or sell copies of the Software, and to
11
+ # permit persons to whom the Software is furnished to do so, subject to
12
+ # the following conditions:
13
+ #
14
+ # The above copyright notice and this permission notice shall be
15
+ # included in all copies or substantial portions of the Software.
16
+ #
17
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
18
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
19
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
20
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
21
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
22
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
23
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
24
+ #
25
+ # Additional Copyrights
26
+ # =====================
27
+ #
28
+ # This code also contains code from the following people:
29
+ #
30
+ # rails_config : Copyright (c) 2010 Jacques Crocker
31
+ # deep_merge : Copyright (c) 2008 Steve Midgley, now mainted by Daniel DeLeo
32
+ # eycap : Copyright (c) 2008-2011 Engine Yard
33
+ # capfire : Copyright (c) 2010 Piet Jaspers 10to1
34
+ # capistrano-mountaintop : Copyright (c) 2010 Joshua Nichols.
35
+
36
+ source_root = File.expand_path(File.dirname(__FILE__) + "/..")
37
+ $LOAD_PATH.unshift("#{source_root}/lib")
38
+ require 'rubygems' rescue nil
39
+ require 'cli'
40
+ Campout::CLI.start
@@ -2,8 +2,6 @@
2
2
  # Copyright (c) 2012 Jason Adam Young
3
3
  # === LICENSE:
4
4
  # see LICENSE file
5
-
6
-
7
5
  module Capistrano
8
6
  module Campout
9
7
  class TemplateError < NameError
@@ -1,22 +1,6 @@
1
- ## campfire settings
2
- # campfire:
3
- # domain: 'your_campfire_domain'
4
- # room: your_room_id
5
- # token: your_campfire_token
6
-
7
- ## global action settings
8
- # copy_log_to_server: false
9
- # suppress_sounds: false
10
- # suppress_deploy_time: false
11
- # suppress_github_compare: false
12
-
13
- ## deployment settings
14
1
  pre_deploy:
15
2
  message: "<%= campout_deployer %> is starting to deploy <%= application %> to <%= whereto %>"
16
- # play: 'pushit'
17
3
  post_deploy_success:
18
4
  message: "<%= campout_deployer %> deployed <%= application %> to <%= whereto %>"
19
- # play: 'yeah'
20
5
  post_deploy_failure:
21
6
  message: "The deploy of <%= application %> to <%= whereto %> by <%= campout_deployer %> has failed."
22
- # play: 'drama'
@@ -1,5 +1,5 @@
1
1
  module Capistrano
2
2
  module Campout
3
- VERSION = "0.0.2"
3
+ VERSION = "1.0.0"
4
4
  end
5
5
  end
data/lib/cli.rb ADDED
@@ -0,0 +1,98 @@
1
+ # === COPYRIGHT:
2
+ # Copyright (c) 2012 Jason Adam Young
3
+ # === LICENSE:
4
+ # see LICENSE file
5
+ require 'thor'
6
+ require 'yaml'
7
+ require 'capistrano-campout/version'
8
+
9
+ module Campout
10
+ class CLI < Thor
11
+ include Thor::Actions
12
+
13
+ # these are not the tasks that you seek
14
+ def self.source_root
15
+ File.expand_path(File.dirname(__FILE__) + "/..")
16
+ end
17
+
18
+ no_tasks do
19
+
20
+ def copy_configs
21
+ # campout.yml
22
+ destination = "./config/campout.yml"
23
+ if(!File.exists?(destination))
24
+ copy_file('templates/campout.yml',destination)
25
+ end
26
+ #
27
+ destination = "./config/campout.local.yml"
28
+ if(!File.exists?(destination))
29
+ copy_file('templates/campout.local.yml',destination)
30
+ end
31
+ end
32
+
33
+ def add_campfire_settings(open_repository,campfire_settings)
34
+ if(open_repository)
35
+ settings_file = "./config/campout.local.yml"
36
+ else
37
+ settings_file = "./config/campout.yml"
38
+ end
39
+
40
+ # has campfire settings?
41
+ has_campfire_settings = false
42
+ if(existing_settings = YAML.load(IO.read(settings_file)))
43
+ if(!existing_settings['campfire'].nil?)
44
+ has_campfire_settings = true
45
+ end
46
+ end
47
+
48
+ if(!has_campfire_settings)
49
+ append_file(settings_file,campfire_settings.to_yaml)
50
+ end
51
+ end
52
+
53
+ def add_local_to_gitignore
54
+ gitignore_file = './.gitignore'
55
+ if(File.exists?(gitignore_file))
56
+ if(!(File.read(gitignore_file) =~ %r{config/campout.local.yml}))
57
+ append_file(gitignore_file,"config/campout.local.yml\n")
58
+ end
59
+ end
60
+ end
61
+
62
+ def add_campout_to_deploy
63
+ cap_deploy_script = './config/deploy.rb'
64
+ if(File.exists?(cap_deploy_script))
65
+ if(!(File.read(cap_deploy_script) =~ %r{require ['|"]capistrano-campout["|']}))
66
+ prepend_file(cap_deploy_script,"require 'capistrano-campout'\n")
67
+ end
68
+ end
69
+ end
70
+ end
71
+
72
+
73
+ desc "about", "about campout"
74
+ def about
75
+ puts "Campout Version #{Capistrano::Campout::VERSION}: Post messages and paste logs from a capistrano deployment to a campfire room."
76
+ end
77
+
78
+ desc "generate_config", "generate campout configuration files"
79
+ def generate_config
80
+ open_repository = yes?("Is this an open/public repository?")
81
+ if(open_repository)
82
+ say "Your campout settings will be added to ./config/campout.local.yml"
83
+ else
84
+ say "Your campout settings will be added to ./config/campout.yml"
85
+ end
86
+ campfire_settings = {'campfire' => {'domain' => 'domain', 'room' => 'room', 'token' => 'token'}}
87
+ campfire_settings['campfire']['domain'] = ask("Your campfire domain:")
88
+ campfire_settings['campfire']['room'] = ask("Your campfire room ID:").to_i
89
+ campfire_settings['campfire']['token'] = ask("Your campfire api token:")
90
+
91
+ copy_configs
92
+ add_campfire_settings(open_repository,campfire_settings)
93
+ add_local_to_gitignore
94
+ add_campout_to_deploy
95
+ end
96
+ end
97
+
98
+ end
@@ -0,0 +1,10 @@
1
+ #### config/campout.local.yml
2
+ ## User this file for local/private campout settings for the project. This
3
+ ## file should be excluded from your SCM.
4
+ ##
5
+ ## If your SCM repository is open it's strongly recommended that
6
+ ## your campfire settings into this local configuration file
7
+ ## particularly the campfire API token
8
+ ##
9
+ ## shared settings can be placed within a config/campout.yml file.
10
+ ## see config/campout.yml for the settings
@@ -0,0 +1,104 @@
1
+ #### config/campout.yml
2
+ ## User this file for shared campout settings for the project. It's
3
+ ## recommended that you add this file to your SCM.
4
+ ##
5
+ ## personal overrides or other settings can be placed
6
+ ## within a config/campout.local.yml file. If your SCM repository
7
+ ## is open it's strongly recommended that your campfire settings
8
+ ## into the local configuration file, particularly the campfire API token
9
+ ##
10
+ ### campfire settings
11
+ ##
12
+ ## The campfire configuration settings should be added as
13
+ ## a yaml hash keyed to "campfire" e.g.
14
+ ##
15
+ ## campfire:
16
+ ## domain: 'your_campfire_domain'
17
+ ## room: your_room_id
18
+ ## token: your_campfire_token
19
+ ##
20
+ ## The following campfire settings are required
21
+ ##
22
+ ## domain:
23
+ ## The "subdomain" for your campfire site
24
+ ## e.g. for https://yourdomain.campfirenow.com/ it will be "yourdomain"
25
+ ## room:
26
+ ## The id of the room you want to post messages to. Click on the campfire
27
+ ## room that you want and get the id from the URL.
28
+ ## e.g. for https://yourdomain.campfirenow.com/room/123456
29
+ ## the room id is 123456
30
+ ## token:
31
+ ## The API authentication token for your account. You can get your token
32
+ ## by clicking "My Info" in the top right of the campfirewnow site - or
33
+ ## going directly to https://yourdomain.campfirenow.com/member/edit
34
+ ##
35
+ ## The following campfire settings are optional
36
+ ##
37
+ ## ssl:
38
+ ## If false, specifies that Tinder should not use an SSL connection
39
+ ## ssl_verify:
40
+ ## If false, specified that Tinder should not try to verify the SSL
41
+ ## certificate.
42
+ ##
43
+ ### global action settings
44
+ ##
45
+ ## copy_log_to_server:
46
+ ## If set to true - the cap deployment log will be copied to a "deploy_logs"
47
+ ## subdirectory of your #{shared_path}. The filename will be in the format:
48
+ ## deploy-#{release_name}-#{successful? ? "success" : "failure"}.log
49
+ ## default:
50
+ # copy_log_to_server: false
51
+ ##
52
+ ## suppress_sounds:
53
+ ## If set to true, will supress the playing sounds specified in the "play"
54
+ ## settings for the pre_deploy, post_deploy_success, and
55
+ ## post_deploy_failure sections
56
+ ## default:
57
+ # suppress_sounds: false
58
+ ##
59
+ ## suppress_deploy_time:
60
+ ## If set to true, will supress the output of the benchmark timing for the
61
+ ## deployment.
62
+ ## default:
63
+ # suppress_deploy_time: false
64
+ ##
65
+ ## suppress_github_compare:
66
+ ## Campout will attempt to display a github url (if the capistrano
67
+ ## repository is a github repository) that will show the comparison
68
+ ## of previous_revision with latest_revision (as determined by
69
+ ## capistrano)
70
+ ## default:
71
+ # suppress_github_compare: false
72
+
73
+ ### deployment settings
74
+ ##
75
+ ## There are three deployment hashes with the following keys:
76
+ ## pre_deploy: settings applied before the capistrano deploy action
77
+ ## post_deploy_success: settings applied after a successful capistrano deploy action
78
+ ## post_deploy_failure: settings applied after a failed capistrano deploy action
79
+ ##
80
+ ## Each hash can include the following settings
81
+ ## message:
82
+ ## The message to post to the specified campfire room. The message can include
83
+ ## ERB - and all of the capistrano variables are available - with the addition
84
+ ## of "campout_deployer" - which attempts to use the git user.name setting and
85
+ ## falls back to ENV['USER'] and "whereto" - which attempts to use the stage
86
+ ## and falls back to ENV['SERVER'] or 'production'
87
+ ## play:
88
+ ## specifies a campfire sound to play when the message is posted.
89
+ ##
90
+ ## defaults:
91
+ # pre_deploy:
92
+ # message: "<%= campout_deployer %> is starting to deploy <%= application %> to <%= whereto %>"
93
+ # post_deploy_success:
94
+ # message: "<%= campout_deployer %> deployed <%= application %> to <%= whereto %>"
95
+ # post_deploy_failure:
96
+ # message: "The deploy of <%= application %> to <%= whereto %> by <%= campout_deployer %> has failed."
97
+ ##
98
+ ## recommended sounds:
99
+ # pre_deploy:
100
+ # play: "pushit"
101
+ # post_deploy_success:
102
+ # play: "yeah"
103
+ # post_deploy_failure:
104
+ # play: "drama"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: capistrano-campout
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 1.0.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2012-04-08 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: capistrano
16
- requirement: &70315888091420 !ruby/object:Gem::Requirement
16
+ requirement: &70347365888740 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '2.11'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70315888091420
24
+ version_requirements: *70347365888740
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: tinder
27
- requirement: &70315888075700 !ruby/object:Gem::Requirement
27
+ requirement: &70347365887720 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '1.8'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *70315888075700
35
+ version_requirements: *70347365887720
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: grit
38
- requirement: &70315888074660 !ruby/object:Gem::Requirement
38
+ requirement: &70347365885720 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,7 +43,7 @@ dependencies:
43
43
  version: '2.4'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *70315888074660
46
+ version_requirements: *70347365885720
47
47
  description: ! " Capistrano::Campout is a gem extension to capistrano to post/speak
48
48
  messages and paste logs from a capistrano deployment \n to a campfire room. Settings
49
49
  are configurable using ERB in a \"config/campout.yml\" or \"config/campout.local.yml\"
@@ -51,7 +51,8 @@ description: ! " Capistrano::Campout is a gem extension to capistrano to post
51
51
  success or failure message. Event sounds\n are also supported.\n"
52
52
  email:
53
53
  - jay@outfielding.net
54
- executables: []
54
+ executables:
55
+ - campout
55
56
  extensions: []
56
57
  extra_rdoc_files: []
57
58
  files:
@@ -60,6 +61,7 @@ files:
60
61
  - LICENSE
61
62
  - README.md
62
63
  - Rakefile
64
+ - bin/campout
63
65
  - capistrano-campout.gemspec
64
66
  - lib/capistrano-campout.rb
65
67
  - lib/capistrano-campout/core.rb
@@ -71,6 +73,9 @@ files:
71
73
  - lib/capistrano-campout/recipes/campout.rb
72
74
  - lib/capistrano-campout/recipes/deploy.rb
73
75
  - lib/capistrano-campout/version.rb
76
+ - lib/cli.rb
77
+ - templates/campout.local.yml
78
+ - templates/campout.yml
74
79
  homepage: https://github.com/jasonadamyoung/capistrano-campout
75
80
  licenses:
76
81
  - MIT