Skip to content

Commit 60edbfb

Browse files
committed
Add makefile target - generate-youtube-channels-json
1 parent 674703a commit 60edbfb

File tree

4 files changed

+44
-1
lines changed

4 files changed

+44
-1
lines changed

Diff for: .gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
/data/conferences.json
2+
/data/youtube-channels.json
23
/sitemap.txt

Diff for: Makefile

+10
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,16 @@ generate-conferences-json: build-image
5050
$(IMAGE_NAME) \
5151
node ./tools/generate-conferences-json.js
5252

53+
# Generate /data/youtube-channels.json
54+
.PHONY: generate-youtube-channels-json
55+
generate-youtube-channels-json: build-image
56+
> data/youtube-channels.json
57+
docker run -t --rm \
58+
--workdir $(TARGET_DIR) \
59+
--mount type=bind,source=$(CURDIR),target=$(TARGET_DIR) \
60+
$(IMAGE_NAME) \
61+
node ./tools/generate-youtube-channels-json.js
62+
5363
# Build Docker image for tests and tooling
5464
.PHONY: build-image
5565
build-image:

Diff for: Makefile-netlify

+6-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Main build target
22
.PHONY: build
3-
build: pre-build test generate-conferences-json generate-sitemap
3+
build: pre-build test generate-conferences-json generate-sitemap generate-youtube-channels-json
44

55
# Instal node packages
66
.PHONY: pre-build
@@ -24,3 +24,8 @@ generate-sitemap:
2424
.PHONY: generate-conferences-json
2525
generate-conferences-json:
2626
node ./tools/generate-conferences-json.js
27+
28+
# Generate /data/youtube-channels.json
29+
.PHONY: generate-youtube-channels-json
30+
generate-youtube-channels-json:
31+
node ./tools/generate-youtube-channels-json.js

Diff for: tools/generate-youtube-channels-json.js

+27
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
const fs = require('fs');
2+
const path = require('path');
3+
4+
const glob = require('glob');
5+
6+
const utils = require('../js/utils/utils-node');
7+
8+
const YOUTUBE_CHANNELS_JSON_FILE = './data/youtube-channels.json';
9+
const CONFERENCES_GLOB_PATTERN = './data/conferences/*/*.yaml';
10+
11+
let conferenceFiles = glob.sync(CONFERENCES_GLOB_PATTERN);
12+
13+
// Build channel IDs object
14+
let channelIds = new Set();
15+
16+
conferenceFiles.forEach(conferenceFile => {
17+
let channelId = utils.getJSON(conferenceFile).conference.links.youtube;
18+
19+
if (channelId) {
20+
channelIds.add(channelId);
21+
}
22+
});
23+
24+
// TODO: save
25+
fs.writeFileSync(YOUTUBE_CHANNELS_JSON_FILE, JSON.stringify([...channelIds], null, 2));
26+
27+
console.log(`YouTube channels JSON file generated at: ${YOUTUBE_CHANNELS_JSON_FILE}`);

0 commit comments

Comments
 (0)