aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authors-ol <s-ol@users.noreply.github.com>2018-10-30 03:08:00 +0000
committers-ol <s-ol@users.noreply.github.com>2018-10-30 03:08:00 +0000
commit1e579d5e2912a4be65190a1a30a5cf4ae4f38f67 (patch)
tree5d92a2ce718807a9d7d5a38a58fbfcaaf1ee5a37
parentreorganize lib (diff)
downloadmmm-1e579d5e2912a4be65190a1a30a5cf4ae4f38f67.tar.gz
mmm-1e579d5e2912a4be65190a1a30a5cf4ae4f38f67.zip
way better client requires
-rw-r--r--Tupfile20
-rw-r--r--lib/init.client.moon3
-rw-r--r--render.moon2
-rw-r--r--tup.moon30
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'
<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>
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