Skip to main content

mix.exs

defmodule GelotvBot.MixProject do
  use Mix.Project

  def project do
    [
      app: :gelotv_bot,
      version: "0.1.0",
      elixir: "~> 1.20",
      name: "GeloTVBot",
      description:
        "A supervised multi-platform chat bot dispatch library for Twitch, YouTube, and Kick style adapters.",
      source_url: source_url(),
      homepage_url: source_url(),
      docs: docs(),
      package: package(),
      start_permanent: Mix.env() == :prod,
      deps: deps()
    ]
  end

  def cli do
    [
      preferred_envs: [
        docs: :docs
      ]
    ]
  end

  # Run "mix help compile.app" to learn about applications.
  def application do
    [
      extra_applications: [:crypto, :inets, :logger, :ssl],
      mod: {GelotvBot.Application, []}
    ]
  end

  # Run "mix help deps" to learn about dependencies.
  defp deps do
    [
      {:ex_doc, "~> 0.40.3", only: [:dev, :docs], runtime: false}
    ]
  end

  defp package do
    [
      files: [
        "lib",
        ".formatter.exs",
        "mix.exs",
        "README.md",
        "LICENSE",
        "NOTICE",
        "CHANGELOG.md"
      ],
      licenses: ["Apache-2.0"],
      links: %{
        "GitHub" => source_url(),
        "Changelog" => source_url() <> "/blob/main/CHANGELOG.md",
        "Notice" => source_url() <> "/blob/main/NOTICE"
      },
      maintainers: ["GeloTV"]
    ]
  end

  defp docs do
    [
      main: "GelotvBot",
      source_ref: "v#{version()}",
      source_url: source_url(),
      extras: ["README.md", "CHANGELOG.md", "LICENSE", "NOTICE"],
      groups_for_modules: [
        Core: [
          GelotvBot,
          GelotvBot.Bot,
          GelotvBot.Command,
          GelotvBot.Message,
          GelotvBot.Target,
          GelotvBot.LiveDiscovery
        ],
        Dispatch: [
          GelotvBot.API,
          GelotvBot.Dispatcher,
          GelotvBot.RateLimiter,
          GelotvBot.RetryPolicy,
          GelotvBot.MessageValidator,
          GelotvBot.Pagination,
          GelotvBot.OAuth
        ],
        "Platform APIs": [
          GelotvBot.APIs.Twitch,
          GelotvBot.APIs.YouTube,
          GelotvBot.APIs.Kick
        ],
        Metadata: [
          GelotvBot.Metadata
        ],
        Adapters: [
          GelotvBot.Adapter,
          GelotvBot.Adapters.Twitch,
          GelotvBot.Adapters.YouTube,
          GelotvBot.Adapters.Kick,
          GelotvBot.Adapters.Test,
          GelotvBot.HTTPClient,
          GelotvBot.HTTPClient.Default
        ]
      ]
    ]
  end

  defp source_url, do: "https://github.com/gelotv/gelotv_bot"
  defp version, do: "0.1.0"
end