From d11441884740d394f73f1a145b502e270482a2d2 Mon Sep 17 00:00:00 2001 From: s-ol Date: Thu, 8 Nov 2018 17:17:17 +1100 Subject: recursive tup stuff --- bundle.moon | 56 ++++++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 42 insertions(+), 14 deletions(-) (limited to 'bundle.moon') diff --git a/bundle.moon b/bundle.moon index 5d855ea..8e277c7 100644 --- a/bundle.moon +++ b/bundle.moon @@ -2,23 +2,51 @@ 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 + with io.open output_name, 'w' - \write "local p = package.preload\n" + -- final wrap mode + if arg[2] == '--wrap' + assert #arg == 3, "too many arguments for 'wrap' mode" + bundle = arg[3] + + bundle = dofile bundle + \write "local p = package.preload\n" + for { :module, :file, :source } in *bundle + module = escape module + \write "if not p[#{module}] then p[#{module}] = load(#{escape source}, #{escape file}) end\n" - for i=2, #arg - file_name = arg[i] + -- iterative bundling mode + else + \write "return {\n" - file = io.open file_name, 'r' - code = file\read '*all' - file\close! + for i=2, #arg + file = arg[i] - module = file_name\gsub '/', '.' - module = module\gsub '%.lua$', '' - module = module\gsub '%.init$', '' - module = module\match '^dist%.(.*)' + if dirname = file\match '^([%w-_]+)/%.bundle%.lua$' + bundle = dofile file + for { :module, :file, :source } in *bundle + \write " +{ + module = #{escape dirname .. '.' .. module}, + file = #{escape dirname .. '/' .. file}, + source = #{escape source}, +}, + " + else + module = file\gsub '%.lua$', '' + module = module\gsub '%.init$', '' + \write " +{ + module = #{escape module}, + file = #{escape file}, + source = #{escape readfile file}, +}, + " - file_name = escape file_name - code = escape code - module = escape module + \write "}" - \write "if not p[#{module}] then p[#{module}] = load(#{code}, #{file_name}) end\n" + \close! -- cgit v1.2.3 From f14faf29401cda74dfc8c21f8c2975ce26f03700 Mon Sep 17 00:00:00 2001 From: s-ol Date: Thu, 8 Nov 2018 18:16:35 +1100 Subject: move tree into dist, recurive tup rendering etc. --- bundle.moon | 31 +++++++++++++++---------------- 1 file changed, 15 insertions(+), 16 deletions(-) (limited to 'bundle.moon') diff --git a/bundle.moon b/bundle.moon index 8e277c7..1c6b5f6 100644 --- a/bundle.moon +++ b/bundle.moon @@ -23,29 +23,28 @@ with io.open output_name, 'w' else \write "return {\n" - for i=2, #arg - file = arg[i] + this = assert arg[2] + addmod = (module, file, source) -> + modname = "#{this}.#{module}" + modname = this if module == 'init' + \write " +{ + module = #{escape modname}, + file = #{escape "#{this}/#{file}"}, + source = #{escape source}, +}," + for file in *arg[3,] if dirname = file\match '^([%w-_]+)/%.bundle%.lua$' bundle = dofile file for { :module, :file, :source } in *bundle - \write " -{ - module = #{escape dirname .. '.' .. module}, - file = #{escape dirname .. '/' .. file}, - source = #{escape source}, -}, - " + addmod module, file, source else module = file\gsub '%.lua$', '' + continue if module\match '%.server' + module = module\gsub '%.client$', '' module = module\gsub '%.init$', '' - \write " -{ - module = #{escape module}, - file = #{escape file}, - source = #{escape readfile file}, -}, - " + addmod module, file, readfile file \write "}" -- cgit v1.2.3