# SPDX-License-Identifier: BSD-3-Clause # SPDX-FileCopyrightText: 2019 Bram Verburg # SPDX-FileCopyrightText: 2025 Erlang Ecosystem Foundation defmodule SBoM.MixProject do use Mix.Project @version "0.8.0-beta.1" @source_url "https://github.com/erlef/mix_sbom" def project do [ app: :sbom, version: @version, # MIX.SCM.delete available from 1.16.2 elixir: "~> 1.16 and >= 1.16.2", start_permanent: Mix.env() == :prod, build_embedded: true, elixirc_paths: elixirc_paths(Mix.env()), deps: deps(), archives: archives(), name: "SBoM", description: description(), package: package(), docs: docs(), aliases: aliases(), releases: releases(), escript: escript(), source_url: @source_url, test_ignore_filters: [~r/test\/fixtures/], test_coverage: [ tool: ExCoveralls ] ] end # Run "mix help compile.app" to learn about applications. def application do [ mod: {SBoM.Application, []}, extra_applications: [:mix, :xmerl, :logger], included_applications: [:hex] ] end def cli do [ default_target: :local, preferred_targets: [ release: :standalone ], preferred_envs: [ test_property: :test, coveralls: :test, "coveralls.detail": :test, "coveralls.html": :test, "coveralls.json": :test, "coveralls.post": :test, "coveralls.xml": :test ] ] end defp escript do [ main_module: SBoM.Escript, name: "mix_sbom" ] end defp releases do [ mix_sbom: [ steps: [:assemble, &Burrito.wrap/1], burrito: [ targets: [ Linux_X64: [os: :linux, cpu: :x86_64], Linux_ARM64: [os: :linux, cpu: :aarch64], macOS_X64: [os: :darwin, cpu: :x86_64], macOS_ARM64: [os: :darwin, cpu: :aarch64], Windows_X64: [os: :windows, cpu: :x86_64] # Not currently supported by Burrito # Windows_ARM64: [os: :windows, cpu: :aarch64] ] ] ] ] end defp aliases do [ test_property: "test --exclude test --include property" ] end defp elixirc_paths(:test), do: ["lib", "test/support"] defp elixirc_paths(_env), do: ["lib"] # Run "mix help deps" to learn about dependencies. defp deps do # styler:sort [ {:burrito, "~> 1.0", targets: [:standalone]}, {:credo, "~> 1.0", only: [:dev], runtime: false}, {:dialyxir, "~> 1.0", only: [:dev], runtime: false}, {:doctest_formatter, "~> 0.4.0", only: [:dev, :test], runtime: false}, {:ex_doc, ">= 0.0.0", only: [:dev], runtime: false}, {:excoveralls, "~> 0.5", only: [:test], runtime: false}, {:hex_core, "~> 0.12.0"}, {:jason, "~> 1.4", optional: true}, {:optimus, "~> 0.5.1"}, {:protobuf, "~> 0.15.0"}, {:purl, "~> 0.3.0"}, {:stream_data, "~> 1.2", only: [:test]}, {:styler, "~> 1.1", only: [:dev, :test], runtime: false} ] end defp archives do [ {:hex, "~> 2.3"} ] end defp description do "Mix task to generate a Software Bill-of-Materials (SBoM) in CycloneDX format" end defp package do [ maintainers: ["Erlang Ecosystem Foundation"], links: %{ "GitHub" => @source_url, "Releases" => @source_url <> "/releases", "Issues" => @source_url <> "/issues" }, licenses: [ # Main License "BSD-3-Clause", # Generated Code "CC0-1.0", # Appropriated Code from protobuf libary in # lib/sbom/cyclonedx/json/encoder.ex "MIT", "Apache-2.0" ] ] end defp docs do [ main: "SBoM", source_ref: "v#{@version}" ] end end