-
Notifications
You must be signed in to change notification settings - Fork 208
/
Copy pathRakefile
105 lines (91 loc) · 2.18 KB
/
Rakefile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
#!/usr/bin/env rake
require "yaml"
require "date"
require "ostruct"
require "./src/data_file_validator"
require "./src/static"
require "./src/meetup_client"
require "./src/meetups_file"
desc "Build Jekyll site"
task :build do
exit 1 unless system "bundle exec jekyll build"
end
desc "Verify generated HTML"
task :verify_html do
exit 2 unless system "bundle exec htmlproofer ./_site"
end
desc "Verify event conferences"
task :verify_conferences do
allowed_keys = [
"name",
"location",
"start_date",
"end_date",
"url",
"twitter",
"mastodon",
"reg_phrase",
"reg_date",
"cfp_open_date",
"cfp_close_date",
"cfp_link",
"status",
"date_precision",
"video_link",
"announced_on"
]
data = YAML.load_file("_data/conferences.yml", permitted_classes: [Date])
validator = DataFileValidator.validate(data, allowed_keys)
exit 3 if validator.missing_keys?
exit 4 if validator.bonus_keys?
events = validator.events
dates = events.map { |event| event["start_date"] }
exit 5 unless dates.sort == dates
exit 6 if validator.missing_announced_on_date?
end
desc "verify meetups"
task :verify_meetups do
allowed_keys = [
"name",
"location",
"date",
"start_time",
"end_time",
"url",
"twitter",
"mastodon",
"video_link",
"status"
]
data = YAML.load_file("_data/meetups.yml", permitted_classes: [Date])
validator = DataFileValidator.validate(data, allowed_keys, :meetup)
exit 3 if validator.missing_keys?
exit 4 if validator.bonus_keys?
events = validator.events
dates = events.map { |event| event["start_date"] }
exit 5 unless dates.sort == dates
exit 6 if validator.duplicate_events?
end
desc "fetch meetups"
task :fetch_meetups do
MeetupsFile.read.tap do |file|
file.fetch!
file.write!
end
end
# to fetch a single group run:
# bundle exec rake fetch_meetup[sfruby]
desc "fetch a single group"
task :fetch_meetup, [:group_id] do |_, args|
MeetupsFile.read.tap do |file|
file.fetch!(args[:group_id])
file.write!
end
end
desc "sort meetups"
task :sort_meetups do
MeetupsFile.read.tap do |file|
file.write!
end
end
task default: [:build, :verify_data, :verify_html]