-
Notifications
You must be signed in to change notification settings - Fork 3
/
utils.js
51 lines (48 loc) · 1.75 KB
/
utils.js
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
const gitDateExtractor = require('git-date-extractor');
module.exports = {
// The date returned may be off by 1 day due to UTC Offset
// This split on T is probably not ideal, but good enough for now
formatDate: function(date) {
return date.toISOString().split("T")[0];
},
// TODO: actually this is for Atom/RSS feeds, not sitemaps
formatDateForAtomFeed: function(date) {
let dateObj = new Date(date);
// Atom uses RFC 3339 dates
// https://tools.ietf.org/html/rfc3339#section-5.8
let s = dateObj.toISOString();
// remove milliseconds
let split = s.split(".");
split.pop();
return split.join("") + "Z";
},
buildOGImageURL: data => {
if (data.openGraphImage) {
return data.page.filePathStem.replace("index", "") + data.openGraphImage;
} else {
// TODO: this is where to generate the OG images, for now use the IDD template
console.warn(`buildOGImageURL is missing an OG image for ${data.title}`);
return;
}
},
gitDates: async function(path) {
function epochToDate(epoch) {
let ret = new Date(0);
ret.setUTCSeconds(epoch);
return ret;
}
return gitDateExtractor.getStamps({
outputToFile: false,
projectRootPath: __dirname,
files: path
}).then(dates => {
// Remove './' prefix from the path
let pathStem = path.substring(2);
return {
modified: epochToDate(dates[pathStem].modified),
created: epochToDate(dates[pathStem].created)
};
});
}
// TODO: if date is missing, try to parse it from the folder name?
};