lib/mix/tasks/scan.ex
# Copyright (C) 2020 by the Georgia Tech Research Institute (GTRI)
# This software may be modified and distributed under the terms of
# the BSD 3-Clause license. See the LICENSE file for details.
defmodule Mix.Tasks.Lei.Scan do
use Mix.Task
@shortdoc "Run LowEndInsight scan against a local project"
@moduledoc ~S"""
This is used to run a LowEndInsight scanner against a project.
#Usage
```
mix lei.scan
```
This will return a basic list of reports in JSON format. LowEndInsight
will scan the `mix.exs` file for the list of dependencies, enumerating
through them and fetching the source repo URL from the Hex.pm API. Then
the scanner passes that URL to LowEndInsight which does a temporary clone
to perform its analysis of each dependency.
"""
def run(args) do
Mix.Task.run("app.start")
cond do
length(args) == 0 ->
ScannerModule.scan(".")
|> Mix.shell().info()
length(args) == 1 ->
dir = List.first(args)
case File.exists?(dir) do
false ->
"Invalid path"
|> Mix.shell().info()
true ->
{:ok, repo} = GitModule.get_repo(dir)
repo.path
|> ScannerModule.scan()
|> Mix.shell().info()
end
end
end
end