UNPKG

1.37 kBJavaScriptView Raw
1#!/usr/bin/env node
2
3'use strict'
4
5const fs = require('fs')
6const path = require('path')
7const flags = require('commander')
8
9const markserv = require(path.join(__dirname, 'server'))
10const pkg = require(path.join(__dirname, '..', './package.json'))
11
12const cwd = process.cwd()
13
14flags.dir = cwd
15
16const fileExistsSync = uri => {
17 let exists
18
19 try {
20 const stat = fs.statSync(uri)
21 if (stat.isFile()) {
22 exists = true
23 }
24 } catch (err) {
25 exists = false
26 }
27
28 return exists
29}
30
31const findFileUp = (dir, fileToFind) => {
32 const filepath = path.join(dir, fileToFind)
33 const existsHere = fileExistsSync(filepath)
34
35 if (dir === path.sep || dir === '.') {
36 return false
37 }
38
39 if (existsHere) {
40 return filepath
41 }
42
43 const nextDirUp = path.dirname(dir)
44 return findFileUp(nextDirUp, fileToFind)
45}
46
47const README = findFileUp(cwd, 'README.md')
48const readme = findFileUp(cwd, 'readme.md')
49
50flags.version(pkg.version)
51 .usage('<file/dir>')
52 .option('-p, --port [type]', 'HTTP port [port]', 8642)
53 .option('-l, --livereloadport [type]', 'LiveReload port [livereloadport]', 35729)
54 .option('-i, --silent [type]', 'Silent (no logs to CLI)', false)
55 .option('-a, --address [type]', 'Serve on ip/address [address]', 'localhost')
56 .option('-v, --verbose', 'verbose output')
57 .parse(process.argv)
58
59flags.dir = README || readme || cwd
60flags.$pathProvided = true
61
62markserv.init(flags)