Namdak Tonpa 5 years ago
parent
commit
9ca5eb9a3b
3 changed files with 23 additions and 2 deletions
  1. 21 0
      lib/KVS.ex
  2. 1 1
      mix.exs
  3. 1 1
      src/kvs.app.src

+ 21 - 0
lib/KVS.ex

@@ -12,4 +12,25 @@ defmodule KVS do
   Enum.each(Record.extract_all(from_lib: "kvs/include/kvs.hrl"), fn {name, definition} ->
     Record.defrecord(name, definition)
   end)
+
+  defmacro __using__(opts \\ []) do
+    imports =
+      opts
+      |> Macro.expand(__CALLER__)
+      |> Keyword.get(:with, [:kvs])
+
+    Enum.map(imports, fn mod ->
+      if Code.ensure_compiled?(mod) do
+        upcased = Module.concat([String.upcase(to_string(mod))])
+
+        quote do
+          import unquote(upcased)
+          alias unquote(mod), as: unquote(upcased)
+        end
+      else
+        IO.warn("🚨 Unknown module #{mod} was requested to be used by :kvs. Skipping.")
+      end
+    end)
+  end
+
 end

+ 1 - 1
mix.exs

@@ -2,7 +2,7 @@ defmodule KVS.Mixfile do
   use Mix.Project
 
   def project do
-    [app: :kvs, version: "6.7.6", description: "KVS Abstract Chain Database", package: package(), deps: deps()]
+    [app: :kvs, version: "6.7.7", description: "KVS Abstract Chain Database", package: package(), deps: deps()]
   end
 
   def application do

+ 1 - 1
src/kvs.app.src

@@ -1,6 +1,6 @@
 {application, kvs,
    [{description, "KVS Abstract Chain Database"},
-    {vsn, "6.7.6"},
+    {vsn, "6.7.7"},
     {registered, []},
     {applications, [kernel,stdlib,rocksdb]},
     {mod, { kvs, []}},