greenhat 0.2.0 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -2,7 +2,9 @@ module GreenHat
2
2
  # Root Level Shell
3
3
  module Shell
4
4
  def self.pry
5
+ # rubocop:disable Lint/Debugger
5
6
  binding.pry
7
+ # rubocop:enable Lint/Debugger
6
8
  end
7
9
 
8
10
  def self.df
@@ -34,7 +36,7 @@ module GreenHat
34
36
  file_list.each do |file|
35
37
  next if File.size(file).zero?
36
38
 
37
- puts "- Loading #{file.colorize(:green)}"
39
+ puts "- Loading #{file.pastel(:green)}"
38
40
 
39
41
  archive.things_create(file: file).setup
40
42
  end
@@ -42,14 +44,26 @@ module GreenHat
42
44
 
43
45
  def self.debug
44
46
  ENV['DEBUG'] = if ENV['DEBUG']
45
- puts "Debug #{'Off'.colorize(:red)}"
47
+ puts "GreenHat Debug Logging #{'Off'.pastel(:red)}"
46
48
  nil
47
49
  else
48
- puts "Debug #{'On'.colorize(:green)}"
50
+ puts "GreenHat Debug Logging #{'On'.pastel(:green)}"
49
51
  'true'
50
52
  end
51
53
  end
52
54
 
55
+ def self.quiet
56
+ Cli.quiet!
57
+
58
+ if Cli.quiet
59
+ puts "GreenHat Quiet Logging #{'Off'.pastel(:red)}"
60
+ nil
61
+ else
62
+ puts "GreenHat Quiet Logging #{'On'.pastel(:green)}"
63
+ 'true'
64
+ end
65
+ end
66
+
53
67
  def self.uptime
54
68
  Shell::Cat.default ['uptime']
55
69
  end
@@ -68,21 +82,21 @@ module GreenHat
68
82
 
69
83
  def self.history
70
84
  Settings.cmd_history_clean.each_with_index do |line, i|
71
- puts "#{i.to_s.ljust(3).colorize(:magenta)} #{line}"
85
+ puts "#{i.to_s.ljust(3).pastel(:magenta)} #{line}"
72
86
  end
73
87
  end
74
88
 
75
89
  def self.ls
76
- GreenHat::Cli.help
90
+ GreenHat::Cli.help(false)
77
91
  end
78
92
 
79
93
  def self.ll
80
- GreenHat::Cli.help
94
+ GreenHat::Cli.help(false)
81
95
  end
82
96
 
83
- def self.about
84
- puts "#{'GreenHat'.colorize(:green)}: #{GreenHat::VERSION.colorize(:blue)}"
85
- puts ' - https://gitlab.com/gitlab-com/support/toolbox/greenhat'.colorize(:cyan)
97
+ def self.version
98
+ puts "#{'GreenHat'.pastel(:green)}: #{GreenHat::VERSION.pastel(:blue)}"
99
+ puts ' - https://gitlab.com/gitlab-com/support/toolbox/greenhat'.pastel(:cyan)
86
100
  end
87
101
  end
88
102
  end
@@ -43,6 +43,13 @@ module GreenHat
43
43
  /dmesg/
44
44
  ]
45
45
  },
46
+ 'repmgrd/current' => {
47
+ format: :bracket_log,
48
+ log: true,
49
+ pattern: [
50
+ %r{repmgrd/current}
51
+ ]
52
+ },
46
53
  'log/syslog' => {
47
54
  format: :syslog,
48
55
  log: true,
@@ -95,6 +102,13 @@ module GreenHat
95
102
  %r{consul/current}
96
103
  ]
97
104
  },
105
+ 'sentinel/current' => {
106
+ format: :time_space,
107
+ log: true,
108
+ pattern: [
109
+ %r{sentinel/current}
110
+ ]
111
+ },
98
112
  'consul/failover_pgbouncer.log' => {
99
113
  format: :raw,
100
114
  log: true,
@@ -470,7 +484,12 @@ module GreenHat
470
484
  %r{redis/config},
471
485
  %r{redis-exporter/config},
472
486
  %r{registry/config},
473
- %r{sidekiq/config}
487
+ %r{sidekiq/config},
488
+ %r{pgbouncer/config},
489
+ %r{pgbouncer-exporter/config},
490
+ %r{repmgrd/config},
491
+ %r{sentinel/config},
492
+ %r{consul/config}
474
493
  ]
475
494
  },
476
495
  'redis/current' => {
@@ -18,9 +18,6 @@ module GreenHat
18
18
 
19
19
  result.sort.to_h
20
20
  rescue StandardError => e
21
- binding.pry
22
- # TODO: Background Logger?
23
- e.message
24
21
  LogBot.warn('JSON Parse', e.message)
25
22
  next
26
23
  end
@@ -5,10 +5,10 @@ module GreenHat
5
5
  # Console Helper
6
6
  def inspect
7
7
  [
8
- 'Thing'.colorize(:light_black),
9
- kind&.to_s&.colorize(:blue),
10
- type&.colorize(:light_yellow),
11
- name&.colorize(:cyan)
8
+ 'Thing'.pastel(:bright_black),
9
+ kind&.to_s&.pastel(:blue),
10
+ type&.pastel(:bright_yellow),
11
+ name&.pastel(:cyan)
12
12
  ].compact.join(' ')
13
13
  end
14
14
 
@@ -52,7 +52,9 @@ module GreenHat
52
52
 
53
53
  # rubocop:disable Style/SymbolProc
54
54
  def prompt_for_kind
55
+ # rubocop:disable Lint/Debugger
55
56
  binding.pry if ENV['DEBUG']
57
+ # rubocop:enable Lint/Debugger
56
58
 
57
59
  # Default to everything
58
60
  prompt_list = types.clone
@@ -61,13 +63,18 @@ module GreenHat
61
63
  json = check_oj_parse?(first_line)
62
64
 
63
65
  if json
66
+ if Settings.assume_json?
67
+ self.type = 'json'
68
+ return true
69
+ end
70
+
64
71
  prompt_list.select! do |_k, v|
65
72
  v.to_s.include? 'json'
66
73
  end
67
74
  end
68
75
 
69
- puts "Unable to determine file type for #{name.colorize(:yellow)}"
70
- puts "Use '#{'json'.colorize(:cyan)}' or '#{'raw'.colorize(:cyan)}' if there are no matches (see file_types.rb)"
76
+ puts "Unable to determine file type for #{name.pastel(:yellow)}"
77
+ puts "Use '#{'json'.pastel(:cyan)}' or '#{'raw'.pastel(:cyan)}' if there are no matches (see file_types.rb)"
71
78
 
72
79
  option = prompt.select('Wat is this?', prompt_list.keys.sort_by(&:length), filter: true)
73
80
 
@@ -7,7 +7,7 @@ module GreenHat
7
7
 
8
8
  @spin_time = Time.now
9
9
  @spinner = TTY::Spinner.new(
10
- "#{time.colorize(:light_black)} - [:spinner] :title", hide_cursor: true, success_mark: '✔'.colorize(:green)
10
+ "#{time.pastel(:bright_black)} - [:spinner] :title", hide_cursor: true, success_mark: '✔'.pastel(:green)
11
11
  )
12
12
  @spinner.update(title: title)
13
13
 
@@ -25,7 +25,7 @@ module GreenHat
25
25
  title_update = if spin_end.blank?
26
26
  title
27
27
  else
28
- "#{title} (#{spin_end.colorize(:blue)})"
28
+ "#{title} (#{spin_end.pastel(:blue)})"
29
29
  end
30
30
 
31
31
  @spinner.update(title: title_update)
@@ -33,7 +33,7 @@ module GreenHat
33
33
  end
34
34
 
35
35
  def time
36
- Time.now.strftime('%I:%M:%S').colorize(:light_black)
36
+ Time.now.strftime('%I:%M:%S').pastel(:bright_black)
37
37
  end
38
38
 
39
39
  # Replace TimeDifference with https://stackoverflow.com/a/4136485/1678507
@@ -28,7 +28,7 @@ class Thing < Teron
28
28
  field :raw_result # Flag for reading raw data
29
29
 
30
30
  def friendly_name
31
- "#{archive.friendly_name.colorize(:blue)} #{name.colorize(:green)} #{id.colorize(:black)}"
31
+ "#{archive.friendly_name.pastel(:blue)} #{name.pastel(:green)}"
32
32
  end
33
33
 
34
34
  def setup
@@ -66,7 +66,7 @@ class Thing < Teron
66
66
  end
67
67
 
68
68
  def raw_read
69
- spin_start("Read #{name.colorize(:blue)} #{size.colorize(:light_black)}")
69
+ spin_start("Read #{name.pastel(:blue)} #{size.pastel(:bright_black)}")
70
70
  self.raw_result = File.read(file).split("\n")
71
71
  rescue StandardError => e
72
72
  LogBot.fatal('Raw Read', message: e.message, backtrace: e.backtrace.first)
@@ -103,7 +103,7 @@ class Thing < Teron
103
103
  raw_read if raw_result.nil?
104
104
 
105
105
  if methods.include? formatter
106
- spin_start("Parse #{name.colorize(:blue)} #{kind.to_s.colorize(:light_black)} ")
106
+ spin_start("Parse #{name.pastel(:blue)} #{kind.to_s.pastel(:bright_black)} ")
107
107
  begin
108
108
  send(formatter)
109
109
  rescue StandardError => e
@@ -28,6 +28,10 @@ module TTY
28
28
  # THE SHIM! Strings that are too large fail to render correctly to do an empty result
29
29
  # Set the maximum table width to half the screen size. Can't be full size due to the table headers
30
30
  LogBot.debug('TTY Column Width') if ENV['DEBUG']
31
+
32
+ # TODO: Check Empty Results
33
+ return [0] if table.data.empty?
34
+
31
35
  extract_widths(table.data).map { |x| x >= TTY::Screen.width ? (TTY::Screen.width * 3 / 4) : x }
32
36
 
33
37
  else
@@ -1,3 +1,3 @@
1
1
  module GreenHat
2
- VERSION = '0.2.0'.freeze
2
+ VERSION = '0.3.0'.freeze
3
3
  end
data/lib/greenhat.rb CHANGED
@@ -1,27 +1,27 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
3
  require 'action_view'
4
+ require 'active_support'
5
+ require 'active_support/core_ext'
6
+ require 'amazing_print'
4
7
  require 'benchmark'
8
+ require 'dotenv'
5
9
  require 'find'
6
- require 'tty-prompt'
7
- require 'tty-spinner'
8
- require 'tty-table'
9
- require 'tty-pager'
10
- require 'tty-cursor'
11
- require 'tty-reader'
12
10
  require 'hash_dot'
13
11
  require 'oj'
14
- require 'slim'
15
- require 'active_support'
16
- require 'active_support/core_ext'
12
+ require 'pastel'
17
13
  require 'pry'
18
- require 'amazing_print'
19
- require 'colorize'
14
+ require 'require_all'
20
15
  require 'semantic'
16
+ require 'slim'
17
+ require 'tty-cursor'
18
+ require 'tty-pager'
21
19
  require 'tty-progressbar'
22
- require 'require_all'
20
+ require 'tty-prompt'
21
+ require 'tty-reader'
22
+ require 'tty-spinner'
23
+ require 'tty-table'
23
24
  require 'warning'
24
- require 'dotenv'
25
25
 
26
26
  # Custom Gem
27
27
  require 'teron'
@@ -49,6 +49,7 @@ require 'greenhat/archive'
49
49
  require 'greenhat/host'
50
50
  require 'greenhat/logbot'
51
51
  require 'greenhat/settings'
52
+ require 'greenhat/color'
52
53
 
53
54
  # Formatters - Loads Required Files Automatically
54
55
  require 'greenhat/thing/super_log'
@@ -65,7 +66,6 @@ require 'greenhat/thing'
65
66
  require 'greenhat/shell'
66
67
 
67
68
  # TODO: Confirm
68
- # require 'greenhat/thing/log_format'
69
69
  # require 'greenhat/host'
70
70
  # require 'greenhat/web'
71
71
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: greenhat
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Davin Walker
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-08-13 00:00:00.000000000 Z
11
+ date: 2021-09-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: amazing_print
@@ -53,49 +53,49 @@ dependencies:
53
53
  - !ruby/object:Gem::Version
54
54
  version: '5.14'
55
55
  - !ruby/object:Gem::Dependency
56
- name: rake
56
+ name: minitest-reporters
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: '13.0'
61
+ version: '1.4'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '13.0'
68
+ version: '1.4'
69
69
  - !ruby/object:Gem::Dependency
70
- name: rubocop
70
+ name: rake
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: '1.12'
75
+ version: '13.0'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: '1.12'
82
+ version: '13.0'
83
83
  - !ruby/object:Gem::Dependency
84
- name: actionview
84
+ name: rubocop
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - "~>"
88
88
  - !ruby/object:Gem::Version
89
- version: '6.1'
90
- type: :runtime
89
+ version: '1.12'
90
+ type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
- version: '6.1'
96
+ version: '1.12'
97
97
  - !ruby/object:Gem::Dependency
98
- name: activesupport
98
+ name: actionview
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - "~>"
@@ -109,19 +109,19 @@ dependencies:
109
109
  - !ruby/object:Gem::Version
110
110
  version: '6.1'
111
111
  - !ruby/object:Gem::Dependency
112
- name: colorize
112
+ name: activesupport
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
115
  - - "~>"
116
116
  - !ruby/object:Gem::Version
117
- version: '0.8'
117
+ version: '6.1'
118
118
  type: :runtime
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
122
  - - "~>"
123
123
  - !ruby/object:Gem::Version
124
- version: '0.8'
124
+ version: '6.1'
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: did_you_mean
127
127
  requirement: !ruby/object:Gem::Requirement
@@ -386,6 +386,7 @@ files:
386
386
  - bin/greenhat
387
387
  - lib/greenhat.rb
388
388
  - lib/greenhat/accessors/disk.rb
389
+ - lib/greenhat/accessors/gitlab.rb
389
390
  - lib/greenhat/accessors/logs/production.rb
390
391
  - lib/greenhat/accessors/logs/sidekiq.rb
391
392
  - lib/greenhat/accessors/memory.rb
@@ -393,25 +394,28 @@ files:
393
394
  - lib/greenhat/accessors/process.rb
394
395
  - lib/greenhat/archive.rb
395
396
  - lib/greenhat/cli.rb
397
+ - lib/greenhat/color.rb
396
398
  - lib/greenhat/host.rb
397
399
  - lib/greenhat/logbot.rb
398
400
  - lib/greenhat/pry_helpers.rb
399
401
  - lib/greenhat/settings.rb
400
402
  - lib/greenhat/shell.rb
403
+ - lib/greenhat/shell/args.rb
401
404
  - lib/greenhat/shell/cat.rb
402
405
  - lib/greenhat/shell/color_string.rb
403
406
  - lib/greenhat/shell/disk.rb
404
407
  - lib/greenhat/shell/faststats.rb
405
- - lib/greenhat/shell/filter.rb
408
+ - lib/greenhat/shell/filter_help.rb
406
409
  - lib/greenhat/shell/gitlab.rb
407
410
  - lib/greenhat/shell/help.rb
408
- - lib/greenhat/shell/helper.rb
411
+ - lib/greenhat/shell/list.rb
409
412
  - lib/greenhat/shell/log.rb
410
413
  - lib/greenhat/shell/memory.rb
411
414
  - lib/greenhat/shell/network.rb
412
415
  - lib/greenhat/shell/page.rb
413
416
  - lib/greenhat/shell/process.rb
414
417
  - lib/greenhat/shell/report.rb
418
+ - lib/greenhat/shell/shell_helper.rb
415
419
  - lib/greenhat/thing.rb
416
420
  - lib/greenhat/thing/file_types.rb
417
421
  - lib/greenhat/thing/formatters/api_json.rb