Class: CapistranoMulticonfigParallel::InteractiveMenu

Inherits:
Object
  • Object
show all
Defined in:
lib/capistrano_multiconfig_parallel/multi_app_helpers/interactive_menu.rb

Overview

methods used for the interactive menu where are listed all aplications

Instance Method Summary collapse

Instance Method Details

#confirm_option_selectedObject



21
22
23
24
# File 'lib/capistrano_multiconfig_parallel/multi_app_helpers/interactive_menu.rb', line 21

def confirm_option_selected
  print 'Enter a comma-separated list of option numbers or one single option number (again to uncheck, ENTER when done): '
  $stdin.gets.squeeze(' ').strip
end

#handle_menu_option(msg, option, choices, applications) ⇒ Object



46
47
48
49
50
51
52
53
54
55
56
57
58
59
# File 'lib/capistrano_multiconfig_parallel/multi_app_helpers/interactive_menu.rb', line 46

def handle_menu_option(msg, option, choices, applications)
  arr_in = option.split(',')
  arr_in.each_with_index do |number_option, _index|
    num = number_option.to_i
    if /^[0-9]+/.match(num.to_s) && ((num.to_i > 0 && num.to_i <= applications.size))
      num -= 1
      msg += "#{applications[num]} was #{choices[num].present? ? 'un' : '' }checked\n"
      choices[num] = choices[num].blank? ? '+' : ' '
    else
      msg = "Invalid option: #{num}\n"
      next
    end
  end
end


37
38
39
40
41
42
43
44
# File 'lib/capistrano_multiconfig_parallel/multi_app_helpers/interactive_menu.rb', line 37

def print_all_websites_available_options(applications, msg, choices)
  puts 'Available options:'
  applications.each_with_index do |option, index|
    puts "#{(index + 1)} #{choices[index].present? ? "#{choices[index]}" : ''}) #{option} "
  end
  puts "\n#{msg}" if msg.present?
  true
end


26
27
28
29
30
31
32
33
34
35
# File 'lib/capistrano_multiconfig_parallel/multi_app_helpers/interactive_menu.rb', line 26

def print_menu_choices(msg, choices, applications)
  while print_all_websites_available_options(applications, msg, choices) && (option = confirm_option_selected).present?
    if /^[0-9,]+/.match(option)
      handle_menu_option(msg, option, choices, applications)
    else
      msg = "Invalid option: #{option}\n  "
      next
    end
  end
end

#show_all_websites_interactive_menu(applications) ⇒ Object



4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# File 'lib/capistrano_multiconfig_parallel/multi_app_helpers/interactive_menu.rb', line 4

def show_all_websites_interactive_menu(applications)
  msg = ''
  choices = []
  print_menu_choices(msg, choices, applications)
  print "\nYou selected"
  msg = ' nothing'
  result = ''
  applications.each_with_index do |option_name, index|
    next unless choices[index].present?
    print(" #{option_name}")
    msg = ''
    result += "#{option_name},"
  end
  print "#{msg}\n"
  result
end