sloane.sh/lib/sloane_sh/config.ex
2024-02-24 19:52:57 -05:00

37 lines
814 B
Elixir

defmodule SloaneSH.Config do
@moduledoc """
SloaneSH configuration
"""
use TypedStruct
alias __MODULE__
typedstruct do
field :pages_dir, String.t(), enforce: true
field :posts_dir, String.t(), enforce: true
field :images_dir, String.t(), enforce: true
field :output_dir, String.t(), enforce: true
end
def default do
priv = :code.priv_dir(:sloane_sh) |> resolve_link()
%Config{
pages_dir: Path.join(priv, "site/pages"),
posts_dir: Path.join(priv, "site/posts"),
images_dir: Path.join(priv, "site/images"),
output_dir: Path.join(priv, "output")
}
end
defp resolve_link(path) do
case File.read_link(path) do
{:ok, link} ->
dir = Path.dirname(path)
Path.expand(link, dir)
_ ->
path
end
end
end