Packages
sentry
11.0.1
13.3.0
13.2.0
13.1.0
13.0.1
13.0.0
12.0.3
12.0.2
12.0.1
12.0.0
11.0.4
11.0.3
11.0.2
11.0.1
11.0.0
10.10.0
10.9.0
10.8.1
10.8.0
10.7.1
10.7.0
10.6.2
10.6.1
10.6.0
10.5.0
10.4.0
10.3.0
10.2.1
10.2.0
10.2.0-rc.2
10.2.0-rc.1
10.1.0
10.0.3
10.0.2
10.0.1
10.0.0
9.1.0
9.0.0
8.1.0
8.0.6
8.0.5
8.0.4
8.0.3
8.0.2
8.0.1
8.0.0
8.0.0-rc.2
8.0.0-rc.1
8.0.0-rc.0
retired
7.2.5
7.2.4
7.2.3
7.2.2
7.2.1
7.2.0
7.1.0
7.0.6
7.0.5
7.0.4
7.0.3
7.0.2
7.0.1
7.0.0
6.4.2
6.4.1
6.4.0
6.3.0
6.2.1
6.2.0
6.1.0
6.0.5
6.0.4
6.0.3
6.0.2
6.0.1
6.0.0
5.0.1
5.0.0
4.0.3
4.0.2
4.0.1
4.0.0
3.0.0
2.2.0
2.1.0
2.0.2
2.0.1
2.0.0
1.1.2
1.1.1
1.1.0
1.0.0
0.3.2
0.3.1
0.3.0
0.2.0
0.1.3
0.1.2
0.1.1
0.1.0
The Official Elixir client for Sentry
Current section
Files
Jump to
Current section
Files
mix.exs
defmodule Sentry.Mixfile do
use Mix.Project
@version "11.0.1"
@source_url "https://github.com/getsentry/sentry-elixir"
def project do
[
app: :sentry,
version: @version,
elixir: "~> 1.13",
description: "The Official Elixir client for Sentry",
package: package(),
deps: deps(),
elixirc_paths: elixirc_paths(Mix.env()),
test_paths: test_paths(System.get_env("SENTRY_INTEGRATION")),
dialyzer: [
flags: [:unmatched_returns, :error_handling, :extra_return],
plt_file: {:no_warn, "plts/dialyzer.plt"},
plt_core_path: "plts",
plt_add_deps: :app_tree,
plt_add_apps: [:mix, :ex_unit]
],
test_coverage: [tool: ExCoveralls],
preferred_cli_env: [
"coveralls.html": :test,
"test.integrations": :test
],
name: "Sentry",
docs: [
extra_section: "Guides",
extras: [
"README.md",
"CHANGELOG.md",
"pages/setup-with-plug-and-phoenix.md",
"pages/oban-integration.md",
"pages/quantum-integration.md",
"pages/telemetry-integration.md",
"pages/upgrade-8.x.md",
"pages/upgrade-9.x.md",
"pages/upgrade-10.x.md"
],
groups_for_extras: [
Integrations: [
"pages/setup-with-plug-and-phoenix.md",
"pages/oban-integration.md",
"pages/quantum-integration.md",
"pages/telemetry-integration.md"
],
"Upgrade Guides": [~r{^pages/upgrade}]
],
groups_for_modules: [
"Plug and Phoenix": [Sentry.PlugCapture, Sentry.PlugContext, Sentry.LiveViewHook],
Loggers: [Sentry.LoggerBackend, Sentry.LoggerHandler],
"Data Structures": [Sentry.Attachment, Sentry.CheckIn, Sentry.ClientReport],
HTTP: [Sentry.HTTPClient, Sentry.HackneyClient],
Interfaces: [~r/^Sentry\.Interfaces/],
Testing: [Sentry.Test]
],
source_ref: "#{@version}",
source_url: @source_url,
main: "readme",
logo: "assets/logo.png",
skip_undefined_reference_warnings_on: [
"CHANGELOG.md",
"pages/upgrade-9.x.md"
],
authors: ["Mitchell Henke", "Jason Stiebs", "Andrea Leopardi"]
],
xref: [exclude: [:hackney, :hackney_pool, Plug.Conn, :telemetry]],
aliases: aliases()
]
end
def application do
[
mod: {Sentry.Application, []},
extra_applications: extra_applications(Mix.env()),
registered: [
Sentry.Dedupe,
Sentry.Transport.SenderRegistry,
Sentry.Supervisor
]
]
end
defp extra_applications(:test), do: [:logger, :opentelemetry]
defp extra_applications(_other), do: [:logger]
defp elixirc_paths(:test), do: ["test/support"] ++ elixirc_paths(:dev)
defp elixirc_paths(_other), do: ["lib"]
defp test_paths(nil), do: ["test"]
defp test_paths(integration), do: ["test_integrations/#{integration}/test"]
defp deps do
[
{:nimble_options, "~> 1.0"},
{:nimble_ownership, "~> 0.3.0 or ~> 1.0"},
# Optional dependencies
{:hackney, "~> 1.8", optional: true},
{:jason, "~> 1.1", optional: true},
{:phoenix, "~> 1.6", optional: true},
{:phoenix_live_view, "~> 0.20 or ~> 1.0", optional: true},
{:plug, "~> 1.6", optional: true},
{:telemetry, "~> 0.4 or ~> 1.0", optional: true},
{:igniter, "~> 0.5", optional: true},
# Dev and test dependencies
{:plug_cowboy, "~> 2.7", only: [:test]},
{:bandit, "~> 1.0", only: [:test]},
{:bypass, "~> 2.0", only: [:test]},
{:dialyxir, "~> 1.0", only: [:test, :dev], runtime: false},
{:ex_doc, "~> 0.29", only: :dev},
{:excoveralls, "~> 0.17.1", only: [:test]},
# Required by Phoenix.LiveView's testing
{:floki, ">= 0.30.0", only: :test},
{:oban, "~> 2.17 and >= 2.17.6", only: [:test]},
{:quantum, "~> 3.0", only: [:test]},
{:opentelemetry, "~> 1.5", optional: true},
{:opentelemetry_api, "~> 1.4", optional: true},
{:opentelemetry_exporter, "~> 1.0", optional: true},
{:opentelemetry_semantic_conventions, "~> 1.27", optional: true}
]
end
defp package do
[
files: ["lib", "LICENSE", "mix.exs", "*.md"],
maintainers: ["Mitchell Henke", "Jason Stiebs"],
licenses: ["MIT"],
links: %{
"Changelog" => "#{@source_url}/blob/master/CHANGELOG.md",
"GitHub" => @source_url
}
]
end
defp aliases do
[
test: ["sentry.package_source_code", "test"],
"test.integrations": &run_integration_tests_if_supported/1
]
end
defp run_integration_tests_if_supported(args) do
if Version.match?(System.version(), ">= 1.16.0") do
run_integration_tests("umbrella", args)
run_integration_tests("phoenix_app", args)
else
Mix.shell().info("Skipping integration tests for Elixir versions < 1.16")
end
end
defp run_integration_tests(integration, args) do
IO.puts(
IO.ANSI.format([
"\n",
[:bright, :cyan, "==> Running tests for integration: #{integration}"]
])
)
case setup_integration(integration) do
{_, 0} ->
color_arg = if IO.ANSI.enabled?(), do: "--color", else: "--no-color"
{_, status} = run_in_integration(integration, ["test", color_arg | args])
if status > 0 do
IO.puts(
IO.ANSI.format([
:red,
"Integration tests for #{integration} failed"
])
)
System.at_exit(fn _ -> exit({:shutdown, 1}) end)
else
IO.puts(
IO.ANSI.format([
:green,
"Integration tests for #{integration} passed"
])
)
end
end
end
defp setup_integration(integration) do
run_in_integration(integration, ["deps.get"])
end
defp run_in_integration(integration, args) do
System.cmd("mix", args,
into: IO.binstream(:stdio, :line),
cd: Path.join("test_integrations", integration)
)
end
end