aboutsummaryrefslogtreecommitdiffstats
path: root/build/bundle_modules.moon
blob: 9360eeb739d1f0311e11d30ea7d2b6ce8125cc39 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
moon = require 'moonscript.base'

output_name = assert arg[1], "please specify the output directory"

escape = (str) ->
  string.format '%q', str

readfile = (name) ->
  file = io.open name, 'r'
  with file\read '*all'
    file\close

out = io.open output_name, 'w'
out\write "
local p = {}
table.insert(package.searchers, 1, function (mod)
  print('?',mod, not not p[mod])
  local mod = p[mod]
  return mod and function ()
    return load(table.unpack(mod))()
  end
end)
"

for file in io.lines!
  module = file\gsub '%.moon$', ''
  continue if not module or module\match '%.server'
  module = module\gsub '%.client$', ''
  module = module\gsub '/init$', ''
  module = module\gsub '/', '.'
  module = escape module
  source = moon.to_lua readfile file
  out\write "p[#{module}] = {#{escape source}, #{escape file}}\n"

out\close!