mr_bump 0.0.8 → 0.0.10

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- ZmIzZTExNjEyN2NjYTg3OTBjNTcwYmFlMGIzNDc3NmQ5YTI0MzIwYw==
4
+ NDljMWFkOGIzNmMxZDViNWNmODNiZTdmMjYxNzg2OWJjYmE0NGNiNw==
5
5
  data.tar.gz: !binary |-
6
- MTZmODQ0YjkzN2ZhYTM1NmZlZTg2OWI0ODgwM2MzMTc4MzY4YTkzYw==
6
+ ZGFiZTIwNzI4Njk2YjFhMzA3OTkwNzY4YzI2ZmRlMjdjMjM4NjZlYw==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- ZWViYzE0YTU2ODE5MGQxZGVmZTA3YTM2Y2YyNzA2ZjY1YTcwYTY5ZTNhMTk3
10
- MDM4ZDQxYzc0NTg2Mjk5NWZlZWUwNjBkN2UwZDk5ZjM3MzM0YTljYTlhNmM2
11
- YmYzZTNiMmQ1YzFmOTNkNTM5MDY4MDdhY2M1NjNiNzdlNWEzYTU=
9
+ ZjM5NjZjZjRjODcyNjRkMjg4ZGYxN2E3MDgyOTk0YTM0YTQxNmY2ZWU1MTc0
10
+ MjZmM2RiNWU1ZDdkMDllYWQyM2UxZjg3ZGJmM2UyYTg0ZTMxOTU2N2FlOGM5
11
+ ZTJhNTY1OTg0MzFmYmJmMTJkMGE5MjViNTBhOTQ5MDhlZjkxMWY=
12
12
  data.tar.gz: !binary |-
13
- OTViODQwMWVjYzkyNDkxNjE0YjI4NDEwMTEzZjEyOGQ2NDE0NDNhODg3YjAx
14
- YmNmZmZkZDEyMzExMzg3ODFjMWEwOGQ1YzgwZWZkNDI3NzMxMmM3NmZlNDIx
15
- NDM0ZjI1NmYxZjk1Njc1ZDU0YjdiY2FkMjk2NWExMjFhMGY5NjA=
13
+ ODUxNjNlN2UyMmYzMjAzZjgyMjk0ZThhNDEyYzk3ZjI1ZTUwZWE1NDU0ZTIy
14
+ MzY3ZGUzZGJiNmViYzQ5ZGZjOGE3NzllYmM3ZjM1NmQ1MjBkMDEwNDBjNzJm
15
+ NGMyYjViYmViNjQ1NWYwNWE2ZDQ0ZGM2ZDZkOWQyMTQ0NDlmZTA=
data/bin/mr_bump CHANGED
@@ -10,6 +10,12 @@ unless release || master
10
10
  exit 1
11
11
  end
12
12
 
13
+ unless master || MrBump.current_branch.to_s == "release/#{MrBump.current_uat_major}"
14
+ puts "On release branch '#{MrBump.current_branch}'. " \
15
+ "Expected release branch 'release/#{MrBump.current_uat_major}'"
16
+ exit 1
17
+ end
18
+
13
19
  unless system('git remote update > /dev/null 2>&1')
14
20
  puts 'Failed to update remotes. (Connectivity problems?)'
15
21
  exit 1
@@ -0,0 +1,47 @@
1
+ module MrBump
2
+ # This class gathers configuration infromation from git
3
+ class GitConfig
4
+ attr_reader :user, :username, :repo_url, :repo_name, :orgin
5
+ GITHUB_URL_REGEX = Regexp.new(
6
+ '(https?://((?<user>[\w_\-\d]+)@)?|git@)(?<domain>github.com)[:/](?<path>[\w_\-\d]+)/' \
7
+ '(?<repo_name>[\w_\-\d\.]+?)(\.git)?$'
8
+ ).freeze
9
+
10
+ def initialize(origin, repo_name, repo_url, username, user)
11
+ @origin = origin
12
+ @repo_name = repo_name
13
+ @repo_url = repo_url
14
+ @username = username
15
+ @user = user || `git config user.name`
16
+ end
17
+
18
+ def self.from_origin(origin, user = nil)
19
+ match = GITHUB_URL_REGEX.match(origin)
20
+ raise ArgumentError,
21
+ "Couldn't parse needed information from remote url '#{git_url}'" unless match
22
+ GitConfig.new(
23
+ origin,
24
+ match['repo_name'],
25
+ "https://#{match['domain']}/#{match['path']}/#{match['repo_name']}/",
26
+ match['user'],
27
+ user
28
+ )
29
+ end
30
+
31
+ def self.from_current_path
32
+ from_origin(`git remote get-url origin`.strip)
33
+ end
34
+
35
+ def user_icon
36
+ 'https://avatars.githubusercontent.com/' + username if username
37
+ end
38
+
39
+ def user_link
40
+ 'https://github.com/' + username if username
41
+ end
42
+
43
+ def get_sha(pattern)
44
+ `git log --grep=#{pattern} --merges --format=format:%H`.split("\n").first
45
+ end
46
+ end
47
+ end
data/lib/mr_bump/slack.rb CHANGED
@@ -2,19 +2,13 @@ require 'slack-notifier'
2
2
  module MrBump
3
3
  # This class uses a slack webhook to push notifications to slack
4
4
  class Slack
5
-
6
- def initialize(opts)
7
- raise ArgumentError, 'No Slack webhook found.' unless opts["webhook_url"]
8
- @webhook = opts["webhook_url"]
9
- @username = opts["username"] || 'Mr Bump'
10
- if opts['jira_url']
11
- @jira_url = opts['jira_url']
12
- else
13
- @jira_url = nil
14
- end
15
- if opts['icon']
16
- @icon = (opts['icon'].is_a? Array) ? opts['icon'].sample : opts['icon']
17
- end
5
+ def initialize(git_config, opts)
6
+ raise ArgumentError, 'No Slack webhook found.' unless opts['webhook_url']
7
+ @webhook = opts['webhook_url']
8
+ @username = opts['username'] || 'Mr Bump'
9
+ @jira_url = opts['jira_url']
10
+ @icon = (opts['icon'].is_a? Array) ? opts['icon'].sample : opts['icon']
11
+ @git = git_config
18
12
  end
19
13
 
20
14
  def bump(version, changes)
@@ -28,83 +22,48 @@ module MrBump
28
22
  @notifier ||= ::Slack::Notifier.new(@webhook, username: @username)
29
23
  end
30
24
 
31
- def user
32
- `git config user.name`.gsub(/\n/, '')
33
- end
34
-
35
- def git_url
36
- @git_url ||= `git remote get-url origin`
37
- end
38
-
39
- def git_user
40
- git_url[/[^@]+/].partition('//').last
41
- end
42
-
43
- def git_icon
44
- 'https://avatars.githubusercontent.com/' + git_user
45
- end
46
-
47
- def git_link
48
- 'https://github.com/' + git_user
49
- end
50
-
51
- def repo_name
52
- `git config --get remote.origin.url`[/[\w\.]+(?=\.git$)/]
53
- end
54
-
55
25
  def jira_ids(changes)
56
- changes.split('* ').map { |i| i.split(' - ',3)[1]}.compact
26
+ changes.split('* ').map { |i| i.split(' - ', 3)[1] }.compact
57
27
  end
58
28
 
59
29
  def jira_urls(changes)
60
30
  jira_ids(changes).map do |ticket|
61
- if ticket!= 'UNKNOWN'
62
- '<' + @jira_url + '/browse/' + ticket + '|Jira link - ' + ticket + ">\n"
31
+ if ticket != 'UNKNOWN'
32
+ "<#{@jira_url}/browse/#{ticket}|Jira link - #{ticket}>\n"
63
33
  end
64
34
  end.join
65
35
  end
66
36
 
67
37
  def jira_field(changes)
68
38
  if @jira_url && !@jira_url.empty?
69
- {value: jira_urls(changes), short: true, unfurl_links: false}
39
+ { value: jira_urls(changes), short: true, unfurl_links: false }
70
40
  end
71
41
  end
72
42
 
73
- def get_sha(id)
74
- `git log --grep=#{id} --merges --format=format:%H`.split("\n").first
75
- end
76
-
77
- def git_repo_url
78
- 'https://' + git_url.partition('@').last.gsub(".git\n", '')
79
- end
80
-
81
43
  def git_shas(changes)
82
44
  jira_ids(changes).map do |ticket|
83
- if ticket!= 'UNKNOWN' && !get_sha(ticket).nil?
84
- '<' + git_repo_url + '/commit/' + get_sha(ticket) + '|Git merge link - ' + ticket + ">\n"
45
+ if ticket != 'UNKNOWN' && !@git.get_sha(ticket).nil?
46
+ "<#{@git.repo_url}/commit/#{@git.get_sha(ticket)}|Git merge link - #{ticket}>\n"
85
47
  end
86
48
  end.join
87
49
  end
88
50
 
89
-
90
51
  def attatchment(version, changes)
91
52
  {
92
53
  fallback: changes,
93
54
  color: "#009de4",
94
- author_name: user,
95
- author_icon: git_icon,
96
- author_link: git_link,
55
+ author_name: @git.user,
56
+ author_icon: @git.user_icon,
57
+ author_link: @git.user_link,
97
58
  fields: [
98
- {title: 'Version', value: version, short: true},
99
- {title: 'Repository', value: repo_name, short: true},
100
- {title: 'Change Log', value: changes, short: false},
101
- jira_field(changes),
102
- {value: git_shas(changes), short: true}
103
- ],
59
+ { title: 'Version', value: version, short: true },
60
+ { title: 'Repository', value: @git.repo_name, short: true },
61
+ { title: 'Change Log', value: changes, short: false },
62
+ jira_field(changes),
63
+ { value: git_shas(changes), short: true }
64
+ ],
104
65
  mrkdwn_in: ["text", "title", "fallback", "fields"]
105
66
  }
106
67
  end
107
-
108
-
109
68
  end
110
69
  end
data/lib/mr_bump.rb CHANGED
@@ -1,6 +1,8 @@
1
1
  require 'mr_bump/version'
2
2
  require 'mr_bump/slack'
3
3
  require 'mr_bump/config'
4
+ require 'mr_bump/git_config'
5
+
4
6
 
5
7
  module MrBump
6
8
  def self.current_branch
@@ -90,7 +92,7 @@ module MrBump
90
92
 
91
93
  def self.slack_notifier(version, changelog)
92
94
  if config_file.key? 'slack'
93
- MrBump::Slack.new(config_file["slack"]).bump(version, changelog)
95
+ MrBump::Slack.new(MrBump::GitConfig.from_current_path, config_file["slack"]).bump(version, changelog)
94
96
  end
95
97
  end
96
98
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mr_bump
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.8
4
+ version: 0.0.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Richard Fitzgerald
@@ -35,6 +35,7 @@ files:
35
35
  - bin/mr_bump
36
36
  - lib/mr_bump.rb
37
37
  - lib/mr_bump/config.rb
38
+ - lib/mr_bump/git_config.rb
38
39
  - lib/mr_bump/slack.rb
39
40
  - lib/mr_bump/version.rb
40
41
  homepage: https://github.com/xulaus/mr_bump