1 | #!/usr/bin/env node
|
2 |
|
3 |
|
4 |
|
5 |
|
6 |
|
7 |
|
8 |
|
9 |
|
10 |
|
11 |
|
12 |
|
13 |
|
14 |
|
15 |
|
16 | var fs = require("fs")
|
17 | , child = require("child_process")
|
18 | , path = require("../path")
|
19 | , opts = {}
|
20 |
|
21 | global.Fn = require("../fn").Fn
|
22 |
|
23 | exports.command = command
|
24 | exports.cp = cp
|
25 | exports.mkdirp = mkdirp
|
26 | exports.readFile = readFile
|
27 | exports.rmrf = rmrf
|
28 | exports.writeFile = writeFile
|
29 |
|
30 | function getopts(args, i, opts) {
|
31 | for (var arg; arg = args[i++]; ) {
|
32 | switch (arg) {
|
33 | case "-b":
|
34 | case "--banner":
|
35 | opts.banner = args[i++]
|
36 | break;
|
37 | default:
|
38 | if (arg.charAt(0) == "-") {
|
39 | args.splice.apply(
|
40 | args,
|
41 | [i, 0].concat(arg.replace(/\w(?!$)/g,"$& " + args[i] + " -").split(" "))
|
42 | )
|
43 | } else if (!opts.cmd) {
|
44 | opts.cmd = arg
|
45 | } else {
|
46 | opts.file = arg
|
47 | }
|
48 | }
|
49 | }
|
50 | }
|
51 |
|
52 |
|
53 | if (!module.parent) {
|
54 | var helpFile = __filename
|
55 | , cmd = process.argv[2]
|
56 | , subHelp = [
|
57 | "bench",
|
58 | "build"
|
59 | ]
|
60 | switch (cmd) {
|
61 | case "bench":
|
62 | case "build":
|
63 | require("./" + cmd).execute(process.argv, 3)
|
64 | break;
|
65 | case "init":
|
66 | getopts(process.argv.slice(0), 2, opts)
|
67 | require("./" + process.argv[2])(opts)
|
68 | break;
|
69 | case "init-app":
|
70 | case "init-ui":
|
71 | child.spawnSync("cp", ["-rv",
|
72 | process.argv[2].replace("init-", "./node_modules/litejs/lib/template/default/"),
|
73 | process.cwd() + (opts.file ? "/" + opts.file : "")
|
74 | ], {stdio: "inherit"})
|
75 | break;
|
76 | case "help":
|
77 | if (subHelp.indexOf(process.argv[3]) > -1) {
|
78 | helpFile = path.join(path.dirname(__filename), process.argv[3] + ".js")
|
79 | }
|
80 | default:
|
81 | console.log(readFile(helpFile).match(/^\/\/-.*/gm).join("\n").replace(/^.../gm, ""))
|
82 | }
|
83 | }
|
84 |
|
85 | function command(name) {
|
86 | var cmd = process.platform === "win32" ? "where " : "command -v "
|
87 | try {
|
88 | return !!child.execSync(cmd + name)
|
89 | } catch (e) {
|
90 | return false
|
91 | }
|
92 | }
|
93 |
|
94 | function cp(src, dest) {
|
95 | if (fs.copyFileSync) {
|
96 | fs.copyFileSync(src, dest)
|
97 | } else {
|
98 | fs.writeFileSync(dest, fs.readFileSync(src))
|
99 | }
|
100 | }
|
101 |
|
102 | function mkdirp(dir) {
|
103 | try {
|
104 | fs.statSync(dir)
|
105 | } catch (e) {
|
106 | mkdirp(path.dirname(dir))
|
107 | console.error("mkdir", dir)
|
108 | fs.mkdirSync(dir)
|
109 | }
|
110 | }
|
111 |
|
112 | function readFile(fileName) {
|
113 | return fs.readFileSync(path.resolve(fileName.split("?")[0]), "utf8")
|
114 | }
|
115 |
|
116 |
|
117 |
|
118 |
|
119 | function rmrf(dir) {
|
120 | try {
|
121 | if (fs.lstatSync(dir).isDirectory()) {
|
122 | for (var arr = fs.readdirSync(dir), i = arr.length; i--; ) {
|
123 | rmrf(path.join(dir, arr[i]))
|
124 | }
|
125 | console.error("rmdir", dir)
|
126 | fs.rmdirSync(dir)
|
127 | } else {
|
128 | console.error("rm", dir)
|
129 | fs.unlinkSync(dir)
|
130 | }
|
131 | } catch (e) {
|
132 | if (e.code !== "ENOENT") throw e
|
133 | }
|
134 | }
|
135 |
|
136 | function writeFile(fileName, content) {
|
137 | fs.writeFileSync(path.resolve(fileName.split("?")[0]), content, "utf8")
|
138 | }
|
139 |
|
140 |
|
141 |
|