lib/sobelow/io.ex

defmodule Sobelow.IO do
  @moduledoc """
  IO helpers. Mostly mirror Mix.Shell.IO, but Mix will not always be available
  to Sobelow.
  """
  def error(message) do
    IO.puts(:stderr, IO.ANSI.format([:red, :bright, message]))
  end

  def yes?(message) do
    answer = IO.gets(message <> " [Yn] ")
    is_binary(answer) and String.trim(answer) in ["", "y", "Y", "yes", "YES", "Yes"]
  end

  def info(message) do
    IO.puts(IO.ANSI.format(message))
  end
end