defmodule Kvasir.Dev do @external_resource lock = Enum.find( [ Path.join(File.cwd!(), "../../.kvasir"), Path.join(File.cwd!(), ".kvasir"), Path.join(__DIR__, "../../../../.kvasir"), Path.join(__DIR__, "../../.kvasir") ], &File.exists?/1 ) data = File.read!(lock) :application.ensure_all_started(:hackney) if data |> String.split("\n", trim: true) |> Enum.map(&String.trim/1) |> Enum.reject(&(&1 == "")) |> Enum.map(fn line -> case String.split(line, ":") do [component] -> {component, "release/v1.0"} [component, commit] -> {component, commit} end end) |> Enum.sort_by(fn {k, _} -> Enum.find_index(~W(core agent), &(&1 == k)) || 9_999 end) |> Enum.map(fn {component, commit} -> Kvasir.Dev.Downloader.component(component, commit) end) |> Enum.any?(&(&1 != :noop)) do # alias Mix.Tasks.Deps.{Compile, Get} # Get.run([]) # Compile.run([]) :ok end def lock, do: unquote(lock) end