Class: CapistranoMulticonfigParallel::Cursor
- Inherits:
-
Object
- Object
- CapistranoMulticonfigParallel::Cursor
show all
- Extended by:
- ApplicationHelper
- Defined in:
- lib/capistrano_multiconfig_parallel/classes/cursor.rb
Overview
Class Method Summary
collapse
action_confirmed?, check_hash_set, check_numeric, fetch_parsed_string, fetch_remaining_arguments, find_loaded_gem, find_remaining_args, get_question_details, msg_for_stdin?, msg_for_task?, multi_fetch_argv, parse_task_string, percent_of, regex_last_match, setup_command_line_standard, strip_characters_from_string, value_is_array?, verify_array_of_strings, verify_empty_options, warn_array_without_strings, wrap_string
Methods included from CoreHelper
app_debug_enabled?, ask_confirm, ask_stdout_confirmation, check_terminal_tty, debug_websocket?, error_filtered?, execute_with_rescue, find_worker_log, force_confirmation, format_error, log_error, log_output_error, log_to_file, print_to_log_file, rescue_error, rescue_interrupt, setup_filename_logger, setup_logger_formatter, show_warning, websocket_config, websocket_server_config
check_file, config_file, create_log_file, custom_commands, default_internal_config, default_internal_configuration_params, detect_root, enable_main_log_file, fail_capfile_not_found, fetch_default_internal_config, find_config_type, find_env_multi_cap_root, find_file_in_directory, internal_config_directory, internal_config_file, log_directory, main_log_file, multi_level_prop, pathname_is_root?, pwd_directory, pwd_parent_dir, root, setup_default_configuration_types, sliced_default_config, try_detect_capfile
Class Method Details
.display_on_screen(string, options = {}) ⇒ Object
9
10
11
12
|
# File 'lib/capistrano_multiconfig_parallel/classes/cursor.rb', line 9
def display_on_screen(string, options = {})
options = options.is_a?(Hash) ? options.stringify_keys : {}
handle_string_display(string, options)
end
|
.display_string_at_position(position, string) ⇒ Object
86
87
88
89
90
91
|
# File 'lib/capistrano_multiconfig_parallel/classes/cursor.rb', line 86
def display_string_at_position(position, string)
go_to_position(position)
erase_from_current_line_to_bottom
go_to_position(position)
puts string
end
|
.dynamic_size_stty ⇒ Object
57
58
59
60
|
# File 'lib/capistrano_multiconfig_parallel/classes/cursor.rb', line 57
def dynamic_size_stty
size = `stty size 2>/dev/null`
size.present? ? size : nil
end
|
.dynamic_size_tput ⇒ Object
62
63
64
65
66
|
# File 'lib/capistrano_multiconfig_parallel/classes/cursor.rb', line 62
def dynamic_size_tput
lines `tput lines 2>/dev/null`
cols = `tput cols 2>/dev/null`
lines.present? && cols.present? ? "#{lines} #{cols}" : nil
end
|
.erase_from_current_line_to_bottom ⇒ Object
93
94
95
|
# File 'lib/capistrano_multiconfig_parallel/classes/cursor.rb', line 93
def erase_from_current_line_to_bottom
puts "\e[J"
end
|
.erase_screen ⇒ Object
97
98
99
|
# File 'lib/capistrano_multiconfig_parallel/classes/cursor.rb', line 97
def erase_screen
puts("\e[2J")
end
|
.fetch_cursor_position(table_size, position) ⇒ Object
25
26
27
28
29
30
31
32
33
34
35
|
# File 'lib/capistrano_multiconfig_parallel/classes/cursor.rb', line 25
def fetch_cursor_position(table_size, position)
final_position = position
terminal_rows = fetch_terminal_size
screen_erased = refetch_position?(table_size, terminal_rows, position)
if screen_erased
move_to_home! if position.present?
final_position = fetch_position
terminal_rows = fetch_terminal_size
end
[final_position, terminal_rows, screen_erased]
end
|
.fetch_position ⇒ Object
44
45
46
47
48
49
50
51
52
53
54
55
|
# File 'lib/capistrano_multiconfig_parallel/classes/cursor.rb', line 44
def fetch_position
res = ''
$stdin.raw do |stdin|
$stdout << "\e[6n"
$stdout.flush
while (line = stdin.getc) != 'R'
res << line if line
end
end
position = res.match(/(?<row>\d+);(?<column>\d+)/)
{ row: position[:row].to_i, column: position[:column].to_i }
end
|
.fetch_terminal_size ⇒ Object
19
20
21
22
23
|
# File 'lib/capistrano_multiconfig_parallel/classes/cursor.rb', line 19
def fetch_terminal_size
size = (dynamic_size_stty || dynamic_size_tput || `echo $LINES $COLUMNS`)
size = strip_characters_from_string(size).split(' ')
{ rows: size[0].to_i, columns: size[1].to_i }
end
|
.go_to_position(position) ⇒ Object
101
102
103
|
# File 'lib/capistrano_multiconfig_parallel/classes/cursor.rb', line 101
def go_to_position(position)
position_cursor(position[:row], position[:column])
end
|
.handle_string_display(string, options) ⇒ Object
68
69
70
71
72
73
74
75
76
77
78
79
|
# File 'lib/capistrano_multiconfig_parallel/classes/cursor.rb', line 68
def handle_string_display(string, options)
position = options.fetch('position', nil)
table_size = options.fetch('table_size', 0)
if options.fetch('clear_screen', false).to_s == 'true'
terminal_clear_display(string)
[0, 0, false]
else
new_position, terminal_rows, screen_erased = fetch_cursor_position(table_size, position)
display_string_at_position(new_position, string)
[new_position, terminal_rows, screen_erased]
end
end
|
.move_to_home!(row = 0, column = 1) ⇒ Object
14
15
16
17
|
# File 'lib/capistrano_multiconfig_parallel/classes/cursor.rb', line 14
def move_to_home!(row = 0, column = 1)
erase_screen
position_cursor(row, column)
end
|
.position_cursor(line, column) ⇒ Object
105
106
107
|
# File 'lib/capistrano_multiconfig_parallel/classes/cursor.rb', line 105
def position_cursor(line, column)
puts("\e[#{line};#{column}H")
end
|
.refetch_position?(table_size, terminal_size, position) ⇒ Boolean
37
38
39
40
41
42
|
# File 'lib/capistrano_multiconfig_parallel/classes/cursor.rb', line 37
def refetch_position?(table_size, terminal_size, position)
return true if position.blank?
terminal_rows = terminal_size[:rows]
row_position = position[:row]
terminal_rows.zero? || (terminal_rows.nonzero? && row_position >= (terminal_rows / 2)) || (table_size >= (terminal_rows - row_position))
end
|
.terminal_clear ⇒ Object
109
110
111
|
# File 'lib/capistrano_multiconfig_parallel/classes/cursor.rb', line 109
def terminal_clear
system('cls') || system('clear') || puts("\e[H\e[2J")
end
|
.terminal_clear_display(string) ⇒ Object
81
82
83
84
|
# File 'lib/capistrano_multiconfig_parallel/classes/cursor.rb', line 81
def terminal_clear_display(string)
terminal_clear
puts string
end
|