first
This commit is contained in:
61
safekiso-server/node_modules/snyk/dist/elixirsrc/lib/mix_project.ex
generated
vendored
Normal file
61
safekiso-server/node_modules/snyk/dist/elixirsrc/lib/mix_project.ex
generated
vendored
Normal file
@@ -0,0 +1,61 @@
|
||||
import Snyk.MixProject.Common
|
||||
|
||||
defmodule Snyk.MixProject.Mix.Project do
|
||||
def load_mix_project(""), do: error("Please provide a valid path for the project")
|
||||
def load_mix_project(path) do
|
||||
manifest = load_manifest(path)
|
||||
|
||||
apps = get_apps(manifest[:apps_path], path)
|
||||
|
||||
lock_file_name = get_lock_file_name(manifest[:lockfile])
|
||||
lock_file_path = Path.join(path, lock_file_name)
|
||||
lock_file = read_file(lock_file_path)
|
||||
parent_umbrella_manifest = case Path.dirname(lock_file_path) do
|
||||
^path -> nil
|
||||
parent_path -> load_manifest(parent_path, "parent_app")
|
||||
end
|
||||
|
||||
%{
|
||||
manifest: manifest,
|
||||
lock: lock_file,
|
||||
apps: apps,
|
||||
parent_umbrella_manifest: parent_umbrella_manifest
|
||||
}
|
||||
end
|
||||
|
||||
defp read_file(path) do
|
||||
Path.expand(path)
|
||||
|> Code.eval_file()
|
||||
end
|
||||
|
||||
defp get_lock_file_name(nil), do: get_lock_file_name("")
|
||||
defp get_lock_file_name(""), do: "mix.lock"
|
||||
defp get_lock_file_name(filename), do: filename
|
||||
|
||||
defp load_manifest(path), do: load_manifest(path, "root_app")
|
||||
defp load_manifest(path, app) do
|
||||
Mix.Project.in_project(
|
||||
String.to_atom(app),
|
||||
path,
|
||||
fn module ->
|
||||
module.project ++ [module_name: inspect(module)]
|
||||
end
|
||||
)
|
||||
end
|
||||
|
||||
defp get_apps(nil, _), do: nil
|
||||
defp get_apps(apps_path, path) do
|
||||
Path.join([path, apps_path, "/*/mix.exs"])
|
||||
|> Path.absname
|
||||
|> Path.wildcard
|
||||
|> Enum.map(fn path -> Path.dirname(path) end)
|
||||
|> Enum.reduce(
|
||||
%{},
|
||||
fn full_project_path, acc ->
|
||||
relative_project_path = Path.relative_to(full_project_path, path)
|
||||
Map.put(acc, relative_project_path, load_manifest(full_project_path, relative_project_path))
|
||||
end
|
||||
)
|
||||
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user