defmodule Increase.MixProject do use Mix.Project @source_url "https://github.com/iamkanishka/increase" @version "1.0.0" def project do [ app: :increase, version: @version, elixir: "~> 1.18", start_permanent: Mix.env() == :prod, deps: deps(), description: description(), package: package(), name: "Increase", source_url: @source_url, docs: docs(), elixirc_paths: elixirc_paths(Mix.env()), test_coverage: [tool: ExCoveralls], preferred_cli_env: [ coveralls: :test, "coveralls.detail": :test, "coveralls.post": :test, "coveralls.html": :test, dialyzer: :test ], dialyzer: [ plt_file: {:no_warn, "priv/plts/dialyzer.plt"}, plt_add_apps: [:mix], flags: [:error_handling, :unknown] ], aliases: aliases() ] end def application do [ extra_applications: [:logger] ] end defp elixirc_paths(:test), do: ["lib", "test/support"] defp elixirc_paths(_), do: ["lib"] defp deps do [ {:req, "~> 0.5"}, {:jason, "~> 1.4"}, {:telemetry, "~> 1.0"}, {:plug, "~> 1.0", only: :test}, {:ex_doc, "~> 0.34", only: :dev, runtime: false}, {:credo, "~> 1.7", only: [:dev, :test], runtime: false}, {:dialyxir, "~> 1.4", only: [:dev, :test], runtime: false}, {:excoveralls, "~> 0.18", only: :test}, {:mix_audit, "~> 2.1", only: [:dev, :test], runtime: false} ] end defp description do "An idiomatic Elixir client for the Increase API (https://increase.com) -- " <> "modern bank infrastructure for storing, moving, and reconciling money." end defp package do [ licenses: ["MIT"], links: %{"GitHub" => @source_url}, files: ~w(lib mix.exs README.md LICENSE CHANGELOG.md) ] end defp docs do [ main: "readme", extras: ["README.md", "CHANGELOG.md", "LICENSE"], source_ref: "v#{@version}", source_url: @source_url, nest_modules_by_prefix: resource_module_prefixes(), groups_for_modules: [ "Getting started": [ Increase, Increase.Client, Increase.Error, Increase.Page, Increase.Webhook, Increase.Decode ], Simulations: ~r/^Increase\.Simulations\./, Resources: ~r/^Increase\.(?!Client$|Error$|Page$|Webhook$|Decode$|Simulations(\.|$))[A-Za-z]+(\..+)?$/ ] ] end # Every Increase. module name, used so ExDoc nests that # resource's struct submodules (Increase.Accounts.Account and so on) # under it in the sidebar instead of listing 90+ modules flat. defp resource_module_prefixes do ~w( ACHPrenotifications ACHTransfers AccountNumbers AccountStatements AccountTransfers Accounts BeneficialOwners CardDisputes CardPayments CardPurchaseSupplements CardPushTransfers CardTokens CardValidations Cards CheckDeposits CheckTransfers DeclinedTransactions DigitalCardProfiles DigitalWalletTokens Entities EntityOnboardingSessions EventSubscriptions Events Exports ExternalAccounts FednowTransfers FileLinks Files Groups InboundACHTransfers InboundCheckDeposits InboundFednowTransfers InboundMailItems InboundRealTimePaymentsTransfers InboundWireDrawdownRequests InboundWireTransfers IntrafiAccountEnrollments IntrafiBalances IntrafiExclusions LockboxAddresses LockboxRecipients OAuthApplications OAuthConnections OAuthTokens PendingTransactions PhysicalCardProfiles PhysicalCards Programs RealTimeDecisions RealTimePaymentsTransfers RoutingNumbers SupplementalDocuments SwiftTransfers Transactions WireDrawdownRequests WireTransfers ) |> Enum.map(&Module.concat(Increase, &1)) end defp aliases do [ setup: ["deps.get", "dialyzer --plt"], check: ["format --check-formatted", "credo --strict", "dialyzer", "deps.audit", "test"], "test.coverage": ["coveralls.html"] ] end end