defmodule Genex.MixProject do use Mix.Project @version "1.0.1-beta" @url "https://www.github.com/seanmor5/genex" @maintainers ["Sean Moriarity"] def project do [ name: "Genex", app: :genex, version: @version, elixir: "~> 1.9", elixirc_paths: elixirc_paths(Mix.env()), package: package(), source_url: @url, build_embedded: Mix.env() == :prod, start_permanent: Mix.env() == :prod, maintainers: @maintainers, homepage_url: @url, description: description(), docs: docs(), deps: deps(), test_coverage: [tool: ExCoveralls], preferred_cli_env: [ coveralls: :test, "coveralls.detail": :test, "coveralls.post": :test, "coveralls.html": :test ] ] end defp elixirc_paths(:test), do: ["lib", "test/support"] defp elixirc_paths(_), do: ["lib"] def application do [ extra_applications: [:table_rex] ] end def docs do [ source_ref: "v#{@version}", extra_section: "guides", formatters: ["html", "epub"], groups_for_modules: groups_for_modules(), extras: extras(), groups_for_extras: groups_for_extras() ] end defp extras do [] end defp groups_for_extras do [ Introduction: Path.wildcard("guides/introduction/*.md"), Operators: Path.wildcard("guides/operators/*.md"), Evolutions: Path.wildcard("guides/evolutions/*.md"), Support: Path.wildcard("guides/support/*.md"), Tutorials: Path.wildcard("guides/tutorials/*.md") ] end defp groups_for_modules do [ "Genetic Operators": [ Genex.Tools.Crossover, Genex.Tools.Migration, Genex.Tools.Mutation, Genex.Tools.Selection ], "Solution Representations": [ Genex.Tools.Datatype, Genex.Tools.Genotype ], Evolutions: [ Genex.Evolution, Genex.Evolution.Coevolution, Genex.Evolution.GenerateUpdate, Genex.Evolution.MuCommaLambda, Genex.Evolution.MuPlusLambda, Genex.Evolution.Simple ], Benchmarks: [ Genex.Tools.Benchmarks.Binary, Genex.Tools.Benchmarks.MultiObjectiveContinuous, Genex.Tools.Benchmarks.SingleObjectiveContinuous, Genex.Tools.Benchmarks.SymbolicRegression ], "Evaluation Tools": [ Genex.Tools.Evaluation, Genex.Tools.Evaluation.Indicator, Genex.Tools.Evaluation.Penalty ], Support: [ Genex.Support.Checkpoint, Genex.Support.Genealogy, Genex.Support.HallOfFame, Genex.Support.Logbook ], Structures: [ Genex.Types.Chromosome, Genex.Types.Community, Genex.Types.Population ], Visualizations: [ Genex.Visualizer ] ] end defp deps do [ {:credo, "~> 1.0.0", only: [:dev, :test], runtime: false}, {:ex_doc, "~> 0.21", only: :dev, runtime: false}, {:excoveralls, "~> 0.10", only: :test}, {:table_rex, "~> 2.0.0"}, {:benchee, "~> 1.0"}, {:libgraph, "~> 0.13.0"}, {:statistics, "~> 0.6.2"} ] end defp description do "Genex makes it easy to write Evolutionary Algorithms in Elixir." end defp package do [ maintainers: @maintainers, name: "genex", licenses: ["Apache-2.0"], links: %{"GitHub" => "http://www.github.com/seanmor5/genex"} ] end end