defmodule ShelllessRelease.MixProject do
use Mix.Project
@version "0.1.0"
@source_url "https://github.com/u2i/shellless_release"
def project do
[
app: :shellless_release,
version: @version,
elixir: "~> 1.15",
start_permanent: Mix.env() == :prod,
description: description(),
package: package(),
deps: deps(),
docs: docs(),
name: "ShelllessRelease",
source_url: @source_url
]
end
def application do
# Library only — no supervised processes. EpmdLess is loaded by the VM via
# -epmd_module, not started as an app child.
[extra_applications: [:logger]]
end
defp deps do
[
{:ex_doc, "~> 0.31", only: :dev, runtime: false}
]
end
defp description do
"Shell-free, distribution-hardened mix releases for distroless images: " <>
"a native launcher (no /bin/sh), a command whitelist (no eval), pinned " <>
"distribution port, mandatory mutual-TLS distribution, and EPMD-less mode."
end
defp package do
[
licenses: ["MIT"],
links: %{"GitHub" => @source_url},
# Ship the C source + TLS template as data; the consuming app's mix
# release step compiles the launcher in its (C-capable) build stage.
files: ~w(lib priv mix.exs README.md LICENSE)
]
end
defp docs do
[
main: "ShelllessRelease",
extras: ["README.md"]
]
end
end