-
Notifications
You must be signed in to change notification settings - Fork 120
/
lv.js
118 lines (107 loc) · 2.01 KB
/
lv.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
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
#!/usr/bin/env node
var helper = require('./helper')
var assert = require('assert')
var path = require('path')
var program = require('commander')
var async = require('async')
var fmtjs_web = require('./fmtjs-web')
var log = helper.log
var g = {
url: null
}
program
.version(require('./package').version)
// .option('-s, --simple-mode', 'analyze as simple mode')
// .option('-p, --package-mode', 'analyze as package mode')
program.parse(process.argv)
if (!program.args.length) {
program.help()
}
else {
run(program.args)
}
function run(files) {
// start web server automatically
start_web_server(function(err, status) {
if (err) return
g.url = status.url
var funs = files.map(function(file) {
return function(callback) {
compile(file, function(err) {
if (err) {
callback(err)
}
else {
console.log('')
callback(err)
}
})
}
})
async.series(funs, function(err, results) {
if (err) {
return
}
})
})
}
function start_web_server(cb) {
is_web_server_started(
function yes(status) {
cb(undefined, status)
},
function no() {
var opt = {
background: true,
public: false
}
fmtjs_web.start(opt, function(err, status) {
if (err) {
log.error(err.message)
cb(err)
return
}
cb(undefined, status)
})
}
)
}
function is_web_server_started(yes_cb, no_cb) {
var web = require('./fmtjs-web')
web.status(function(err, status) {
if (err) {
no_cb()
}
else {
yes_cb(status)
}
})
}
function compile(target, cb) {
var filename = target
if (!/^https?:\/\//i.test(target)) {
filename = path.resolve(filename)
}
log.info('processing target: ' + filename)
fmtjs_web.compile(
{
type: 'file',
filename: filename
},
function (err, res) {
if (err) {
log.error(err.message)
cb(err)
return
}
else if (!res.ok) {
log.error(res.error)
cb(new Error(res.error))
return
}
log.info('done, see ' + res.result.url)
helper.open_html_file(res.result.url)
cb(null)
}
)
}