defmodule Pillar.MixProject do use Mix.Project @source_url "https://github.com/balance-platform/pillar" @version "0.40.0" def project do [ app: :pillar, name: "Pillar", aliases: aliases(), version: @version, elixir: "~> 1.15", start_permanent: Mix.env() == :prod, deps: deps(), test_coverage: [tool: ExCoveralls], description: description(), package: package(), preferred_cli_env: [ coveralls: :test, "coveralls.detail": :test, "coveralls.post": :test, "coveralls.html": :test ], dialyzer: [ plt_add_deps: :transitive ], homepage_url: @source_url, docs: docs() ] end def application do [ extra_applications: [] ] end defp deps do [ {:jason, ">= 1.0.0"}, {:tesla, ">= 1.4.0"}, {:mint, ">= 1.4.0"}, {:castore, ">= 0.1.0"}, {:poolboy, "~> 1.5"}, {:decimal, ">= 1.0.0"}, {:tzdata, "~> 1.1", only: [:dev, :test]}, {:credo, "~> 1.1", only: [:dev, :test], runtime: false}, {:ex_doc, ">= 0.21.0", only: [:dev], runtime: false}, {:excoveralls, ">= 0.12.2", only: [:test], runtime: false} ] end defp description do """ Elixir client for ClickHouse, a fast open-source Online Analytical Processing (OLAP) database management system. """ end defp package do [ # This option is only needed when you don't want to use the OTP application name name: "pillar", # These are the default files included in the package files: ~w(lib .formatter.exs mix.exs README* stuff/*), licenses: ["MIT"], links: %{"GitHub" => "https://github.com/balance-platform/pillar"} ] end defp aliases do [ test: ["format --check-formatted", "test"], check_code: ["credo", "format", "dialyzer"] ] end defp docs do [ main: "readme", source_ref: "v#{@version}", source_url: @source_url, # Additional metadata authors: [ "Dmitry Shpagin", "Maintainer balance-platform/pillar", "Aleksei Matiushkin", "Contributors from balance-platform/pillar", "Aleksey Redkin", "Contributors from balance-platform/pillar" ], # Document Organization extras: [ "README.md": [title: "Overview"], "stuff/guides/getting_started.md": [title: "Getting Started"], "stuff/guides/connection_pool.md": [title: "Connection Pool"], "stuff/guides/migrations.md": [title: "Migrations"], "stuff/guides/bulk_inserts.md": [title: "Bulk Insert Strategies"], "stuff/advanced/custom_types.md": [title: "Custom Type Conversions"], "stuff/advanced/http_adapters.md": [title: "HTTP Adapters"], "stuff/troubleshooting.md": [title: "Troubleshooting"] ], # Document Groups for Navigation groups_for_extras: [ Guides: ~r/guides\//, "Advanced Usage": ~r/advanced\//, Troubleshooting: ~r/troubleshooting/ ], # Module Organization groups_for_modules: [ Core: [ Pillar, Pillar.Connection ], "Query Building & Execution": [ Pillar.QueryBuilder, Pillar.ResponseParser ], "Bulk Operations": [ Pillar.BulkInsertBuffer ], Migrations: [ Pillar.Migrations.Generator, Pillar.MigrationsMacro ], "HTTP Client": [ Pillar.HttpClient.Adapter, Pillar.HttpClient.Response, Pillar.HttpClient.TransportError ], "Type Conversion": [ Pillar.TypeConvert.ToClickhouse, Pillar.TypeConvert.ToClickhouseJson, Pillar.TypeConvert.ToElixir ] ], # Skip warnings for undefined references skip_undefined_reference_warnings_on: ["CHANGELOG.md"], # Format specific options formatters: ["html"], # Before closing HTML tag in head before_closing_head_tag: &before_closing_head_tag/1 ] end # Add custom JavaScript or CSS if needed defp before_closing_head_tag(:html) do """ """ end defp before_closing_head_tag(_), do: "" end