mix.exs

defmodule Cachex.Mixfile do
  use Mix.Project

  @url_docs "http://hexdocs.pm/cachex"
  @url_github "https://github.com/whitfin/cachex"

  def project do
    [
      app: :cachex,
      name: "Cachex",
      description: "Powerful in-memory key/value storage for Elixir",
      package: %{
        files: [
          "lib",
          "mix.exs",
          "LICENSE"
        ],
        licenses: [ "MIT" ],
        links: %{
          "Docs" => @url_docs,
          "GitHub" => @url_github
        },
        maintainers: [ "Isaac Whitfield" ]
      },
      version: "3.0.0",
      elixir: "~> 1.2",
      deps: deps(),
      docs: [
        source_ref: "master",
        source_url: @url_github,
        main: "getting-started",
        extra_section: "guides",
        extras: [
          "docs/cache-warming/reactive-warming.md",
          "docs/cache-warming/proactive-warming.md",
          "docs/features/action-blocks.md",
          "docs/features/cache-limits.md",
          "docs/features/custom-commands.md",
          "docs/features/disk-interaction.md",
          "docs/features/execution-hooks.md",
          "docs/features/streaming-caches.md",
          "docs/features/ttl-implementation.md",
          "docs/migrations/migrating-to-v3.md",
          "docs/migrations/migrating-to-v2.md",
          "docs/getting-started.md"
        ],
        groups_for_extras: [
          "Features": Path.wildcard("docs/features/*.md"),
          "Cache Warming": Path.wildcard("docs/cache-warming/*.md"),
          "Migration": Path.wildcard("docs/migrations/*.md")
        ]
      ],
      test_coverage: [
        tool: ExCoveralls
      ],
      preferred_cli_env: [
        "docs": :docs,
        "bench": :bench,
        "cachex": :test,
        "coveralls": :test,
        "coveralls.html": :test,
        "coveralls.travis": :test
      ],
      aliases: [
        "bench": "run benchmarks/main.exs"
      ]
    ]
  end

  # Configuration for the OTP application

  #

  # Type "mix help compile.app" for more information

  def application do
    [
      applications: [:logger, :eternal],
      mod: {Cachex.Application, []}
    ]
  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
    [
      # Production dependencies

      { :eternal, "~> 1.2" },
      { :unsafe,  "~> 1.0" },
      # Testing dependencies

      { :credo,        "~> 0.8", optional: true, only: [ :dev, :test ] },
      { :excoveralls,  "~> 0.8", optional: true, only: [ :dev, :test ] },
      # Benchmarking dependencies

      { :benchee,     "~> 0.11", optional: true, only: [ :bench ] },
      { :benchee_html, "~> 0.4", optional: true, only: [ :bench ] },
      # Documentation dependencies

      { :ex_doc, "~> 0.16", optional: true, only: [ :docs ] }
    ]
  end
end