Skip to content

Commit 74509bd

Browse files
authored
feat: check projects fields (#789)
1 parent 4bdebc1 commit 74509bd

File tree

3 files changed

+52
-2
lines changed

3 files changed

+52
-2
lines changed

_plugins/checkproj.rb

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
# frozen_string_literal: true
2+
3+
require_relative 'checks'
4+
require 'set'
5+
6+
module Checks
7+
# This is a Jekyll Generator
8+
class CheckProjInfo < Jekyll::Generator
9+
# Main entry point for Jekyll
10+
def generate(site)
11+
@site = site
12+
13+
@site.pages.each do |page|
14+
next unless page['pagetype'] == 'project'
15+
16+
msg = page.path.to_s
17+
p = Record.new(msg, page.data)
18+
p.key 'title', :nonempty
19+
p.key 'shortname', :nonempty
20+
p.key 'focus-area', :nonempty
21+
p.key 'team', :nonempty, usernames: people
22+
23+
p.print_warnings
24+
end
25+
26+
@site.data['fellow_projects'].each do |name, hash|
27+
msg = name
28+
p = Record.new(msg, hash)
29+
p.key 'contacts', :nonempty, usernames: people
30+
end
31+
end
32+
33+
private
34+
35+
def people
36+
@people ||= @site.data['people'].keys.to_set
37+
end
38+
end
39+
end

_plugins/checks.rb

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,12 @@ def initialize(name, data)
1616
@data = data
1717
@missing = []
1818
@empty = []
19+
@names = []
1920
end
2021

2122
# Check to see if key is present. You can add :optional and/or :nonempty.
2223
# You can also add :date.
23-
def key(key, *args, match: nil, set: nil)
24+
def key(key, *args, match: nil, set: nil, usernames: nil)
2425
optional = !args.delete(:optional).nil?
2526
nonempty = !args.delete(:nonempty).nil?
2627
date = !args.delete(:date).nil?
@@ -38,6 +39,7 @@ def key(key, *args, match: nil, set: nil)
3839
key_match(key, match) if match
3940
key_date(key) if date
4041
key_set(key, set.to_set) if set
42+
key_usernames(key, usernames.to_set) if usernames
4143
end
4244

4345
def print_warnings
@@ -88,5 +90,14 @@ def key_set(key, set)
8890
msg = "'#{key}': #{@data[key]} is not a subset of #{set.to_a}"
8991
raise_err msg unless @data[key].to_set < set.to_set
9092
end
93+
94+
# Like key_set, but filters names with spaces, and shows only unmatched items
95+
def key_usernames(key, usernames)
96+
team = @data[key].reject { |v| v.include?(' ') || v.include?('@') }.to_set
97+
extras = team - usernames
98+
99+
msg = "'#{key}': Unrecognized usernames: #{extras.to_a} "
100+
raise_err msg unless extras.empty?
101+
end
91102
end
92103
end

pages/projects/skyhookdm.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ focus-area: doma
1111
team:
1212
- jlefevre
1313
- ivotron
14-
- esmaeil-mirvakili
14+
- "[Esmaeil Mirvakili](mailto:[email protected])" # esmaeil-mirvakili
1515
- JayjeetAtGithub
1616
- xweichu
1717
- carlosmalt

0 commit comments

Comments
 (0)