Current section

Files

Jump to
expublish lib mix tasks.ex
Raw

lib/mix/tasks.ex

defmodule Mix.Tasks.Expublish do
@moduledoc """
Release and publish new version for current project.
You will be prompted for the version level, must be one of `major`, `minor` or `patch`.
"""
alias Expublish.Options
@shortdoc "Publish a new version of current project."
use Mix.Task
@doc false
def run(args) do
args
|> Options.parse()
|> prompt_for_version_and_publish()
end
defp prompt_for_version_and_publish(options) do
"Enter version level: major | minor | patch\n"
|> IO.gets()
|> String.trim()
|> String.downcase()
|> case do
"major" -> Expublish.major(options)
"minor" -> Expublish.minor(options)
"patch" -> Expublish.patch(options)
_ -> prompt_for_version_and_publish(options)
end
end
defmodule Major do
@moduledoc "Release and publish major version for current project."
@shortdoc "Publish a major version of current project."
use Mix.Task
@doc false
def run(args) do
args
|> Options.parse()
|> Expublish.major()
end
end
defmodule Minor do
@moduledoc "Release and publish minor version for current project."
@shortdoc "Publish a minor version of current project."
use Mix.Task
@doc false
def run(args) do
args
|> Options.parse()
|> Expublish.minor()
end
end
defmodule Patch do
@moduledoc "Release and publish patch version for current project."
@shortdoc "Publish a patch version of current project."
use Mix.Task
@doc false
def run(args) do
args
|> Options.parse()
|> Expublish.patch()
end
end
end