defmodule Apero.MixProject do use Mix.Project def project do [ app: :apero, version: "1.0.0", elixir: "~> 1.19", start_permanent: Mix.env() == :prod, deps: deps(), name: "Apero", description: "Comprehensive utility library for Elixir — file operations (VFS), Git, Docker/Podman, cryptography, env files, config files, OS detection, processes, and package management.", source_url: "https://github.com/Lorenzo-SF/apero", homepage_url: "https://github.com/Lorenzo-SF/apero", package: [ name: :apero, licenses: ["MIT"], links: %{"GitHub" => "https://github.com/Lorenzo-SF/apero"}, maintainers: ["Lorenzo Sánchez"] ], docs: docs(), aliases: aliases(), dialyzer: dialyzer_config(), test_coverage: [tool: ExCoveralls, threshold: 80] ] end def cli do [ preferred_envs: [ coveralls: :test, "coveralls.detail": :test, "coveralls.post": :test, "coveralls.html": :test ] ] end def application do [ mod: {Apero.Application, []}, extra_applications: [:logger, :runtime_tools, :crypto, :file_system] ] end defp deps do [ {:credo, "~> 1.7", only: [:dev, :test], runtime: false}, {:excoveralls, "~> 0.18", only: :test}, {:ex_doc, "~> 0.34", only: :dev, runtime: false}, {:dialyxir, ">= 1.0.0", only: [:dev, :test], runtime: false}, {:jason, "~> 1.4"}, {:req, "~> 0.5.10"}, {:mime, "~> 2.0"}, {:file_system, "~> 1.0"}, {:yaml_elixir, "~> 2.9", optional: true}, {:toml, "~> 0.7", optional: true} ] end defp docs do [ main: "readme", extras: ["README.md", "README_ES.md", "LICENSE.md"], groups_for_modules: [ Core: [Apero, Apero.Application, Apero.Cache, Apero.Cache.Adapter, Apero.Cache.Ets], "File & Path": [ Apero.VFS, Apero.VFS.IO, Apero.VFS.Path, Apero.VFS.Tree, Apero.VFS.Watcher, Apero.Compress ], "Git & VCS": [Apero.Git], Containers: [Apero.Docker], Security: [Apero.Crypto], Environment: [Apero.Env, Apero.Conf], System: [Apero.OS, Apero.Proc, Apero.Pkg] ], source_url: "https://github.com/Lorenzo-SF/apero", homepage_url: "https://github.com/Lorenzo-SF/apero" ] end defp dialyzer_config do [ plt_file: {:no_warn, "priv/plts/apero"}, plt_core_path: "priv/plts/core", plt_add_apps: [:mix], flags: [:error_handling, :no_opaque, :no_underspecs], ignore_warnings: ".dialyzer-ignore-warnings" ] end defp aliases do [ qa: [ "format", "compile", "dialyzer", "test --cover" ] ] end end