From fce2537e76b94c30bf86cb79c7fa9022be7fb4d8 Mon Sep 17 00:00:00 2001 From: mpanarin Date: Sat, 5 Jun 2021 13:04:58 +0300 Subject: [PATCH] :sparkles: move code in repo --- lib/Git/{utils.ex => commands.ex} | 20 ------------ lib/Hooks/behaviours.ex | 37 ++++++++-------------- lib/Hooks/{git.ex => git_hooks.ex} | 0 lib/Hooks/hook_runner.ex | 13 ++++++++ lib/Hooks/{inspect.ex => inspect_hooks.ex} | 0 lib/Utils/ok_monad.ex | 14 ++++++++ 6 files changed, 41 insertions(+), 43 deletions(-) rename lib/Git/{utils.ex => commands.ex} (66%) rename lib/Hooks/{git.ex => git_hooks.ex} (100%) create mode 100644 lib/Hooks/hook_runner.ex rename lib/Hooks/{inspect.ex => inspect_hooks.ex} (100%) create mode 100644 lib/Utils/ok_monad.ex diff --git a/lib/Git/utils.ex b/lib/Git/commands.ex similarity index 66% rename from lib/Git/utils.ex rename to lib/Git/commands.ex index c496826..ec3927c 100644 --- a/lib/Git/utils.ex +++ b/lib/Git/commands.ex @@ -38,23 +38,3 @@ defmodule Versioce.Git do |> Git.tag!(["-a", name, "-m", message]) end end - -defmodule Versioce.Git.Hook do - @moduledoc false - - @doc false - defmacro __using__(_opts) do - quote do - @doc false - defp run(false, _) do - {:error, "Optional dependency `git_cli` is not loaded."} - end - - @doc false - def run(params) do - Code.ensure_loaded?(Git) - |> run(params) - end - end - end -end diff --git a/lib/Hooks/behaviours.ex b/lib/Hooks/behaviours.ex index c118ef7..9ff0acc 100644 --- a/lib/Hooks/behaviours.ex +++ b/lib/Hooks/behaviours.ex @@ -72,31 +72,22 @@ defmodule Versioce.PostHook do end end -defmodule Versioce.OK do +defmodule Versioce.Git.Hook do @moduledoc false - @type ok_tuple :: {:ok, any} | {:error, any} - - @spec bind(ok_tuple, fun) :: ok_tuple() - def bind({:ok, value}, func), do: func.(value) - def bind({:error, reason}, _), do: {:error, reason} - - @spec unit(any) :: ok_tuple() - def unit({:ok, _} = value), do: value - def unit({:error, _} = value), do: value - def unit(value), do: {:ok, value} -end - -defmodule Versioce.Hooks do - @moduledoc false - - @spec run(any, [module()]) :: Versioce.OK.ok_tuple() - def run(params, []), do: Versioce.OK.unit(params) + @doc false + defmacro __using__(_opts) do + quote do + @doc false + defp run(false, _) do + {:error, "Optional dependency `git_cli` is not loaded."} + end - def run(params, [h | tail]) do - params - |> Versioce.OK.unit() - |> Versioce.OK.bind(&h.run/1) - |> run(tail) + @doc false + def run(params) do + Code.ensure_loaded?(Git) + |> run(params) + end + end end end diff --git a/lib/Hooks/git.ex b/lib/Hooks/git_hooks.ex similarity index 100% rename from lib/Hooks/git.ex rename to lib/Hooks/git_hooks.ex diff --git a/lib/Hooks/hook_runner.ex b/lib/Hooks/hook_runner.ex new file mode 100644 index 0000000..b654105 --- /dev/null +++ b/lib/Hooks/hook_runner.ex @@ -0,0 +1,13 @@ +defmodule Versioce.Hooks do + @moduledoc false + + @spec run(any, [module()]) :: Versioce.OK.ok_tuple() + def run(params, []), do: Versioce.OK.unit(params) + + def run(params, [h | tail]) do + params + |> Versioce.OK.unit() + |> Versioce.OK.bind(&h.run/1) + |> run(tail) + end +end diff --git a/lib/Hooks/inspect.ex b/lib/Hooks/inspect_hooks.ex similarity index 100% rename from lib/Hooks/inspect.ex rename to lib/Hooks/inspect_hooks.ex diff --git a/lib/Utils/ok_monad.ex b/lib/Utils/ok_monad.ex new file mode 100644 index 0000000..7ae9191 --- /dev/null +++ b/lib/Utils/ok_monad.ex @@ -0,0 +1,14 @@ +defmodule Versioce.OK do + @moduledoc false + + @type ok_tuple :: {:ok, any} | {:error, any} + + @spec bind(ok_tuple, fun) :: ok_tuple() + def bind({:ok, value}, func), do: func.(value) + def bind({:error, reason}, _), do: {:error, reason} + + @spec unit(any) :: ok_tuple() + def unit({:ok, _} = value), do: value + def unit({:error, _} = value), do: value + def unit(value), do: {:ok, value} +end