defmodule Mix.Tasks.Semver do @moduledoc """ The semver mix task: `mix semver` """ use Mix.Task @semver_line_rx ~r/version: "(\d+)\.(\d+)\.(\d+)(-.*)?",/ @shortdoc "Default task will report the semantic version." def run(_) do {:ok, data} = File.read("mix.exs") [semver_line | _] = Regex.run(@semver_line_rx, data) semver = semver_line |> String.replace("version: ", "") |> String.replace("\"", "") |> String.replace(",", "") |> Version.parse!() IO.puts("Current Version: #{semver}") :ok end end