Module: Geordi::Interaction

Defined in:
lib/geordi/interaction.rb

Class Method Summary collapse

Class Method Details

.announce(text) ⇒ Object

Start your command by ‘announce`-ing what you’re about to do



9
10
11
12
# File 'lib/geordi/interaction.rb', line 9

def announce(text)
  message = "\n# #{text}"
  puts "\e[4;34m#{message}\e[0m" # blue underline
end

.fail(text) ⇒ Object

Exit execution with status code 1 and give a short note what happened, e.g. “Failed” or “Cancelled”



36
37
38
39
40
# File 'lib/geordi/interaction.rb', line 36

def fail(text)
  message = "\nx #{text}"
  puts "\e[31m#{message}\e[0m" # red
  exit(1)
end

.note(text) ⇒ Object

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).



17
18
19
# File 'lib/geordi/interaction.rb', line 17

def note(text)
  puts '> ' + text
end

.note_cmd(text) ⇒ Object

Like ‘note`, but pink. Use to print (bash) commands. Also see Util.run!



29
30
31
32
# File 'lib/geordi/interaction.rb', line 29

def note_cmd(text)
  message = "> #{text}"
  puts "\e[35m#{message}\e[0m" # pink
end

.prompt(text, default = nil, agreement_regex = nil) ⇒ Object

Returns the user’s input. If agreement_regex is given, returns whether the input matches the regex.



51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/geordi/interaction.rb', line 51

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
rescue Interrupt
  fail 'Cancelled.'
end

.success(text) ⇒ Object

When you’re done, inform the user with a ‘success` and a short message. It should be a sentence (i.e. ending with [.!?]).



44
45
46
47
# File 'lib/geordi/interaction.rb', line 44

def success(text)
  message = "\n> #{text}"
  puts "\e[32m#{message}\e[0m" # green
end

.warn(text) ⇒ Object

Like ‘note`, but yellow. Use to warn the user.



22
23
24
25
# File 'lib/geordi/interaction.rb', line 22

def warn(text)
  message = "> #{text}"
  puts "\e[33m#{message}\e[0m" # yellow
end