defmodule Mix.Tasks.Geometrics.Install do
@shortdoc "Installs necessary components for Geometrics to work"
@moduledoc """
Installs supplementary files which may be helpful for adding opentelemetry
to an application, including a default docker compose file which runs an
opentelemetry collector.
"""
use Mix.Task
def run(_) do
cp_opentelemetry_files()
end
defp cp_opentelemetry_files() do
if System.get_env("HONEYCOMB_WRITE_KEY") && System.get_env("HONEYCOMB_DATASET") do
Mix.Shell.IO.info("Copying opentelemetry-collector files to working directory")
cp_from_priv("opentelemetry", "docker-compose.yml")
cp_from_priv("opentelemetry", "otel-collector-config.yml")
Mix.Shell.IO.info(
"To start up the collector in your local development environment, simply run `docker-compose up`"
)
else
Mix.Shell.IO.info(
"Please set HONEYCOMB_WRITE_KEY and HONEYCOMB_DATASET in your environment"
)
end
end
defp cp_from_priv(dir, file) do
src = [:code.priv_dir(:geometrics), dir, file] |> Path.join()
dest = [File.cwd!(), file] |> Path.join()
Mix.Shell.IO.info("✅ #{dest}")
File.cp(src, dest)
end
end