summaryrefslogtreecommitdiff
path: root/deps/rabbitmq_cli/lib/rabbitmq/cli/core/input.ex
blob: 5e1328be2964984fadf227bb275547d53e366d70 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
## This Source Code Form is subject to the terms of the Mozilla Public
## License, v. 2.0. If a copy of the MPL was not distributed with this
## file, You can obtain one at https://mozilla.org/MPL/2.0/.
##
## Copyright (c) 2007-2020 VMware, Inc. or its affiliates.  All rights reserved.

defmodule RabbitMQ.CLI.Core.Input do
  alias RabbitMQ.CLI.Core.Config

  def consume_single_line_string_with_prompt(prompt, opts) do
    val = case Config.output_less?(opts) do
      true  ->
        IO.read(:stdio, :line)
      false ->
        IO.puts(prompt)
        IO.read(:stdio, :line)
    end

    case val do
      :eof -> :eof
      ""   -> :eof
      s    -> String.trim(s)
    end
  end

  def consume_multiline_string() do
    val = IO.read(:stdio, :all)

    case val do
      :eof -> :eof
      ""   -> :eof
      s    -> String.trim(s)
    end
  end

  def infer_password(prompt, opts) do
    consume_single_line_string_with_prompt(prompt, opts)
  end
end