Skip to content

Commit

Permalink
✨ move code in repo
Browse files Browse the repository at this point in the history
  • Loading branch information
mpanarin committed Jul 15, 2021
1 parent b7c77e9 commit fce2537
Show file tree
Hide file tree
Showing 6 changed files with 41 additions and 43 deletions.
20 changes: 0 additions & 20 deletions lib/Git/utils.ex → lib/Git/commands.ex
Expand Up @@ -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
37 changes: 14 additions & 23 deletions lib/Hooks/behaviours.ex
Expand Up @@ -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
File renamed without changes.
13 changes: 13 additions & 0 deletions 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
File renamed without changes.
14 changes: 14 additions & 0 deletions 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

0 comments on commit fce2537

Please sign in to comment.