diff --git a/lib/fryse.ex b/lib/fryse.ex index 9427ee9..a6a6047 100644 --- a/lib/fryse.ex +++ b/lib/fryse.ex @@ -5,7 +5,7 @@ defmodule Fryse do Full documentation will follow soon. """ - alias Fryse.{Indexer, ScriptLoader, Builder} + alias Fryse.{Indexer, Config, ScriptLoader, Builder} defstruct config: nil, data: nil, @@ -17,6 +17,13 @@ defmodule Fryse do Indexer.index(path) end + def validate_config(%Fryse{config: config}) do + validate_config(config) + end + def validate_config(config) do + Config.validate(config) + end + def load_scripts(%Fryse{} = fryse) do ScriptLoader.load_for(fryse) end diff --git a/lib/fryse/cli/build.ex b/lib/fryse/cli/build.ex index cc59be8..38f6277 100644 --- a/lib/fryse/cli/build.ex +++ b/lib/fryse/cli/build.ex @@ -18,6 +18,7 @@ defmodule Fryse.CLI.Build do debug = Keyword.get(switches, :debug, false) with {:indexing, {:ok, %Fryse{} = fryse}} <- {:indexing, Fryse.index(".")}, + {:config_validation, :ok} <- {:config_validation, Fryse.validate_config(fryse)}, {:script_loading, :ok} <- {:script_loading, Fryse.load_scripts(fryse)}, {:building, {:ok, results}} <- {:building, Fryse.build(fryse)} do if debug do @@ -42,7 +43,7 @@ defmodule Fryse.CLI.Build do IO.puts "- #{error}" end end - defp show_task_errors(:indexing, %ErrorBag{context: :config_validation, errors: errors}) do + defp show_task_errors(:config_validation, %ErrorBag{context: :validate, errors: errors}) do IO.puts(red("Config validation failed:")) for error <- errors do IO.puts "- #{error}" diff --git a/lib/fryse/config.ex b/lib/fryse/config.ex index 6c7cb5f..da84781 100644 --- a/lib/fryse/config.ex +++ b/lib/fryse/config.ex @@ -1,6 +1,7 @@ defmodule Fryse.Config do @moduledoc false + alias Fryse.ErrorBag alias Fryse.Errors.MissingConfigValue alias Fryse.Errors.InvalidConfigValue @@ -22,7 +23,13 @@ defmodule Fryse.Config do case errors do [] -> :ok - errors -> {:error, errors} + errors -> + error_bag = %ErrorBag{ + context: :validate, + errors: errors + } + + {:error, error_bag} end end diff --git a/lib/fryse/indexer.ex b/lib/fryse/indexer.ex index de26e65..d56a36a 100644 --- a/lib/fryse/indexer.ex +++ b/lib/fryse/indexer.ex @@ -58,17 +58,9 @@ defmodule Fryse.Indexer do config_path = Path.join(path, "config.yml") with {:ok, config} <- FileLoader.load_file(config_path), - merged_config <- Config.merge(config, Config.default_config()), - {:validation, :ok} <- {:validation, Config.validate(merged_config)} do + merged_config <- Config.merge(config, Config.default_config()) do {:ok, merged_config} - else - {:validation, {:error, errors}} -> - {:error, %ErrorBag{ - context: :config_validation, - errors: errors - }} - value -> value end end