forked from javascript-tutorial/server
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathedit.js
More file actions
executable file
·69 lines (52 loc) · 1.83 KB
/
edit.js
File metadata and controls
executable file
·69 lines (52 loc) · 1.83 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
'use strict';
var co = require('co');
var fs = require('fs');
var path = require('path');
var log = require('log')();
var Article = require('../models/article');
var Task = require('../models/task');
var url = require('url');
var execSync = require('child_process').execSync;
module.exports = function(options) {
return function() {
return co(function* () {
var args = require('yargs')
.usage("tutorial url is required.")
.example("gulp tutorial:edit --url http://javascript.in/memory-leaks-jquery --root /js/javascript-tutorial")
.demand(['url', 'root'])
.argv;
var urlPath = url.parse(args.url).pathname.split('/').filter(Boolean);
if (urlPath.length == 1) {
var article = yield Article.findOne({slug: urlPath[0]}).exec();
if (!article) {
console.log("Not found!");
return;
}
let weight = article.weight + '';
if (weight.length < 2) weight = 0 + weight;
var dirName = weight + '-' + article.slug;
let cmd = "find '" + args.root + "' -path '*/" + dirName + "/article.md'";
console.log(cmd);
var result = execSync(cmd, {encoding: 'utf8'}).trim();
if (!result) {
return;
}
console.log(path.dirname(result));
execSync('s ' + result);
}
if (urlPath[0] == 'task') {
var task = yield Task.findOne({slug: urlPath[1]}).exec();
if (!task) {
return;
}
var dirName = task.weight + '-' + task.slug;
var result = execSync("find /js/javascript-tutorial -path '*/" + dirName + "/task.md'", {encoding: 'utf8'}).trim();
if (!result) {
return;
}
console.log(path.dirname(result));
execSync('s ' + result + ' ' + result.replace('task.md', 'solution.md'));
}
});
};
};