defmodule Rummage.Ecto.Mixfile do use Mix.Project @version "2.0.0" @elixir "~> 1.10" @url "https://github.com/annkissam/rummage_ecto" def project do [ app: :rummage_ecto, version: @version, elixir: @elixir, deps: deps(), build_embedded: Mix.env() == :prod, start_permanent: Mix.env() == :prod, # Test test_coverage: [tool: ExCoveralls], preferred_cli_env: [coveralls: :test], aliases: aliases(), elixirc_paths: elixirc_paths(Mix.env()), # Hex description: description(), package: package(), # Docs name: "Rummage.Ecto", docs: docs() ] end def application do [ extra_applications: [ :logger ] ] end def package do [ files: ["lib", "mix.exs", "README.md"], maintainers: ["Adi Iyengar"], licenses: ["MIT"], links: %{"Github" => @url} ] end defp deps do [ # Development Dependency {:ecto, "~> 3.0"}, {:ecto_sql, "~> 3.4"}, # Other Dependencies {:credo, "~> 1.4.0", only: [:dev, :test], runtime: false}, {:excoveralls, "~> 0.13", only: :test, runtime: false}, {:ex_doc, "~> 0.20", only: :dev, runtime: false}, {:inch_ex, "~> 2.0", only: [:dev, :test, :docs], runtime: false}, {:postgrex, ">= 0.0.0", only: :test} ] end defp description do """ A library that allows searching, sorting and paginating ecto queries """ end def docs do [ main: "Rummage.Ecto", source_url: @url, extras: ["README.md", "CHANGELOG.md", "help/nomenclature.md", "help/walkthrough.md"], source_ref: "v#{@version}" ] end defp aliases do [ "ecto.setup": ["ecto.create", "ecto.migrate"], "ecto.reset": ["ecto.drop", "ecto.setup"], test: ["ecto.setup", "test"], "test.watch.stale": &test_watch_stale/1, publish: ["hex.publish", &git_tag/1] ] end defp git_tag(_args) do System.cmd("git", ["tag", Mix.Project.config()[:version]]) System.cmd("git", ["push", "--tags"]) end defp test_watch_stale(_) do System.cmd( "sh", ["-c", "#{get_system_watcher()} lib/ test/ | mix test --stale --listen-on-stdin"], into: IO.stream(:stdio, :line) ) end # Works only for Mac and Linux defp get_system_watcher do case System.cmd("uname", []) do # For Linux systems inotify should work {"Linux\n", 0} -> "inotifywait -e modify -e create -e delete -mr" # For Macs, fswatch comes directly installed {"Darwin\n", 0} -> "fswatch" {kernel, 0} -> raise "Watcher not supported on kernel: #{kernel}" end end defp elixirc_paths(:test), do: ["lib", "priv", "test/support"] defp elixirc_paths(_), do: ["lib"] end