capistrano-committed 0.0.13 → 0.0.18
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/Gemfile +1 -1
- data/README.md +0 -1
- data/capistrano-committed.gemspec +17 -20
- data/lib/capistrano/committed.rb +55 -49
- data/lib/capistrano/committed/github_api.rb +8 -15
- data/lib/capistrano/committed/i18n.rb +1 -1
- data/lib/capistrano/committed/output.rb +9 -9
- data/lib/capistrano/committed/version.rb +1 -1
- data/lib/capistrano/tasks/committed.rake +47 -56
- metadata +23 -35
- data/.codeclimate.yml +0 -25
- data/.gitignore +0 -12
- data/.rspec +0 -2
- data/.rubocop.yml +0 -1168
- data/.travis.yml +0 -15
- data/Rakefile +0 -6
- data/bin/console +0 -14
- data/bin/setup +0 -7
- data/icons/capricorn.png +0 -0
- data/icons/capricorn_equation.png +0 -0
- data/icons/capricorn_full.png +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: b10378b1d4ccb6c21f5aefe901978977310b2f60e3e7c7376dde006a0aeac6cd
|
4
|
+
data.tar.gz: 957d43e29b2564db78bb5e9e732c3e0ae10ed88522917b7d339bbe5fd6f4e460
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 48d950402073213041a57a8e46b35a4f2fe03c0c57c81cc93d8ed2716cffdf7885f09a3efaa4e3283492ddb031255b0a2c4e2a93d836dd92ffa6461e2f48f9cb
|
7
|
+
data.tar.gz: f64b0bcbf2f23198758a171c2e8639051c630e3a3fc6f381520b1283417fb6ea6b8b084bc01c93b3ce9cee32eff1ff56ce4af92fc0f66e263c54f69ff3ff2d2c
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -9,7 +9,6 @@
|
|
9
9
|
[![Test Coverage](https://codeclimate.com/github/sambauers/capistrano-committed/badges/coverage.svg)](https://codeclimate.com/github/sambauers/capistrano-committed/coverage)
|
10
10
|
[![Code Climate](https://codeclimate.com/github/sambauers/capistrano-committed/badges/gpa.svg)](https://codeclimate.com/github/sambauers/capistrano-committed)
|
11
11
|
[![Issue Count](https://codeclimate.com/github/sambauers/capistrano-committed/badges/issue_count.svg)](https://codeclimate.com/github/sambauers/capistrano-committed)
|
12
|
-
[![Dependency Status](https://gemnasium.com/sambauers/capistrano-committed.svg)](https://gemnasium.com/sambauers/capistrano-committed)
|
13
12
|
|
14
13
|
Capistrano Committed is an extension to Capistrano 3 which helps to determine what you are about to deploy.
|
15
14
|
|
@@ -1,32 +1,29 @@
|
|
1
|
-
|
2
|
-
lib = File.expand_path('../lib', __FILE__)
|
1
|
+
lib = File.expand_path('lib', __dir__)
|
3
2
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
3
|
require 'capistrano/committed/version'
|
5
4
|
|
6
5
|
Gem::Specification.new do |spec|
|
7
|
-
spec.name =
|
6
|
+
spec.name = 'capistrano-committed'
|
8
7
|
spec.version = Capistrano::Committed::VERSION
|
9
|
-
spec.authors = [
|
10
|
-
spec.email = [
|
8
|
+
spec.authors = ['Sam Bauers']
|
9
|
+
spec.email = ['sam@wopr.com.au']
|
11
10
|
spec.license = 'MIT'
|
12
11
|
|
13
|
-
spec.summary =
|
14
|
-
spec.description =
|
15
|
-
spec.homepage =
|
12
|
+
spec.summary = 'Tells you what Capistrano 3 is going to deploy based on GitHub commits since the last release.'
|
13
|
+
spec.description = 'Tells you what Capistrano 3 is going to deploy based on GitHub commits since the last release. See README.md for more info.'
|
14
|
+
spec.homepage = 'https://github.com/sambauers/capistrano-committed'
|
16
15
|
|
17
|
-
spec.files =
|
18
|
-
spec.
|
19
|
-
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
20
|
-
spec.require_paths = ["lib"]
|
16
|
+
spec.files = Dir['lib/**/*', 'capistrano-committed.gemspec', 'Gemfile', '*.md']
|
17
|
+
spec.require_paths = ['lib']
|
21
18
|
|
22
|
-
spec.required_ruby_version = '>= 2.
|
19
|
+
spec.required_ruby_version = '>= 2.3.8'
|
23
20
|
|
24
|
-
spec.add_dependency
|
25
|
-
spec.add_dependency
|
26
|
-
spec.add_dependency
|
27
|
-
spec.add_dependency
|
21
|
+
spec.add_dependency 'capistrano', '~> 3'
|
22
|
+
spec.add_dependency 'github_api', '~> 0.18'
|
23
|
+
spec.add_dependency 'mustache', '~> 1'
|
24
|
+
spec.add_dependency 'rack', '~> 2'
|
28
25
|
|
29
|
-
spec.add_development_dependency
|
30
|
-
spec.add_development_dependency
|
31
|
-
spec.add_development_dependency
|
26
|
+
spec.add_development_dependency 'bundler', '~> 2'
|
27
|
+
spec.add_development_dependency 'rake', '~> 12'
|
28
|
+
spec.add_development_dependency 'rspec', '~> 3'
|
32
29
|
end
|
data/lib/capistrano/committed.rb
CHANGED
@@ -13,7 +13,7 @@ module Capistrano
|
|
13
13
|
end
|
14
14
|
|
15
15
|
def get_setting(setting, variable = nil)
|
16
|
-
|
16
|
+
variable.nil? ? @@settings[setting] : variable
|
17
17
|
end
|
18
18
|
|
19
19
|
def revision_search_regex(revision_line = nil)
|
@@ -27,11 +27,9 @@ module Capistrano
|
|
27
27
|
|
28
28
|
def get_revisions_from_lines(lines, search = nil, branch = nil, limit = nil)
|
29
29
|
check_type __callee__, 'lines', lines.is_a?(Array)
|
30
|
-
lines.each_with_index
|
31
|
-
check_type __callee__,
|
32
|
-
|
33
|
-
line.is_a?(String)
|
34
|
-
}
|
30
|
+
lines.each_with_index do |line, index|
|
31
|
+
check_type __callee__, format('lines[%<index>d]', index: index), line.is_a?(String)
|
32
|
+
end
|
35
33
|
|
36
34
|
search = revision_search_regex if search.nil?
|
37
35
|
check_type __callee__, 'search', search.is_a?(Regexp)
|
@@ -63,30 +61,20 @@ module Capistrano
|
|
63
61
|
def add_dates_to_revisions(revisions, github, git_user = nil, git_repo = nil)
|
64
62
|
check_type __callee__, 'revisions', revisions.is_a?(Hash)
|
65
63
|
check_type __callee__, 'github', github.is_a?(Capistrano::Committed::GithubApi)
|
66
|
-
|
67
|
-
|
68
|
-
check_type __callee__, 'git_user', git_user.is_a?(String)
|
69
|
-
|
70
|
-
git_repo = get_setting(:repo, git_repo)
|
71
|
-
check_type __callee__, 'git_repo', git_repo.is_a?(String)
|
64
|
+
git_user = check_git_user(git_user)
|
65
|
+
git_repo = check_git_repo(git_repo)
|
72
66
|
|
73
67
|
revisions.each do |release, revision|
|
74
|
-
next if
|
75
|
-
commit = github.get_commit(git_user,
|
76
|
-
|
77
|
-
revision[:sha])
|
78
|
-
|
79
|
-
unless commit.nil?
|
80
|
-
revisions[release][:date] = commit[:commit][:committer][:date]
|
81
|
-
end
|
68
|
+
next if %i[next previous].include? release
|
69
|
+
commit = github.get_commit(git_user, git_repo, revision[:sha])
|
70
|
+
revisions[release][:date] = commit[:commit][:committer][:date] unless commit.nil?
|
82
71
|
end
|
83
|
-
revisions
|
84
72
|
end
|
85
73
|
|
86
74
|
def get_earliest_date_from_revisions(revisions)
|
87
75
|
check_type __callee__, 'revisions', revisions.is_a?(Hash)
|
88
76
|
|
89
|
-
revisions.values.map{ |r| Time.parse(r[:date]) unless r[:date].nil? }.compact.min
|
77
|
+
revisions.values.map { |r| Time.parse(r[:date]) unless r[:date].nil? }.compact.min
|
90
78
|
end
|
91
79
|
|
92
80
|
def days_to_seconds(days)
|
@@ -106,40 +94,58 @@ module Capistrano
|
|
106
94
|
|
107
95
|
def get_issue_urls(message, issue_match = nil, issue_postprocess = nil, issue_url = nil)
|
108
96
|
check_type __callee__, 'message', message.is_a?(String)
|
97
|
+
issue_match = check_issue_match(issue_match)
|
98
|
+
issue_postprocess = check_issue_postprocess(issue_postprocess)
|
99
|
+
issue_url = check_issue_url(issue_url)
|
100
|
+
|
101
|
+
return [] unless (matches = message.scan(Regexp.new(issue_match)))
|
102
|
+
matches.map! do |match|
|
103
|
+
postprocess_issue_url(issue_postprocess, issue_url, match[0])
|
104
|
+
end.uniq
|
105
|
+
end
|
109
106
|
|
107
|
+
private
|
108
|
+
|
109
|
+
def check_type(method, param, condition)
|
110
|
+
raise TypeError, t('committed.error.helpers.valid_param', method: method, param: param) unless condition
|
111
|
+
end
|
112
|
+
|
113
|
+
def check_git_user(git_user)
|
114
|
+
git_user = get_setting(:user, git_user)
|
115
|
+
check_type __callee__, 'git_user', git_user.is_a?(String)
|
116
|
+
git_user
|
117
|
+
end
|
118
|
+
|
119
|
+
def check_git_repo(git_repo)
|
120
|
+
git_repo = get_setting(:repo, git_repo)
|
121
|
+
check_type __callee__, 'git_repo', git_repo.is_a?(String)
|
122
|
+
git_repo
|
123
|
+
end
|
124
|
+
|
125
|
+
def check_issue_match(issue_match)
|
110
126
|
issue_match = get_setting(:issue_match, issue_match)
|
111
|
-
check_type __callee__,
|
112
|
-
|
113
|
-
|
127
|
+
check_type __callee__, 'issue_match', (issue_match.is_a?(String) || issue_match.is_a?(Regexp))
|
128
|
+
issue_match
|
129
|
+
end
|
114
130
|
|
131
|
+
def check_issue_postprocess(issue_postprocess)
|
115
132
|
issue_postprocess = get_setting(:issue_postprocess, issue_postprocess)
|
116
133
|
check_type __callee__, 'issue_postprocess', issue_postprocess.is_a?(Array)
|
117
|
-
issue_postprocess.each
|
118
|
-
check_type __callee__,
|
119
|
-
|
120
|
-
|
121
|
-
|
134
|
+
issue_postprocess.each do |method|
|
135
|
+
check_type __callee__, format('issue_postprocess[:%<method>s]', method: method.to_s), method.is_a?(Symbol)
|
136
|
+
end
|
137
|
+
issue_postprocess
|
138
|
+
end
|
122
139
|
|
140
|
+
def check_issue_url(issue_url)
|
123
141
|
issue_url = get_setting(:issue_url, issue_url)
|
124
142
|
check_type __callee__, 'issue_url', issue_url.is_a?(String)
|
125
|
-
|
126
|
-
matches = message.scan(Regexp.new(issue_match))
|
127
|
-
return [] unless matches
|
128
|
-
matches.map! { |match|
|
129
|
-
issue = match[0]
|
130
|
-
issue_postprocess.each { |method|
|
131
|
-
issue = issue.send(method)
|
132
|
-
}
|
133
|
-
format(issue_url, issue)
|
134
|
-
}
|
135
|
-
matches.uniq
|
143
|
+
issue_url
|
136
144
|
end
|
137
145
|
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
method: method,
|
142
|
-
param: param) unless condition
|
146
|
+
def postprocess_issue_url(issue_postprocess, issue_url, issue)
|
147
|
+
issue_postprocess.each { |method| issue = issue.send(method) }
|
148
|
+
format(issue_url, issue)
|
143
149
|
end
|
144
150
|
|
145
151
|
def pad_revisions(revisions)
|
@@ -149,9 +155,9 @@ module Capistrano
|
|
149
155
|
# Sort revisions by release date
|
150
156
|
revisions = Hash[revisions.sort { |a, b| b[1][:release] <=> a[1][:release] }]
|
151
157
|
# Add the "previous" revision
|
152
|
-
revisions
|
158
|
+
revisions[:previous] = { release: :previous, entries: {} }
|
153
159
|
# Add the "next" revision
|
154
|
-
revisions = {next: { release: :next, entries: {} }}.merge(revisions)
|
160
|
+
revisions = { next: { release: :next, entries: {} } }.merge(revisions)
|
155
161
|
end
|
156
162
|
revisions
|
157
163
|
end
|
@@ -159,4 +165,4 @@ module Capistrano
|
|
159
165
|
end
|
160
166
|
end
|
161
167
|
|
162
|
-
load File.expand_path('
|
168
|
+
load File.expand_path('tasks/committed.rake', __dir__)
|
@@ -3,6 +3,8 @@ require 'github_api'
|
|
3
3
|
module Capistrano
|
4
4
|
module Committed
|
5
5
|
class GithubApi
|
6
|
+
attr_reader :client
|
7
|
+
|
6
8
|
def initialize(config_options = {})
|
7
9
|
validate('config_options', config_options, Hash, __callee__)
|
8
10
|
|
@@ -16,10 +18,6 @@ module Capistrano
|
|
16
18
|
@client = ::Github.new options
|
17
19
|
end
|
18
20
|
|
19
|
-
def client
|
20
|
-
@client
|
21
|
-
end
|
22
|
-
|
23
21
|
def get_commit(user, repo, sha)
|
24
22
|
validate_user_and_repo(user, repo, __callee__)
|
25
23
|
validate('sha', sha, String, __callee__)
|
@@ -81,13 +79,11 @@ module Capistrano
|
|
81
79
|
validate_user_and_repo(user, repo, __callee__)
|
82
80
|
validate('id', id, Integer, __callee__)
|
83
81
|
|
84
|
-
valid_states = %w
|
82
|
+
valid_states = %w[pending success error failure]
|
85
83
|
state = state.to_s
|
86
84
|
unless valid_states.include?(state)
|
87
|
-
message = t('committed.error.helpers.valid_param',
|
88
|
-
|
89
|
-
param: 'state')
|
90
|
-
fail TypeError, message
|
85
|
+
message = t('committed.error.helpers.valid_param', method: __callee__, param: 'state')
|
86
|
+
raise TypeError, message
|
91
87
|
end
|
92
88
|
|
93
89
|
api_call do
|
@@ -105,7 +101,7 @@ module Capistrano
|
|
105
101
|
message = t('committed.error.helpers.valid_param',
|
106
102
|
method: method,
|
107
103
|
param: param)
|
108
|
-
|
104
|
+
raise TypeError, message
|
109
105
|
end
|
110
106
|
|
111
107
|
def validate_user_and_repo(user, repo, method)
|
@@ -116,11 +112,8 @@ module Capistrano
|
|
116
112
|
def api_call
|
117
113
|
yield
|
118
114
|
rescue ::Github::Error::GithubError => e
|
119
|
-
if e.is_a? ::Github::Error::ServiceError
|
120
|
-
|
121
|
-
elsif e.is_a? ::Github::Error::ClientError
|
122
|
-
raise e, t('committed.error.helpers.github_client_error')
|
123
|
-
end
|
115
|
+
raise e, t('committed.error.helpers.github_service_error') if e.is_a? ::Github::Error::ServiceError
|
116
|
+
raise e, t('committed.error.helpers.github_client_error') if e.is_a? ::Github::Error::ClientError
|
124
117
|
end
|
125
118
|
end
|
126
119
|
end
|
@@ -38,7 +38,7 @@ en = {
|
|
38
38
|
}
|
39
39
|
}
|
40
40
|
|
41
|
-
I18n.backend.store_translations(:en,
|
41
|
+
I18n.backend.store_translations(:en, capistrano: { committed: en })
|
42
42
|
|
43
43
|
if I18n.respond_to?(:enforce_available_locales=)
|
44
44
|
I18n.enforce_available_locales = true
|
@@ -5,16 +5,16 @@ module Capistrano
|
|
5
5
|
class Output < Mustache
|
6
6
|
@@template_format = 'txt'
|
7
7
|
|
8
|
-
self.template_path = format('
|
9
|
-
self.template_file = format('
|
8
|
+
self.template_path = format('%<dir>s/output', dir: File.dirname(__FILE__))
|
9
|
+
self.template_file = format('%<dir>s/output/output_%<format>s.mustache', dir: File.dirname(__FILE__), format: @@template_format)
|
10
10
|
|
11
11
|
def get_output_path(file)
|
12
|
-
format('
|
12
|
+
format('%<dir>s/output/%<file>s', dir: File.dirname(__FILE__), file: file)
|
13
13
|
end
|
14
14
|
|
15
15
|
def get_output_template_path(format = 'txt', set_template_format = true)
|
16
16
|
@@template_format = format if set_template_format
|
17
|
-
get_output_path(format('output_
|
17
|
+
get_output_path(format('output_%<format>s.mustache', format: format))
|
18
18
|
end
|
19
19
|
|
20
20
|
def template_format
|
@@ -139,18 +139,18 @@ module Capistrano
|
|
139
139
|
!commits.nil?
|
140
140
|
end
|
141
141
|
|
142
|
-
|
143
|
-
|
142
|
+
private
|
143
|
+
|
144
144
|
def commit_created_on(info)
|
145
145
|
return unless info[:commit] && info[:commit][:committer]
|
146
146
|
t('committed.output.committed_on', time: info[:commit][:committer][:date])
|
147
147
|
end
|
148
|
-
|
148
|
+
|
149
149
|
def pull_request_created_on(info)
|
150
150
|
return unless info[:merged_at]
|
151
151
|
t('committed.output.merged_on', time: info[:merged_at])
|
152
152
|
end
|
153
|
-
|
153
|
+
|
154
154
|
def format_created_by(t_key, user)
|
155
155
|
return unless user
|
156
156
|
t(t_key, login: user[:login])
|
@@ -159,7 +159,7 @@ module Capistrano
|
|
159
159
|
def format_link(url)
|
160
160
|
case template_format
|
161
161
|
when 'html'
|
162
|
-
format('<a href="
|
162
|
+
format('<a href="%<url>s">%<url>s</a>', url: url)
|
163
163
|
when 'txt'
|
164
164
|
url
|
165
165
|
end
|
@@ -1,64 +1,53 @@
|
|
1
1
|
namespace :committed do
|
2
2
|
task :check_prerequisites do
|
3
3
|
# Checks all the settings to make sure they are OK - mostly just checks type
|
4
|
-
{ committed_user: 'user',
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
fail ArgumentError, t('committed.error.prerequisites.empty',
|
13
|
-
variable: variable,
|
14
|
-
name: name) if
|
15
|
-
fetch(variable).empty?
|
4
|
+
{ committed_user: 'user', committed_repo: 'repository' }.each do |variable, name|
|
5
|
+
if fetch(variable).nil? || !fetch(variable).is_a?(String)
|
6
|
+
raise TypeError, t('committed.error.prerequisites.nil', variable: variable, name: name)
|
7
|
+
end
|
8
|
+
if fetch(variable).empty?
|
9
|
+
raise ArgumentError, t('committed.error.prerequisites.empty', variable: variable, name: name)
|
10
|
+
end
|
16
11
|
end
|
17
12
|
|
18
|
-
|
19
|
-
|
20
|
-
|
13
|
+
unless fetch(:committed_github_config).is_a?(Hash)
|
14
|
+
raise TypeError, t('committed.error.prerequisites.hash', variable: 'committed_github_config')
|
15
|
+
end
|
21
16
|
end
|
22
17
|
|
23
18
|
task :check_report_prerequisites do
|
24
19
|
# Checks all the settings to make sure they are OK - mostly just checks type
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
fetch(:committed_issue_match).nil?
|
57
|
-
|
58
|
-
fail TypeError, t('committed.error.prerequisites.string_or_nil',
|
59
|
-
variable: 'committed_issue_url') unless
|
60
|
-
fetch(:committed_issue_url).is_a?(String) ||
|
61
|
-
fetch(:committed_issue_url).nil?
|
20
|
+
unless fetch(:committed_revision_line).is_a?(String)
|
21
|
+
raise TypeError, t('committed.error.prerequisites.string', variable: 'committed_revision_line')
|
22
|
+
end
|
23
|
+
|
24
|
+
unless fetch(:committed_revision_limit).is_a?(Integer)
|
25
|
+
raise TypeError, t('committed.error.prerequisites.integer', variable: 'committed_revision_limit')
|
26
|
+
end
|
27
|
+
|
28
|
+
unless fetch(:committed_commit_buffer).is_a?(Integer)
|
29
|
+
raise TypeError, t('committed.error.prerequisites.integer', variable: 'committed_commit_buffer')
|
30
|
+
end
|
31
|
+
|
32
|
+
if fetch(:committed_output_path).is_a?(String)
|
33
|
+
raise TypeError, t('committed.error.deprecated', deprecated: 'committed_output_path', replacement: 'committed_output_text_path')
|
34
|
+
end
|
35
|
+
|
36
|
+
unless fetch(:committed_output_text_path).is_a?(String) || fetch(:committed_output_text_path).nil?
|
37
|
+
raise TypeError, t('committed.error.prerequisites.string_or_nil', variable: 'committed_output_text_path')
|
38
|
+
end
|
39
|
+
|
40
|
+
unless fetch(:committed_output_html_path).is_a?(String) || fetch(:committed_output_html_path).nil?
|
41
|
+
raise TypeError, t('committed.error.prerequisites.string_or_nil', variable: 'committed_output_html_path')
|
42
|
+
end
|
43
|
+
|
44
|
+
unless fetch(:committed_issue_match).is_a?(String) || fetch(:committed_issue_match).is_a?(Regexp) || fetch(:committed_issue_match).nil?
|
45
|
+
raise TypeError, t('committed.error.prerequisites.string_or_regexp_or_nil', variable: 'committed_issue_match')
|
46
|
+
end
|
47
|
+
|
48
|
+
unless fetch(:committed_issue_url).is_a?(String) || fetch(:committed_issue_url).nil?
|
49
|
+
raise TypeError, t('committed.error.prerequisites.string_or_nil', variable: 'committed_issue_url')
|
50
|
+
end
|
62
51
|
end
|
63
52
|
|
64
53
|
# task :register_deployment_pending do
|
@@ -99,7 +88,7 @@ namespace :committed do
|
|
99
88
|
invoke 'committed:check_prerequisites'
|
100
89
|
invoke 'committed:check_report_prerequisites'
|
101
90
|
|
102
|
-
::Capistrano::Committed.import_settings(
|
91
|
+
::Capistrano::Committed.import_settings(
|
103
92
|
branch: fetch(:branch),
|
104
93
|
user: fetch(:committed_user),
|
105
94
|
repo: fetch(:committed_repo),
|
@@ -114,7 +103,7 @@ namespace :committed do
|
|
114
103
|
issue_url: fetch(:committed_issue_url),
|
115
104
|
deployments: fetch(:committed_deployments),
|
116
105
|
deployment_id: fetch(:committed_deployment_id)
|
117
|
-
|
106
|
+
)
|
118
107
|
|
119
108
|
# Only do this on the primary web server
|
120
109
|
on primary :web do
|
@@ -241,10 +230,12 @@ namespace :committed do
|
|
241
230
|
# Send the text output to screen, or to a file on the server
|
242
231
|
|
243
232
|
# Create the mustache instance and plug in the revisions
|
244
|
-
output = ::Capistrano::Committed::Output.new
|
233
|
+
output = ::Capistrano::Committed::Output.new
|
245
234
|
output[:revisions] = revisions.values
|
246
235
|
output[:page_title] = t('committed.output.page_title',
|
247
|
-
repo: format('
|
236
|
+
repo: format('%<user>s/%<repo>s',
|
237
|
+
user: fetch(:committed_user),
|
238
|
+
repo: fetch(:committed_repo)))
|
248
239
|
|
249
240
|
# Send the text output to a file on the server
|
250
241
|
if fetch(:committed_output_text_path).nil?
|