defmodule AshTui.MixProject do use Mix.Project @description "Terminal-based interactive explorer for Ash Framework applications" @source_url "https://github.com/mcass19/ash_tui" @changelog_url @source_url <> "/blob/main/CHANGELOG.md" @version "0.3.2" def project do [ app: :ash_tui, description: @description, version: @version, elixir: "~> 1.17", start_permanent: Mix.env() == :prod, elixirc_paths: elixirc_paths(Mix.env()), deps: deps(), test_coverage: [ threshold: 100, ignore_modules: [ # Two-line shell: starts the app and delegates to `AshTui.CLI`, # which is covered directly. Booting it would start a real # terminal session. Mix.Tasks.Ash.Tui, # Test fixtures — exercised by tests. AshTui.Test.TestDomain, # Auto-derived `Inspect` protocol impls for the fixture resources. Inspect.AshTui.Test.Author, Inspect.AshTui.Test.Post ] ], package: package(), name: "AshTui", homepage_url: @source_url, source_url: @source_url, docs: docs(), dialyzer: [ plt_local_path: "plts", plt_core_path: "plts/core", plt_add_apps: [:mix] ] ] end def application do [ extra_applications: [:logger] ] end defp elixirc_paths(:test), do: ["lib", "test/support"] defp elixirc_paths(_), do: ["lib"] defp deps do [ {:ash, "~> 3.27"}, {:ex_ratatui, "~> 0.10"}, # Dev {:credo, "~> 1.7", only: :dev, runtime: false}, {:ex_doc, "~> 0.40", only: :dev, runtime: false}, {:dialyxir, "~> 1.4", only: :dev, runtime: false} ] end defp package do [ licenses: ["MIT"], links: %{ "GitHub" => @source_url, "Changelog" => @changelog_url }, files: ~w(lib .formatter.exs mix.exs README.md LICENSE CHANGELOG.md CONTRIBUTING.md), keywords: [ "ash", "tui", "terminal", "explorer", "introspection", "ratatui", "ssh", "distributed" ] ] end defp docs do [ main: "readme", source_ref: "v#{@version}", extras: [ "README.md": [title: "Overview"], "CONTRIBUTING.md": [title: "Contributing"], "CHANGELOG.md": [title: "Changelog"] ], groups_for_modules: [ Core: [ AshTui, AshTui.App ], Introspection: [ AshTui.Introspection, AshTui.Introspection.DomainInfo, AshTui.Introspection.ResourceInfo, AshTui.Introspection.AttributeInfo, AshTui.Introspection.ActionInfo, AshTui.Introspection.ArgumentInfo, AshTui.Introspection.RelationshipInfo ], State: [ AshTui.State ], Rendering: [ AshTui.Views.NavPanel, AshTui.Views.AttributesTab, AshTui.Views.AttributeDetail, AshTui.Views.ActionsTab, AshTui.Views.RelationshipsTab, AshTui.Theme, AshTui.Format ], "Mix Tasks": [ Mix.Tasks.Ash.Tui ] ] ] end end