defmodule TorngenElixirClient.MixProject do use Mix.Project def project do [ name: "TorngenElixirClient", description: "Autogenerated paths and schemas for Elixir from torngen", app: :torngen_elixir_client, version: version(), elixir: "~> 1.16", package: package(), deps: deps(), source_url: "https://github.com/Tornium/torngen_elixir_client", docs: docs() ] end # Run "mix help compile.app" to learn about applications. def application do [ extra_applications: [:logger] ] end # Run "mix help deps" to learn about dependencies. defp deps do [ {:torngen, "~> 0.1.1", runtime: false}, {:ex_doc, "~> 0.34", only: :dev, runtime: false, optional: true} ] end def docs do [ main: "readme", extras: ["README.md", "LICENSE.md"], nest_modules_by_prefix: [Torngen.Client.Path, Torngen.Client.Schema] ] end def package do [ name: "torngen_elixir_client", description: "Autogenerated paths and schemas for Elixir from torngen", files: ["lib", "mix.exs", "README.md", "LICENSE.md"], maintainers: ["tiksan"], licenses: ["Apache-2.0"], links: %{"GitHub" => "https://github.com/Tornium/torngen_elixir_client"} ] end defp version do case :file.consult(~c"hex_metadata.config") do {:ok, data} -> {"version", version} = List.keyfind(data, "version", 0) version _ -> version = case System.cmd("git", ~w[describe --tags --abbrev=0 --dirty=+dirty]) do {version, 0} -> version |> String.trim() |> String.slice(1..-1//1) {_, code} -> Mix.shell().error("Git exited with code #{code}, falling back to 0.0.0") "0.0.0" end case Version.parse(version) do {:ok, %Version{pre: ["pre" <> _ | _]} = version} -> to_string(version) {:ok, %Version{pre: []} = version} -> to_string(version) {:ok, %Version{patch: patch, pre: pre} = version} -> to_string(%{version | patch: patch + 1, pre: ["dev" | pre]}) :error -> Mix.shell().error("Failed to parse #{version}, falling back to 0.0.0") "0.0.0" end end end end