Packages
Key management service with embedded OTP runtime, optional HTTP API, SQLite/PostgreSQL storage, and external RMK providers
Current section
Files
Jump to
Current section
Files
mix.exs
defmodule KMS.MixProject do
use Mix.Project
@version "0.1.0"
@source_url "https://gitlab.com/parlant-co/kms"
def project do
[
app: :kms,
version: @version,
elixir: "~> 1.19",
elixirc_paths: elixirc_paths(Mix.env()),
start_permanent: Mix.env() == :prod,
aliases: aliases(),
deps: deps(),
releases: releases(),
description: description(),
package: package(),
docs: docs()
]
end
def cli do
[
preferred_envs: [precommit: :test]
]
end
def application do
[
mod: {KMS.Application, []},
extra_applications: [:logger, :runtime_tools]
]
end
defp elixirc_paths(:test), do: ["lib", "test/support"]
defp elixirc_paths(_env), do: ["lib"]
defp deps do
[
{:ecto_sql, "~> 3.13"},
{:postgrex, ">= 0.0.0"},
{:ecto_sqlite3, "~> 0.24.0"},
{:jason, "~> 1.2"},
{:req, "~> 0.5"},
{:wax_, "~> 0.7.0"},
{:telemetry_metrics, "~> 1.0"},
{:plug, "~> 1.18"},
{:bandit, "~> 1.8"},
{:ex_doc, "~> 0.35", only: :dev, runtime: false}
]
end
defp aliases do
[
setup: ["deps.get", "ecto.setup"],
"ecto.setup": ["ecto.create", "ecto.migrate", "run priv/repo/seeds.exs"],
"ecto.reset": ["ecto.drop", "ecto.setup"],
test: ["ecto.create --quiet", "ecto.migrate --quiet", "test"],
precommit: ["compile --warning-as-errors", "format --check-formatted", "test"]
]
end
defp description do
"Key management service with embedded OTP runtime, optional HTTP API, SQLite/PostgreSQL storage, and external RMK providers"
end
defp releases do
[
kms: [
applications: [kms: :permanent],
include_executables_for: [:unix],
steps: [:assemble, :tar]
]
]
end
defp package do
[
files: [
"lib",
"priv/repo/migrations",
"config",
"docs",
"mix.exs",
"README.md",
"CHANGELOG.md",
"SECURITY.md",
"LICENSE"
],
exclude_patterns: ["lib/mix/tasks/test_adapters.ex"],
licenses: ["MIT"],
links: %{"GitLab" => @source_url}
]
end
defp docs do
[
main: "readme",
source_url: @source_url,
source_ref: "v#{@version}",
extras: docs_extras(),
groups_for_extras: [
Guides:
~r/docs\/(overview|quickstart|installation|configuration|elixir-api|http-api|authz-bindings|local-vs-remote)\.md/,
"Use cases": ~r/docs\/use_cases/,
Security: ~r/(SECURITY\.md|docs\/security|docs\/aad\.md)/,
Operations:
~r/docs\/(rmk|operations|observability|database|fallback-recovery|migrations-upgrades)/
],
groups_for_modules: [
"Public API": [
KMS,
KMS.Crypto,
KMS.Passphrase,
KMS.RMK,
KMS.Signing,
KMS.Signing.Key,
KMS.Client,
KMS.Client.Local,
KMS.Client.Remote
],
Authentication: [
KMS.WebAuthn,
KMS.Principals.Factors.TOTP,
KMS.Principals.Factors.OneTimeCode
],
Operations: [KMS.API.Router, KMS.Telemetry]
]
]
end
defp docs_extras do
["README.md", "CHANGELOG.md", "SECURITY.md"] ++ Enum.sort(Path.wildcard("docs/**/*.md"))
end
end