Class: GitJump::Utils::Output

Inherits:
Object
  • Object
show all
Defined in:
lib/git_jump/utils/output.rb

Overview

Handles formatted console output with colors and tables

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(quiet: false, verbose: false) ⇒ Output

Returns a new instance of Output.



11
12
13
14
# File 'lib/git_jump/utils/output.rb', line 11

def initialize(quiet: false, verbose: false)
  @quiet = quiet
  @verbose = verbose
end

Instance Attribute Details

#quietObject (readonly)

Returns the value of attribute quiet.



9
10
11
# File 'lib/git_jump/utils/output.rb', line 9

def quiet
  @quiet
end

#verboseObject (readonly)

Returns the value of attribute verbose.



9
10
11
# File 'lib/git_jump/utils/output.rb', line 9

def verbose
  @verbose
end

Instance Method Details

#branch_list(branches, current_branch) ⇒ Object



50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/git_jump/utils/output.rb', line 50

def branch_list(branches, current_branch)
  return if quiet || branches.empty?

  heading("Tracked Branches")

  rows = branches.map.with_index(1) do |branch, index|
    name = branch["name"]
    marker = name == current_branch ? Colors.green("") : " "
    styled_name = name == current_branch ? Colors.green(name, bold: true) : name
    last_visited = format_time(branch["last_visited_at"])

    ["#{marker} #{index}", styled_name, last_visited]
  end

  table(["#", "Branch", "Last Visited"], rows)
end

#debug(message) ⇒ Object



32
33
34
# File 'lib/git_jump/utils/output.rb', line 32

def debug(message)
  puts Colors.dim(message) if verbose
end

#error(message) ⇒ Object



20
21
22
# File 'lib/git_jump/utils/output.rb', line 20

def error(message)
  warn Colors.red("#{message}")
end

#heading(message) ⇒ Object



36
37
38
39
40
# File 'lib/git_jump/utils/output.rb', line 36

def heading(message)
  puts unless quiet
  puts Colors.cyan(message, bold: true) unless quiet
  puts Colors.dim("" * message.length) unless quiet
end

#info(message) ⇒ Object



28
29
30
# File 'lib/git_jump/utils/output.rb', line 28

def info(message)
  puts Colors.blue("#{message}") unless quiet
end

#prompt(message, _default: "N") ⇒ Object



67
68
69
70
71
72
73
# File 'lib/git_jump/utils/output.rb', line 67

def prompt(message, _default: "N")
  return true if quiet # Auto-confirm in quiet mode

  print Colors.yellow("#{message} [y/N] ")
  answer = $stdin.gets&.chomp&.downcase
  %w[y yes].include?(answer)
end

#success(message) ⇒ Object



16
17
18
# File 'lib/git_jump/utils/output.rb', line 16

def success(message)
  puts Colors.green("#{message}") unless quiet
end

#table(headers, rows) ⇒ Object



42
43
44
45
46
47
48
# File 'lib/git_jump/utils/output.rb', line 42

def table(headers, rows)
  return if quiet

  require "terminal-table" unless defined?(Terminal::Table)
  table = Terminal::Table.new(headings: headers, rows: rows)
  puts table
end

#warning(message) ⇒ Object



24
25
26
# File 'lib/git_jump/utils/output.rb', line 24

def warning(message)
  puts Colors.yellow("#{message}") unless quiet
end