Packages
version_tasks
0.9.1
0.12.0
0.11.4
0.11.3
0.11.2
0.11.1
0.11.0
0.10.29
0.10.28
0.10.27
0.10.26
0.10.25
0.10.24
0.10.23
0.10.22
0.10.21
0.10.20
0.10.19
0.10.18
0.10.17
0.10.16
0.10.15
0.10.14
0.10.13
0.10.12
0.10.11
0.10.10
0.10.9
0.10.8
0.10.7
0.10.6
0.10.5
0.10.4
0.10.3
0.10.1
0.10.0
0.9.4
0.9.3
0.9.2
0.9.1
0.9.0
0.8.3
0.8.1
0.7.0
0.6.0
0.5.0
0.4.0
0.3.3
0.3.1
0.2.6
A suite of mix tasks for managing your libs version numbers with git and hex
Current section
Files
Jump to
Current section
Files
lib/mix/tasks/inc.ex
defmodule Mix.Tasks.Version.Inc do
use Mix.Task
use FnExpr
alias Mix.Tasks.Version
@shortdoc "Increment to the next version of your project, provide major, minor or patch as input"
def run(mode) do
current = Version.Current.calc(mode)
next = Version.Next.calc(mode)
IO.puts "Updating mix.exs from #{current} to #{next}"
update_file("mix.exs", current, next, &update_mix_version/3)
update_file("README.md", current, next, &update_readme_version/3)
next
end
defp update_file(filename, current, next, update_fn) do
if File.exists?(filename) do
IO.puts " -- Updating #{filename}"
filename
|> File.read
|> invoke(fn ({:ok, content}) -> content end)
|> String.split("\n")
|> Enum.map(fn line -> update_fn.(line, current, next) end)
|> Enum.join("\n")
|> invoke(fn content -> File.write!(filename, content) end)
else
IO.puts " -- Skipping missing file #{filename}"
end
end
defp update_mix_version(line, current, next) do
line
|> String.replace("@version \"#{current}\"", "@version \"#{next}\"")
end
defp update_readme_version(line, current, next) do
line
|> String.replace("~> #{current}", "~> #{next}")
end
end