capistrano-pushover 0.0.2 → 0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.rspec +1 -0
- data/README.md +1 -1
- data/capistrano-pushover.gemspec +2 -0
- data/lib/capistrano-pushover.rb +61 -51
- data/lib/capistrano-pushover/version.rb +1 -1
- data/spec/capistrano-pushover_spec.rb +75 -0
- data/spec/spec_helper.rb +21 -0
- data/spec/support/capistrano.rb +6 -0
- metadata +44 -5
data/.rspec
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
--color
|
data/README.md
CHANGED
@@ -23,7 +23,7 @@ Add to deploy.rb:
|
|
23
23
|
require 'hipchat/capistrano'
|
24
24
|
|
25
25
|
set :pushover_app_token, 'Your Pushover Application Token'
|
26
|
-
set :
|
26
|
+
set :pushover_user_key, 'Your Pushover User Token'
|
27
27
|
|
28
28
|
Now you are ready to recieve notificaion about deploys.
|
29
29
|
|
data/capistrano-pushover.gemspec
CHANGED
data/lib/capistrano-pushover.rb
CHANGED
@@ -1,74 +1,84 @@
|
|
1
|
-
require
|
2
|
-
require
|
3
|
-
|
1
|
+
require 'capistrano'
|
2
|
+
require 'capistrano-pushover/version'
|
3
|
+
require 'rushover'
|
4
4
|
|
5
5
|
module Capistrano
|
6
6
|
module Pushover
|
7
|
-
|
8
|
-
|
9
|
-
set :pushover_with_migrations, false
|
7
|
+
def self.load_into(configuration)
|
8
|
+
configuration.load do
|
10
9
|
|
11
|
-
|
10
|
+
set :pushover_with_migrations, false
|
12
11
|
|
13
|
-
|
14
|
-
set :pushover_client, Rushover::Client.new(pushover_app_token)
|
15
|
-
set :pushover_user, Rushover::User.new(pusehover_user_key, pushover_client)
|
16
|
-
end
|
12
|
+
namespace :pushover do
|
17
13
|
|
18
|
-
|
19
|
-
|
20
|
-
|
14
|
+
task :set_user do
|
15
|
+
set :pushover_client, Rushover::Client.new(pushover_app_token)
|
16
|
+
set :pushover_user, Rushover::User.new(pushover_user_key, pushover_client)
|
17
|
+
end
|
21
18
|
|
22
|
-
|
23
|
-
|
24
|
-
pushover_user.notify("#{human} cancelled deployment of #{deployment_name} to #{env}.", :title => "#{application} cancelled deployment", :priority => 1)
|
19
|
+
task :configure_for_migrations do
|
20
|
+
set :pushover_with_migrations, true
|
25
21
|
end
|
26
22
|
|
27
|
-
|
28
|
-
|
29
|
-
|
23
|
+
task :notify_deploy_started do
|
24
|
+
on_rollback do
|
25
|
+
notify("#{human} cancelled deployment of #{deployment_name} to #{env}.", :title => "#{application} cancelled deployment", :priority => 1)
|
26
|
+
end
|
30
27
|
|
31
|
-
|
32
|
-
|
28
|
+
message = "#{human} is deploying #{deployment_name} to #{env}"
|
29
|
+
message << " (with migrations)" if pushover_with_migrations
|
30
|
+
message << "."
|
33
31
|
|
34
|
-
|
35
|
-
|
36
|
-
end
|
32
|
+
notify(message, :title => "#{application} started deploying", :priority => priority)
|
33
|
+
end
|
37
34
|
|
38
|
-
|
39
|
-
|
40
|
-
|
35
|
+
task :notify_deploy_finished do
|
36
|
+
notify("#{human} finished deploying #{deployment_name} to #{env}.", :title => "#{application} finished deploying", :priority => priority)
|
37
|
+
end
|
41
38
|
|
42
|
-
|
43
|
-
|
44
|
-
"#{application}/#{branch}"
|
45
|
-
else
|
46
|
-
application
|
39
|
+
def notify(message, options = {})
|
40
|
+
pushover_user.notify message, options
|
47
41
|
end
|
48
|
-
end
|
49
42
|
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
43
|
+
def priority
|
44
|
+
fetch(:pushover_priority, 0)
|
45
|
+
end
|
46
|
+
|
47
|
+
def deployment_name
|
48
|
+
if branch
|
49
|
+
"#{application}/#{branch}"
|
56
50
|
else
|
57
|
-
|
51
|
+
application
|
58
52
|
end
|
59
|
-
|
53
|
+
end
|
60
54
|
|
61
|
-
|
62
|
-
|
63
|
-
|
55
|
+
def human
|
56
|
+
ENV['PUSHOVER_USER'] ||
|
57
|
+
if (u = %x{git config user.name}.strip) != ""
|
58
|
+
u
|
59
|
+
elsif (u = ENV['USER']) != ""
|
60
|
+
u
|
61
|
+
else
|
62
|
+
"Someone"
|
63
|
+
end
|
64
|
+
end
|
64
65
|
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
after "deploy", "pushover:notify_deploy_finished"
|
69
|
-
after "deploy:migrations", "pushover:notify_deploy_finished"
|
70
|
-
end
|
66
|
+
def env
|
67
|
+
fetch(:pushover_env, fetch(:rack_env, fetch(:rails_env, "production")))
|
68
|
+
end
|
71
69
|
|
70
|
+
before "pushover:notify_deploy_started", "pushover:set_user"
|
71
|
+
before "deploy:migrations", "pushover:configure_for_migrations"
|
72
|
+
before "deploy:update_code", "pushover:notify_deploy_started"
|
73
|
+
after "deploy", "pushover:notify_deploy_finished"
|
74
|
+
after "deploy:migrations", "pushover:notify_deploy_finished"
|
75
|
+
end
|
76
|
+
end
|
72
77
|
end
|
73
78
|
end
|
74
79
|
end
|
80
|
+
|
81
|
+
# may as well load it if we have it
|
82
|
+
if Capistrano::Configuration.instance
|
83
|
+
Capistrano::Pushover.load_into(Capistrano::Configuration.instance)
|
84
|
+
end
|
@@ -0,0 +1,75 @@
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
|
2
|
+
|
3
|
+
describe Capistrano::Pushover, "loaded into a configuration" do
|
4
|
+
|
5
|
+
before do
|
6
|
+
@configuration = Capistrano::Configuration.new
|
7
|
+
Capistrano::Pushover.load_into(@configuration)
|
8
|
+
|
9
|
+
@configuration.set :pushover_app_token, 'foo'
|
10
|
+
@configuration.set :pushover_user_key, 'bar'
|
11
|
+
@configuration.set :application, 'worldrelaxation'
|
12
|
+
end
|
13
|
+
|
14
|
+
it "makes sure the configuration variables exits" do
|
15
|
+
@configuration.fetch(:pushover_app_token).should == 'foo'
|
16
|
+
@configuration.fetch(:pushover_user_key).should == 'bar'
|
17
|
+
end
|
18
|
+
|
19
|
+
it "defines pushover:notify_deploy_started" do
|
20
|
+
@configuration.find_task('pushover:notify_deploy_started').should_not == nil
|
21
|
+
end
|
22
|
+
|
23
|
+
it "defines pushover:notify_deploy_finished" do
|
24
|
+
@configuration.find_task('pushover:notify_deploy_finished').should_not == nil
|
25
|
+
end
|
26
|
+
|
27
|
+
it "defines pushover:configure_for_migrations" do
|
28
|
+
@configuration.find_task('pushover:configure_for_migrations').should_not == nil
|
29
|
+
end
|
30
|
+
|
31
|
+
it "defines pushover:set_user" do
|
32
|
+
@configuration.find_task('pushover:set_user').should_not == nil
|
33
|
+
end
|
34
|
+
|
35
|
+
it "before pushover:notify_deploy_started performs pushover:set_user" do
|
36
|
+
@configuration.should callback('pushover:set_user').before('pushover:notify_deploy_started')
|
37
|
+
end
|
38
|
+
|
39
|
+
it "before deploy:migrations performs pushover:configure_for_migrations" do
|
40
|
+
@configuration.should callback('pushover:configure_for_migrations').before('deploy:migrations')
|
41
|
+
end
|
42
|
+
|
43
|
+
it "before deploy:update_code performs pushover:notify_deploy_started" do
|
44
|
+
@configuration.should callback('pushover:notify_deploy_started').before('deploy:update_code')
|
45
|
+
end
|
46
|
+
|
47
|
+
it "after deploy performs pushover:notify_deploy_finished" do
|
48
|
+
@configuration.should callback('pushover:notify_deploy_finished').after('deploy')
|
49
|
+
end
|
50
|
+
|
51
|
+
it "after deploy:migrations performs pushover:notify_deploy_finished" do
|
52
|
+
@configuration.should callback('pushover:notify_deploy_finished').after('deploy')
|
53
|
+
end
|
54
|
+
|
55
|
+
it "pushover:notify_deploy_started notifing the user deploying and the branch being deployed to production" do
|
56
|
+
@configuration.set(:branch, :bar)
|
57
|
+
notification = mock('Pushover')
|
58
|
+
Rushover::Client.stub(:new).and_return(notification)
|
59
|
+
ENV['PUSHOVER_USER'] = 'foobaruser'
|
60
|
+
notification.should_receive(:notify).with("bar", "foobaruser is deploying worldrelaxation/bar to production.", {:title=>"worldrelaxation started deploying", :priority=>0})
|
61
|
+
@configuration.find_and_execute_task('pushover:notify_deploy_started')
|
62
|
+
end
|
63
|
+
|
64
|
+
|
65
|
+
it "pushover:notify_deploy_finished notifing the user who deployed and the branch that was deployed to production" do
|
66
|
+
@configuration.set(:branch, :bar)
|
67
|
+
notification = mock('Pushover')
|
68
|
+
Rushover::Client.stub(:new).and_return(notification)
|
69
|
+
ENV['PUSHOVER_USER'] = 'foobaruser'
|
70
|
+
notification.should_receive(:notify).with("bar", "foobaruser finished deploying worldrelaxation/bar to production.", {:title=>"worldrelaxation finished deploying", :priority=>0})
|
71
|
+
@configuration.find_and_execute_task('pushover:set_user')
|
72
|
+
@configuration.find_and_execute_task('pushover:notify_deploy_finished')
|
73
|
+
end
|
74
|
+
|
75
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
require 'bundler'
|
2
|
+
begin
|
3
|
+
Bundler.setup(:default, :development)
|
4
|
+
rescue Bundler::BundlerError => e
|
5
|
+
$stderr.puts e.message
|
6
|
+
$stderr.puts "Run `bundle install` to install missing gems"
|
7
|
+
exit e.status_code
|
8
|
+
end
|
9
|
+
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
10
|
+
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
11
|
+
require 'capistrano-pushover'
|
12
|
+
require 'rspec'
|
13
|
+
require 'rspec/autorun'
|
14
|
+
|
15
|
+
# Requires supporting files with custom matchers and macros, etc,
|
16
|
+
# in ./support/ and its subdirectories.
|
17
|
+
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
|
18
|
+
|
19
|
+
RSpec.configure do |config|
|
20
|
+
|
21
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: capistrano-pushover
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: '0.1'
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-10-
|
12
|
+
date: 2012-10-13 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake
|
@@ -43,6 +43,38 @@ dependencies:
|
|
43
43
|
- - ! '>='
|
44
44
|
- !ruby/object:Gem::Version
|
45
45
|
version: '0'
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: capistrano-spec
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
54
|
+
type: :development
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: capistrano
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
70
|
+
type: :development
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
46
78
|
- !ruby/object:Gem::Dependency
|
47
79
|
name: rushover
|
48
80
|
requirement: !ruby/object:Gem::Requirement
|
@@ -67,6 +99,7 @@ extensions: []
|
|
67
99
|
extra_rdoc_files: []
|
68
100
|
files:
|
69
101
|
- .gitignore
|
102
|
+
- .rspec
|
70
103
|
- .rvmrc
|
71
104
|
- Gemfile
|
72
105
|
- LICENSE
|
@@ -75,6 +108,9 @@ files:
|
|
75
108
|
- capistrano-pushover.gemspec
|
76
109
|
- lib/capistrano-pushover.rb
|
77
110
|
- lib/capistrano-pushover/version.rb
|
111
|
+
- spec/capistrano-pushover_spec.rb
|
112
|
+
- spec/spec_helper.rb
|
113
|
+
- spec/support/capistrano.rb
|
78
114
|
homepage: https://github.com/shukydvir/capistrano-pushover
|
79
115
|
licenses: []
|
80
116
|
post_install_message:
|
@@ -89,7 +125,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
89
125
|
version: '0'
|
90
126
|
segments:
|
91
127
|
- 0
|
92
|
-
hash:
|
128
|
+
hash: 1169079496221250501
|
93
129
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
94
130
|
none: false
|
95
131
|
requirements:
|
@@ -98,11 +134,14 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
98
134
|
version: '0'
|
99
135
|
segments:
|
100
136
|
- 0
|
101
|
-
hash:
|
137
|
+
hash: 1169079496221250501
|
102
138
|
requirements: []
|
103
139
|
rubyforge_project:
|
104
140
|
rubygems_version: 1.8.24
|
105
141
|
signing_key:
|
106
142
|
specification_version: 3
|
107
143
|
summary: Send deploy notification to Pushover
|
108
|
-
test_files:
|
144
|
+
test_files:
|
145
|
+
- spec/capistrano-pushover_spec.rb
|
146
|
+
- spec/spec_helper.rb
|
147
|
+
- spec/support/capistrano.rb
|