defmodule Icon.MixProject do use Mix.Project @version "0.2.2" @name "ICON 2.0 SDK" @description "Basic API for interacting with ICON 2.0 blockchain" @app :icon @root "https://github.com/alexdesousa/icon" def project do [ name: @name, app: @app, version: @version, elixir: "~> 1.12", elixirc_paths: elixirc_paths(Mix.env()), start_permanent: Mix.env() == :prod, dialyzer: dialyzer(), test_coverage: [tool: ExCoveralls], preferred_cli_env: [ coveralls: :test, "coveralls.detail": :test, "coveralls.html": :test, "coveralls.github": :test ], package: package(), deps: deps(), docs: docs() ] end ############# # Application def application do [ mod: {Icon.Application, []}, extra_applications: [:logger] ] end def elixirc_paths(:test), do: ["lib", "test/support"] def elixirc_paths(_), do: ["lib"] defp deps do [ {:finch, "~> 0.12"}, {:jason, "~> 1.3"}, {:curvy, "~> 0.3"}, {:websockex, "~> 0.4"}, {:yggdrasil, "~> 6.0"}, {:skogsra, "~> 2.4"}, {:bypass, "~> 2.1", only: :test}, {:plug_cowboy, "~> 2.5", only: :test}, {:ex_doc, "~> 0.28", only: :dev, runtime: false}, {:credo, "~> 1.6", only: [:dev, :test], runtime: false}, {:dialyxir, "~> 1.1", only: [:dev, :test], runtime: false}, {:excoveralls, "~> 0.14", only: :test, runtime: false} ] end defp dialyzer do [ plt_file: {:no_warn, "priv/plts/#{@app}.plt"} ] end ######### # Package defp package do [ description: @description, files: ["lib", "mix.exs", "README.md", "CHANGELOG.md"], maintainers: ["Alexander de Sousa"], licenses: ["MIT"], links: %{ "Changelog" => "#{@root}/blob/master/CHANGELOG.md", "Github" => @root, "Sponsor" => "https://github.com/sponsors/alexdesousa" } ] end ############### # Documentation defp docs do [ main: "readme", extras: [ "README.md", "CHANGELOG.md" ], source_url: @root, source_ref: "v#{@version}", groups_for_modules: groups_for_modules(), nest_modules_by_prefix: nest_modules_by_prefix() ] end defp groups_for_modules do [ "ICON 2.0 SDK": [ Icon, Icon.Config ], "JSON RPC v3": [ Icon.RPC.Identity, Icon.RPC.Request, Icon.RPC.Request.Goloop ], "ICON 2.0 WebSocket": [ Yggdrasil.Adapter.Icon, Yggdrasil.Config.Icon, Yggdrasil.Publisher.Adapter.Icon, Yggdrasil.Subscriber.Adapter.Icon, Yggdrasil.Subscriber.Adapter.Icon.Message, Yggdrasil.Subscriber.Adapter.Icon.WebSocket ], "Schema Behaviours": [ Icon.Schema, Icon.Schema.Type, Icon.Schema.Error ], "Schema Primitive Types": [ Icon.Schema.Types.Address, Icon.Schema.Types.Any, Icon.Schema.Types.BinaryData, Icon.Schema.Types.Boolean, Icon.Schema.Types.EOA, Icon.Schema.Types.EventLog, Icon.Schema.Types.Hash, Icon.Schema.Types.Integer, Icon.Schema.Types.Loop, Icon.Schema.Types.SCORE, Icon.Schema.Types.Signature, Icon.Schema.Types.String, Icon.Schema.Types.Timestamp ], "Schema Complex Types": [ Icon.Schema.Types.Block, Icon.Schema.Types.Block.Tick, Icon.Schema.Types.Transaction, Icon.Schema.Types.Transaction.Result, Icon.Schema.Types.Transaction.Status ] ] end defp nest_modules_by_prefix do [ Icon.Schema, Icon.RPC ] end end