greenhat 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/greenhat/accessors/disk.rb +13 -13
- data/lib/greenhat/accessors/gitlab.rb +75 -0
- data/lib/greenhat/accessors/memory.rb +10 -10
- data/lib/greenhat/accessors/process.rb +4 -0
- data/lib/greenhat/cli.rb +127 -52
- data/lib/greenhat/color.rb +27 -0
- data/lib/greenhat/logbot.rb +9 -9
- data/lib/greenhat/settings.rb +27 -7
- data/lib/greenhat/shell/args.rb +146 -0
- data/lib/greenhat/shell/cat.rb +25 -73
- data/lib/greenhat/shell/color_string.rb +8 -8
- data/lib/greenhat/shell/disk.rb +31 -4
- data/lib/greenhat/shell/faststats.rb +79 -59
- data/lib/greenhat/shell/{filter.rb → filter_help.rb} +48 -33
- data/lib/greenhat/shell/gitlab.rb +61 -2
- data/lib/greenhat/shell/help.rb +96 -15
- data/lib/greenhat/shell/list.rb +46 -0
- data/lib/greenhat/shell/log.rb +77 -104
- data/lib/greenhat/shell/page.rb +11 -5
- data/lib/greenhat/shell/process.rb +29 -17
- data/lib/greenhat/shell/report.rb +27 -43
- data/lib/greenhat/shell/{helper.rb → shell_helper.rb} +204 -187
- data/lib/greenhat/shell.rb +23 -9
- data/lib/greenhat/thing/file_types.rb +20 -1
- data/lib/greenhat/thing/formatters/json_shellwords.rb +0 -3
- data/lib/greenhat/thing/helpers.rb +4 -4
- data/lib/greenhat/thing/kind.rb +9 -2
- data/lib/greenhat/thing/spinner.rb +3 -3
- data/lib/greenhat/thing.rb +3 -3
- data/lib/greenhat/tty/columns.rb +4 -0
- data/lib/greenhat/version.rb +1 -1
- data/lib/greenhat.rb +14 -14
- metadata +22 -18
data/lib/greenhat/shell.rb
CHANGED
@@ -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.
|
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'.
|
47
|
+
puts "GreenHat Debug Logging #{'Off'.pastel(:red)}"
|
46
48
|
nil
|
47
49
|
else
|
48
|
-
puts "Debug #{'On'.
|
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).
|
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.
|
84
|
-
puts "#{'GreenHat'.
|
85
|
-
puts ' - https://gitlab.com/gitlab-com/support/toolbox/greenhat'.
|
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' => {
|
@@ -5,10 +5,10 @@ module GreenHat
|
|
5
5
|
# Console Helper
|
6
6
|
def inspect
|
7
7
|
[
|
8
|
-
'Thing'.
|
9
|
-
kind&.to_s&.
|
10
|
-
type&.
|
11
|
-
name&.
|
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
|
|
data/lib/greenhat/thing/kind.rb
CHANGED
@@ -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.
|
70
|
-
puts "Use '#{'json'.
|
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.
|
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.
|
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').
|
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
|
data/lib/greenhat/thing.rb
CHANGED
@@ -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.
|
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.
|
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.
|
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
|
data/lib/greenhat/tty/columns.rb
CHANGED
@@ -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
|
data/lib/greenhat/version.rb
CHANGED
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 '
|
15
|
-
require 'active_support'
|
16
|
-
require 'active_support/core_ext'
|
12
|
+
require 'pastel'
|
17
13
|
require 'pry'
|
18
|
-
require '
|
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 '
|
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.
|
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-
|
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:
|
56
|
+
name: minitest-reporters
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
59
|
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
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: '
|
68
|
+
version: '1.4'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
70
|
+
name: rake
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
73
|
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: '
|
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: '
|
82
|
+
version: '13.0'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
84
|
+
name: rubocop
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
87
|
- - "~>"
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: '
|
90
|
-
type: :
|
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: '
|
96
|
+
version: '1.12'
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
|
-
name:
|
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:
|
112
|
+
name: activesupport
|
113
113
|
requirement: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
115
|
- - "~>"
|
116
116
|
- !ruby/object:Gem::Version
|
117
|
-
version: '
|
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: '
|
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/
|
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/
|
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
|