defmodule Mix.Tasks.Release do @moduledoc false use Mix.Task alias Mix.Project def run([level]) do case level do "patch" -> IO.puts next_patch_level_version() "minor" -> IO.puts "Please implement me!" "major" -> IO.puts "Please implement me!" _ -> IO.puts "Sorry friend... The only sub commands I know are: patch, minor, and major" end end def current_version do Project.config[:version] end def version_bits(ver) do ver |> String.split(".") end def current_version_bits do current_version() |> version_bits() end def current_patch_level(ver_bits) do ver_bits |> List.last |> String.to_integer end def next_patch_level(level) do level + 1 end def next_version(ver_bits, level) do ver_bits |> List.replace_at(-1, "#{level}") |> Enum.join(".") end def next_patch_level_version do bits = current_version_bits() next = (bits |> current_patch_level()) + 1 next_version(bits, next) end end