1defmodule Comet.MixProject do
2 use Mix.Project
3
4 def project do
5 [
6 app: :comet,
7 version: "0.1.0",
8 elixir: "~> 1.15",
9 elixirc_paths: elixirc_paths(Mix.env()),
10 start_permanent: Mix.env() == :prod,
11 aliases: aliases(),
12 deps: deps(),
13 compilers: [:phoenix_live_view, :hologram] ++ Mix.compilers(),
14 listeners: [Phoenix.CodeReloader]
15 ]
16 end
17
18 # Configuration for the OTP application.
19 #
20 # Type `mix help compile.app` for more information.
21 def application do
22 [
23 mod: {Comet.Application, []},
24 extra_applications: [:logger, :runtime_tools]
25 ]
26 end
27
28 def cli do
29 [
30 preferred_envs: [precommit: :test]
31 ]
32 end
33
34 # Specifies which paths to compile per environment.
35 defp elixirc_paths(:test), do: ["lib", "test/support"]
36 defp elixirc_paths(_), do: ["lib"]
37
38 # Specifies your project dependencies.
39 #
40 # Type `mix help deps` for examples and options.
41 defp deps do
42 [
43 {:phoenix, "~> 1.8.2"},
44 {:phoenix_ecto, "~> 4.5"},
45 {:ecto_sql, "~> 3.13"},
46 {:postgrex, ">= 0.0.0"},
47 {:phoenix_html, "~> 4.1"},
48 {:phoenix_live_reload, "~> 1.2", only: :dev},
49 {:phoenix_live_view, "~> 1.1.0"},
50 {:lazy_html, ">= 0.1.0", only: :test},
51 {:phoenix_live_dashboard, "~> 0.8.3"},
52 {:esbuild, "~> 0.10", runtime: Mix.env() == :dev},
53 {:tailwind, "~> 0.3", runtime: Mix.env() == :dev},
54 {:heroicons,
55 github: "tailwindlabs/heroicons",
56 tag: "v2.2.0",
57 sparse: "optimized",
58 app: false,
59 compile: false,
60 depth: 1},
61 {:swoosh, "~> 1.16"},
62 {:req, "~> 0.5"},
63 {:telemetry_metrics, "~> 1.0"},
64 {:telemetry_poller, "~> 1.0"},
65 {:gettext, "~> 1.0"},
66 {:jason, "~> 1.2"},
67 {:dns_cluster, "~> 0.2.0"},
68 {:bandit, "~> 1.5"},
69 {:atex, "~> 0.6"},
70 {:credo, "~> 1.7", only: [:dev, :test], runtime: false},
71 {:drinkup, "~> 0.1"},
72 {:typedstruct, "~> 0.5"},
73 {:hologram, "~> 0.6.5"}
74 ]
75 end
76
77 # Aliases are shortcuts or tasks specific to the current project.
78 # For example, to install project dependencies and perform other setup tasks, run:
79 #
80 # $ mix setup
81 #
82 # See the documentation for `Mix` for more info on aliases.
83 defp aliases do
84 [
85 setup: ["deps.get", "ecto.setup", "assets.setup", "assets.build"],
86 "ecto.setup": ["ecto.create", "ecto.migrate", "run priv/repo/seeds.exs"],
87 "ecto.reset": ["ecto.drop", "ecto.setup"],
88 test: ["ecto.create --quiet", "ecto.migrate --quiet", "test"],
89 "assets.setup": [
90 "cmd pnpm install",
91 # "tailwind.install --if-missing",
92 "esbuild.install --if-missing"
93 ],
94 "assets.build": ["compile", "tailwind comet", "esbuild comet"],
95 "assets.deploy": [
96 "tailwind comet --minify",
97 "esbuild comet --minify",
98 "phx.digest"
99 ],
100 precommit: ["compile --warnings-as-errors", "deps.unlock --unused", "format", "test"]
101 ]
102 end
103end