Files
firezone/elixir/mix.exs
Jamil b61fd20de8 chore(portal): remove Jason in favor of JSON (#10550)
Since Elixir 1.18, json encoding and decoding support is included in the
standard library. This is built on OTP's native json support which is
often faster than other implementations.

It mostly has the same API as the popular Jason library, differing
mainly in the format of the error responses returned when decoding
fails.

To minimize dependence on external libraries, we remove the Jason lib in
favor of this external dependency.

Fixes #8011
2025-10-13 17:39:53 +00:00

115 lines
3.1 KiB
Elixir

defmodule Firezone.MixProject do
use Mix.Project
def project do
[
name: :firezone,
apps_path: "apps",
version: version(),
start_permanent: Mix.env() == :prod,
test_coverage: [tool: ExCoveralls],
listeners: [Phoenix.CodeReloader],
preferred_cli_env: [
coveralls: :test,
"coveralls.detail": :test,
"coveralls.post": :test,
"coveralls.html": :test
],
docs: [
logo: "apps/web/assets/static/images/logo.svg",
extras: ["docs/README.md", "docs/SECURITY.md", "docs/CONTRIBUTING.md"]
],
deps: deps(),
dialyzer: [
plt_file: {:no_warn, "priv/plts/dialyzer.plt"}
],
aliases: aliases(),
releases: releases()
]
end
# Dependencies listed here are available only for this
# project and cannot be accessed from applications inside
# the apps folder.
#
# Run "mix help deps" for examples and options.
defp deps do
[
# Shared deps
{:sentry, "~> 11.0"},
{:hackney, "~> 1.19"},
{:logger_json, "~> 7.0"},
# Shared test deps
{:credo, "~> 1.5", only: [:dev, :test], runtime: false},
{:dialyxir, "~> 1.1", only: [:dev, :test], runtime: false},
{:junit_formatter, "~> 3.3", only: [:test]},
{:mix_audit, "~> 2.1", only: [:dev, :test]},
{:sobelow, "~> 0.12", only: [:dev, :test]},
# Formatter doesn't track dependencies of children applications
{:phoenix, "~> 1.8.1"},
{:phoenix_live_view, "~> 1.1.8"},
{:lazy_html, ">= 0.1.0", only: :test},
{:floki, "~> 0.37.0"}
]
end
defp aliases do
migration_args =
"--migrations-path apps/domain/priv/repo/migrations --migrations-path apps/domain/priv/repo/manual_migrations"
[
"ecto.migrate": ["ecto.migrate #{migration_args}"],
"ecto.rollback": ["ecto.rollback #{migration_args}"],
"ecto.seed": [
"ecto.create",
"ecto.migrate #{migration_args}",
"run apps/domain/priv/repo/seeds.exs"
],
"ecto.setup": ["ecto.create", "ecto.migrate"],
"ecto.reset": ["ecto.drop", "ecto.setup"],
sobelow: ["cmd mix sobelow"],
test: ["ecto.create --quiet", "ecto.migrate", "test"],
start: ["compile --no-validate-compile-env", "phx.server", "run --no-halt"]
]
end
defp releases do
[
domain: [
include_executables_for: [:unix],
validate_compile_env: true,
applications: [
domain: :permanent,
opentelemetry_exporter: :permanent,
opentelemetry: :temporary
]
],
web: [
include_executables_for: [:unix],
validate_compile_env: true,
applications: [
web: :permanent,
opentelemetry_exporter: :permanent,
opentelemetry: :temporary
]
],
api: [
include_executables_for: [:unix],
validate_compile_env: true,
applications: [
api: :permanent,
opentelemetry_exporter: :permanent,
opentelemetry: :temporary
]
]
]
end
defp version do
sha = System.get_env("GIT_SHA", "dev") |> String.trim()
"0.1.0+#{sha}"
end
end