defmodule Bento.Mixfile do
  use Mix.Project

  @version File.read!("VERSION") |> String.trim()

  def project do
    [
      app: :bento,
      version: @version,
      elixir: "~> 1.4",
      description: description(),
      consolidate_protocols: Mix.env() not in [:dev, :test],
      test_coverage: [summary: [threshold: 85]],
      deps: deps(),
      package: package(),
      docs: docs(),
      dialyzer: [remove_defaults: [:unknown]]
    ]
  end

  # Configuration for the OTP application
  #
  # Type "mix help compile.app" for more information
  def application do
    [extra_applications: [:logger]]
  end

  defp description do
    """
    An incredibly fast, pure Elixir Bencoding library.
    """
  end

  # Dependencies can be Hex packages:
  #
  #   {:mydep, "~> 0.3.0"}
  #
  # Or git/path repositories:
  #
  #   {:mydep, git: "https://github.com/elixir-lang/mydep.git", tag: "0.1.0"}
  #
  # Type "mix help deps" for more examples and options
  defp deps do
    [
      {:dialyxir, "~> 1.2", only: :dev, runtime: false},
      {:ex_doc, "~> 0.27", only: :dev, runtime: false},
      {:credo, "~> 1.6", only: [:dev, :test], runtime: false},
      {:benchfella, "~> 0.3", only: :bench},
      {:bencode, github: "gausby/bencode", only: :bench},
      {:bencodex, github: "patrickgombert/Bencodex", only: :bench},
      {:bencoder, github: "alehander42/bencoder", only: :bench}
    ]
  end

  defp docs do
    [
      name: "Bento",
      main: "readme",
      version: @version,
      source_url: "https://github.com/folz/bento",
      source_ref: "v#{@version}",
      extras: ["README.md", "LICENSE"],
      groups_for_modules: [
        # Bento,
        Codec: [Bento.Encoder, Bento.Decoder, Bento.Parser],
        Metainfo: [
          Bento.Metainfo,
          Bento.Metainfo.Torrent,
          Bento.Metainfo.SingleFile,
          Bento.Metainfo.MultiFile
        ]
      ]
    ]
  end

  defp package do
    [
      files: ~w(lib mix.exs README.md LICENSE VERSION),
      maintainers: ["Rodney Folz", "Zheng Junyi"],
      licenses: ["MPL-2.0"],
      links: %{GitHub: "https://github.com/folz/bento"}
    ]
  end
end
