1 | #!/usr/bin/env node
|
2 |
|
3 | var argv = require('minimist')(process.argv.slice(2))
|
4 | var pkg = require("../package.json")
|
5 | var colors = require("colors")
|
6 | var path = require("path")
|
7 | var boxt = require("boxt")
|
8 |
|
9 |
|
10 | var box = (...args) => console.log(boxt(...args).split("\n").join("\n "));
|
11 |
|
12 | var help = function(){
|
13 |
|
14 | var log = function(){
|
15 | var arr = Array.prototype.slice.call(arguments);
|
16 | console.log.apply(this, [" "].concat(arr))
|
17 | }
|
18 |
|
19 | var box = (...args) => console.log(boxt(...args).split("\n").join("\n "));
|
20 |
|
21 | log()
|
22 | log("Harp".underline.blue, "〜".grey, "Static Web Server".brightYellow, "v".grey + pkg.version.grey)
|
23 | log()
|
24 | // log("Process | Bundle | Generate - Just In Time".grey)
|
25 | // log()
|
26 | log("USAGE".grey)
|
27 | log(" harp <source> serves project locally")
|
28 | log(" harp <source> <build> compiles for static host")
|
29 | log()
|
30 | log("OPTIONS".grey)
|
31 | log(" -p, --port " +"9000".blue +" server port to listen on")
|
32 | log(" -h, --host " +"0.0.0.0".blue +" server host to answer to")
|
33 | // log(" -c, --cache " +"false".blue +" server memory cache")
|
34 | // log(" -t, --pretty " +"false".blue +" server/compile keep whitespace")
|
35 | log(" -h, --help server/compile keep whitespace")
|
36 | log(" -v, --version server/compile keep whitespace")
|
37 | box(
|
38 | `${'PROCESSING'.grey } ${'DATA'.grey }
|
39 | ${'.ejs -> .html' } ${'_data.json - directory data' }
|
40 | ${'.jade -> .html' } ${'_data.js - dynamic build data' }
|
41 | ${'.md -> .html' }
|
42 | ${'.sass -> .css ' } ${'GENERATION'.grey }
|
43 | ${'.scss -> .css ' } ${'partial("_path/to/partial", {' }
|
44 | ${'.cjs -> .js ' } ${' "title": "Hello World"' }
|
45 | ${'.jsx -> .js ' } ${'})' }`
|
46 | , { color: 'grey', padding: 2, theme: 'round', align:"left"});
|
47 |
|
48 | }
|
49 |
|
50 |
|
51 | var version = function(){
|
52 | console.log("v" + pkg.version)
|
53 | }
|
54 |
|
55 |
|
56 | /**
|
57 | * version
|
58 | */
|
59 |
|
60 | if (argv.version || argv.v) return version()
|
61 |
|
62 |
|
63 | /**
|
64 | * help
|
65 | */
|
66 |
|
67 | if ((argv["_"].length === 0) || argv.help || argv.h) return help()
|
68 |
|
69 |
|
70 |
|
71 |
|
72 |
|
73 | var harp = require("../")
|
74 |
|
75 |
|
76 | /**
|
77 | * Server
|
78 | */
|
79 |
|
80 | if (argv["_"].length === 1){
|
81 | var projectPath = path.resolve(process.cwd(), argv["_"][0])
|
82 | var host = argv.host || '0.0.0.0'
|
83 | var port = argv.port || 9000
|
84 | var server = harp.server(projectPath, {})
|
85 |
|
86 | server.listen(port, host, function(error){
|
87 | if (error) process.exit(1)
|
88 | box(
|
89 | `${ 'Harp'.blue } ${ ('v' + pkg.version).grey}
|
90 | ${ ('http://localhost:' + port + "/").underline.cyan }`, { align: "left", color: "grey", padding: 3 })
|
91 | })
|
92 | }
|
93 |
|
94 |
|
95 | /**
|
96 | * Compile
|
97 | */
|
98 |
|
99 | if (argv["_"].length === 2){
|
100 | var projectPath = path.resolve(process.cwd(), argv["_"][0])
|
101 | var buildPath = path.resolve(process.cwd(), argv["_"][1])
|
102 |
|
103 | harp.compile(projectPath, buildPath, function(errors, output){
|
104 | if(errors) {
|
105 | console.log(JSON.stringify(errors, null, 2))
|
106 | process.exit(1)
|
107 | }
|
108 | //console.log("Done!".green)
|
109 | })
|
110 | }
|
111 |
|