28 lines
737 B
Elixir
28 lines
737 B
Elixir
defmodule Mix.Tasks.SetupGleam do
|
|
@shortdoc "Installs mix_gleam archive if not already installed"
|
|
|
|
@moduledoc false
|
|
use Mix.Task
|
|
|
|
def run(_) do
|
|
if archive_installed?() do
|
|
Mix.shell().info("mix_gleam archive already installed")
|
|
else
|
|
Mix.shell().info("Installing mix_gleam archive...")
|
|
# Use System.cmd to avoid Mix dependency issues
|
|
{_, 0} = System.cmd("mix", ["archive.install", "hex", "mix_gleam", "--force"])
|
|
end
|
|
end
|
|
|
|
defp archive_installed? do
|
|
archives_path = Path.join([Mix.Utils.mix_home(), "archives"])
|
|
|
|
if File.exists?(archives_path) do
|
|
archives_path
|
|
|> File.ls!()
|
|
|> Enum.any?(&String.starts_with?(&1, "mix_gleam"))
|
|
else
|
|
false
|
|
end
|
|
end
|
|
end
|