Class: Babushka::Prompt
- Inherits:
-
Object
show all
- Extended by:
- LogHelpers
- Defined in:
- lib/babushka/prompt.rb
Defined Under Namespace
Modules: Helpers
Class Method Summary
(collapse)
Methods included from LogHelpers
debug, log, log_block, log_error, log_ok, log_verbose, log_warn
Class Method Details
+ (Object) confirm(message, opts = {}, &block)
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
# File 'lib/babushka/prompt.rb', line 25
def confirm message, opts = {}, &block
prompter = (!opts[:always_ask] && respond_to?(:var)) ? :var : :get_value
answer = send(prompter, message,
:message => message,
:confirmation => true,
:default => (opts[:default] || 'y')
).starts_with?('y')
if block.nil?
answer
elsif answer
block.call
elsif opts[:otherwise]
log opts[:otherwise]
end
end
|
+ (Object) get_ip(message, opts = {})
42
43
44
45
46
47
48
|
# File 'lib/babushka/prompt.rb', line 42
def get_ip message, opts = {}
get_value(message, opts.merge(
:retry => "That's not an IP, like '10.0.1.1'."
)) {|value|
IP.new(value).valid?
}
end
|
+ (Object) get_ip_range(message, opts = {})
50
51
52
53
54
55
56
|
# File 'lib/babushka/prompt.rb', line 50
def get_ip_range message, opts = {}
get_value(message, opts.merge(
:retry => "That's not an IP range, like '10.0.1.x'."
)) {|value|
IPRange.new(value).valid?
}
end
|
+ (Object) get_path(message, opts = {})
58
59
60
61
62
63
64
|
# File 'lib/babushka/prompt.rb', line 58
def get_path message, opts = {}
get_value(message, opts.merge(
:retry => "Doesn't exist, or not a directory."
)) {|value|
(value || '').p.dir?
}
end
|
+ (Object) get_value(message, opts = {}, &block)
66
67
68
69
70
71
72
73
74
75
76
77
|
# File 'lib/babushka/prompt.rb', line 66
def get_value message, opts = {}, &block
if opts[:choices] && opts[:choice_descriptions]
raise ArgumentError, "You can't use the :choices and :choice_descriptions options together."
elsif opts[:choice_descriptions]
opts[:choices] = opts[:choice_descriptions].keys
end
if opts[:choices] && opts[:choices].any? {|c| !c.is_a?(String) }
raise ArgumentError, "Choices must be passed as strings."
end
opts.defaults! :prompt => '? '
prompt_and_read_value prompt_message(message, opts), opts.merge(:ask => !Base.task.opt(:defaults)), &block
end
|