diff options
| author | s-ol <s-ol@users.noreply.github.com> | 2018-10-30 03:08:00 +0000 |
|---|---|---|
| committer | s-ol <s-ol@users.noreply.github.com> | 2018-10-30 03:08:00 +0000 |
| commit | 1e579d5e2912a4be65190a1a30a5cf4ae4f38f67 (patch) | |
| tree | 5d92a2ce718807a9d7d5a38a58fbfcaaf1ee5a37 | |
| parent | reorganize lib (diff) | |
| download | mmm-1e579d5e2912a4be65190a1a30a5cf4ae4f38f67.tar.gz mmm-1e579d5e2912a4be65190a1a30a5cf4ae4f38f67.zip | |
way better client requires
| -rw-r--r-- | Tupfile | 20 | ||||
| -rw-r--r-- | lib/init.client.moon | 3 | ||||
| -rw-r--r-- | render.moon | 2 | ||||
| -rw-r--r-- | tup.moon | 30 |
4 files changed, 40 insertions, 15 deletions
@@ -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' <body> <script src=\"/fengari-web.js\"></script> <script src=\"//cdn.jsdelivr.net/npm/marked/marked.min.js\"></script> - <script type=\"application/lua\" src=\"/lib/init.client.moon.lua\"></script> + <script type=\"application/lua\" src=\"/lib/init.lua\"></script> #{flush!} </body> @@ -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 |
