aboutsummaryrefslogtreecommitdiffstats
path: root/build/bundle_fileder.moon
diff options
context:
space:
mode:
authors-ol <s-ol@users.noreply.github.com>2020-01-25 12:57:36 +0000
committers-ol <s-ol@users.noreply.github.com>2020-01-25 12:57:36 +0000
commit2b91c3d0af33099f7b260a41efac252655104c50 (patch)
tree4636152e118d90381a584f2636da34efbe8dd568 /build/bundle_fileder.moon
parentcorrection in portfolio (diff)
parentupdate README.md (diff)
downloadmmm-2b91c3d0af33099f7b260a41efac252655104c50.tar.gz
mmm-2b91c3d0af33099f7b260a41efac252655104c50.zip
Merge branch 'ba'
Diffstat (limited to 'build/bundle_fileder.moon')
-rw-r--r--build/bundle_fileder.moon155
1 files changed, 0 insertions, 155 deletions
diff --git a/build/bundle_fileder.moon b/build/bundle_fileder.moon
deleted file mode 100644
index c9f8c35..0000000
--- a/build/bundle_fileder.moon
+++ /dev/null
@@ -1,155 +0,0 @@
-require 'mmm'
-import get_path from require 'build.util'
-import Fileder, Key from require 'mmm.mmmfs.fileder'
-import opairs from require 'mmm.ordered'
-import to_lua from require 'moonscript.base'
-
--- usage:
--- moon bundle_fileder.moon <path_to_root> <dirname> <facets>... -- <children>...
-{ path_to_root, dirname } = arg
-
-assert path_to_root, "please specify the relative root path"
-assert dirname, "please specify the fileder dirname"
-path = get_path path_to_root
-
-facets = {}
-children_bundles = {}
-
-do
- addto = facets
- for file in *arg[3,]
- continue if file == 'Tupdefault.lua'
-
- if file == '--'
- addto = children_bundles
- continue
- table.insert addto, file
-
--- load a fs file as a fileder facet
-load_facet = (filename) ->
- key = (filename\match '(.*)%.%w+') or filename
- key = Key key\gsub '%$', '/'
- key.filename = filename
-
- file = assert (io.open filename, 'r'), "couldn't open facet file '#{filename}'"
- value = file\read '*all'
- file\close!
-
- key, value
-
--- escape a string for lua aparser
-escape = (str) -> string.format '%q', tostring str
-
--- dump a fileder subtree as Lua source
-dump_fileder = do
- _dump = (fileder, root=false) ->
- code = "Fileder {"
-
- for key, val in pairs fileder.facets
- if key.original
- key = "fromcache(#{escape key}, #{escape key.original})"
- else
- key = escape key
- code ..= "\n[#{key}] = #{escape val},"
-
- for child in *fileder.children
- code ..= "\n#{_dump child},"
-
- code ..= "\n}"
- code
-
-
- (fileder) -> "
-local mmmfs = require 'mmm.mmmfs'
-local Key, Fileder = mmmfs.Key, mmmfs.Fileder
-local function fromcache(str, orig)
- local key = Key(str)
- key.original = Key(orig)
- return key
-end
-
-return #{_dump fileder, true}
- "
-
-renders = {
- {
- inp: '^text/moonscript %-> (.*)'
- out: 'text/lua -> %1'
- render: (val, fileder, old, new) ->
- lua, err = to_lua val
-
- if not lua
- error "Error compiling #{old}: #{err}"
-
- "-- this moonscript facet has been transpiled to
--- '#{new}' for execution in the browser.
--- refer to the original facet as the source.
-#{lua}"
- },
- {
- inp: '^image/'
- out: 'URL -> %0'
- render: (val, fileder, old, new) -> "#{fileder.path}/#{old.filename}", "[binary removed]"
- },
- {
- inp: '^video/'
- out: 'URL -> %0'
- render: (val, fileder, old, new) -> "#{fileder.path}/#{old.filename}", "[binary removed]"
- },
-}
-
-with io.open '$bundle.lua', 'w'
- \write dump_fileder with fileder = Fileder 'name: alpha': dirname
- \mount path, true
-
- order = nil
- children = {}
-
- for facet in *facets
- if facet == '$order'
- order = [line for line in io.lines facet]
- continue
- key, value = load_facet facet
- .facets[key] = value
-
- extra_facets = {}
- for key, value in pairs .facets
- for { :inp, :out, :render } in *renders
- continue unless key.type\match inp
-
- built_key = Key key.name, key.type\gsub inp, out
- built_key.original = key
-
- -- dont overwrite existing keys
- continue if \has built_key
-
- rendered, replace = render value, fileder, key, built_key
-
- extra_facets[built_key] = rendered
- .facets[key] = replace if replace
-
- break
-
- for k,v in pairs extra_facets
- .facets[k] = v
-
- for child in *children_bundles
- -- @BUG: child bundles are malformed due to Tup bug ($ symbol)
- child = child\gsub '/%.lua$', '/$bundle.lua'
-
- dirname = assert child\match '^([%w-_%.]+)/%$bundle%.lua$'
- children[dirname] = dofile child
-
- if order
- -- order from order file
- for i, name in pairs order
- child = assert children[name], "child in $order but not fs: #{name}"
- table.insert .children, child
- children[name] = nil
-
- -- sort remainder alphabeticalally
- for name, child in opairs children
- table.insert .children, child
- warn "child #{name} not in $order!" if order
-
- \close!