-
Notifications
You must be signed in to change notification settings - Fork 215
Expand file tree
/
Copy pathRakefile
More file actions
134 lines (117 loc) · 2.82 KB
/
Rakefile
File metadata and controls
134 lines (117 loc) · 2.82 KB
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
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
#!/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",
"service"
]
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
desc "fetch past meetups"
task :fetch_past_meetups do
MeetupsFile.read.tap do |file|
file.fetch!(past: true)
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
# to fetch past events of a single group run:
# bundle exec rake fetch_past_meetups[sfruby]
desc "fetch past meetups of a single group"
task :fetch_past_meetup, [:group_id] do |_, args|
MeetupsFile.read.tap do |file|
file.fetch!(args[:group_id], past: true)
file.write!
end
end
desc "fetch write all meetup groups"
task :fetch_and_write_all_meetups do
MeetupGroup.all.each do |group|
MeetupsFile.read.tap do |file|
file.fetch!(group.id)
file.write!
end
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]