Packages

Versioce provides a mix task for version bumping of your project.

Current section

Files

Jump to
versioce lib Hooks git.ex
Raw

lib/Hooks/git.ex

defmodule Versioce.PostHooks.Git.Commit do
@moduledoc """
Runs a `git commit` in your repository.
You can customize your commit message with `Versioce.Config.Git.commit_message_template`
"""
use Versioce.PostHook
use Versioce.Git.Hook
def run(true, version) do
Versioce.Config.Git.commit_message_template()
|> String.replace("{version}", version, global: true)
|> Versioce.Git.commit()
{:ok, version}
end
end
defmodule Versioce.PostHooks.Git.Add do
@moduledoc """
Runs a `git add` in your repository.
By default only adds files from
your `Versioce.Config.files`. To change that set `Versioce.Config.Git.dirty_add`
to `true`
"""
use Versioce.PostHook
use Versioce.Git.Hook
def run(true, version) do
if Versioce.Config.Git.dirty_add() do
Versioce.Git.add()
else
["mix.exs" | Versioce.Config.files()]
|> Versioce.Git.add()
end
{:ok, version}
end
end
defmodule Versioce.PostHooks.Git.Tag do
@moduledoc """
Runs `git add -a -m` in your repository.
You can change the tag template as well as tag message template with
`Versioce.Config.Git.tag_template` and `Versioce.Config.Git.tag_message_template`
"""
use Versioce.PostHook
use Versioce.Git.Hook
def run(true, version) do
message =
Versioce.Config.Git.tag_message_template()
|> String.replace("{version}", version, global: true)
Versioce.Config.Git.tag_template()
|> String.replace("{version}", version, global: true)
|> Versioce.Git.tag(message)
{:ok, version}
end
end
defmodule Versioce.PostHooks.Git.Release do
@moduledoc """
An alias for: `Versioce.PostHooks.Git.Add`, `Versioce.PostHooks.Git.Commit`, `Versioce.PostHooks.Git.Tag`
"""
use Versioce.PostHook
use Versioce.Git.Hook
alias Versioce.PostHooks.Git
def run(true, version) do
with {:ok, version} <- Git.Add.run(version),
{:ok, version} <- Git.Commit.run(version),
{:ok, version} <- Git.Tag.run(version) do
{:ok, version}
else
_ -> {:error, "Couldn't create a tag"}
end
end
end