deploy_log 0.1.2 → 0.1.3
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.
- checksums.yaml +4 -4
- data/bin/deploy_log +1 -5
- data/lib/deploy_log.rb +8 -2
- data/lib/deploy_log/github/deploys.rb +44 -0
- data/lib/deploy_log/github/helper.rb +113 -0
- data/lib/deploy_log/version.rb +1 -1
- metadata +3 -3
- data/lib/deploy_log/github_deploys.rb +0 -40
- data/lib/deploy_log/github_helper.rb +0 -105
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 23d0960ccf7f887e89ae3a12161c82448f92475f41c765c589a133a11a168682
|
4
|
+
data.tar.gz: 8069578f9c142ced9585b07d4757938fa2dd91305dec5c9a15ba2d8ebe4cb2a0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2e82325ee4fd877a8bea8a3b31b42f68a6a47fff4d94fad123c0787375537a2bede5b3809627fef6f0298971a21182150103bd41fa922e87effdad7d3519977e
|
7
|
+
data.tar.gz: 0c137aa45ae14b8a82dcfea66d9716f9bbf703bb971bcbe08108d2d71403fc0719e05463f5bfafa8135c18008ab52d1f0a869a1860e0d835e3c07510601e73c8
|
data/bin/deploy_log
CHANGED
@@ -1,10 +1,6 @@
|
|
1
1
|
#! /usr/bin/env ruby
|
2
2
|
# frozen_string_literal: true
|
3
3
|
|
4
|
-
require 'notifaction'
|
5
|
-
require 'octokit'
|
6
|
-
require 'optionparser'
|
7
|
-
require 'time'
|
8
4
|
require 'deploy_log'
|
9
5
|
|
10
6
|
start, finish, title, branch = nil
|
@@ -32,7 +28,7 @@ OptionParser.new do |opt|
|
|
32
28
|
end
|
33
29
|
end.parse!
|
34
30
|
|
35
|
-
model =
|
31
|
+
model = DeployLog::Github::Deploys.new
|
36
32
|
model.merged_between(start, finish) if start && finish
|
37
33
|
model.pr_title(title) if title
|
38
34
|
model.pr_for_branch(branch) if branch
|
data/lib/deploy_log.rb
CHANGED
@@ -1,6 +1,12 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'notifaction'
|
4
|
+
require 'octokit'
|
5
|
+
require 'optionparser'
|
6
|
+
require 'time'
|
1
7
|
require 'deploy_log/version'
|
2
|
-
require 'deploy_log/
|
3
|
-
require 'deploy_log/
|
8
|
+
require 'deploy_log/github/helper'
|
9
|
+
require 'deploy_log/github/deploys'
|
4
10
|
|
5
11
|
module DeployLog
|
6
12
|
class Error < StandardError; end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module DeployLog
|
4
|
+
module Github
|
5
|
+
class Deploys
|
6
|
+
def initialize
|
7
|
+
@github = Helper.new(ARGV.first)
|
8
|
+
end
|
9
|
+
|
10
|
+
def merged_between(start, finish)
|
11
|
+
unless start && finish
|
12
|
+
Notify.error("Start and end dates (--start= and --end=) are required")
|
13
|
+
end
|
14
|
+
|
15
|
+
@github.pulls_in_timeframe(start, finish)
|
16
|
+
end
|
17
|
+
|
18
|
+
def merged_today
|
19
|
+
start = Date.today.to_time # 12:00AM this morning
|
20
|
+
finish = Date.today.to_time + (24 * 60 * 60) - 1 # 11:59PM tonight
|
21
|
+
|
22
|
+
@github.pulls_in_timeframe(start, finish)
|
23
|
+
end
|
24
|
+
|
25
|
+
def merged_on(start)
|
26
|
+
unless start
|
27
|
+
Notify.error("Start date (--start=) is required")
|
28
|
+
end
|
29
|
+
|
30
|
+
finish = start + 24 * 60 * 60 - 1
|
31
|
+
|
32
|
+
@github.pulls_in_timeframe(start, finish)
|
33
|
+
end
|
34
|
+
|
35
|
+
def pr_title(title)
|
36
|
+
@github.search_pulls_by(title, :title)
|
37
|
+
end
|
38
|
+
|
39
|
+
def pr_for_branch(branch)
|
40
|
+
@github.search_pulls_by(branch, :ref)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,113 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'octokit'
|
4
|
+
|
5
|
+
module DeployLog
|
6
|
+
module Github
|
7
|
+
class Helper
|
8
|
+
def initialize(user_repo)
|
9
|
+
@client = ::Octokit::Client.new(login: ENV['GITHUB_USER'], password: ENV['GITHUB_TOKEN'])
|
10
|
+
@repo_location = user_repo
|
11
|
+
end
|
12
|
+
|
13
|
+
def pulls_in_timeframe(date_start = nil, date_end = nil)
|
14
|
+
@client.auto_paginate = true
|
15
|
+
list = @client.pull_requests(@repo_location,
|
16
|
+
state: :closed,
|
17
|
+
per_page: 500,
|
18
|
+
sort: 'long-running'
|
19
|
+
)
|
20
|
+
|
21
|
+
pr_format_str = "%s (%s)\n - Created by %s\n - Branch: %s\n - Merged by %s on %s\n - Changes: %s\n\n"
|
22
|
+
prs_covered = 0
|
23
|
+
|
24
|
+
File.open('/tmp/github-deploys.log', 'w+') do |f|
|
25
|
+
list.each do |pr|
|
26
|
+
next unless (date_start..date_end).cover? pr.merged_at
|
27
|
+
|
28
|
+
prs_covered += 1
|
29
|
+
|
30
|
+
f.write(
|
31
|
+
sprintf(
|
32
|
+
pr_format_str,
|
33
|
+
pr.title,
|
34
|
+
pr.html_url,
|
35
|
+
pr.user.login,
|
36
|
+
pr.head.ref,
|
37
|
+
user_who_merged(pr.number),
|
38
|
+
formatted_time(pr.merged_at),
|
39
|
+
pr.diff_url
|
40
|
+
)
|
41
|
+
)
|
42
|
+
end
|
43
|
+
|
44
|
+
f.write("============================================================\n#{prs_covered} PR(s) merged from #{date_start} to #{date_end}\n============================================================\n")
|
45
|
+
end
|
46
|
+
|
47
|
+
return ::Notify.warning("No pull requests have been merged in the requested date range (#{date_start} - #{date_end})") if prs_covered.zero?
|
48
|
+
|
49
|
+
system('cat /tmp/github-deploys.log')
|
50
|
+
end
|
51
|
+
|
52
|
+
def search_pulls_by(value, field = :title)
|
53
|
+
list = @client.pull_requests(@repo_location,
|
54
|
+
:state => :all,
|
55
|
+
:per_page => 100
|
56
|
+
)
|
57
|
+
# pr_format_str = "%s (%s)\n - Created by %s\n - Branch: %s\n - Changes: %s\n\n"
|
58
|
+
pr_format_str = "%s (%s)\n - Created by %s\n - Branch: %s\n - Merged by %s on %s\n - Changes: %s\n\n"
|
59
|
+
prs_covered = 0
|
60
|
+
|
61
|
+
File.open('/tmp/github-deploys.log', 'w+') do |f|
|
62
|
+
list.each do |pr|
|
63
|
+
next unless nested_hash_value(pr, field).match?(/#{value}\b/)
|
64
|
+
|
65
|
+
prs_covered += 1
|
66
|
+
|
67
|
+
f.write(
|
68
|
+
sprintf(
|
69
|
+
pr_format_str,
|
70
|
+
pr.title,
|
71
|
+
pr.html_url,
|
72
|
+
pr.user.login,
|
73
|
+
pr.head.ref,
|
74
|
+
user_who_merged(pr.number),
|
75
|
+
formatted_time(pr.merged_at),
|
76
|
+
pr.diff_url
|
77
|
+
)
|
78
|
+
)
|
79
|
+
end
|
80
|
+
|
81
|
+
f.write("============================================================\n#{prs_covered} PR(s) matched\n============================================================\n")
|
82
|
+
end
|
83
|
+
|
84
|
+
return ::Notify.warning("No pull requests match the requested term (#{value})") if prs_covered.zero?
|
85
|
+
|
86
|
+
system('cat /tmp/github-deploys.log')
|
87
|
+
end
|
88
|
+
|
89
|
+
private
|
90
|
+
|
91
|
+
def user_who_merged(pr_number)
|
92
|
+
pr = @client.pull_request(@repo_location, pr_number)
|
93
|
+
pr.merged_by.login
|
94
|
+
end
|
95
|
+
|
96
|
+
def formatted_time(time, correct_utc = false)
|
97
|
+
time = Time.now if time.nil?
|
98
|
+
time = time.localtime if correct_utc
|
99
|
+
time.strftime('%e/%-m/%Y @ %I:%M:%S%P')
|
100
|
+
end
|
101
|
+
|
102
|
+
def nested_hash_value(obj, key)
|
103
|
+
if obj.respond_to?(:key?) && obj.key?(key)
|
104
|
+
obj[key]
|
105
|
+
elsif obj.respond_to?(:each)
|
106
|
+
r = nil
|
107
|
+
obj.find{ |*a| r=nested_hash_value(a.last,key) }
|
108
|
+
r
|
109
|
+
end
|
110
|
+
end
|
111
|
+
end
|
112
|
+
end
|
113
|
+
end
|
data/lib/deploy_log/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: deploy_log
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ryan Priebe
|
@@ -100,8 +100,8 @@ files:
|
|
100
100
|
- bin/setup
|
101
101
|
- deploy_log.gemspec
|
102
102
|
- lib/deploy_log.rb
|
103
|
-
- lib/deploy_log/
|
104
|
-
- lib/deploy_log/
|
103
|
+
- lib/deploy_log/github/deploys.rb
|
104
|
+
- lib/deploy_log/github/helper.rb
|
105
105
|
- lib/deploy_log/version.rb
|
106
106
|
homepage: https://github.com/aapis/deploy_log
|
107
107
|
licenses:
|
@@ -1,40 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
class GithubDeploys
|
4
|
-
def initialize
|
5
|
-
@github = GithubHelper.new(ARGV.first)
|
6
|
-
end
|
7
|
-
|
8
|
-
def merged_between(start, finish)
|
9
|
-
unless start && finish
|
10
|
-
Notify.error("Start and end dates (--start= and --end=) are required")
|
11
|
-
end
|
12
|
-
|
13
|
-
@github.pulls_in_timeframe(start, finish)
|
14
|
-
end
|
15
|
-
|
16
|
-
def merged_today
|
17
|
-
start = Date.today.to_time # 12:00AM this morning
|
18
|
-
finish = Date.today.to_time + (24 * 60 * 60) - 1 # 11:59PM tonight
|
19
|
-
|
20
|
-
@github.pulls_in_timeframe(start, finish)
|
21
|
-
end
|
22
|
-
|
23
|
-
def merged_on(start)
|
24
|
-
unless start
|
25
|
-
Notify.error("Start date (--start=) is required")
|
26
|
-
end
|
27
|
-
|
28
|
-
finish = start + 24 * 60 * 60 - 1
|
29
|
-
|
30
|
-
@github.pulls_in_timeframe(start, finish)
|
31
|
-
end
|
32
|
-
|
33
|
-
def pr_title(title)
|
34
|
-
@github.search_pulls_by(title, :title)
|
35
|
-
end
|
36
|
-
|
37
|
-
def pr_for_branch(branch)
|
38
|
-
@github.search_pulls_by(branch, :ref)
|
39
|
-
end
|
40
|
-
end
|
@@ -1,105 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
|
4
|
-
class GithubHelper
|
5
|
-
def initialize(user_repo)
|
6
|
-
@client = Octokit::Client.new(login: ENV['GITHUB_USER'], password: ENV['GITHUB_TOKEN'])
|
7
|
-
@repo_location = user_repo
|
8
|
-
end
|
9
|
-
|
10
|
-
def pulls_in_timeframe(date_start = nil, date_end = nil)
|
11
|
-
@client.auto_paginate = true
|
12
|
-
list = @client.pull_requests(@repo_location,
|
13
|
-
state: :closed,
|
14
|
-
per_page: 500,
|
15
|
-
sort: 'long-running'
|
16
|
-
)
|
17
|
-
|
18
|
-
pr_format_str = "%s (%s)\n - Created by %s\n - Branch: %s\n - Merged by %s on %s\n - Changes: %s\n\n"
|
19
|
-
prs_covered = 0
|
20
|
-
|
21
|
-
File.open('/tmp/github-deploys.log', 'w+') do |f|
|
22
|
-
list.each do |pr|
|
23
|
-
next unless (date_start..date_end).cover? pr.merged_at
|
24
|
-
|
25
|
-
prs_covered += 1
|
26
|
-
|
27
|
-
f.write(
|
28
|
-
sprintf(
|
29
|
-
pr_format_str,
|
30
|
-
pr.title,
|
31
|
-
pr.html_url,
|
32
|
-
pr.user.login,
|
33
|
-
pr.head.ref,
|
34
|
-
user_who_merged(pr.number),
|
35
|
-
formatted_time(pr.merged_at),
|
36
|
-
pr.diff_url
|
37
|
-
)
|
38
|
-
)
|
39
|
-
end
|
40
|
-
|
41
|
-
f.write("============================================================\n#{prs_covered} PR(s) merged from #{date_start} to #{date_end}\n============================================================\n")
|
42
|
-
end
|
43
|
-
|
44
|
-
return Notify.warning("No pull requests have been merged in the requested date range (#{date_start} - #{date_end})") if prs_covered.zero?
|
45
|
-
|
46
|
-
system('cat /tmp/github-deploys.log')
|
47
|
-
end
|
48
|
-
|
49
|
-
def search_pulls_by(value, field = :title)
|
50
|
-
list = @client.pull_requests(@repo_location,
|
51
|
-
:state => :all,
|
52
|
-
:per_page => 100
|
53
|
-
)
|
54
|
-
pr_format_str = "%s (%s)\n - Created by %s\n - Branch: %s\n - Changes: %s\n\n"
|
55
|
-
prs_covered = 0
|
56
|
-
|
57
|
-
File.open('/tmp/github-deploys.log', 'w+') do |f|
|
58
|
-
list.each do |pr|
|
59
|
-
next unless nested_hash_value(pr, field).match?(/#{value}\b/)
|
60
|
-
|
61
|
-
prs_covered += 1
|
62
|
-
|
63
|
-
f.write(
|
64
|
-
sprintf(
|
65
|
-
pr_format_str,
|
66
|
-
pr.title,
|
67
|
-
pr.html_url,
|
68
|
-
pr.user.login,
|
69
|
-
pr.head.ref,
|
70
|
-
pr.diff_url
|
71
|
-
)
|
72
|
-
)
|
73
|
-
end
|
74
|
-
|
75
|
-
f.write("============================================================\n#{prs_covered} PR(s) matched\n============================================================\n")
|
76
|
-
end
|
77
|
-
|
78
|
-
return Notify.warning("No pull requests match the requested term (#{value})") if prs_covered.zero?
|
79
|
-
|
80
|
-
system('cat /tmp/github-deploys.log')
|
81
|
-
end
|
82
|
-
|
83
|
-
private
|
84
|
-
|
85
|
-
def user_who_merged(pr_number)
|
86
|
-
pr = @client.pull_request(@repo_location, pr_number)
|
87
|
-
pr.merged_by.login
|
88
|
-
end
|
89
|
-
|
90
|
-
def formatted_time(time, correct_utc = false)
|
91
|
-
time = Time.now if time.nil?
|
92
|
-
time = time.localtime if correct_utc
|
93
|
-
time.strftime('%e/%-m/%Y @ %I:%M:%S%P')
|
94
|
-
end
|
95
|
-
|
96
|
-
def nested_hash_value(obj, key)
|
97
|
-
if obj.respond_to?(:key?) && obj.key?(key)
|
98
|
-
obj[key]
|
99
|
-
elsif obj.respond_to?(:each)
|
100
|
-
r = nil
|
101
|
-
obj.find{ |*a| r=nested_hash_value(a.last,key) }
|
102
|
-
r
|
103
|
-
end
|
104
|
-
end
|
105
|
-
end
|