make live server load subtree just-in-time (for live refreshing)
s-ol
3 years ago
33 | 33 |
'null'
|
34 | 34 |
|
35 | 35 |
class Server
|
36 | |
new: (@tree, opts={}) =>
|
|
36 |
new: (@store, opts={}) =>
|
37 | 37 |
opts = {k,v for k,v in pairs opts}
|
38 | 38 |
opts.host = 'localhost' unless opts.host
|
39 | 39 |
opts.port = 8000 unless opts.port
|
|
50 | 50 |
assert @server\loop!
|
51 | 51 |
|
52 | 52 |
handle: (method, path, facet) =>
|
53 | |
fileder = @tree\walk path
|
|
53 |
fileder = load_tree @store, path -- @tree\walk path
|
54 | 54 |
switch method
|
55 | 55 |
when 'GET', 'HEAD'
|
56 | 56 |
if fileder and facet
|
|
167 | 167 |
{ store, host, port } = arg
|
168 | 168 |
|
169 | 169 |
store = get_store store
|
170 | |
tree = load_tree store
|
171 | |
server = Server tree, :host, port: port and tonumber port
|
|
170 |
server = Server store, :host, port: port and tonumber port
|
172 | 171 |
server\listen!
|
129 | 129 |
<html>
|
130 | 130 |
<head>
|
131 | 131 |
<link rel="stylesheet" type="text/css" href="/.static/main.css" />
|
132 | |
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:200,400" />
|
|
132 |
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Source+Sans+Pro:200,400,600" />
|
133 | 133 |
]]
|
134 | 134 |
buf ..= "
|
135 | 135 |
#{get_meta fileder}
|
3 | 3 |
-- e.g.: sql, fs:/path/to/root, sql:MEMORY, sql:db.sqlite3
|
4 | 4 |
get_store = (args='sql', opts={verbose: true}) ->
|
5 | 5 |
type, arg = args\match '(%w+):(.*)'
|
6 | |
type = arg unless type
|
|
6 |
type = args unless type
|
7 | 7 |
|
8 | 8 |
switch type\lower!
|
9 | 9 |
when 'sql'
|
|
17 | 17 |
SQLStore opts
|
18 | 18 |
|
19 | 19 |
when 'fs'
|
20 | |
import LFSStore from require '.fs'
|
|
20 |
import FSStore from require '.fs'
|
21 | 21 |
|
22 | 22 |
opts.root = arg
|
23 | 23 |
|
24 | |
LFSStore opts
|
|
24 |
FSStore opts
|
25 | 25 |
|
26 | 26 |
else
|
27 | 27 |
warn "unknown or missing value for STORE: valid types values are sql, fs"
|