1 | runner = ->
|
2 | pjson = require('../package.json')
|
3 | version = pjson.version
|
4 | livereload = require './livereload'
|
5 | resolve = require('path').resolve
|
6 | opts = require 'opts'
|
7 | debug = false;
|
8 |
|
9 | opts.parse [
|
10 | {
|
11 | short: "v"
|
12 | long: "version"
|
13 | description: "Show the version"
|
14 | required: false
|
15 | callback: ->
|
16 | console.log version
|
17 | process.exit(1)
|
18 | }
|
19 | {
|
20 | short: "p"
|
21 | long: "port"
|
22 | description: "Specify the port"
|
23 | value: true
|
24 | required: false
|
25 | }
|
26 | {
|
27 | short: "x"
|
28 | long: "exclusions"
|
29 | description: "Exclude files by specifying an array of regular expressions. Will be appended to default value which is [/\.git\//, /\.svn\//, /\.hg\//]",
|
30 | required: false,
|
31 | value: true
|
32 | }
|
33 | {
|
34 | short: "d"
|
35 | long: "debug"
|
36 | description: "Additional debugging information",
|
37 | required: false,
|
38 | callback: -> debug = true
|
39 | }
|
40 | {
|
41 | short: "e"
|
42 | long: "exts",
|
43 | description: "An array of extensions you want to observe. An example 'jade scss' (quotes are required). In addition to the defaults (html, css, js, png, gif, jpg, php, php5, py, rb, erb, and \"coffee.\").",
|
44 | required: false,
|
45 | value: true
|
46 | }
|
47 | {
|
48 | short: "u"
|
49 | long: "usepolling"
|
50 | description: "Poll for file system changes. Set this to true to successfully watch files over a network.",
|
51 | required: false,
|
52 | value: true
|
53 | }
|
54 | {
|
55 | short: "w"
|
56 | long: "wait"
|
57 | description: "delay message of file system changes to browser by `delay` milliseconds"
|
58 | required: false
|
59 | value: true
|
60 | }
|
61 | ].reverse(), true
|
62 |
|
63 | port = opts.get('port') || 35729
|
64 | exclusions = if opts.get('exclusions') then opts.get('exclusions' ).split(',' ).map((s) -> new RegExp(s)) else []
|
65 | exts = if opts.get('exts') then opts.get('exts').split(',') else []
|
66 | usePolling = opts.get('usepolling') || false
|
67 | wait = opts.get('wait') || 0;
|
68 |
|
69 | server = livereload.createServer({
|
70 | port: port
|
71 | debug: debug
|
72 | exclusions: exclusions,
|
73 | exts: exts
|
74 | usePolling: usePolling
|
75 | delay: wait
|
76 | })
|
77 |
|
78 | path = (process.argv[2] || '.')
|
79 | .split(/\s*,\s*/)
|
80 | .map((x)->resolve(x))
|
81 | console.log "Starting LiveReload v#{version} for #{path} on port #{port}."
|
82 | server.watch(path)
|
83 |
|
84 | module.exports =
|
85 | run: runner
|