diff options
| author | s-ol <s-ol@users.noreply.github.com> | 2019-10-09 11:47:39 +0000 |
|---|---|---|
| committer | s-ol <s-ol@users.noreply.github.com> | 2019-10-09 11:47:39 +0000 |
| commit | 342db785a82417c58ec54bd9779a8a7fca61bfaf (patch) | |
| tree | 2a16eac06c7265638aa92b4ac618fbab2a52d40a | |
| parent | thin out build folder (diff) | |
| download | mmm-342db785a82417c58ec54bd9779a8a7fca61bfaf.tar.gz mmm-342db785a82417c58ec54bd9779a8a7fca61bfaf.zip | |
rename drivers to stores, make server, render_all store-agnostic
| -rw-r--r-- | build/import.moon | 2 | ||||
| -rw-r--r-- | build/render_all.moon | 9 | ||||
| -rw-r--r-- | build/server.moon | 9 | ||||
| -rw-r--r-- | mmm/init.server.moon | 4 | ||||
| -rw-r--r-- | mmm/mmmfs/fileder.moon | 2 | ||||
| -rw-r--r-- | mmm/mmmfs/stores/init.moon | 33 | ||||
| -rw-r--r-- | mmm/mmmfs/stores/lfs.moon (renamed from mmm/mmmfs/drivers/lfs.moon) | 0 | ||||
| -rw-r--r-- | mmm/mmmfs/stores/sql.moon (renamed from mmm/mmmfs/drivers/sql.moon) | 0 |
8 files changed, 47 insertions, 12 deletions
diff --git a/build/import.moon b/build/import.moon index ceb56ad..1e4df31 100644 --- a/build/import.moon +++ b/build/import.moon @@ -14,7 +14,7 @@ import SQLStore from require 'mmm.mmmfs.drivers.sql' -- usage: -- moon import.moon <root> [output.sqlite3] -{ root, file } = arg +{ root, store } = arg assert root, "please specify the root directory" diff --git a/build/render_all.moon b/build/render_all.moon index 2a16a5f..02da12c 100644 --- a/build/render_all.moon +++ b/build/render_all.moon @@ -9,17 +9,18 @@ add '?/init.server' require 'mmm' import load_tree from require 'mmm.mmmfs.fileder' +import get_store from require 'mmm.mmmfs.stores' import render from require 'mmm.mmmfs.layout' -import SQLStore from require 'mmm.mmmfs.drivers.sql' -- usage: --- moon render_all.moon [db.sqlite3] [startpath] -{ file, startpath } = arg +-- moon render_all.moon [STORE] [startpath] +{ store, startpath } = arg export STATIC STATIC = true -tree = load_tree SQLStore :file +store = get_store store +tree = load_tree store tree = tree\walk startpath if startpath for fileder in coroutine.wrap tree\iterate diff --git a/build/server.moon b/build/server.moon index b28073e..2906d9b 100644 --- a/build/server.moon +++ b/build/server.moon @@ -10,7 +10,7 @@ add '?/init.server' require 'mmm' import Key, dir_base, load_tree from require 'mmm.mmmfs.fileder' -import SQLStore from require 'mmm.mmmfs.drivers.sql' +import get_store from require 'mmm.mmmfs.stores' import decodeURI from require 'http.util' lfs = require 'lfs' @@ -164,9 +164,10 @@ class Server print msg -- usage: --- moon server.moon [db.sqlite3] [host] [port] -{ file, host, port } = arg +-- moon server.moon [STORE] [host] [port] +{ store, host, port } = arg -tree = load_tree SQLStore :file +store = get_store store +tree = load_tree store server = Server tree, :host, port: port and tonumber port server\listen! diff --git a/mmm/init.server.moon b/mmm/init.server.moon index 2c83ab5..8fc6a0e 100644 --- a/mmm/init.server.moon +++ b/mmm/init.server.moon @@ -1,4 +1,4 @@ -export MODE, print, warn, relative, on_client +export MODE, print, warn, relative MODE = 'SERVER' deep_tostring = (tbl, space='') -> @@ -29,7 +29,7 @@ relative = do _require = require (base, sub) -> - sub = 0 unless 'number' == type sub + sub = sub or 0 for i=1, sub base = base\match '^(.*)%.%w+$' diff --git a/mmm/mmmfs/fileder.moon b/mmm/mmmfs/fileder.moon index 2472933..939d32f 100644 --- a/mmm/mmmfs/fileder.moon +++ b/mmm/mmmfs/fileder.moon @@ -190,7 +190,7 @@ dir_base = (path) -> dir, base --- load tree from a driver instance +-- load tree from a store instance -- optionally load subtree starting at 'root' path load_tree = (store, root='') -> fileders = setmetatable {}, diff --git a/mmm/mmmfs/stores/init.moon b/mmm/mmmfs/stores/init.moon new file mode 100644 index 0000000..17595fe --- /dev/null +++ b/mmm/mmmfs/stores/init.moon @@ -0,0 +1,33 @@ +require = relative ..., 0 + +-- instantiate a store from a CLI arg +-- e.g.: sql, lfs:/path/to/root, sql:MEMORY, sql:db.sqlite3 +get_store = (args='sql', opts={verbose: true}) -> + type, arg = args\match '(%w+):(.*)' + type = arg unless type + + switch type\lower! + when 'sql' + import SQLStore from require '.sql' + + if arg == 'MEMORY' + opts.memory = true + else + opts.name = arg + + SQLStore opts + + when 'lfs' + import LFSStore from require '.lfs' + + opts.root = arg + + LFSStore opts + + else + warn "unknown or missing value for STORE: valid types values are sql, lfs" + os.exit 1 + +{ + :get_store +} diff --git a/mmm/mmmfs/drivers/lfs.moon b/mmm/mmmfs/stores/lfs.moon index a90b55a..a90b55a 100644 --- a/mmm/mmmfs/drivers/lfs.moon +++ b/mmm/mmmfs/stores/lfs.moon diff --git a/mmm/mmmfs/drivers/sql.moon b/mmm/mmmfs/stores/sql.moon index 490eade..490eade 100644 --- a/mmm/mmmfs/drivers/sql.moon +++ b/mmm/mmmfs/stores/sql.moon |
