aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authors-ol <s-ol@users.noreply.github.com>2019-10-09 11:47:39 +0000
committers-ol <s-ol@users.noreply.github.com>2019-10-09 11:47:39 +0000
commit342db785a82417c58ec54bd9779a8a7fca61bfaf (patch)
tree2a16eac06c7265638aa92b4ac618fbab2a52d40a
parentthin out build folder (diff)
downloadmmm-342db785a82417c58ec54bd9779a8a7fca61bfaf.tar.gz
mmm-342db785a82417c58ec54bd9779a8a7fca61bfaf.zip
rename drivers to stores, make server, render_all store-agnostic
-rw-r--r--build/import.moon2
-rw-r--r--build/render_all.moon9
-rw-r--r--build/server.moon9
-rw-r--r--mmm/init.server.moon4
-rw-r--r--mmm/mmmfs/fileder.moon2
-rw-r--r--mmm/mmmfs/stores/init.moon33
-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