greenhat 0.3.4 → 0.5.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/bin/greenhat +2 -6
- data/lib/greenhat/accessors/disk.rb +1 -3
- data/lib/greenhat/accessors/gitlab.rb +7 -2
- data/lib/greenhat/accessors/memory.rb +1 -1
- data/lib/greenhat/archive.rb +19 -8
- data/lib/greenhat/cli.rb +35 -135
- data/lib/greenhat/entrypoint.rb +170 -0
- data/lib/greenhat/host.rb +25 -37
- data/lib/greenhat/settings.rb +33 -5
- data/lib/greenhat/shell/args.rb +22 -9
- data/lib/greenhat/shell/faststats.rb +23 -3
- data/lib/greenhat/shell/field_helper.rb +1 -1
- data/lib/greenhat/shell/filter_help.rb +217 -162
- data/lib/greenhat/shell/gitlab.rb +1 -0
- data/lib/greenhat/shell/log.rb +150 -25
- data/lib/greenhat/shell/markdown.rb +21 -25
- data/lib/greenhat/shell/old_search_helper.rb +54 -0
- data/lib/greenhat/shell/page.rb +1 -1
- data/lib/greenhat/shell/pipe.rb +31 -0
- data/lib/greenhat/shell/platform.rb +28 -0
- data/lib/greenhat/shell/query.rb +378 -0
- data/lib/greenhat/shell/report.rb +76 -24
- data/lib/greenhat/shell/shell_helper.rb +42 -393
- data/lib/greenhat/shell.rb +19 -4
- data/lib/greenhat/thing/file_types.rb +51 -1
- data/lib/greenhat/thing/formatters/api_json.rb +4 -2
- data/lib/greenhat/thing/formatters/bracket_log.rb +1 -1
- data/lib/greenhat/thing/formatters/colon_split_strip.rb +2 -2
- data/lib/greenhat/thing/formatters/dotenv.rb +1 -1
- data/lib/greenhat/thing/formatters/format.rb +0 -11
- data/lib/greenhat/thing/formatters/free_m.rb +2 -2
- data/lib/greenhat/thing/formatters/json.rb +43 -15
- data/lib/greenhat/thing/formatters/json_shellwords.rb +3 -2
- data/lib/greenhat/thing/formatters/kube_json.rb +3 -2
- data/lib/greenhat/thing/formatters/multiline_json.rb +1 -1
- data/lib/greenhat/thing/formatters/nginx.rb +11 -3
- data/lib/greenhat/thing/formatters/table.rb +3 -3
- data/lib/greenhat/thing/formatters/time_space.rb +0 -16
- data/lib/greenhat/thing/helpers.rb +12 -11
- data/lib/greenhat/thing/info_format.rb +4 -4
- data/lib/greenhat/thing/kind.rb +5 -0
- data/lib/greenhat/thing/super_log.rb +0 -101
- data/lib/greenhat/thing.rb +31 -25
- data/lib/greenhat/version.rb +1 -1
- data/lib/greenhat/views/api.slim +55 -0
- data/lib/greenhat/views/chart.slim +42 -0
- data/lib/greenhat/views/chart_template.slim +31 -0
- data/lib/greenhat/views/chartkick.js +21 -0
- data/lib/greenhat/views/css.slim +47 -0
- data/lib/greenhat/views/gitaly.slim +53 -0
- data/lib/greenhat/views/headers.slim +16 -0
- data/lib/greenhat/views/index-old.slim +51 -0
- data/lib/greenhat/views/index.slim +14 -14
- data/lib/greenhat/views/info.slim +17 -18
- data/lib/greenhat/views/production.slim +55 -0
- data/lib/greenhat/views/sidekiq.slim +55 -0
- data/lib/greenhat/views/time.slim +63 -0
- data/lib/greenhat/views/workhorse.slim +16 -0
- data/lib/greenhat/web/api.rb +94 -0
- data/lib/greenhat/web/chartkick_shim.rb +14 -0
- data/lib/greenhat/web/faststats.rb +44 -0
- data/lib/greenhat/web/gitaly.rb +65 -0
- data/lib/greenhat/web/helpers.rb +198 -0
- data/lib/greenhat/web/production.rb +104 -0
- data/lib/greenhat/web/sidekiq.rb +73 -0
- data/lib/greenhat/web/stats_helpers.rb +74 -0
- data/lib/greenhat/web/time.rb +36 -0
- data/lib/greenhat/web/workhorse.rb +43 -0
- data/lib/greenhat/web.rb +63 -19
- data/lib/greenhat.rb +2 -0
- metadata +74 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 98d1acd7b3c698127214711199399e78d7b72f4762d8beb575fb2ac1d3e2ae1b
|
4
|
+
data.tar.gz: 011d2f2e27b278a06f87605d13809f3472b5223f39937e6fed55ecc28476ea00
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2b253023196cc698fc9022455e1a43e6add8fae2e63512e946fb207619e7e29c83783e9b9a265e1f77ce3dcbcb81be270b7bb3896a0822c6bad06c51dec8571f
|
7
|
+
data.tar.gz: 850d05cc4ea5d95e53e289c4781232af8719286c9b3c1165cf9afeac25bf19122a79249bc290ddad9cc4b00767d4c5396052fe5c7e9c43b9b7742f9c15eb1c7f
|
data/bin/greenhat
CHANGED
@@ -1,12 +1,8 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
2
|
-
|
1
|
+
#!/usr/bin/env -S RUBY_GC_OLDMALLOC_LIMIT_MAX=600000000 RUBY_GC_OLDMALLOC_LIMIT=256000000 RUBY_GC_MALLOC_LIMIT=16000000 RUBY_GC_MALLOC_LIMIT_MAX=600000000 ruby
|
3
2
|
require 'greenhat'
|
4
3
|
|
5
|
-
# DEV ONLY
|
6
|
-
require 'pry'
|
7
|
-
|
8
4
|
Dir.mktmpdir('greenhat-sauce') do |tmp|
|
9
5
|
$TMP = tmp
|
10
6
|
$STDOUT_CLONE = $stdout.clone
|
11
|
-
GreenHat::
|
7
|
+
GreenHat::Entrypoint.start ARGV
|
12
8
|
end
|
@@ -30,7 +30,6 @@ module GreenHat
|
|
30
30
|
end
|
31
31
|
|
32
32
|
# Unified Output Handler
|
33
|
-
# rubocop:disable Metrics/MethodLength
|
34
33
|
def self.format_output(file, name = false, limit = nil, filter = %w[tmpfs loop])
|
35
34
|
output = []
|
36
35
|
|
@@ -62,7 +61,7 @@ module GreenHat
|
|
62
61
|
disk.use.rjust(5).ljust(5).pastel(:green),
|
63
62
|
' ['.pastel(:blue),
|
64
63
|
('=' * (disk.use.to_i / 2)).pastel(:green),
|
65
|
-
' ' * (50 - disk.use.to_i / 2),
|
64
|
+
' ' * (50 - (disk.use.to_i / 2)),
|
66
65
|
']'.pastel(:blue)
|
67
66
|
].join
|
68
67
|
|
@@ -78,7 +77,6 @@ module GreenHat
|
|
78
77
|
|
79
78
|
output
|
80
79
|
end
|
81
|
-
# rubocop:enable Metrics/MethodLength
|
82
80
|
|
83
81
|
# Unified Output Handler
|
84
82
|
def self.markdown_format(file, name = false, limit = nil, filter = %w[tmpfs loop])
|
@@ -35,14 +35,18 @@ module GreenHat
|
|
35
35
|
end
|
36
36
|
|
37
37
|
# Show GitLab Services in a grid / include versions
|
38
|
+
# rubocop:disable Metrics/PerceivedComplexity, Metrics/CyclomaticComplexity
|
38
39
|
def self.services(archive, indent = 0)
|
39
40
|
manifest = archive.things.find { |x| x.type == 'gitlab/version-manifest.json' }
|
40
41
|
gitlab_status = archive.things.find { |x| x.name == 'gitlab_status' }
|
41
42
|
|
43
|
+
# Dont' show invalid
|
44
|
+
return nil if gitlab_status.data.to_s.include? "Could not find 'bundler'"
|
42
45
|
return nil unless gitlab_status
|
43
46
|
|
44
47
|
list = gitlab_status.data.keys.sort.map do |service|
|
45
48
|
color = gitlab_status.data.dig(service, 0, :status) == 'run' ? :green : :red
|
49
|
+
status = gitlab_status.data.dig(service, 0, :status) == 'run' ? '↑' : '↓'
|
46
50
|
|
47
51
|
# Collect Service version from manifest
|
48
52
|
version = manifest.data.software[service.to_sym]&.display_version
|
@@ -50,7 +54,7 @@ module GreenHat
|
|
50
54
|
# If able to identify version use / fallback
|
51
55
|
if version
|
52
56
|
[
|
53
|
-
service.pastel(color),
|
57
|
+
"#{service}#{status}".pastel(color),
|
54
58
|
"(#{version})".pastel(:bright_black)
|
55
59
|
].join(' ')
|
56
60
|
else
|
@@ -71,13 +75,14 @@ module GreenHat
|
|
71
75
|
|
72
76
|
table.render(:unicode, padding: [0, 1, 0, 1], indent: indent)
|
73
77
|
end
|
78
|
+
# rubocop:enable Metrics/PerceivedComplexity, Metrics/CyclomaticComplexity
|
74
79
|
|
75
80
|
def self.services_markdown(archive)
|
76
81
|
# manifest = archive.things.find { |x| x.type == 'gitlab/version-manifest.json' }
|
77
82
|
gitlab_status = archive.things.find { |x| x.name == 'gitlab_status' }
|
78
83
|
|
79
84
|
list = gitlab_status.data.keys.sort.map do |service|
|
80
|
-
status = gitlab_status.data.dig(service, 0, :status) == 'run' ? '↑' : '
|
85
|
+
status = gitlab_status.data.dig(service, 0, :status) == 'run' ? '↑' : '↓'
|
81
86
|
|
82
87
|
"#{service}#{status}"
|
83
88
|
end
|
data/lib/greenhat/archive.rb
CHANGED
@@ -7,7 +7,7 @@ module GreenHat
|
|
7
7
|
Dir.mkdir path
|
8
8
|
|
9
9
|
# Initially Copy file into tmpdir
|
10
|
-
FileUtils.
|
10
|
+
FileUtils.cp_r(archive_path.to_s, "#{path}/")
|
11
11
|
|
12
12
|
# Extract Everything
|
13
13
|
loop do
|
@@ -28,9 +28,6 @@ module GreenHat
|
|
28
28
|
|
29
29
|
archive = Archive.new(name: archive_path, path: path)
|
30
30
|
archive.save
|
31
|
-
# file = list[2]
|
32
|
-
# thing = archive.things_create(file: file)
|
33
|
-
# thing.setup
|
34
31
|
|
35
32
|
list.each do |file|
|
36
33
|
# Ensure Valid Content
|
@@ -54,11 +51,20 @@ module GreenHat
|
|
54
51
|
# Handle Different Types of Archives
|
55
52
|
def self.unpack(archive_path, path)
|
56
53
|
case File.extname archive_path
|
54
|
+
when '.tgz'
|
55
|
+
base_path = archive_path.gsub(File.basename(archive_path), '')
|
56
|
+
`bsdtar -xzf "#{archive_path}" -C #{base_path}`
|
57
|
+
FileUtils.rm(archive_path)
|
57
58
|
when '.tar'
|
58
|
-
|
59
|
+
base_path = archive_path.gsub(File.basename(archive_path), '')
|
60
|
+
`bsdtar -xf "#{archive_path}" -C #{base_path}`
|
59
61
|
FileUtils.rm(archive_path)
|
60
62
|
when '.gz'
|
61
63
|
`gzip -d "#{archive_path}"`
|
64
|
+
when '.zip'
|
65
|
+
`unzip -o -d "#{base_path}" #{archive_path}`
|
66
|
+
when '.bz2'
|
67
|
+
`bzip2 -d #{archive_path}`
|
62
68
|
when '.s'
|
63
69
|
# Find Original Directory, Split Path, Rename to .gz
|
64
70
|
base_path = archive_path.gsub(File.basename(archive_path), '')
|
@@ -75,7 +81,7 @@ module GreenHat
|
|
75
81
|
end
|
76
82
|
|
77
83
|
def self.archive_types
|
78
|
-
%w[s gz tar]
|
84
|
+
%w[s gz tar tgz zip bz2]
|
79
85
|
end
|
80
86
|
# -- Archive Loader ----------------------------------------------
|
81
87
|
end
|
@@ -102,11 +108,16 @@ class Archive < Teron
|
|
102
108
|
"#<Archive name: '#{name}'>"
|
103
109
|
end
|
104
110
|
|
105
|
-
def report
|
106
|
-
GreenHat::Report.new(self)
|
111
|
+
def report(flags)
|
112
|
+
GreenHat::Report.new(self, flags)
|
107
113
|
end
|
108
114
|
|
109
115
|
def report_markdown
|
110
116
|
GreenHat::ReportMarkdown.new(self)
|
111
117
|
end
|
118
|
+
|
119
|
+
# Helper for finding thing
|
120
|
+
def thing?(thing_name = 'gitlab-workhorse/current')
|
121
|
+
things.find { |x| x.name == thing_name }
|
122
|
+
end
|
112
123
|
end
|
data/lib/greenhat/cli.rb
CHANGED
@@ -1,8 +1,31 @@
|
|
1
1
|
# Top level namespace
|
2
2
|
module GreenHat
|
3
|
-
# CLI Methods
|
3
|
+
# CLI Methods / Shell Specific COmmands
|
4
4
|
# rubocop:disable Metrics/ModuleLength
|
5
5
|
module Cli
|
6
|
+
# CLI Start
|
7
|
+
def self.start
|
8
|
+
value ||= '' # Empty Start
|
9
|
+
|
10
|
+
loop do
|
11
|
+
line = reader.read_line(readline_notch, value: value)
|
12
|
+
value = '' # Remove Afterwards
|
13
|
+
|
14
|
+
if reader.breaker
|
15
|
+
value = line
|
16
|
+
puts ''
|
17
|
+
next
|
18
|
+
end
|
19
|
+
|
20
|
+
break if line =~ /^exit/i
|
21
|
+
|
22
|
+
Settings.cmd_add(line) unless line.blank?
|
23
|
+
|
24
|
+
process
|
25
|
+
run
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
6
29
|
def self.cursor
|
7
30
|
@cursor = TTY::Cursor
|
8
31
|
end
|
@@ -86,19 +109,19 @@ module GreenHat
|
|
86
109
|
if submodule?
|
87
110
|
submodule!
|
88
111
|
reader.breaker = true
|
89
|
-
|
112
|
+
# Only one Match!
|
90
113
|
elsif matches.count == 1
|
91
114
|
auto_update(matches.first, word)
|
92
115
|
|
93
|
-
|
116
|
+
# Print List of Options
|
94
117
|
elsif matches.count > 1
|
95
118
|
puts matches.join("\t").pastel(:bright_green)
|
96
119
|
|
97
|
-
|
120
|
+
# General Filename Matching
|
98
121
|
elsif !file_matches(word).empty?
|
99
122
|
auto_files(file_matches(word), word)
|
100
123
|
|
101
|
-
|
124
|
+
# Submodule Autocompletion
|
102
125
|
elsif current_methods.include?('auto_complete')
|
103
126
|
update_text = current_location.auto_complete(@list, word)
|
104
127
|
auto_update(update_text, word) unless update_text.blank?
|
@@ -110,7 +133,7 @@ module GreenHat
|
|
110
133
|
if matches.count == 1
|
111
134
|
auto_update(matches.first, word)
|
112
135
|
|
113
|
-
|
136
|
+
# Print List of Options
|
114
137
|
elsif matches.count > 1
|
115
138
|
auto_update(common_substr(matches), word)
|
116
139
|
puts matches.join("\t").pastel(:bright_green)
|
@@ -222,12 +245,11 @@ module GreenHat
|
|
222
245
|
run!
|
223
246
|
|
224
247
|
return true # End Early
|
225
|
-
|
226
248
|
elsif current_submodule?
|
227
249
|
@list.shift
|
228
250
|
elsif submodule?
|
229
251
|
submodule!
|
230
|
-
|
252
|
+
# Prepend Default if exists
|
231
253
|
elsif default?
|
232
254
|
@list.unshift 'default'
|
233
255
|
else
|
@@ -261,7 +283,6 @@ module GreenHat
|
|
261
283
|
|
262
284
|
puts "=> #{item.to_s.pastel(:blue)}"
|
263
285
|
end
|
264
|
-
|
265
286
|
end
|
266
287
|
|
267
288
|
puts ''
|
@@ -343,121 +364,13 @@ module GreenHat
|
|
343
364
|
@quiet
|
344
365
|
end
|
345
366
|
|
346
|
-
# Toggle Quiet Settings
|
347
367
|
def self.quiet!
|
348
|
-
@quiet =
|
349
|
-
end
|
350
|
-
|
351
|
-
def self.cli_help
|
352
|
-
Shell.version
|
353
|
-
puts
|
354
|
-
puts 'Usage'.pastel(:yellow)
|
355
|
-
puts ' greenhat <sos-archive.tgz> <sos-archive2.tgz> '
|
356
|
-
puts ' greenhat <sos-archive.tgz> -q --command=df'
|
357
|
-
puts
|
358
|
-
|
359
|
-
puts 'Options'.pastel(:yellow)
|
360
|
-
puts ' --report, -r'.pastel(:green)
|
361
|
-
puts ' Run `report` against archives and exit'
|
362
|
-
puts
|
363
|
-
|
364
|
-
puts ' --quiet, -r'.pastel(:green)
|
365
|
-
puts ' Surpress GreenHat logging output'
|
366
|
-
puts
|
367
|
-
|
368
|
-
puts ' --load, -l'.pastel(:green)
|
369
|
-
puts ' Automatically attempt to read/parse/preload all included files'
|
370
|
-
puts
|
371
|
-
|
372
|
-
puts ' --command, -c'.pastel(:green)
|
373
|
-
puts ' Run and then exit a GreenHat Shell command'
|
374
|
-
puts
|
375
|
-
|
376
|
-
puts ' --version, -v'.pastel(:green)
|
377
|
-
puts ' Print version and exit'
|
378
|
-
puts
|
379
|
-
end
|
380
|
-
|
381
|
-
# Arguments before general processing
|
382
|
-
def self.pre_args(flags, files)
|
383
|
-
# Help
|
384
|
-
if flags?(%i[help h], flags)
|
385
|
-
cli_help
|
386
|
-
exit 0
|
387
|
-
end
|
388
|
-
|
389
|
-
# Version
|
390
|
-
if flags?(%i[version v], flags)
|
391
|
-
Shell.version
|
392
|
-
exit 0
|
393
|
-
end
|
394
|
-
|
395
|
-
# Quiet Flag
|
396
|
-
@quiet = true if flags?(%i[quiet q], flags)
|
397
|
-
|
398
|
-
# rubocop:disable Style/GuardClause
|
399
|
-
# MIA Files
|
400
|
-
if files.empty? || files.count { |x| File.exist? x }.zero?
|
401
|
-
puts "No arguments or files don't exist".pastel(:red)
|
402
|
-
puts 'Usage: greenhat <sos-archive.tgz> <sos-archive2.tgz>'
|
403
|
-
cli_help
|
404
|
-
Shell.version
|
405
|
-
end
|
406
|
-
# rubocop:enable Style/GuardClause
|
407
|
-
end
|
408
|
-
|
409
|
-
# Arguments to be handled after general processing
|
410
|
-
def self.post_args(flags)
|
411
|
-
# Run report and exit / Don't Clear for reports
|
412
|
-
if flags?(%i[report r], flags)
|
413
|
-
@quiet = true
|
414
|
-
# Don't Use Pagination
|
415
|
-
GreenHat::Shell.report(['--raw'])
|
416
|
-
exit 0
|
417
|
-
else
|
418
|
-
clear_screen
|
419
|
-
end
|
420
|
-
|
421
|
-
# CTL Tails need to be parsed for new 'things'
|
422
|
-
Thing.where(kind: :gitlab_tail)&.map(&:process)
|
423
|
-
Thing.where(kind: :kube_webservice)&.map(&:process)
|
424
|
-
|
425
|
-
Thing.all.each(&:process) if flags?(%i[load l], flags)
|
426
|
-
end
|
427
|
-
|
428
|
-
# Helper to Simplify checking flags
|
429
|
-
def self.flags?(list = [], flags = {})
|
430
|
-
list.any? { |x| flags.key? x }
|
368
|
+
@quiet = true
|
431
369
|
end
|
432
370
|
|
433
|
-
#
|
434
|
-
def self.
|
435
|
-
|
436
|
-
files, flags, args = Args.parse(raw)
|
437
|
-
pre_args(flags, files)
|
438
|
-
load_files files
|
439
|
-
run_command(args) if args.any? { |arg| run_command?(arg) }
|
440
|
-
post_args(flags)
|
441
|
-
|
442
|
-
value ||= '' # Empty Start
|
443
|
-
|
444
|
-
loop do
|
445
|
-
line = reader.read_line(readline_notch, value: value)
|
446
|
-
value = '' # Remove Afterwards
|
447
|
-
|
448
|
-
if reader.breaker
|
449
|
-
value = line
|
450
|
-
puts ''
|
451
|
-
next
|
452
|
-
end
|
453
|
-
|
454
|
-
break if line =~ /^exit/i
|
455
|
-
|
456
|
-
Settings.cmd_add(line) unless line.blank?
|
457
|
-
|
458
|
-
process
|
459
|
-
run
|
460
|
-
end
|
371
|
+
# Toggle Quiet Settings
|
372
|
+
def self.quiet_toggle
|
373
|
+
@quiet = !@quiet
|
461
374
|
end
|
462
375
|
|
463
376
|
def self.run_command?(arg)
|
@@ -479,20 +392,6 @@ module GreenHat
|
|
479
392
|
exit 0
|
480
393
|
end
|
481
394
|
|
482
|
-
def self.load_files(files)
|
483
|
-
# TODO: Web Helpers?
|
484
|
-
# suppress_output { GreenHat::Web.start }
|
485
|
-
|
486
|
-
# Don't double up on archives / Only Existing files
|
487
|
-
puts 'Loading Archives'.pastel(:blue) unless Cli.quiet
|
488
|
-
files.uniq.each do |file|
|
489
|
-
next unless File.exist?(file)
|
490
|
-
|
491
|
-
puts "- #{file}".pastel(:magenta) unless Cli.quiet
|
492
|
-
ArchiveLoader.load file
|
493
|
-
end
|
494
|
-
end
|
495
|
-
|
496
395
|
def self.suppress_output
|
497
396
|
original_stderr = $stderr.clone
|
498
397
|
original_stdout = $stdout.clone
|
@@ -530,5 +429,6 @@ module GreenHat
|
|
530
429
|
exit 1
|
531
430
|
end
|
532
431
|
end
|
432
|
+
|
533
433
|
# rubocop:enable Metrics/ModuleLength
|
534
434
|
end
|
@@ -0,0 +1,170 @@
|
|
1
|
+
# Top level namespace
|
2
|
+
module GreenHat
|
3
|
+
# Entrypoint Methods
|
4
|
+
# Command Line Args / File Parsing etc
|
5
|
+
module Entrypoint
|
6
|
+
# If no arguments Supplied Print and quit - rather than nasty exception
|
7
|
+
def self.start(raw)
|
8
|
+
@clear = true # Reset screen by default
|
9
|
+
Settings.start
|
10
|
+
files, flags, args = Args.parse(raw)
|
11
|
+
pre_args(flags, files)
|
12
|
+
load_files files
|
13
|
+
Cli.run_command(args) if args.any? { |arg| Cli.run_command?(arg) }
|
14
|
+
post_args(flags)
|
15
|
+
post_setup(flags)
|
16
|
+
|
17
|
+
Cli.start # Kick over to CLI
|
18
|
+
end
|
19
|
+
|
20
|
+
# Arguments before general processing
|
21
|
+
def self.pre_args(flags, files)
|
22
|
+
# Help
|
23
|
+
if flags?(%i[help h], flags)
|
24
|
+
cli_help
|
25
|
+
exit 0
|
26
|
+
end
|
27
|
+
|
28
|
+
# Version
|
29
|
+
if flags?(%i[version v], flags)
|
30
|
+
Shell.version
|
31
|
+
exit 0
|
32
|
+
end
|
33
|
+
|
34
|
+
# Assume Raw Setting
|
35
|
+
Settings.settings[:assume_raw] = true if flags?(%i[no-prompt np], flags)
|
36
|
+
Settings.settings[:assume_raw] = false if flags?(%i[prompt p], flags)
|
37
|
+
|
38
|
+
# Quiet Flag
|
39
|
+
Cli.quiet! if flags?(%i[quiet q], flags)
|
40
|
+
|
41
|
+
if flags?(%i[load-local ll], flags)
|
42
|
+
# Hook in loading local
|
43
|
+
Shell.load_local(false)
|
44
|
+
elsif files.empty? || files.count { |x| File.exist? x }.zero?
|
45
|
+
# MIA Files
|
46
|
+
puts "No arguments or files don't exist".pastel(:red)
|
47
|
+
puts 'Usage: greenhat <sos-archive.tgz> <sos-archive2.tgz>'
|
48
|
+
puts 'See `--help`'
|
49
|
+
|
50
|
+
@clear = false # Don't hide messages
|
51
|
+
|
52
|
+
Shell.version
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
# Arguments to be handled after general processing
|
57
|
+
def self.post_args(flags)
|
58
|
+
# Supress Color
|
59
|
+
GreenHat::Settings.settings[:color] = false if flags?(%i[no-color n], flags)
|
60
|
+
|
61
|
+
# Run report and exit / Don't Clear for reports
|
62
|
+
if flags?(%i[report r], flags)
|
63
|
+
Cli.quiet!
|
64
|
+
# Don't Use Pagination
|
65
|
+
GreenHat::Shell.report(['--raw'])
|
66
|
+
exit 0
|
67
|
+
elsif flags?(%i[full-report f], flags)
|
68
|
+
Cli.quiet!
|
69
|
+
# Don't Use Pagination
|
70
|
+
GreenHat::Shell.report(['--raw', '--full'])
|
71
|
+
exit 0
|
72
|
+
elsif flags?(%i[markdown m], flags)
|
73
|
+
Cli.quiet!
|
74
|
+
# Don't Use Pagination
|
75
|
+
GreenHat::Shell.markdown_report(['--raw'])
|
76
|
+
exit 0
|
77
|
+
elsif @clear
|
78
|
+
Cli.clear_screen
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
def self.post_setup(flags)
|
83
|
+
# CTL Tails need to be parsed for new 'things'
|
84
|
+
Thing.where(kind: :gitlab_tail)&.map(&:process)
|
85
|
+
Thing.where(kind: :kube_webservice)&.map(&:process)
|
86
|
+
|
87
|
+
Thing.all.each(&:process) if flags?(%i[load l], flags)
|
88
|
+
|
89
|
+
Shell.web if flags?(%i[web w], flags)
|
90
|
+
end
|
91
|
+
|
92
|
+
# Helper to Simplify checking flags
|
93
|
+
def self.flags?(list = [], flags = {})
|
94
|
+
list.any? { |x| flags.key? x }
|
95
|
+
end
|
96
|
+
|
97
|
+
def self.load_files(files)
|
98
|
+
# Don't double up on archives / Only Existing files
|
99
|
+
puts 'Loading Archives'.pastel(:blue) unless Cli.quiet
|
100
|
+
files.uniq.each do |file|
|
101
|
+
next unless File.exist?(file)
|
102
|
+
|
103
|
+
puts "- #{file}".pastel(:magenta) unless Cli.quiet
|
104
|
+
ArchiveLoader.load file
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
# rubocop:disable Metrics/MethodLength
|
109
|
+
def self.cli_help
|
110
|
+
Shell.version
|
111
|
+
puts
|
112
|
+
puts 'Usage'.pastel(:yellow)
|
113
|
+
puts ' greenhat <sos-archive.tgz> <sos-archive2.tgz> '
|
114
|
+
puts ' greenhat <sos-archive.tgz> -q --command=df'
|
115
|
+
puts
|
116
|
+
|
117
|
+
puts 'Options'.pastel(:yellow)
|
118
|
+
puts ' --report, -r'.pastel(:green)
|
119
|
+
puts ' Run `report` against archives and exit'
|
120
|
+
puts
|
121
|
+
|
122
|
+
puts ' --full-report, -f'.pastel(:green)
|
123
|
+
puts ' Run `report` with all details. e.g. include fast-stats top/errors'
|
124
|
+
puts
|
125
|
+
|
126
|
+
puts ' --markdown, -m'.pastel(:green)
|
127
|
+
puts ' Run `markdown_report` against archives and exit'
|
128
|
+
puts
|
129
|
+
|
130
|
+
puts ' --quiet, -r'.pastel(:green)
|
131
|
+
puts ' Surpress GreenHat logging output'
|
132
|
+
puts
|
133
|
+
|
134
|
+
puts ' --load, -l'.pastel(:green)
|
135
|
+
puts ' Automatically attempt to read/parse/preload all included files'
|
136
|
+
puts
|
137
|
+
|
138
|
+
puts ' --load-local, -ll'.pastel(:green)
|
139
|
+
puts ' Load log files from locations on an Omnibus install'
|
140
|
+
puts
|
141
|
+
|
142
|
+
puts ' --prompt, -p'.pastel(:green)
|
143
|
+
puts ' Override settings / Assume Prompt'
|
144
|
+
puts
|
145
|
+
|
146
|
+
puts ' --no-prompt, -np'.pastel(:green)
|
147
|
+
puts ' Do not prompt for file types / Assume Raw or JSON'
|
148
|
+
puts
|
149
|
+
|
150
|
+
puts ' --command, -c'.pastel(:green)
|
151
|
+
puts ' Run and then exit a GreenHat Shell command'
|
152
|
+
puts
|
153
|
+
|
154
|
+
puts ' --web, -w'.pastel(:green)
|
155
|
+
puts ' Start Sinatra Webservice on load (4567)'
|
156
|
+
puts
|
157
|
+
|
158
|
+
puts ' --no-color, -n'.pastel(:green)
|
159
|
+
puts ' Disable color output'
|
160
|
+
puts
|
161
|
+
|
162
|
+
puts ' --version, -v'.pastel(:green)
|
163
|
+
puts ' Print version and exit'
|
164
|
+
puts
|
165
|
+
end
|
166
|
+
# rubocop:enable Metrics/MethodLength
|
167
|
+
|
168
|
+
# ==========================================================
|
169
|
+
end
|
170
|
+
end
|