Current section

Files

Jump to
mix_audit lib mix_audit.ex
Raw

lib/mix_audit.ex

defmodule MixAudit do
require Logger
def scan(args) do
{opts, _, _} = OptionParser.parse(args, switches: [format: :string, path: :string])
path = Keyword.get(opts, :path, ".")
format = Keyword.get(opts, :format, "human")
# Synchronize and get security advisories
advisories = MixAudit.Repo.advisories()
# Get project dependencies
dependencies = MixAudit.Project.dependencies(path)
# Generate a security report
report = MixAudit.Audit.report(dependencies, advisories)
# Format the report according to the specified format
formatted_report = MixAudit.Formatting.format(report, format)
# Output the result
IO.puts(String.trim(formatted_report))
unless report.pass do
System.halt(1)
end
end
end