defmodule ForgeOpsTracker.MixProject do use Mix.Project def project do [ app: :forge_ops_tracker, version: "0.1.0", # The JSON module (used by ForgeOpsTracker.EventBuilder/Client) is part of Elixir's own # standard library only since 1.18 -- see README.md's "Dependencies" section for why that's # this SDK's one real floor, not an arbitrary pin. elixir: "~> 1.18", description: "Elixir error reporting client for a private, self-hosted ForgeOps tracker instance.", start_permanent: Mix.env() == :prod, elixirc_paths: elixirc_paths(Mix.env()), deps: deps(), package: package(), source_url: "https://getforgeops.net", docs: docs() ] end # main: "readme" makes the published docs' front page the actual README instead of ex_doc's # own generated (and here, empty) API-overview default -- the README already covers # installation/configuration/what's automatic, exactly what a first-time visitor to # hexdocs.pm/forge_ops_tracker wants to land on. defp docs do [ main: "readme", extras: ["README.md"] ] end # links/{"GitHub" => ...} intentionally omitted -- the monorepo this currently lives in is # private, so a link to it would 404 for anyone outside the team. Add it once this is split # into its own public repo (see gems/forge_ops_tracker's gemspec for the same reasoning, # applied there first). defp package do [ maintainers: ["ForgeOps"], licenses: ["MIT"], links: %{"Homepage" => "https://getforgeops.net"}, files: ~w(lib mix.exs README.md LICENSE.txt) ] end # test/support holds a hand-rolled local HTTP test server (see its own moduledoc) -- only # compiled for :test, the standard Elixir convention for test-only helper modules that aren't # themselves *_test.exs files (which mix test already picks up on its own). defp elixirc_paths(:test), do: ["lib", "test/support"] defp elixirc_paths(_env), do: ["lib"] def application do [ extra_applications: [:logger, :inets, :ssl], mod: {ForgeOpsTracker.Application, []} ] end # Zero runtime dependencies -- see README.md's "Dependencies" section: :httpc/:ssl (bundled # with every OTP install, not a Hex package) cover HTTP delivery, Elixir's own JSON module # (stdlib since 1.18) covers JSON, and Elixir's Regex (PCRE via Erlang's :re, unlike the C # client in this repo, which had to adapt its patterns to POSIX ERE) covers PII scrubbing # unmodified from the Ruby original. ex_doc is dev-only, needed to actually publish docs # alongside the package (see "mix hex.publish"'s own requirement for it), never compiled into # a consumer's own build. defp deps do [ {:ex_doc, ">= 0.0.0", only: :dev, runtime: false} ] end end