X-Git-Url: http://git.squeep.com/?a=blobdiff_plain;f=mix.exs;h=1a28b6710e67a161ba365ecb9f4c460d788be6e5;hb=5f0c2372bc8be3763b649b13ee142c273583329e;hp=ded414da9fe6640a16132aefa122b06956004150;hpb=f745e823f0acf6e10f777d6b924993f99e26a2c2;p=akkoma diff --git a/mix.exs b/mix.exs index ded414da9..1a28b6710 100644 --- a/mix.exs +++ b/mix.exs @@ -4,7 +4,7 @@ defmodule Pleroma.Mixfile do def project do [ app: :pleroma, - version: "0.9.0", + version: version("0.9.0"), elixir: "~> 1.4", elixirc_paths: elixirc_paths(Mix.env()), compilers: [:phoenix, :gettext] ++ Mix.compilers(), @@ -56,6 +56,7 @@ defmodule Pleroma.Mixfile do {:calendar, "~> 0.17.4"}, {:cachex, "~> 3.0.2"}, {:httpoison, "~> 1.2.0"}, + {:tesla, "~> 1.2"}, {:jason, "~> 1.0"}, {:mogrify, "~> 0.6.1"}, {:ex_aws, "~> 2.0"}, @@ -84,4 +85,51 @@ defmodule Pleroma.Mixfile do test: ["ecto.create --quiet", "ecto.migrate", "test"] ] end + + # Builds a version string made of: + # * the application version + # * a pre-release if ahead of the tag: the describe string (-count-commithash) + # * build info: + # * a build name if `PLEROMA_BUILD_NAME` or `:pleroma, :build_name` is defined + # * the mix environment if different than prod + defp version(version) do + {git_tag, git_pre_release} = + with {tag, 0} <- System.cmd("git", ["describe", "--tags", "--abbrev=0"]), + tag = String.trim(tag), + {describe, 0} <- System.cmd("git", ["describe", "--tags", "--abbrev=8"]), + describe = String.trim(describe), + ahead <- String.replace(describe, tag, "") do + {String.replace_prefix(tag, "v", ""), if(ahead != "", do: String.trim(ahead))} + else + _ -> {nil, nil} + end + + if git_tag && version != git_tag do + Mix.shell().error( + "Application version #{inspect(version)} does not match git tag #{inspect(git_tag)}" + ) + end + + build_name = + cond do + name = Application.get_env(:pleroma, :build_name) -> name + name = System.get_env("PLEROMA_BUILD_NAME") -> name + true -> nil + end + + env_name = if Mix.env() != :prod, do: to_string(Mix.env()) + + build = + [build_name, env_name] + |> Enum.filter(fn string -> string && string != "" end) + |> Enum.join("-") + |> (fn + "" -> nil + string -> "+" <> string + end).() + + [version, git_pre_release, build] + |> Enum.filter(fn string -> string && string != "" end) + |> Enum.join() + end end