-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathserver.js
88 lines (80 loc) · 1.76 KB
/
server.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
const async = require("async")
const inquirer = require("inquirer")
const downloader = require("./downloader")
const boxes = require("./boxes")
const unzip = require("./unzip")
const vagrant = require("./vagrant")
const p = require("./p")
const debug = require("./debug")
async.waterfall([
// TODO system check
(callback) => {
p.start("system check")
p.finish(true)
callback(null)
},
// get vmlist
(callback) => {
p.start("getting vmlist")
boxes.init(function(boxes) {
p.finish(true)
callback(null, boxes)
})
},
// select vm
(boxes, callback) => {
inquirer.prompt([
{
type: "list",
name: "box",
message: "Choice you need browser version!",
choices: boxes.names(),
filter: (val) => {
return boxes.get_by_name(val)
},
},
]).then(function(answers) {
callback(null, answers.box)
})
},
// download image
(box, callback) => {
downloader.get(box, (filePath) => {
debug.info(`download file path: ${filePath}`)
callback(null, box, filePath)
})
},
// unzip
(box, filePath, callback) => {
debug.info(`unzip ${filePath}`)
p.start("unzip box file...")
unzip.unzip_to_path(filePath, box.box_path, () => {
p.finish(true)
callback(null, box)
})
},
// box setup
(box, callback) => {
debug.info("vagrant box add")
vagrant.box_add(box, () => {
callback(null, box)
})
},
// vagrant setup
(box, callback) => {
debug.info("vagrant setup")
callback(null, box)
},
// vagrant up
(box, callback) => {
debug.info("vagrant up")
vagrant.up(box, () => {
callback(null)
})
},
], (err, results) => {
if (err) {
throw err
}
console.log("finish!")
})