Current section

Files

Jump to
kvasir_dev lib kvasir mix tasks dev.ex
Raw

lib/kvasir/mix/tasks/dev.ex

defmodule Mix.Tasks.Kvasir.Dev do
use Mix.Task
@impl Mix.Task
def run(args)
def run([command | args]) do
case command do
"add" ->
add(args)
"update" ->
update(args)
_ ->
# warn: commaand
help()
end
end
def run(_), do: help()
defp add([component | opts]) do
:application.ensure_all_started(:hackney)
Kvasir.Dev.Downloader.clear(component)
p =
if c = List.first(opts) do
if(String.trim(c) != "", do: c)
end
with :ok <- Kvasir.Dev.Downloader.component(component, p) do
c = Kvasir.Dev.Downloader.commit(component)
f = Kvasir.Dev.lock()
lock = File.read!(f)
data =
lock
|> String.split("\n", trim: true)
|> Enum.map(&String.trim/1)
|> Enum.reject(&(&1 == ""))
|> Enum.reject(&String.starts_with?(&1, "#{component}:"))
|> Kernel.++(["#{component}:#{c}"])
|> Enum.sort()
File.write(f, Enum.join(data, "\n") <> "\n")
end
end
defp update(["all" | _]) do
Kvasir.Dev.lock()
|> File.read!()
|> String.split("\n", trim: true)
|> Enum.map(&String.trim/1)
|> Enum.reject(&(&1 == ""))
|> Enum.map(&List.first(String.split(&1, ":")))
|> Enum.each(&add([&1, "release/v1.0"]))
end
defp update([component | _]), do: add([component, "release/v1.0"])
defp help do
:ok
end
end