opentelemetry-erlang-contrib/utilities/opentelemetry_telemetry/mix.exs

102 lines
2.8 KiB
Elixir

defmodule OpentelemetryTelemetry.MixProject do
use Mix.Project
def project do
{app, desc} = load_app()
config = load_config()
[
app: app,
version: version(Keyword.fetch!(desc, :vsn)),
description: to_string(Keyword.fetch!(desc, :description)),
elixir: "~> 1.10",
start_permanent: Mix.env() == :prod,
deps: deps(Keyword.fetch!(config, :deps)),
name: "Opentelemetry Telemetry",
source_url:
"https://github.com/open-telemetry/opentelemetry-erlang-contrib/tree/main/utilities/opentelemetry_telemetry",
docs: [
markdown_processor: ExDoc.Markdown.Earmark,
main: "OpentelemetryTelemetry",
# logo: "path/to/logo.png",
# erlang_docs()
extras: []
],
aliases: [
# when build docs first build edocs with rebar3
docs: ["cmd rebar3 edoc", "docs"]
],
package: package()
]
end
defp version(version) when is_list(version) do
List.to_string(version)
end
defp version({:file, path}) do
path
|> File.read!()
|> String.trim()
end
# Run "mix help compile.app" to learn about applications.
def application do
[
extra_applications: [:logger]
]
end
defp deps(rebar) do
rebar
|> Enum.map(fn
{dep, version} -> {dep, to_string(version)}
dep when is_atom(dep) -> {dep, ">= 0.0.0"}
end)
|> Enum.concat([
{:dialyxir, "~> 1.1", only: [:dev, :test], runtime: false},
{:ex_doc, "~> 0.26.0", only: :dev, runtime: false},
{:opentelemetry, "~> 1.0", only: [:dev, :test]},
{:opentelemetry_exporter, "~> 1.0", only: [:dev, :test]}
])
end
defp package() do
[
description: "Bridge library between Telemetry events and OpenTelemetry Erlang",
build_tools: ["rebar3", "mix"],
files: ~w(lib mix.exs README.md LICENSE rebar.config rebar.lock VERSION src),
licenses: ["Apache-2.0"],
links: %{
"GitHub" =>
"https://github.com/open-telemetry/opentelemetry-erlang-contrib/tree/main/utilities/opentelemetry_telemetry",
"OpenTelemetry Erlang" => "https://github.com/open-telemetry/opentelemetry-erlang",
"OpenTelemetry Erlang Contrib" =>
"https://github.com/open-telemetry/opentelemetry-erlang-contrib",
"OpenTelemetry.io" => "https://opentelemetry.io"
}
]
end
def erlang_docs() do
files =
for file <- Path.wildcard("edoc/*.md"),
file != "edoc/README.md",
do: {String.to_atom(file), [title: Path.basename(file, ".md")]}
[{:"README.md", [title: "Overview"]} | files]
end
defp load_config do
{:ok, config} = :file.consult('rebar.config')
config
end
defp load_app do
{:ok, [{:application, name, desc}]} = :file.consult('src/opentelemetry_telemetry.app.src')
{name, desc}
end
end