-
Notifications
You must be signed in to change notification settings - Fork 16
/
interaction.rb
63 lines (52 loc) · 1.75 KB
/
interaction.rb
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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# Use the methods in this file to communicate with the user
#
module Geordi
module Interaction
module_function
# Start your command by `announce`-ing what you're about to do
def announce(text)
message = "\n# #{text}"
puts "\e[4;34m#{message}\e[0m" # blue underline
end
# Any meta information, i.e. hints, comments, infos or explanations should
# be printed with `note`.
# Please do not use it for command output (data, file contents, lists etc).
def note(text)
puts '> ' + text
end
# Like `note`, but yellow. Use to warn the user.
def warn(text)
message = "> #{text}"
puts "\e[33m#{message}\e[0m" # yellow
end
# Like `note`, but pink. Use to print (bash) commands.
# Also see Util.run!
def note_cmd(text)
message = "> #{text}"
puts "\e[35m#{message}\e[0m" # pink
end
# Exit execution with status code 1 and give a short note what happened,
# e.g. "Failed" or "Cancelled"
def fail(text)
message = "\nx #{text}"
puts "\e[31m#{message}\e[0m" # red
exit(1)
end
# When you're done, inform the user with a `success` and a short message. It
# should be a sentence (i.e. ending with [.!?]).
def success(text)
message = "\n> #{text}"
puts "\e[32m#{message}\e[0m" # green
end
# Returns the user's input.
# If agreement_regex is given, returns whether the input matches the regex.
def prompt(text, default = nil, agreement_regex = nil)
message = "#{text} "
message << "[#{default}] " if default
print "\e[36m#{message}\e[0m" # cyan
input = $stdin.gets.strip
input = default if input.empty? && default
agreement_regex ? !!(input =~ agreement_regex) : input
end
end
end