aboutsummaryrefslogtreecommitdiffstats
path: root/build/bundle_modules.moon
diff options
context:
space:
mode:
Diffstat (limited to 'build/bundle_modules.moon')
-rw-r--r--build/bundle_modules.moon35
1 files changed, 35 insertions, 0 deletions
diff --git a/build/bundle_modules.moon b/build/bundle_modules.moon
new file mode 100644
index 0000000..9360eeb
--- /dev/null
+++ b/build/bundle_modules.moon
@@ -0,0 +1,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!