Packages
version_tasks
0.10.29
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 VersionTasks.FnExpr
alias Mix.Tasks.Version
@shortdoc "Inc to the next (major|minor|patch) version of your project"
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}\"")
|> String.replace("version: \"#{current}\"", "version: \"#{next}\"")
end
defp update_readme_version(line, current, next) do
line
|> String.replace("~> #{current}", "~> #{next}")
end
end