whatsup_github 0.3.1 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5dba0742fd0e58bdfcab58a767f79e6b0f8adae44aa0dc8f6fa7b5b2145e9e1c
4
- data.tar.gz: '08d06cdb9510e937fd349a29c904b59daaa3740e31e2d6cb3fc798675b5c3277'
3
+ metadata.gz: a0633d017c04fd64dfdd657e5c88db7dfed9ec1ff6fd91d4fe6471a50d1e0308
4
+ data.tar.gz: 819d3cd2c72f38ea8df1fbd496a394b727d522ac52c620221fc9bb4f71b2a31e
5
5
  SHA512:
6
- metadata.gz: 41cadfe558a0d1847636dc97bc99f85dbaae9df4a0e585be22e08ed9b701039f78a62e4c7f874fa59052f855e77d313f80af182a7eab4be1ddae4285f6dd680a
7
- data.tar.gz: 38f9ed161d70791b283acb5041f1598a34888d28fd0f40ac733bcd9ad4b642f7b5145895298ef52b9850efcf1a3f30c8607840231864872512291376e0c9cc61
6
+ metadata.gz: 9f545b95c7dd6e2e6facb23eec0ffa26d4f8e9f7330698c7c2bd471a2affcc98bbbddef433b35ff74ae8ace4a639b223262409fd32caf9014ed5d5b1d47fd9ab
7
+ data.tar.gz: '0910958934e53e7a8feb8d63121f9193133a725057b7139df5fef6d4c2e16d506e44014afe55320027fda6c3514f1b8214a0f1fa9143583c79220054f16e2790'
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- ruby-2.7.1
1
+ ruby-2.7.2
data/.travis.yml CHANGED
@@ -2,4 +2,4 @@
2
2
  sudo: false
3
3
  language: ruby
4
4
  cache: bundler
5
- before_install: gem install bundler -v 1.17.3
5
+ before_install: gem install bundler -v 2.2.15
data/CHANGELOG.md CHANGED
@@ -1,3 +1,30 @@
1
+ # Changelog
2
+
3
+ ## 0.4.0
4
+
5
+ ### General
6
+
7
+ - Loading more data about pull requests via API
8
+ - Loading data about configured organization members via API
9
+ - Upgraded gem specs
10
+ - Removed non-working tests. TODO: Add tests for the output file.
11
+
12
+ ### New configuration option
13
+
14
+ Added `membership` to configuration. Value: name of an organization to check membership of a contributor.
15
+
16
+ ### New output data
17
+
18
+ Added `merge_commit`, `labels`, and `membership` to YAML output.
19
+ Values for `membership`:
20
+ - `true` if contributor is a member of the configured organization
21
+ - `false` if not a member
22
+ - empty if not configured
23
+
24
+ ## 0.3.1
25
+
26
+ - Added `contributor` and `profile` output data.
27
+
1
28
  ## 0.3.0
2
29
 
3
30
  - Added "magic word" to configuration file
data/Gemfile CHANGED
@@ -1,6 +1,8 @@
1
- source "https://rubygems.org"
1
+ # frozen_string_literal: true
2
2
 
3
- git_source(:github) {|repo_name| "https://github.com/#{repo_name}" }
3
+ source 'https://rubygems.org'
4
+
5
+ git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
4
6
 
5
7
  # Specify your gem's dependencies in whatsup_github.gemspec
6
8
  gemspec
data/Gemfile.lock CHANGED
@@ -1,92 +1,129 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- whatsup_github (0.3.1)
5
- netrc (~> 0.10)
6
- octokit (~> 4.14)
7
- thor (~> 0.20)
4
+ whatsup_github (0.4.0)
5
+ netrc (~> 0.11)
6
+ octokit (~> 4.20)
7
+ thor (~> 1.1)
8
8
 
9
9
  GEM
10
10
  remote: https://rubygems.org/
11
11
  specs:
12
+ activesupport (6.1.3.1)
13
+ concurrent-ruby (~> 1.0, >= 1.0.2)
14
+ i18n (>= 1.6, < 2)
15
+ minitest (>= 5.1)
16
+ tzinfo (~> 2.0)
17
+ zeitwerk (~> 2.3)
12
18
  addressable (2.7.0)
13
19
  public_suffix (>= 2.0.2, < 5.0)
14
- aruba (0.14.14)
15
- childprocess (>= 0.6.3, < 4.0.0)
16
- contracts (~> 0.9)
17
- cucumber (>= 1.3.19)
18
- ffi (~> 1.9)
19
- rspec-expectations (>= 2.99)
20
- thor (>= 0.19, < 2.0)
21
- backports (3.17.0)
20
+ aruba (1.0.4)
21
+ childprocess (>= 2.0, < 5.0)
22
+ contracts (~> 0.16.0)
23
+ cucumber (>= 2.4, < 6.0)
24
+ rspec-expectations (~> 3.4)
25
+ thor (~> 1.0)
22
26
  builder (3.2.4)
23
- childprocess (3.0.0)
24
- coderay (1.1.2)
27
+ childprocess (4.0.0)
28
+ coderay (1.1.3)
29
+ concurrent-ruby (1.1.8)
25
30
  contracts (0.16.0)
26
- cucumber (3.1.2)
27
- builder (>= 2.1.2)
28
- cucumber-core (~> 3.2.0)
29
- cucumber-expressions (~> 6.0.1)
30
- cucumber-wire (~> 0.0.1)
31
- diff-lcs (~> 1.3)
32
- gherkin (~> 5.1.0)
33
- multi_json (>= 1.7.5, < 2.0)
34
- multi_test (>= 0.1.2)
35
- cucumber-core (3.2.1)
36
- backports (>= 3.8.0)
37
- cucumber-tag_expressions (~> 1.1.0)
38
- gherkin (~> 5.0)
39
- cucumber-expressions (6.0.1)
40
- cucumber-tag_expressions (1.1.1)
41
- cucumber-wire (0.0.1)
42
- diff-lcs (1.3)
43
- faraday (1.0.1)
31
+ cucumber (5.3.0)
32
+ builder (~> 3.2, >= 3.2.4)
33
+ cucumber-core (~> 8.0, >= 8.0.1)
34
+ cucumber-create-meta (~> 2.0, >= 2.0.2)
35
+ cucumber-cucumber-expressions (~> 10.3, >= 10.3.0)
36
+ cucumber-gherkin (~> 15.0, >= 15.0.2)
37
+ cucumber-html-formatter (~> 9.0, >= 9.0.0)
38
+ cucumber-messages (~> 13.1, >= 13.1.0)
39
+ cucumber-wire (~> 4.0, >= 4.0.1)
40
+ diff-lcs (~> 1.4, >= 1.4.4)
41
+ multi_test (~> 0.1, >= 0.1.2)
42
+ sys-uname (~> 1.2, >= 1.2.1)
43
+ cucumber-core (8.0.1)
44
+ cucumber-gherkin (~> 15.0, >= 15.0.2)
45
+ cucumber-messages (~> 13.0, >= 13.0.1)
46
+ cucumber-tag-expressions (~> 2.0, >= 2.0.4)
47
+ cucumber-create-meta (2.0.4)
48
+ cucumber-messages (~> 13.1, >= 13.1.0)
49
+ sys-uname (~> 1.2, >= 1.2.1)
50
+ cucumber-cucumber-expressions (10.3.0)
51
+ cucumber-gherkin (15.0.2)
52
+ cucumber-messages (~> 13.0, >= 13.0.1)
53
+ cucumber-html-formatter (9.0.0)
54
+ cucumber-messages (~> 13.0, >= 13.0.1)
55
+ cucumber-messages (13.2.1)
56
+ protobuf-cucumber (~> 3.10, >= 3.10.8)
57
+ cucumber-tag-expressions (2.0.4)
58
+ cucumber-wire (4.0.1)
59
+ cucumber-core (~> 8.0, >= 8.0.1)
60
+ cucumber-cucumber-expressions (~> 10.3, >= 10.3.0)
61
+ cucumber-messages (~> 13.0, >= 13.0.1)
62
+ diff-lcs (1.4.4)
63
+ faraday (1.3.0)
64
+ faraday-net_http (~> 1.0)
44
65
  multipart-post (>= 1.2, < 3)
45
- ffi (1.12.2)
46
- gherkin (5.1.0)
66
+ ruby2_keywords
67
+ faraday-net_http (1.0.1)
68
+ ffi (1.15.0)
69
+ i18n (1.8.9)
70
+ concurrent-ruby (~> 1.0)
47
71
  method_source (1.0.0)
48
- multi_json (1.14.1)
72
+ middleware (0.1.0)
73
+ minitest (5.14.4)
49
74
  multi_test (0.1.2)
50
75
  multipart-post (2.1.1)
51
76
  netrc (0.11.0)
52
- octokit (4.18.0)
77
+ octokit (4.20.0)
53
78
  faraday (>= 0.9)
54
79
  sawyer (~> 0.8.0, >= 0.5.3)
55
- pry (0.13.0)
80
+ protobuf-cucumber (3.10.8)
81
+ activesupport (>= 3.2)
82
+ middleware
83
+ thor
84
+ thread_safe
85
+ pry (0.14.0)
56
86
  coderay (~> 1.1)
57
87
  method_source (~> 1.0)
58
- public_suffix (4.0.5)
59
- rake (13.0.1)
60
- rspec (3.9.0)
61
- rspec-core (~> 3.9.0)
62
- rspec-expectations (~> 3.9.0)
63
- rspec-mocks (~> 3.9.0)
64
- rspec-core (3.9.1)
65
- rspec-support (~> 3.9.1)
66
- rspec-expectations (3.9.1)
88
+ public_suffix (4.0.6)
89
+ rake (13.0.3)
90
+ rspec (3.10.0)
91
+ rspec-core (~> 3.10.0)
92
+ rspec-expectations (~> 3.10.0)
93
+ rspec-mocks (~> 3.10.0)
94
+ rspec-core (3.10.1)
95
+ rspec-support (~> 3.10.0)
96
+ rspec-expectations (3.10.1)
67
97
  diff-lcs (>= 1.2.0, < 2.0)
68
- rspec-support (~> 3.9.0)
69
- rspec-mocks (3.9.1)
98
+ rspec-support (~> 3.10.0)
99
+ rspec-mocks (3.10.2)
70
100
  diff-lcs (>= 1.2.0, < 2.0)
71
- rspec-support (~> 3.9.0)
72
- rspec-support (3.9.2)
101
+ rspec-support (~> 3.10.0)
102
+ rspec-support (3.10.2)
103
+ ruby2_keywords (0.0.4)
73
104
  sawyer (0.8.2)
74
105
  addressable (>= 2.3.5)
75
106
  faraday (> 0.8, < 2.0)
76
- thor (0.20.3)
107
+ sys-uname (1.2.2)
108
+ ffi (~> 1.1)
109
+ thor (1.1.0)
110
+ thread_safe (0.3.6)
111
+ tzinfo (2.0.4)
112
+ concurrent-ruby (~> 1.0)
113
+ zeitwerk (2.4.2)
77
114
 
78
115
  PLATFORMS
79
116
  ruby
80
117
  x86_64-darwin-19
81
118
 
82
119
  DEPENDENCIES
83
- aruba (~> 0.14)
84
- bundler (~> 1.17)
85
- cucumber (~> 3.1)
86
- pry (~> 0.12)
120
+ aruba (~> 1.0)
121
+ bundler (~> 2.2)
122
+ cucumber (~> 5.3)
123
+ pry (~> 0.14)
87
124
  rake (~> 13.0)
88
- rspec (~> 3.0)
125
+ rspec (~> 3.10)
89
126
  whatsup_github!
90
127
 
91
128
  BUNDLED WITH
92
- 1.17.3
129
+ 2.2.15
data/README.md CHANGED
@@ -32,6 +32,7 @@ Added documentation about [New Magento feature](https://devdocs.magento.com/new-
32
32
  ### `type`
33
33
 
34
34
  Set as a list of `labels` in `.whatsup.yml`. There are two types of labels in configuration:
35
+
35
36
  - `required` are labels that must include `whatsnew`. Otherwise, resulting output will warn about missing `whatsnew`.
36
37
  - `optional` are labels that may include `whatsnew`. If `whatsnew` is missing, you won't get any notification about this.
37
38
 
@@ -48,6 +49,22 @@ Date when the pull request was merged.
48
49
 
49
50
  URL of the pull request.
50
51
 
52
+ ### `contributor`
53
+
54
+ An author of a pull request.
55
+
56
+ ### `merge_commit`
57
+
58
+ Merge commit SHA of the pull request.
59
+
60
+ ### `membership`
61
+
62
+ Memebership of the contributor in a configured organization.
63
+
64
+ ### `labels`
65
+
66
+ All labels added to the pull request.
67
+
51
68
  ## Installation
52
69
 
53
70
  This gem can be installed as a system command-line tool or as a command-line tool available in a project.
@@ -166,7 +183,7 @@ end
166
183
  To run such test, run the corresponding file:
167
184
 
168
185
  ```bash
169
- ruby lib/whatsup_github/config-reader.rb
186
+ ruby lib/whatsup_github/config_reader.rb
170
187
  ```
171
188
 
172
189
  The tests use the root `.whatsup.yml` file to read configuration.
data/Rakefile CHANGED
@@ -1,14 +1,16 @@
1
- require "bundler/gem_tasks"
2
- require "rspec/core/rake_task"
1
+ # frozen_string_literal: true
2
+
3
+ require 'bundler/gem_tasks'
4
+ require 'rspec/core/rake_task'
3
5
  require 'cucumber'
4
6
  require 'cucumber/rake/task'
5
7
 
6
8
  RSpec::Core::RakeTask.new(:spec)
7
9
 
8
- task :default => :spec
10
+ task default: :spec
9
11
 
10
12
  Cucumber::Rake::Task.new(:features) do |t|
11
- t.cucumber_opts = "--format pretty" # Any valid command line option can go here.
13
+ t.cucumber_opts = '--format pretty' # Any valid command line option can go here.
12
14
  end
13
15
 
14
- task :test => [:spec, :features]
16
+ task test: %i[spec features]
data/bin/console CHANGED
@@ -1,13 +1,14 @@
1
1
  #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
2
3
 
3
- require "bundler/setup"
4
- require "whatsup_github"
4
+ require 'bundler/setup'
5
+ require 'whatsup_github'
5
6
 
6
7
  # You can add fixtures and/or initialization code here to make experimenting
7
8
  # with your gem easier. You can also use a different console, if you like.
8
9
 
9
10
  # (If you use this, don't forget to add pry to your Gemfile!)
10
- require "pry"
11
+ require 'pry'
11
12
  Pry.start
12
13
 
13
14
  # require "irb"
data/exe/whatsup_github CHANGED
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
2
3
 
3
4
  require 'whatsup_github/cli'
4
5
  WhatsupGithub::CLI.start(ARGV)
@@ -1,8 +1,10 @@
1
1
  # Parameters for a GitHub search query
2
2
  base_branch: master
3
3
 
4
+ # The list of repositories to scan for pull requests
4
5
  repos:
5
6
  - magento/devdocs
7
+ - magento-commerce/devdocs
6
8
 
7
9
  # Labels also will be used as a 'type' value in the output file
8
10
  labels:
@@ -17,4 +19,10 @@ output_format:
17
19
  - yaml
18
20
  # - markdown
19
21
 
20
- magic_word: whatsnew
22
+ # The phrase that is used as a separator in the pull request descripion.
23
+ # All the lines that follows this phrase are captured as 'description' for this PR's entry in the resulted data file.
24
+ magic_word: whatsnew
25
+
26
+ # An organization to check a contributor for membership.
27
+ # Values: 'true', 'false', empry if not configured.
28
+ membership: magento-commerce
@@ -1,6 +1,6 @@
1
- require "whatsup_github/version"
1
+ # frozen_string_literal: true
2
2
 
3
+ require 'whatsup_github/version'
3
4
 
4
5
  module WhatsupGithub
5
-
6
6
  end
@@ -1,14 +1,15 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'thor'
2
- require "whatsup_github/runner"
4
+ require 'whatsup_github/runner'
3
5
  module WhatsupGithub
4
6
  class CLI < Thor
5
- desc "since DATE", "Filters pull requests since the specified date till now."
7
+ desc 'since DATE', 'Filters pull requests since the specified date till now.'
6
8
 
7
9
  def since(date = Date.today - 7)
8
-
9
10
  runner = WhatsupGithub::Runner.new(Date.parse(date.to_s))
10
11
  runner.run
11
12
  end
12
13
  default_task :since
13
14
  end
14
- end
15
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'yaml'
2
4
  require 'singleton'
3
5
 
@@ -5,6 +7,7 @@ module WhatsupGithub
5
7
  # Creates readable objects from confirurarion files
6
8
  class Config
7
9
  attr_reader :config
10
+
8
11
  include Singleton
9
12
 
10
13
  def initialize
@@ -18,20 +21,21 @@ module WhatsupGithub
18
21
  FileUtils.cp dist_file, @file
19
22
  end
20
23
  @config = YAML.load_file @file
21
- return {} if !@config
24
+ return {} unless @config
25
+
22
26
  @config
23
27
  end
24
28
 
25
29
  def repos
26
- read.dig 'repos'
30
+ read['repos']
27
31
  end
28
32
 
29
33
  def base_branch
30
- read.dig 'base_branch'
34
+ read['base_branch']
31
35
  end
32
36
 
33
37
  def output_format
34
- read.dig 'output_format'
38
+ read['output_format']
35
39
  end
36
40
 
37
41
  def labels
@@ -41,17 +45,23 @@ module WhatsupGithub
41
45
  def required_labels
42
46
  res = read.dig 'labels', 'required'
43
47
  return [] unless res
48
+
44
49
  res
45
50
  end
46
51
 
47
52
  def optional_labels
48
53
  res = read.dig 'labels', 'optional'
49
54
  return [] unless res
55
+
50
56
  res
51
57
  end
52
58
 
59
+ def membership
60
+ read['membership']
61
+ end
62
+
53
63
  def magic_word
54
- read.dig 'magic_word'
64
+ read['magic_word']
55
65
  end
56
66
  end
57
67
  end
@@ -65,4 +75,5 @@ if $PROGRAM_NAME == __FILE__
65
75
  p config.required_labels
66
76
  p config.optional_labels
67
77
  p config.magic_word
68
- end
78
+ p config.membership
79
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module WhatsupGithub
2
4
  # Creates the final table
3
5
  class Generator
@@ -9,7 +11,7 @@ module WhatsupGithub
9
11
  @collector.sort_by_date
10
12
  end
11
13
 
12
- def run formatter, content
14
+ def run(formatter, content)
13
15
  formatter.generate_output_from content
14
16
  end
15
17
  end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ module WhatsupGithub
4
+ # Members of an organization
5
+ class Members
6
+ def initialize(org)
7
+ @org = org
8
+ end
9
+
10
+ def client
11
+ Octokit::Client.new(netrc: true)
12
+ end
13
+
14
+ def members
15
+ client.org_members @org
16
+ end
17
+ end
18
+ end
@@ -1,8 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'octokit'
2
- require_relative 'config-reader'
4
+ require_relative 'config_reader'
3
5
 
4
6
  module WhatsupGithub
5
- # Gets pull filtered pull requests from GitHub
7
+ # Gets issues found on GitHub by query
6
8
  class Pulls
7
9
  attr_reader :since, :repo
8
10
 
@@ -11,15 +13,12 @@ module WhatsupGithub
11
13
  @since = args[:since]
12
14
  end
13
15
 
14
- def filtered
15
- issues = []
16
- required_labels.each do |label|
17
- issues += search_issues(label).items
18
- end
19
- optional_labels.each do |label|
20
- issues += search_issues_with_magic_word(label).items
16
+ def data
17
+ pull_requests = []
18
+ filtered_numbers.each do |number|
19
+ pull_requests << client.pull_request(@repo, number)
21
20
  end
22
- issues
21
+ pull_requests
23
22
  end
24
23
 
25
24
  private
@@ -49,7 +48,7 @@ module WhatsupGithub
49
48
  end
50
49
 
51
50
  def client
52
- Octokit::Client.new(:netrc => true)
51
+ Octokit::Client.new(netrc: true)
53
52
  end
54
53
 
55
54
  def search_issues(label)
@@ -69,6 +68,21 @@ module WhatsupGithub
69
68
  def auto_paginate
70
69
  Octokit.auto_paginate = true
71
70
  end
71
+
72
+ def filtered_issues
73
+ issues = []
74
+ required_labels.each do |label|
75
+ issues += search_issues(label).items
76
+ end
77
+ optional_labels.each do |label|
78
+ issues += search_issues_with_magic_word(label).items
79
+ end
80
+ issues
81
+ end
82
+
83
+ def filtered_numbers
84
+ filtered_issues.map(&:number)
85
+ end
72
86
  end
73
87
  end
74
88
 
@@ -76,5 +90,5 @@ if $PROGRAM_NAME == __FILE__
76
90
  require 'date'
77
91
  two_weeks_ago = (Date.today - 14).to_s
78
92
  pulls = WhatsupGithub::Pulls.new(repo: 'magento/devdocs', since: two_weeks_ago)
79
- p pulls.filtered
93
+ p pulls.data
80
94
  end
@@ -1,9 +1,24 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module WhatsupGithub
2
4
  # Row to be converted to entry in future table
3
5
  class Row
4
- attr_reader :body, :title, :labels, :pr_number, :assignee, :link, :author, :author_url
6
+ attr_reader :body,
7
+ :title,
8
+ :labels,
9
+ :link,
10
+ :pr_number,
11
+ :assignee,
12
+ :author,
13
+ :author_url,
14
+ :merge_commit,
15
+ :is_private,
16
+ :membership
17
+
5
18
  def initialize(args)
6
19
  @repo = args[:repo]
20
+ @repo_url = args[:repo_url]
21
+ @is_private = args[:private]
7
22
  @title = args[:pr_title]
8
23
  @body = args[:pr_body]
9
24
  @date = args[:date]
@@ -13,6 +28,8 @@ module WhatsupGithub
13
28
  @author_url = args[:author_url]
14
29
  @pr_number = args[:pr_number]
15
30
  @link = args[:pr_url]
31
+ @merge_commit = args[:merge_commit_sha]
32
+ @membership = args[:membership]
16
33
  @config = Config.instance
17
34
  end
18
35
 
@@ -42,7 +59,9 @@ module WhatsupGithub
42
59
  end
43
60
 
44
61
  def parse_body
62
+ # Split PR description in two parts by 'magic word', and take the second half
45
63
  description_splited = body.split(magic_word)[-1]
64
+ # Convert new line separators to <br> tags
46
65
  newline_splited = description_splited.split("\n")
47
66
  cleaned_array = newline_splited.map { |e| e.delete "\r\*" }
48
67
  cleaned_array.delete('')
@@ -1,6 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'row'
2
4
  require_relative 'pulls'
3
- require_relative 'config-reader'
5
+ require_relative 'config_reader'
6
+ require_relative 'members'
4
7
 
5
8
  module WhatsupGithub
6
9
  # Creates Row objects for the future table
@@ -24,12 +27,17 @@ module WhatsupGithub
24
27
  pulls(repo).map do |pull|
25
28
  Row.new(
26
29
  repo: repo,
30
+ repo_url: pull.base.repo.html_url,
31
+ private: pull.base.repo.private?,
27
32
  pr_number: pull.number,
28
33
  pr_title: pull.title,
29
34
  pr_body: pull.body,
30
- date: pull.closed_at,
35
+ date: pull.merged_at,
31
36
  pr_labels: label_names(pull.labels),
32
- assignee: assignee(pull.assignee),
37
+ assignee: assignee(pull.assignees),
38
+ membership: member?(pull.user.login),
39
+ merger: pull.merged_by.login,
40
+ merge_commit_sha: pull.merge_commit_sha,
33
41
  author: pull.user.login,
34
42
  author_url: pull.user.html_url,
35
43
  pr_url: pull.html_url
@@ -49,20 +57,38 @@ module WhatsupGithub
49
57
 
50
58
  private
51
59
 
52
- def assignee(assignee)
53
- if assignee.nil?
60
+ def assignee(assignees)
61
+ if assignees.empty?
54
62
  'NOBODY'
55
63
  else
56
- assignee.login
64
+ assignees.map(&:login).join(', ')
57
65
  end
58
66
  end
59
67
 
68
+ def member?(login)
69
+ return nil unless config.membership
70
+
71
+ member_logins.include? login
72
+ end
73
+
60
74
  def label_names(labels)
61
75
  labels.map(&:name)
62
76
  end
63
77
 
64
78
  def pulls(repo)
65
- Pulls.new(repo: repo, since: since).filtered
79
+ Pulls.new(repo: repo, since: since).data
80
+ end
81
+
82
+ def load_members
83
+ return if @members
84
+
85
+ @members = Members.new(config.membership).members
86
+ p 'Hello'
87
+ end
88
+
89
+ def member_logins
90
+ load_members
91
+ @members.map(&:login)
66
92
  end
67
93
 
68
94
  def config
@@ -1,12 +1,13 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'fileutils'
2
4
  require_relative 'generator'
3
- require_relative 'config-reader'
4
- require_relative 'yaml-formatter'
5
+ require_relative 'config_reader'
6
+ require_relative 'yaml_formatter'
5
7
  require_relative 'table'
6
8
 
7
9
  module WhatsupGithub
8
10
  class Runner
9
-
10
11
  def initialize(date)
11
12
  @generator = Generator.new date
12
13
  @config = Config.instance
@@ -16,11 +17,12 @@ module WhatsupGithub
16
17
  def run
17
18
  format = @config.output_format
18
19
  raise 'Cannot find "output_format" in config.yml' unless format
20
+
19
21
  table if format.include? 'markdown'
20
22
  data if format.include? 'yaml'
21
23
  end
22
24
 
23
- def write_results file, formatter
25
+ def write_results(file, formatter)
24
26
  formatted_content = @generator.run formatter, @content
25
27
  check_dir_at File.dirname file
26
28
  File.write file, formatted_content
@@ -1,9 +1,10 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require_relative 'row_collector'
2
4
 
3
5
  module WhatsupGithub
4
6
  # Table containing Rows
5
7
  class Table
6
-
7
8
  # def initialize(since)
8
9
  # @collector = RowCollector.new(since: since)
9
10
  # end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module WhatsupGithub
2
- VERSION = "0.3.1"
4
+ VERSION = '0.4.0'
3
5
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'yaml'
2
4
  module WhatsupGithub
3
5
  # Table containing Rows
@@ -12,11 +14,13 @@ module WhatsupGithub
12
14
  {
13
15
  'description' => object.description,
14
16
  'versions' => object.versions,
15
- 'type' => object.type,
17
+ 'type' => object.type,
16
18
  'date' => object.date,
17
19
  'link' => object.link,
20
+ 'merge_commit' => object.merge_commit,
18
21
  'contributor' => object.author,
19
- 'profile' => object.author_url
22
+ 'membership' => object.membership,
23
+ 'labels' => object.labels
20
24
  }
21
25
  end
22
26
  output =
@@ -1,48 +1,49 @@
1
+ # frozen_string_literal: true
1
2
 
2
- lib = File.expand_path("../lib", __FILE__)
3
+ lib = File.expand_path('lib', __dir__)
3
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require "whatsup_github/version"
5
+ require 'whatsup_github/version'
5
6
 
6
7
  Gem::Specification.new do |spec|
7
- spec.name = "whatsup_github"
8
+ spec.name = 'whatsup_github'
8
9
  spec.version = WhatsupGithub::VERSION
9
- spec.authors = ["Dima Shevtsov"]
10
- spec.email = ["shevtsov@adobe.com"]
10
+ spec.authors = ['Dima Shevtsov']
11
+ spec.email = ['shevtsov@adobe.com']
11
12
 
12
- spec.summary = %q{Collect info from GitHub pull requests.}
13
- spec.homepage = "https://github.com/dshevtsov/whatsup_github"
14
- spec.license = "MIT"
13
+ spec.summary = 'Collect info from GitHub pull requests.'
14
+ spec.homepage = 'https://github.com/dshevtsov/whatsup_github'
15
+ spec.license = 'MIT'
15
16
 
16
17
  # Prevent pushing this gem to RubyGems.org. To allow pushes either set the 'allowed_push_host'
17
18
  # to allow pushing to a single host or delete this section to allow pushing to any host.
18
19
  if spec.respond_to?(:metadata)
19
- spec.metadata["homepage_uri"] = spec.homepage
20
- spec.metadata["source_code_uri"] = "https://github.com/dshevtsov/whatsup_github"
21
- spec.metadata["changelog_uri"] = "https://github.com/dshevtsov/whatsup_github/blob/master/CHANGELOG.md"
20
+ spec.metadata['homepage_uri'] = spec.homepage
21
+ spec.metadata['source_code_uri'] = 'https://github.com/dshevtsov/whatsup_github'
22
+ spec.metadata['changelog_uri'] = 'https://github.com/dshevtsov/whatsup_github/blob/master/CHANGELOG.md'
22
23
  else
23
- raise "RubyGems 2.0 or newer is required to protect against " \
24
- "public gem pushes."
24
+ raise 'RubyGems 2.0 or newer is required to protect against ' \
25
+ 'public gem pushes.'
25
26
  end
26
27
 
27
28
  # Specify which files should be added to the gem when it is released.
28
29
  # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
29
- spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
30
+ spec.files = Dir.chdir(File.expand_path(__dir__)) do
30
31
  `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
31
32
  end
32
- spec.bindir = "exe"
33
+ spec.bindir = 'exe'
33
34
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
34
- spec.require_paths = ["lib"]
35
+ spec.require_paths = ['lib']
35
36
 
36
- spec.required_ruby_version = '>= 2.4.0'
37
+ spec.required_ruby_version = '>= 2.5.0'
37
38
 
38
- spec.add_dependency "octokit", "~> 4.14"
39
- spec.add_dependency "thor", "~> 0.20"
40
- spec.add_dependency "netrc", "~> 0.10"
39
+ spec.add_dependency 'netrc', '~> 0.11'
40
+ spec.add_dependency 'octokit', '~> 4.20'
41
+ spec.add_dependency 'thor', '~> 1.1'
41
42
 
42
- spec.add_development_dependency "bundler", "~> 1.17"
43
- spec.add_development_dependency "rake", "~> 13.0"
44
- spec.add_development_dependency "rspec", "~> 3.0"
45
- spec.add_development_dependency "cucumber", "~> 3.1"
46
- spec.add_development_dependency "aruba", "~> 0.14"
47
- spec.add_development_dependency "pry", "~> 0.12"
43
+ spec.add_development_dependency 'aruba', '~> 1.0'
44
+ spec.add_development_dependency 'bundler', '~> 2.2'
45
+ spec.add_development_dependency 'cucumber', '~> 5.3'
46
+ spec.add_development_dependency 'pry', '~> 0.14'
47
+ spec.add_development_dependency 'rake', '~> 13.0'
48
+ spec.add_development_dependency 'rspec', '~> 3.10'
48
49
  end
metadata CHANGED
@@ -1,141 +1,141 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: whatsup_github
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dima Shevtsov
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-08-07 00:00:00.000000000 Z
11
+ date: 2021-03-30 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: octokit
14
+ name: netrc
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '4.14'
19
+ version: '0.11'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '4.14'
26
+ version: '0.11'
27
27
  - !ruby/object:Gem::Dependency
28
- name: thor
28
+ name: octokit
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '0.20'
33
+ version: '4.20'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '0.20'
40
+ version: '4.20'
41
41
  - !ruby/object:Gem::Dependency
42
- name: netrc
42
+ name: thor
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '0.10'
47
+ version: '1.1'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '0.10'
54
+ version: '1.1'
55
55
  - !ruby/object:Gem::Dependency
56
- name: bundler
56
+ name: aruba
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '1.17'
61
+ version: '1.0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '1.17'
68
+ version: '1.0'
69
69
  - !ruby/object:Gem::Dependency
70
- name: rake
70
+ name: bundler
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '13.0'
75
+ version: '2.2'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: '13.0'
82
+ version: '2.2'
83
83
  - !ruby/object:Gem::Dependency
84
- name: rspec
84
+ name: cucumber
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: '3.0'
89
+ version: '5.3'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: '3.0'
96
+ version: '5.3'
97
97
  - !ruby/object:Gem::Dependency
98
- name: cucumber
98
+ name: pry
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: '3.1'
103
+ version: '0.14'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: '3.1'
110
+ version: '0.14'
111
111
  - !ruby/object:Gem::Dependency
112
- name: aruba
112
+ name: rake
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
115
  - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: '0.14'
117
+ version: '13.0'
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
122
  - - "~>"
123
123
  - !ruby/object:Gem::Version
124
- version: '0.14'
124
+ version: '13.0'
125
125
  - !ruby/object:Gem::Dependency
126
- name: pry
126
+ name: rspec
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
129
  - - "~>"
130
130
  - !ruby/object:Gem::Version
131
- version: '0.12'
131
+ version: '3.10'
132
132
  type: :development
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
136
  - - "~>"
137
137
  - !ruby/object:Gem::Version
138
- version: '0.12'
138
+ version: '3.10'
139
139
  description:
140
140
  email:
141
141
  - shevtsov@adobe.com
@@ -160,15 +160,16 @@ files:
160
160
  - lib/template/.whatsup.yml
161
161
  - lib/whatsup_github.rb
162
162
  - lib/whatsup_github/cli.rb
163
- - lib/whatsup_github/config-reader.rb
163
+ - lib/whatsup_github/config_reader.rb
164
164
  - lib/whatsup_github/generator.rb
165
+ - lib/whatsup_github/members.rb
165
166
  - lib/whatsup_github/pulls.rb
166
167
  - lib/whatsup_github/row.rb
167
168
  - lib/whatsup_github/row_collector.rb
168
169
  - lib/whatsup_github/runner.rb
169
170
  - lib/whatsup_github/table.rb
170
171
  - lib/whatsup_github/version.rb
171
- - lib/whatsup_github/yaml-formatter.rb
172
+ - lib/whatsup_github/yaml_formatter.rb
172
173
  - whatsup_github.gemspec
173
174
  homepage: https://github.com/dshevtsov/whatsup_github
174
175
  licenses:
@@ -185,7 +186,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
185
186
  requirements:
186
187
  - - ">="
187
188
  - !ruby/object:Gem::Version
188
- version: 2.4.0
189
+ version: 2.5.0
189
190
  required_rubygems_version: !ruby/object:Gem::Requirement
190
191
  requirements:
191
192
  - - ">="