defmodule MyApp.Mixfile do use Mix.Project def project do [app: :my_app, version: get_version, elixir: "~> 1.0", elixirc_paths: elixirc_paths(Mix.env), compilers: Mix.compilers, build_embedded: Mix.env == :prod, start_permanent: Mix.env == :prod, deps: deps] end # Configuration for the OTP application # # Type `mix help compile.app` for more information def application do [mod: {MyApp, []}, applications: [:logger]] end defp get_version do version_from_file |> handle_file_version |> String.split("-") |> case do [tag] -> tag [tag, _num_commits, commit] -> "#{tag}-#{commit}" end end defp version_from_file(file \\ "VERSION") do File.read(file) end defp handle_file_version({:ok, content}) do content end defp handle_file_version({:error, _}) do retrieve_version_from_git end defp retrieve_version_from_git do require Logger Logger.warn "Calling out to `git describe` for the version number. This is slow! You should think about a hook to set the VERSION file" System.cmd("git", ["describe", "--always", "--tags"]) |> Tuple.to_list |> List.first |> String.strip end # Specifies which paths to compile per environment defp elixirc_paths(:test), do: ["lib", "web", "test/support"] defp elixirc_paths(_), do: ["lib", "web"] # Specifies your project dependencies # # Type `mix help deps` for examples and options defp deps do [ ] end end