fangorn/ex_git_objectstore
public
ref:main
# Copyright 2026 Cole Christensen
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
defmodule ExGitObjectstore.MixProject do
use Mix.Project
@source_url "https://github.com/notifd/ex_git_objectstore"
@version System.get_env("VERSION", "0.0.0-dev")
def project do
[
app: :ex_git_objectstore,
version: @version,
elixir: "~> 1.18",
start_permanent: Mix.env() == :prod,
deps: deps(),
elixirc_paths: elixirc_paths(Mix.env()),
package: package(),
description: "Pure Elixir git object store with pluggable storage backends",
source_url: @source_url,
homepage_url: @source_url,
docs: docs(),
dialyzer: [
plt_file: {:no_warn, "priv/plts/dialyzer.plt"},
plt_add_apps: [:mix]
],
test_coverage: [summary: [threshold: 50]]
]
end
defp package do
[
licenses: ["Apache-2.0"],
links: %{"GitHub" => @source_url},
files: ~w(lib LICENSE NOTICE README.md CHANGELOG.md mix.exs .formatter.exs)
]
end
defp docs do
[
main: "readme",
extras: ["README.md", "CHANGELOG.md", "LICENSE", "NOTICE"],
source_url: @source_url,
groups_for_modules: [
"Object Types": [
ExGitObjectstore.Object.Blob,
ExGitObjectstore.Object.Commit,
ExGitObjectstore.Object.Tree,
ExGitObjectstore.Object.Tag
],
"Storage Backends": [
ExGitObjectstore.Storage,
ExGitObjectstore.Storage.Filesystem,
ExGitObjectstore.Storage.Memory,
ExGitObjectstore.Storage.S3
],
"Pack Format": [
ExGitObjectstore.Pack.Reader,
ExGitObjectstore.Pack.Writer,
ExGitObjectstore.Pack.Index,
ExGitObjectstore.Pack.Delta
],
"Git Protocol": [
ExGitObjectstore.Protocol.PktLine,
ExGitObjectstore.Protocol.UploadPack,
ExGitObjectstore.Protocol.ReceivePack
]
]
]
end
def application do
[
extra_applications: [:logger, :crypto]
]
end
defp elixirc_paths(:test), do: ["lib", "test/support"]
defp elixirc_paths(_), do: ["lib"]
defp deps do
[
{:ex_aws, "~> 2.5"},
{:ex_aws_s3, "~> 2.5"},
{:sweet_xml, "~> 0.7"},
{:hackney, "~> 1.18"},
{:jason, "~> 1.4"},
{:telemetry, "~> 1.0"},
{:ex_doc, "~> 0.34", only: :dev, runtime: false},
{:dialyxir, "~> 1.4", only: [:dev, :test], runtime: false},
{:credo, "~> 1.7", only: [:dev, :test], runtime: false},
{:plug, "~> 1.16", only: :test},
{:bandit, "~> 1.5", only: :test},
{:stream_data, "~> 1.1", only: :test}
]
end
end