cover/Elixir.Tools.User.Load.Schema.html

1 defmodule Tools.User.Load.Schema do
2 import Tools.User.Cfg, only: [parse: 1]
3 import Tools.User.Def, only: [spec: 2]
4 import Tools.User.Validate, only: [check: 1]
5 import Path, only: [expand: 2, join: 2]
6 import File, only: [exists?: 1]
7
8 @app_root expand("../../../../..", __DIR__)
9
10 def get(name, state) do
11 8 name |> path() |> load() |> check() |> spec(state)
12 end
13
14 def tool(name) do
15 2 name |> path() |> load() |> check()
16 end
17
18 defp path(name) do
19 10 join(@app_root, "agents/tools/#{name}.md")
20 end
21
22 defp load(file) do
23 10 gather(exists?(file), file)
24 end
25
26 10 defp gather(true, file), do: parse(file)
27
:-(
defp gather(false, _file), do: nil
28 end
29
30 defmodule Tools.User do
31 import Tools.User.Exec, only: [exec: 2]
32 import Tools.User.Load.Schema, only: [tool: 1]
33
34 defdelegate spec(name, state), to: Tools.User.Load.Schema, as: :get
35
36 def exec(name, args, state) do
37 result = exec(tool(name), args)
38 {result, state}
39 end
40 end
Line Hits Source