-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathcreateArticle
More file actions
executable file
·54 lines (43 loc) · 1.7 KB
/
createArticle
File metadata and controls
executable file
·54 lines (43 loc) · 1.7 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
#!/usr/bin/env node
var fs = require('fs'),
path = require('path'),
POSTS_PATH = path.join(process.cwd(), '_posts');
/* Get the article name */
var title = process.argv[2];
if (!title || title.match(/[- \w]+/) === null) {
process.stdout.write("\033[31;40mError: Invalid article's title.\033[m\n");
process.exit(1);
}
/* Get date info */
var date,
dateStamp,
hourStamp;
if (process.argv[3]) {
date = new Date(process.argv[3])
} else {
date = new Date()
}
(function (dateStr) {
dateStamp = dateStr[0];
hourStamp = dateStr[1].match(/(.+)\./)[1];
})(date.toJSON().split('T'));
/* Ensure that the article doesn't exist */
var filename = path.join(POSTS_PATH, dateStamp + "-" + title.replace(/ /g, "_").toLowerCase() + ".markdown");
fs.readdir(POSTS_PATH, function (err, files) {
if (err) { process.stdout.write(err); process.exit(1); }
if (files.filter(function(f) { return f === path.basename(filename); }).length > 0) {
process.stdout.write("\033[31;40mError: article already exists.\033[m\n");
process.exit(1);
}
/* Copy the template */
fs.readFile('.articleTemplate', function (err, data) {
if (err) { process.stdout.write(err); process.exit(1); }
var content = data.toString().replace('@title@', title).replace('@date@', dateStamp + " " + hourStamp);
fs.writeFile(filename, content, function (err) {
if (err) { process.stdout.write(err); process.exit(1); }
process.stdout.write("\033[32;40mArticle successfully created.\033[m\nTo continue, edit "+
"\033[1;37;40m'" + path.basename(filename) + "'\033[m in the folder "+
"\033[1;37;40m'_posts'\033[m.\n");
});
});
});