defmodule Sftpd.MixProject do
use Mix.Project
@version "0.1.1"
@source_url "https://github.com/elixir-ssh/sftpd"
def project do
[
app: :sftpd,
version: @version,
elixir: "~> 1.14",
elixirc_paths: elixirc_paths(Mix.env()),
start_permanent: Mix.env() == :prod,
deps: deps(),
aliases: aliases(),
# Hex
description:
"Phoenix-ready SFTP server with password/public-key auth, session-aware backends, and optional S3 storage",
package: package(),
# Docs
name: "Sftpd",
docs: docs(),
source_url: @source_url
]
end
def application do
[
extra_applications: [:crypto, :logger, :ssh]
]
end
defp elixirc_paths(:test), do: ["lib", "test/support"]
defp elixirc_paths(_), do: ["lib"]
defp deps do
[
# S3 backend dependencies (optional for users who only need other backends)
{:ex_aws, "~> 2.0", optional: true},
{:ex_aws_s3, "~> 2.0", optional: true},
{:hackney, "~> 1.9", optional: true},
{:sweet_xml, "~> 0.7", optional: true},
{:jason, "~> 1.3", optional: true},
{:configparser_ex, "~> 4.0", optional: true},
{:telemetry, ">= 0.4.3 and < 2.0.0"},
# Dev/test dependencies
{:dialyxir, "~> 1.1", only: [:dev, :test], runtime: false},
{:ex_doc, "~> 0.30", only: :dev, runtime: false},
{:mox, "~> 1.0", only: :test},
{:stream_data, "~> 1.1", only: :test}
]
end
defp aliases do
[
# Use --no-start to prevent automatic application startup. Applications are
# started explicitly in test_helper.exs to control the startup order and
# avoid issues with SSH daemon initialization during test discovery.
test: ["test --no-start"]
]
end
defp package do
[
maintainers: ["Michael Christensen"],
licenses: ["Apache-2.0"],
links: %{
"HexDocs" => "https://hexdocs.pm/sftpd",
"Getting Started" => "https://hexdocs.pm/sftpd/getting_started.html",
"Phoenix Guide" => "https://hexdocs.pm/sftpd/phoenix.html",
"Backends Guide" => "https://hexdocs.pm/sftpd/backends.html",
"GitHub" => @source_url,
"GitHub Release" => "#{@source_url}/releases/tag/v#{@version}"
},
files:
~w(lib .formatter.exs mix.exs README.md GETTING_STARTED.md BACKENDS.md CUSTOM_BACKENDS.md PHOENIX.md TELEMETRY.md LICENSE)
]
end
defp docs do
[
main: "readme",
extras: [
"README.md",
"GETTING_STARTED.md",
"BACKENDS.md",
"CUSTOM_BACKENDS.md",
"PHOENIX.md",
"TELEMETRY.md"
],
source_ref: "v#{@version}",
groups_for_extras: [
Guides: [
"GETTING_STARTED.md",
"BACKENDS.md",
"CUSTOM_BACKENDS.md",
"PHOENIX.md",
"TELEMETRY.md"
]
],
groups_for_modules: [
Core: [Sftpd, Sftpd.Auth, Sftpd.Backend, Sftpd.Telemetry],
Backends: [Sftpd.Backends.S3, Sftpd.Backends.Memory],
Internal: [Sftpd.FileHandler, Sftpd.IODevice]
]
]
end
end