Packages

A terminal UI toolkit for Elixir, in the shape of Phoenix LiveView: stateful views, tiled windows, styled cells and an IO loop that only writes when the frame changes.

Current section

Files

Jump to
atui mix.exs
Raw

mix.exs

defmodule Atui.MixProject do
  use Mix.Project

  @version "0.4.0"
  @source_url "https://github.com/iboard/atui"

  def project do
    [
      app: :atui,
      version: @version,
      elixir: "~> 1.19",
      start_permanent: Mix.env() == :prod,
      deps: deps(),
      description: description(),
      package: package(),
      docs: docs(),
      name: "Atui"
    ]
  end

  # A library: no application callback module, so adding :atui to a project
  # starts nothing on its own. The UI goes under the application's own
  # supervisor as {Atui, view: MyView}.
  def application do
    [extra_applications: [:logger]]
  end

  defp description do
    "A terminal UI toolkit for Elixir, in the shape of Phoenix LiveView: " <>
      "stateful views, tiled windows, styled cells and an IO loop that only " <>
      "writes when the frame changes."
  end

  defp package do
    [
      licenses: ["Apache-2.0"],
      links: %{"GitHub" => @source_url},
      # The demo application and the feature notes are not part of the package.
      files: ~w(lib mix.exs README.md CHANGELOG.md LICENSE .formatter.exs)
    ]
  end

  defp docs do
    [
      main: "Atui",
      source_ref: "v#{@version}",
      source_url: @source_url,
      extras: ["README.md", "CHANGELOG.md", "LICENSE"],
      groups_for_modules: [
        Runtime: [Atui, Atui.Runtime, Atui.Fetch],
        Views: [Atui.View, Atui.Panes, Atui.Popup],
        Widgets: [Atui.TextInput, Atui.TextArea],
        Drawing: [Atui.Screen, Atui.Style, Atui.Rect, Atui.Layout, Atui.Text],
        Terminal: [Atui.Terminal, Atui.Input, Atui.Key]
      ]
    ]
  end

  defp deps do
    [
      {:ex_doc, "~> 0.34", only: :dev, runtime: false}
    ]
  end
end