Packages

Converts CommonMark Markdown to ANSI-escaped terminal output. Renders headings, lists, code blocks, inline formatting, links, and more as styled text for terminal emulators.

Current section

Files

Jump to
marcli mix.exs
Raw

mix.exs

defmodule Marcli.MixProject do
  use Mix.Project

  @app :marcli
  @version "0.5.0"
  @source_url "https://github.com/Oeditus/marcli"

  def project do
    [
      app: @app,
      version: @version,
      elixir: "~> 1.17",
      start_permanent: Mix.env() == :prod,
      consolidate_protocols: Mix.env() not in [:dev, :test],
      deps: deps(),
      description: description(),
      package: package(),
      docs: docs(),
      aliases: aliases(),
      test_coverage: [tool: ExCoveralls],
      dialyzer: [
        plt_file: {:no_warn, ".dialyzer/dialyzer.plt"},
        plt_add_deps: :app_tree,
        plt_core_path: ".dialyzer",
        list_unused_filters: true
      ],
      name: "Marcli",
      source_url: @source_url
    ]
  end

  def application do
    [
      extra_applications: [:logger]
    ]
  end

  def cli do
    [
      preferred_envs: [
        coveralls: :test,
        "coveralls.detail": :test,
        "coveralls.post": :test,
        "coveralls.html": :test,
        "coveralls.json": :test
      ]
    ]
  end

  defp deps do
    [
      {:mdex_lmml, ">= 0.0.0"},
      {:mdex_multiline_cells, ">= 0.0.0"},
      {:mdex, "~> 0.11"},
      {:color, "~> 0.3", optional: true},
      {:makeup, "~> 1.2", optional: true},

      # Dev / Test
      {:makeup_elixir, "~> 1.0", only: [:dev, :test]},
      {:ex_doc, "~> 0.34", only: :dev, runtime: false},
      {:excoveralls, "~> 0.18", only: :test, runtime: false},
      {:credo, "~> 1.7", only: [:dev, :test], runtime: false},
      {:dialyxir, "~> 1.4", only: [:dev, :test], runtime: false}
    ]
  end

  defp aliases do
    [
      quality: ["format", "credo --strict", "dialyzer"],
      "quality.ci": [
        "format --check-formatted",
        "credo --strict",
        "dialyzer"
      ]
    ]
  end

  defp description do
    """
    Converts CommonMark Markdown to ANSI-escaped terminal output.
    Renders headings, lists, code blocks, inline formatting, links,
    and more as styled text for terminal emulators.
    """
  end

  defp package do
    [
      name: @app,
      files:
        ~w(lib stuff/img/logo-48x48.png stuff/img/screenshot.png .formatter.exs mix.exs README.md LICENSE),
      licenses: ["MIT"],
      maintainers: ["Aleksei Matiushkin"],
      links: %{
        "GitHub" => @source_url,
        "Documentation" => "https://hexdocs.pm/#{@app}"
      }
    ]
  end

  defp docs do
    [
      main: "readme",
      logo: "stuff/img/logo-48x48.png",
      assets: %{"stuff/img" => "assets"},
      extras: ["README.md"],
      source_url: @source_url,
      source_ref: "v#{@version}",
      formatters: ["html", "epub"],
      authors: ["Aleksei Matiushkin"],
      canonical: "https://hexdocs.pm/#{@app}"
    ]
  end
end