defmodule Ecspanse.MixProject do use Mix.Project @version "0.3.0" @source_url "https://github.com/iacobson/ecspanse" def project do [ app: :ecspanse, version: @version, elixir: "~> 1.15", start_permanent: Mix.env() == :prod, consolidate_protocols: Mix.env() != :test, elixirc_paths: elixirc_paths(Mix.env()), deps: deps(), # hex description: description(), package: package(), # docs name: "ECSpanse", docs: docs() ] end # Run "mix help compile.app" to learn about applications. def application do [ extra_applications: [:logger, :crypto] ] end defp elixirc_paths(:test), do: ["lib", "test/support"] defp elixirc_paths(_), do: ["lib"] # Run "mix help deps" to learn about dependencies. defp deps do [ {:elixir_uuid, "~> 1.2"}, {:ex2ms, "~> 1.6"}, {:memoize, "~> 1.4"}, {:credo, "~> 1.7", only: [:dev, :test], runtime: false}, {:ex_doc, "~> 0.30.0", only: :dev, runtime: false} ] end defp docs do [ main: "Ecspanse", source_ref: "v#{@version}", logo: "guides/images/logo.png", extra_section: "GUIDES", source_url: @source_url, extras: [ "guides/getting_started.md", "guides/tutorial.md", "CHANGELOG.md" ], groups_for_docs: [ Generic: &(&1[:group] == :generic), Entities: &(&1[:group] == :entities), Relationships: &(&1[:group] == :relationships), Components: &(&1[:group] == :components), Resources: &(&1[:group] == :resources), Tags: &(&1[:group] == :tags) ], nest_modules_by_prefix: [ Ecspanse.Entity, Ecspanse.Component, Ecspanse.System, Ecspanse.Resource, Ecspanse.Event, Ecspanse.Query, Ecspanse.Command, Ecspanse.Template ], groups_for_modules: [ API: [ Ecspanse, Ecspanse.Data, Ecspanse.Frame, Ecspanse.Server, Ecspanse.Server.State, Ecspanse.TestServer ], Entities: [Ecspanse.Entity], Components: [ Ecspanse.Component, Ecspanse.Component.Children, Ecspanse.Component.Parents ], Systems: [ Ecspanse.System, Ecspanse.System.WithEventSubscriptions, Ecspanse.System.WithoutEventSubscriptions, Ecspanse.System.CreateDefaultResources, Ecspanse.System.Timer, Ecspanse.System.TrackFPS, Ecspanse.System.Debug ], Resources: [Ecspanse.Resource, Ecspanse.Resource.State, Ecspanse.Resource.FPS], Events: [ Ecspanse.Event, Ecspanse.Event.ComponentCreated, Ecspanse.Event.ComponentUpdated, Ecspanse.Event.ComponentDeleted, Ecspanse.Event.ResourceCreated, Ecspanse.Event.ResourceUpdated, Ecspanse.Event.ResourceDeleted ], Queries: [Ecspanse.Query], Commands: [Ecspanse.Command], Templates: [ Ecspanse.Template.Component, Ecspanse.Template.Component.Timer, Ecspanse.Template.Event, Ecspanse.Template.Event.Timer ] ] ] end defp package() do [ maintainers: ["Dorian Iacobescu"], licenses: ["Apache-2.0"], links: %{"GitHub" => @source_url} ] end def description do """ Ecspanse is an Entity Component System (ECS) library for Elixir, offering a suite of features including: flexible queries with multiple filters, dynamic bidirectional relationships, versatile tagging capabilities, system event subscriptions, or asynchronous system execution. """ end end