Packages
forge_ops_tracker
0.1.0
Elixir error reporting client for a private, self-hosted ForgeOps tracker instance.
Current section
Files
Jump to
Current section
Files
forge_ops_tracker
mix.exs
mix.exs
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