defmodule ExMidi.MixProject do use Mix.Project @app :ex_midi @version "0.1.0" @source_url "https://github.com/manhvu/ex_midi" def project do [ app: @app, name: "#{@app}", version: @version, description: "Elixir MIDI libary. Message construction, binary encode/decode, Standard MIDI File read/write, SYX support, and streaming parser.", elixir: "~> 1.19", start_permanent: Mix.env() == :prod, source_url: @source_url, homepage_url: @source_url, aliases: aliases(), deps: deps(), dialyzer: [plt_add_apps: [:mix]], package: [ files: ~w(lib .formatter.exs mix.exs README* LICENSE*), links: %{"GitHub" => @source_url}, licenses: ["Apache-2.0"] ], test_coverage: [summary: [threshold: 60]], elixirc_paths: elixirc_paths(Mix.env()), docs: docs() ] end def cli do [preferred_envs: [test: :test]] end defp elixirc_paths(:test), do: ["lib", "test/support"] defp elixirc_paths(_), do: ["lib"] def application do [ extra_applications: [:logger] ] end defp docs do [ main: "ExMidi", extras: ["README.md"], groups_for_modules: [ "Core API": [ ExMidi, ExMidi.MidiMsg, ExMidi.MidiMessage, ExMidi.MidiBin ], "File & Parser": [ ExMidi.MidiFile, ExMidi.MidiParser, ExMidi.MidiSyx ], Utilities: [ ExMidi.MidiUtil, ExMidi.MidiLib ] ] ] end defp deps do [ {:ex_doc, "~> 0.40", only: :dev, runtime: false}, {:dialyxir, "~> 1.3", only: [:dev], runtime: false}, {:credo, "~> 1.7", only: [:dev, :test], runtime: false} ] end defp aliases do [ setup: ["deps.get"], quality: ["format --check-formatted", "credo --strict", "dialyzer"] ] end end