Packages
timber
2.4.5
3.1.2
3.1.1
3.1.0
3.0.0
3.0.0-alpha.3
3.0.0-alpha.2
3.0.0-alpha.1
2.8.4
2.8.3
2.8.2
2.8.1
2.8.0
2.7.0
2.6.1
2.6.0
2.5.6
2.5.5
2.5.4
2.5.3
2.5.2
2.5.1
2.5.0
2.4.5
2.4.4
2.4.3
2.4.2
2.4.1
2.4.0
2.3.4
2.3.3
2.3.1
2.3.0
2.2.1
2.2.0
2.1.8
2.1.7
2.1.6
2.1.5
2.1.4
2.1.3
2.1.2
2.1.1
2.1.0
2.0.2
2.0.1
2.0.0
2.0.0-rc7
2.0.0-rc6
2.0.0-rc5
2.0.0-rc4
2.0.0-rc3
2.0.0-rc2
2.0.0-rc1
1.1.18
1.1.17
1.1.16
1.1.15
1.1.14
1.1.13
1.1.12
1.1.11
1.1.10
1.1.9
1.1.8
1.1.7
1.1.6
1.1.5
1.1.4
1.1.3
1.1.2
1.1.1
1.1.0
1.0.16
1.0.15
1.0.14
1.0.13
1.0.12
1.0.11
1.0.10
1.0.9
1.0.8
1.0.7
1.0.6
1.0.5
1.0.4
1.0.3
1.0.2
1.0.1
1.0.0
0.4.7
0.4.6
0.4.5
0.4.4
0.4.3
0.4.2
0.4.1
0.4.0
0.3.2
0.3.1
0.3.0
0.2.3
0.2.2
0.2.1
0.2.0
0.1.5
0.1.4
0.1.3
0.1.2
0.1.1
0.1.0
🌲 Great Elixir Logging Made Easy. Official Timber.io Integration.
Current section
Files
Jump to
Current section
Files
lib/mix/tasks/timber/install/io_helper.ex
defmodule Mix.Tasks.Timber.Install.IOHelper do
@moduledoc false
alias Mix.Tasks.Timber.Install.{API, Config}
@nos ["n", "N", "No"]
@yeses ["y", "Y", "Yes"]
def ask(prompt, api) do
API.event!(api, :waiting_for_input, %{prompt: prompt})
case Config.io_client().gets("#{prompt}: ") do
value when is_binary(value) ->
input = String.trim(value)
if String.length(input) <= 0 do
puts("Uh oh, we didn't receive an answer :(", :red)
ask(prompt, api)
else
API.event!(api, :received_input, %{prompt: prompt, value: input})
input
end
:eof -> raise("Error getting user input: end of file reached")
{:error, reason} -> raise("Error gettin guser input: #{inspect(reason)}")
end
end
def ask_yes_no(prompt, api) do
case ask(prompt <> " (y/n)", api) do
v when v in @yeses -> :yes
v when v in @nos -> :no
v ->
puts("#{inspect(v)} is not a valid option. Please try again.\n", :red)
ask_yes_no(prompt, api)
end
end
def colorize(message, color) do
IO.ANSI.format([color, message])
end
def puts(message), do: Config.io_client().puts(message)
def puts(message, color) do
colorize(message, color)
|> Config.io_client().puts()
end
def write(message) do
Config.io_client().write(message)
end
def write(message, color) do
colorize(message, color)
|> Config.io_client().write()
end
end