From 1e579d5e2912a4be65190a1a30a5cf4ae4f38f67 Mon Sep 17 00:00:00 2001 From: s-ol Date: Tue, 30 Oct 2018 14:08:00 +1100 Subject: way better client requires --- Tupfile | 20 +++++++------------- lib/init.client.moon | 3 ++- render.moon | 2 +- tup.moon | 30 ++++++++++++++++++++++++++++++ 4 files changed, 40 insertions(+), 15 deletions(-) diff --git a/Tupfile b/Tupfile index 0f108b4..1930207 100644 --- a/Tupfile +++ b/Tupfile @@ -1,26 +1,20 @@ .gitignore !download = |> ^ DOWNLOAD %O^ curl -L https://github.com/fengari-lua/fengari-web/releases/download/@(FENGARI_VERSION)/`basename %o` > %o |> -!moonc = |> ^ MOON %b^ moonc -o %o %f |> dist/%f.lua !sassc = |> ^ SCSS %b^ sassc -mauto %f %o |> | %o.map -preload app app/tags lib - -CLIENT += app/*.moon -CLIENT += app/tags/*.moon -CLIENT += app/mmmfs/*.moon -CLIENT += lib/*.moon -CLIENT += lib/mmmfs/*.moon - # download fengari dependencies : |> !download |> dist/fengari-web.js : |> !download |> dist/fengari-web.js.map -# compile client imports -: foreach $(CLIENT) |> !moonc |> - # render stylesheet : scss/main.scss |> !sassc |> dist/main.css -# render static content +preload app +preload app/tags +preload app/mmmfs +preload lib +preload lib/mmmfs + +# render static content and compile sources run moon tup.moon diff --git a/lib/init.client.moon b/lib/init.client.moon index 0fbaaf7..981cd25 100644 --- a/lib/init.client.moon +++ b/lib/init.client.moon @@ -25,7 +25,8 @@ warn = (...) -> contents = [deep_tostring v for v in *{ ... } ] console\warn table.unpack contents -package.path = '/?.client.moon.lua;/?.moon.lua;/?/init.moon.lua;/?.lua;/?/init.lua' +-- package.path = '/?.client.moon.lua;/?.moon.lua;/?/init.moon.lua;/?.lua;/?/init.lua' +package.path = '/?.lua;/?/init.lua' -- relative imports relative = do diff --git a/render.moon b/render.moon index 2737c29..96dcf23 100644 --- a/render.moon +++ b/render.moon @@ -19,7 +19,7 @@ with io.open output_name, 'w' - + #{flush!} diff --git a/tup.moon b/tup.moon index b1b8d04..5669a20 100644 --- a/tup.moon +++ b/tup.moon @@ -1,5 +1,35 @@ package.moonpath = './?.server.moon;' .. package.moonpath +require 'lfs' require 'lib.init' + +-- enumerate moonscript source files +enum_dir = do + yieldtree = (dir) -> + for entry in lfs.dir dir + if entry != '.' and entry != '..' then + entry = dir .. "/" .. entry + attr = lfs.attributes entry + switch attr.mode + when 'file' then coroutine.yield entry, attr + when 'directory' yieldtree entry + + (dir) -> + assert dir and dir ~= '', "directory parameter is missing or empty" + dir = dir\sub 1, -2 if '/' == dir\sub -1 + + coroutine.wrap -> yieldtree dir + +for file in enum_dir 'app' + basename = assert file\match '(.*)%.moon$' + print ": #{file} |> ^ MOON %b > %o^ moonc -o %o %f |> dist/#{basename}.lua" + +for file in enum_dir 'lib' + continue if file\match '%.server%.moon$' + basename = assert file\match '(.*)%.moon$' + basename = (file\match '(.*)%.client') or basename + print ": #{file} |> ^ MOON %b > %o^ moonc -o %o %f |> dist/#{basename}.lua" + +-- add rules for statically rendered routes import routes from require 'app' for { :name, :dest } in *routes -- cgit v1.2.3