Add castore as a direct dependency to provide CA certificates in environments where the OS trust store is not available (Dokku staging). Stop leaking raw system errors (like CA trust store details) to the UI by logging the full error server-side and showing a generic user-friendly message instead.
138 lines
4.6 KiB
Elixir
138 lines
4.6 KiB
Elixir
defmodule Towerops.MixProject do
|
|
use Mix.Project
|
|
|
|
def project do
|
|
[
|
|
app: :towerops,
|
|
version: "0.1.0",
|
|
elixir: "~> 1.18",
|
|
elixirc_paths: elixirc_paths(Mix.env()),
|
|
start_permanent: Mix.env() == :prod,
|
|
aliases: aliases(),
|
|
deps: deps(),
|
|
compilers: [:phoenix_live_view] ++ Mix.compilers(),
|
|
listeners: [Phoenix.CodeReloader],
|
|
dialyzer: dialyzer()
|
|
]
|
|
end
|
|
|
|
# Configuration for the OTP application.
|
|
#
|
|
# Type `mix help compile.app` for more information.
|
|
def application do
|
|
[
|
|
mod: {Towerops.Application, []},
|
|
extra_applications: [:logger, :runtime_tools, :os_mon]
|
|
]
|
|
end
|
|
|
|
def cli do
|
|
[
|
|
preferred_envs: [precommit: :test]
|
|
]
|
|
end
|
|
|
|
# Specifies which paths to compile per environment.
|
|
defp elixirc_paths(:test), do: ["lib", "test/support"]
|
|
defp elixirc_paths(_), do: ["lib"]
|
|
|
|
# Specifies your project dependencies.
|
|
#
|
|
# Type `mix help deps` for examples and options.
|
|
defp deps do
|
|
[
|
|
{:argon2_elixir, "~> 4.0"},
|
|
{:nimble_totp, "~> 1.0"},
|
|
{:eqrcode, "~> 0.2.1"},
|
|
{:phoenix, "~> 1.8.3"},
|
|
{:phoenix_ecto, "~> 4.5"},
|
|
{:ecto_sql, "~> 3.13"},
|
|
{:postgrex, ">= 0.0.0"},
|
|
{:phoenix_html, "~> 4.1"},
|
|
{:phoenix_live_reload, "~> 1.2", only: :dev},
|
|
{:phoenix_live_view, "~> 1.1.0"},
|
|
{:lazy_html, ">= 0.1.0", only: :test},
|
|
{:phoenix_live_dashboard, "~> 0.8.3"},
|
|
{:esbuild, "~> 0.10", runtime: Mix.env() == :dev},
|
|
{:tailwind, "~> 0.3", runtime: Mix.env() == :dev},
|
|
{:heroicons,
|
|
github: "tailwindlabs/heroicons", tag: "v2.2.0", sparse: "optimized", app: false, compile: false, depth: 1},
|
|
{:swoosh, "~> 1.16"},
|
|
{:gen_smtp, "~> 1.0"},
|
|
{:cbor, "~> 1.0"},
|
|
{:protobuf, "~> 0.12"},
|
|
{:req, "~> 0.5"},
|
|
{:castore, "~> 1.0"},
|
|
{:sweet_xml, "~> 0.7"},
|
|
{:yaml_elixir, "~> 2.9"},
|
|
{:telemetry_metrics, "~> 1.0"},
|
|
{:telemetry_poller, "~> 1.0"},
|
|
{:gettext, "~> 1.0"},
|
|
{:jason, "~> 1.2"},
|
|
{:dns_cluster, "~> 0.2.0"},
|
|
{:libcluster, "~> 3.4"},
|
|
{:oban_pro, "~> 1.6", path: "vendor/oban_pro"},
|
|
{:oban_met, "~> 1.0", path: "vendor/oban_met", override: true},
|
|
{:oban_web, "~> 2.11", path: "vendor/oban_web"},
|
|
{:bandit, "~> 1.5"},
|
|
{:phoenix_pubsub_redis, "~> 3.0"},
|
|
{:ecto_psql_extras, "~> 0.6"},
|
|
{:mox, "~> 1.0", only: :test},
|
|
{:absinthe, "~> 1.7"},
|
|
{:absinthe_plug, "~> 1.5"},
|
|
{:honeybadger, "~> 0.24"},
|
|
{:error_tracker, "~> 0.7"},
|
|
{:error_tracker_notifier, "~> 0.2"},
|
|
{:stream_data, "~> 1.1", only: :test},
|
|
{:tzdata, "~> 1.1"},
|
|
{:styler, "~> 1.10", only: [:dev, :test], runtime: false},
|
|
{:mix_test_watch, "~> 1.0", only: [:dev, :test], runtime: false},
|
|
{:dialyxir, "~> 1.4", only: [:dev, :test], runtime: false},
|
|
{:credo, "~> 1.7", only: [:dev, :test], runtime: false},
|
|
{:sobelow, "~> 0.14.1", only: [:dev, :test], runtime: false},
|
|
{:mix_audit, "~> 2.1", only: [:dev, :test], runtime: false},
|
|
{:hammer, "~> 7.2.0"},
|
|
{:hammer_backend_redis, "~> 7.1"},
|
|
{:inet_cidr, "~> 1.0"},
|
|
{:cloak_ecto, "~> 1.3"},
|
|
{:logger_file_backend, "~> 0.0.13", only: :dev},
|
|
{:logger_backends, "~> 1.0", only: :dev},
|
|
{:tidewave, "~> 0.5", only: :dev}
|
|
]
|
|
end
|
|
|
|
# Dialyzer configuration for static analysis
|
|
defp dialyzer do
|
|
[
|
|
plt_file: {:no_warn, "priv/plts/dialyzer.plt"},
|
|
# Faster incremental analysis
|
|
plt_add_deps: :apps_direct,
|
|
plt_add_apps: [:mix, :ex_unit, :ecto],
|
|
flags: [:unmatched_returns, :error_handling, :underspecs, :unknown],
|
|
ignore_warnings: ".dialyzer_ignore.exs"
|
|
]
|
|
end
|
|
|
|
# Aliases are shortcuts or tasks specific to the current project.
|
|
# For example, to install project dependencies and perform other setup tasks, run:
|
|
#
|
|
# $ mix setup
|
|
#
|
|
# See the documentation for `Mix` for more info on aliases.
|
|
defp aliases do
|
|
[
|
|
setup: ["deps.get", "ecto.setup", "assets.setup", "assets.build"],
|
|
"ecto.setup": ["ecto.create", "ecto.migrate", "run priv/repo/seeds.exs"],
|
|
"ecto.reset": ["ecto.drop", "ecto.setup"],
|
|
test: ["ecto.create --quiet", "ecto.load --quiet --skip-if-loaded", "test"],
|
|
"assets.setup": ["tailwind.install --if-missing", "esbuild.install --if-missing"],
|
|
"assets.build": ["compile", "tailwind towerops", "esbuild towerops"],
|
|
"assets.deploy": [
|
|
"tailwind towerops --minify",
|
|
"esbuild towerops --minify",
|
|
"phx.digest"
|
|
],
|
|
precommit: ["compile --warnings-as-errors", "deps.unlock --unused", "format", "test"]
|
|
]
|
|
end
|
|
end
|