# mix_version v2.5.3 - Table of Contents

A simple tool to update an Elixir project version number and commit/tag the change.

## Modules

- [MixVersion.Config](MixVersion.Config.md): Helpers to read from the Mix project the app is called in.

- [MixVersion.Git](MixVersion.Git.md): This module is a simple, ad-hoc interface to the Git CLI.

- [MixVersion.Stage](MixVersion.Stage.md): Behaviour for mix version stages.

- [MixVersion.Stage.ApplyHook](MixVersion.Stage.ApplyHook.md): Stage that creates a new Git commit with the updated `mix.exs` file and all
other changes added to the Git index.

- [MixVersion.Stage.CheckGitTag](MixVersion.Stage.CheckGitTag.md): Stage that checks that the future Git tag does not already exist.

- [MixVersion.Stage.CheckUnstaged](MixVersion.Stage.CheckUnstaged.md): Checks if any file in the project has changes that are not committed to Git.
- [MixVersion.Stage.CommitChanges](MixVersion.Stage.CommitChanges.md): Stage that creates a new Git commit with the updated `mix.exs` file and all
other changes added to the Git index.

- [MixVersion.Stage.DetectGitCommand](MixVersion.Stage.DetectGitCommand.md): Stage that checks if the `git` command is callable with `System.cmd/3`.

- [MixVersion.Stage.FindGitRepo](MixVersion.Stage.FindGitRepo.md): Finds the root path of the Git repository of the project, if any.

- [MixVersion.Stage.GetNextVsn](MixVersion.Stage.GetNextVsn.md): Decides on the new version number from the passed CLI options.

- [MixVersion.Stage.PrintAndStop](MixVersion.Stage.PrintAndStop.md): This stage checks for the output command and prints the version and exits if
the flag is provided.

- [MixVersion.Stage.TagGitHead](MixVersion.Stage.TagGitHead.md): Stage that creates a possibly annotated tag at the current Git HEAD.

- [MixVersion.Stage.UpdateMixfile](MixVersion.Stage.UpdateMixfile.md): Stage that is responsible to write the `mix.exs` file with the new version
number.

- [MixVersion.SysCmd](MixVersion.SysCmd.md): Utiliy to run `System.cmd/3` with `:ok/:error` tuples results.

- [MixVersion.Token](MixVersion.Token.md): The "token" is the state of the command line execution, passed to and returned
from all stages.

## Mix Tasks

- [mix version](Mix.Tasks.Version.md): This module implements a mix task whose main purpose is to update the version
number of an Elixir application, with extra steps such as committing a git
tag.

