lib/mix/tasks/nimble_template.bump_version.ex

defmodule Mix.Tasks.NimbleTemplate.BumpVersion do
  @shortdoc "Bump the template into specific version."

  @moduledoc """
  #{@shortdoc}

  - Hex package: https://hex.pm/packages/nimble_template
  - Github: https://github.com/nimblehq/elixir-templates

  # Usage

  - mix help nimble_template.bump_version # Print help
  - mix nimble_template.bump_version [new_version] # Bump the template version to the [new_version].
  """

  use Mix.Task

  alias NimbleTemplate.Version

  def run(args) do
    new_version = parse_opts(args)

    Version.bump(new_version)
  end

  defp parse_opts(args) do
    case OptionParser.parse(args, strict: []) do
      {[], [new_version], []} ->
        new_version

      _other ->
        Mix.raise(
          "Invalid command. Check `mix help nimble_template.bump_version` for more information."
        )
    end
  end
end