ronin-core 0.1.3 → 0.2.0.rc1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +2 -0
- data/ChangeLog.md +25 -0
- data/Gemfile +1 -1
- data/README.md +2 -2
- data/gemspec.yml +1 -1
- data/lib/ronin/core/class_registry.rb +1 -1
- data/lib/ronin/core/cli/banner.rb +60 -0
- data/lib/ronin/core/cli/command.rb +1 -1
- data/lib/ronin/core/cli/command_shell/command.rb +1 -1
- data/lib/ronin/core/cli/command_shell.rb +12 -1
- data/lib/ronin/core/cli/completion_command.rb +204 -0
- data/lib/ronin/core/cli/generator/options/author.rb +1 -1
- data/lib/ronin/core/cli/generator/options/description.rb +1 -1
- data/lib/ronin/core/cli/generator/options/reference.rb +1 -1
- data/lib/ronin/core/cli/generator/options/summary.rb +1 -1
- data/lib/ronin/core/cli/generator.rb +1 -1
- data/lib/ronin/core/cli/help/banner.rb +49 -0
- data/lib/ronin/core/cli/logging.rb +3 -3
- data/lib/ronin/core/cli/options/param.rb +1 -1
- data/lib/ronin/core/cli/options/values/arches.rb +1 -1
- data/lib/ronin/core/cli/options/values/oses.rb +1 -1
- data/lib/ronin/core/cli/printing/arch.rb +1 -1
- data/lib/ronin/core/cli/printing/metadata.rb +33 -8
- data/lib/ronin/core/cli/printing/os.rb +1 -1
- data/lib/ronin/core/cli/printing/params.rb +30 -1
- data/lib/ronin/core/cli/ruby_shell.rb +6 -2
- data/lib/ronin/core/cli/shell.rb +6 -1
- data/lib/ronin/core/git.rb +1 -1
- data/lib/ronin/core/home.rb +1 -1
- data/lib/ronin/core/metadata/authors/author.rb +55 -15
- data/lib/ronin/core/metadata/authors.rb +4 -1
- data/lib/ronin/core/metadata/description.rb +1 -1
- data/lib/ronin/core/metadata/id.rb +1 -1
- data/lib/ronin/core/metadata/references.rb +1 -1
- data/lib/ronin/core/metadata/summary.rb +1 -1
- data/lib/ronin/core/metadata/version.rb +1 -1
- data/lib/ronin/core/output_formats/csv.rb +58 -0
- data/lib/ronin/core/output_formats/json.rb +90 -0
- data/lib/ronin/core/output_formats/ndjson.rb +55 -0
- data/lib/ronin/core/output_formats/output_dir.rb +93 -0
- data/lib/ronin/core/output_formats/output_file.rb +89 -0
- data/lib/ronin/core/output_formats/output_format.rb +48 -0
- data/lib/ronin/core/output_formats/txt.rb +50 -0
- data/lib/ronin/core/output_formats.rb +89 -0
- data/lib/ronin/core/params/exceptions.rb +1 -1
- data/lib/ronin/core/params/mixin.rb +1 -1
- data/lib/ronin/core/params/param.rb +1 -1
- data/lib/ronin/core/params/types/boolean.rb +1 -1
- data/lib/ronin/core/params/types/enum.rb +1 -1
- data/lib/ronin/core/params/types/float.rb +1 -1
- data/lib/ronin/core/params/types/integer.rb +1 -1
- data/lib/ronin/core/params/types/numeric.rb +1 -1
- data/lib/ronin/core/params/types/regexp.rb +1 -1
- data/lib/ronin/core/params/types/string.rb +1 -1
- data/lib/ronin/core/params/types/type.rb +1 -1
- data/lib/ronin/core/params/types/uri.rb +1 -1
- data/lib/ronin/core/params/types.rb +1 -1
- data/lib/ronin/core/params.rb +1 -1
- data/lib/ronin/core/system.rb +144 -0
- data/lib/ronin/core/version.rb +2 -2
- metadata +16 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1cf7fd888aed1c83850fa7dcb18a6122de9e192272f111ce2fdc933fd463a4bb
|
4
|
+
data.tar.gz: 5b8cc281734f00f55be809eb46588233356e9209181981d6790fe2d028dfa144
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fb0eb0cfc052476dae0931b2a0860b6dfd68938a8d2ca7bbe73d62f77fdec3d13322a75f3d59a3fe2723554508e26af779dc3eb6e8c6a39c98adee6f65c78cfa
|
7
|
+
data.tar.gz: 619061f0b74ad0e03352d0d6a4b84081334f01cf100037b2366a7dad1f6d056a353dd4104bc9e2a90adb56b356751bbd7a67a577607f4ab9a70bbd04fdffa185
|
data/.rubocop.yml
CHANGED
data/ChangeLog.md
CHANGED
@@ -1,3 +1,27 @@
|
|
1
|
+
### 0.2.0 / 2024-XX-XX
|
2
|
+
|
3
|
+
* Require [command_kit] ~> 0.5.
|
4
|
+
* Added the `mastodon:` keyword argument to {Ronin::Core::Metadata::Authors::ClassMethods#author}.
|
5
|
+
* Added {Ronin::Core::Metadata::Authors::Author#mastodon}.
|
6
|
+
* Added {Ronin::Core::Metadata::Authors::Author#mastodon_url}.
|
7
|
+
* Added {Ronin::Core::OutputFormats}.
|
8
|
+
* Added {Ronin::Core::OutputFormats::OutputFile}.
|
9
|
+
* Added {Ronin::Core::OutputFormats::OutputDir}.
|
10
|
+
* Added {Ronin::Core::System}.
|
11
|
+
* Added {Ronin::Core::CLI::Banner}.
|
12
|
+
* Added {Ronin::Core::CLI::Help::Banner}.
|
13
|
+
* Added {Ronin::Core::CLI::CompletionCommand}.
|
14
|
+
* Added {Ronin::Core::CLI::Printing::Params#param_usage}.
|
15
|
+
* Print the new ASCII art banner in {Ronin::Core::CLI::RubyShell#start} and
|
16
|
+
{Ronin::Core::CLI::Shell.start}.
|
17
|
+
* Added a default `quit` command to {Ronin::Core::CLI::CommandShell}.
|
18
|
+
* Print the author's Mastodon profile URL in
|
19
|
+
{Ronin::Core::CLI::Printing::Metadata}.
|
20
|
+
* Change the formatting of {Ronin::Core::CLI::Logging#log_warn} to output
|
21
|
+
ANSI bold-bright-yellow.
|
22
|
+
* Change the formatting of {Ronin::Core::CLI::Logging#log_error} to output
|
23
|
+
ANSI bold-bright-red.
|
24
|
+
|
1
25
|
### 0.1.3 / 2024-06-19
|
2
26
|
|
3
27
|
* Improved {Ronin::Core::ClassRegistry::ClassMethods#load_class_from_file}
|
@@ -31,3 +55,4 @@
|
|
31
55
|
shells.
|
32
56
|
* Provides a `Params` API for adding user configurable parameters to classes.
|
33
57
|
|
58
|
+
[command_kit]: https://github.com/postmodern/command_kit.rb#readme
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -35,7 +35,7 @@ and development.
|
|
35
35
|
|
36
36
|
* [Ruby] >= 3.0.0
|
37
37
|
* [reline] ~> 0.1
|
38
|
-
* [command_kit] ~> 0.
|
38
|
+
* [command_kit] ~> 0.5
|
39
39
|
* [irb] ~> 1.0
|
40
40
|
|
41
41
|
## Install
|
@@ -274,7 +274,7 @@ http> post /foo var=bar
|
|
274
274
|
|
275
275
|
## License
|
276
276
|
|
277
|
-
Copyright (c) 2021-
|
277
|
+
Copyright (c) 2021-2024 Hal Brodigan (postmodern.mod3@gmail.com)
|
278
278
|
|
279
279
|
ronin-core is free software: you can redistribute it and/or modify
|
280
280
|
it under the terms of the GNU Lesser General Public License as published
|
data/gemspec.yml
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
#
|
3
|
-
# Copyright (c) 2021-
|
3
|
+
# Copyright (c) 2021-2024 Hal Brodigan (postmodern.mod3 at gmail.com)
|
4
4
|
#
|
5
5
|
# ronin-core is free software: you can redistribute it and/or modify
|
6
6
|
# it under the terms of the GNU Lesser General Public License as published
|
@@ -0,0 +1,60 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
#
|
3
|
+
# Copyright (c) 2021-2024 Hal Brodigan (postmodern.mod3 at gmail.com)
|
4
|
+
#
|
5
|
+
# ronin-core is free software: you can redistribute it and/or modify
|
6
|
+
# it under the terms of the GNU Lesser General Public License as published
|
7
|
+
# by the Free Software Foundation, either version 3 of the License, or
|
8
|
+
# (at your option) any later version.
|
9
|
+
#
|
10
|
+
# ronin-core is distributed in the hope that it will be useful,
|
11
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13
|
+
# GNU Lesser General Public License for more details.
|
14
|
+
#
|
15
|
+
# You should have received a copy of the GNU Lesser General Public License
|
16
|
+
# along with ronin-core. If not, see <https://www.gnu.org/licenses/>.
|
17
|
+
#
|
18
|
+
|
19
|
+
module Ronin
|
20
|
+
module Core
|
21
|
+
module CLI
|
22
|
+
#
|
23
|
+
# Adds a Ronin ASCII art banner to the `--help` output.
|
24
|
+
#
|
25
|
+
# @since 0.2.0
|
26
|
+
#
|
27
|
+
module Banner
|
28
|
+
# Ronin ASCII art banner.
|
29
|
+
BANNER = <<~ASCII
|
30
|
+
, Jµ ▓▓█▓
|
31
|
+
J▌ ▐▓██▌ ████ ██ ▐███D
|
32
|
+
╓▄▓▓█████▌ ██µ ████ ▄███ÖJ██▌ ███▌
|
33
|
+
,╓µ▄▄▄▄▄▄▄▄µ;, ,▄▓██████████ ▐███ ▐███▀ ███▌ ████µ ▄███
|
34
|
+
¬∞MÆ▓███████████████████████▓M ▄██████▀▀╙████▌ ████▌ ████ ▄███ J█████ ███▌
|
35
|
+
`█████▀▀▀▀▀███████ -████▀└ ████ ▐█████n ▄███O ███▌ ██████████
|
36
|
+
▓████L ████▀ ▓████ ▓███Ö ███████ ███▌ ▓███ ▐█████████▀
|
37
|
+
▄████▀ ,╓▄▄▄█████ J████Ü ,███▌ ▄███████████ J███▀ ████ █████
|
38
|
+
J█████████████████─ ████▌ ████ ████`██████▌ ████ ▐███Ü ▐███Ü
|
39
|
+
███████████▀▀▀╙└ ▐████ J███▌ ▓███▌ ²█████ J███Ü ███▌ ▀█▌
|
40
|
+
▓██████████▌ ████▌ ████ ;████ ▀███▀ ███▌ J▀▀▀- █
|
41
|
+
▄█████▀ ▀█████µ ▐████ ,▄▓████▀ ████▀ ███ J███ `
|
42
|
+
J█████- ╙▀███▄ ████████████▀╙ J█▀▀▀ █U ▀█▌
|
43
|
+
████▀ ▀███ ▄████████▀▀ ╨ █
|
44
|
+
▓██▀ ²▀█▄ █▀▀▀╙└
|
45
|
+
▄██╜ ╙W
|
46
|
+
J█▀
|
47
|
+
▌└
|
48
|
+
┘
|
49
|
+
ASCII
|
50
|
+
|
51
|
+
#
|
52
|
+
# Prints the Ronin banner.
|
53
|
+
#
|
54
|
+
def print_banner
|
55
|
+
print "#{BANNER}#{$/}"
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
#
|
3
|
-
# Copyright (c) 2021-
|
3
|
+
# Copyright (c) 2021-2024 Hal Brodigan (postmodern.mod3 at gmail.com)
|
4
4
|
#
|
5
5
|
# ronin-core is free software: you can redistribute it and/or modify
|
6
6
|
# it under the terms of the GNU Lesser General Public License as published
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
#
|
3
|
-
# Copyright (c) 2021-
|
3
|
+
# Copyright (c) 2021-2024 Hal Brodigan (postmodern.mod3 at gmail.com)
|
4
4
|
#
|
5
5
|
# ronin-core is free software: you can redistribute it and/or modify
|
6
6
|
# it under the terms of the GNU Lesser General Public License as published
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
#
|
3
|
-
# Copyright (c) 2021-
|
3
|
+
# Copyright (c) 2021-2024 Hal Brodigan (postmodern.mod3 at gmail.com)
|
4
4
|
#
|
5
5
|
# ronin-core is free software: you can redistribute it and/or modify
|
6
6
|
# it under the terms of the GNU Lesser General Public License as published
|
@@ -246,6 +246,17 @@ module Ronin
|
|
246
246
|
end
|
247
247
|
end
|
248
248
|
|
249
|
+
command :quit, summary: 'Exits the shell'
|
250
|
+
|
251
|
+
#
|
252
|
+
# Quits the shell.
|
253
|
+
#
|
254
|
+
# @since 0.2.0
|
255
|
+
#
|
256
|
+
def quit
|
257
|
+
exit
|
258
|
+
end
|
259
|
+
|
249
260
|
private
|
250
261
|
|
251
262
|
#
|
@@ -0,0 +1,204 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
#
|
3
|
+
# Copyright (c) 2021-2024 Hal Brodigan (postmodern.mod3 at gmail.com)
|
4
|
+
#
|
5
|
+
# ronin-core is free software: you can redistribute it and/or modify
|
6
|
+
# it under the terms of the GNU Lesser General Public License as published
|
7
|
+
# by the Free Software Foundation, either version 3 of the License, or
|
8
|
+
# (at your option) any later version.
|
9
|
+
#
|
10
|
+
# ronin-core is distributed in the hope that it will be useful,
|
11
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13
|
+
# GNU Lesser General Public License for more details.
|
14
|
+
#
|
15
|
+
# You should have received a copy of the GNU Lesser General Public License
|
16
|
+
# along with ronin-core. If not, see <https://www.gnu.org/licenses/>.
|
17
|
+
#
|
18
|
+
|
19
|
+
require 'ronin/core/cli/command'
|
20
|
+
|
21
|
+
require 'command_kit/completion/install'
|
22
|
+
|
23
|
+
module Ronin
|
24
|
+
module Core
|
25
|
+
module CLI
|
26
|
+
#
|
27
|
+
# Common base class for all `ronin-* completion` commands.
|
28
|
+
#
|
29
|
+
# ## Example
|
30
|
+
#
|
31
|
+
# # lib/ronin/foo/cli/commands/completion.rb
|
32
|
+
# require 'ronin/foo/root'
|
33
|
+
# require 'ronin/core/cli/completion_command'
|
34
|
+
#
|
35
|
+
# module Ronin
|
36
|
+
# module Foo
|
37
|
+
# class CLI
|
38
|
+
# class Command < Core::CLI::CompletionCommand
|
39
|
+
#
|
40
|
+
# man_dir File.join(ROOT,'man')
|
41
|
+
# man_page 'ronin-foo-completion.1'
|
42
|
+
#
|
43
|
+
# completion_file File.join(ROOT,'data','completions','ronin-foo')
|
44
|
+
#
|
45
|
+
# end
|
46
|
+
# end
|
47
|
+
# end
|
48
|
+
# end
|
49
|
+
#
|
50
|
+
# @api semipublic
|
51
|
+
#
|
52
|
+
# @since 0.2.0
|
53
|
+
#
|
54
|
+
class CompletionCommand < Command
|
55
|
+
|
56
|
+
include CommandKit::Completion::Install
|
57
|
+
|
58
|
+
#
|
59
|
+
# Gets or sets the completion file for the `completion` command.
|
60
|
+
#
|
61
|
+
# @param [String, nil] new_completion_file
|
62
|
+
# The optional path to the completion file.
|
63
|
+
#
|
64
|
+
# @return [String]
|
65
|
+
# The completion file path.
|
66
|
+
#
|
67
|
+
# @raise [NotImplementedError]
|
68
|
+
# The command did not set the `completion_file`.
|
69
|
+
#
|
70
|
+
# @example
|
71
|
+
# completion_file File.join(ROOT,'data','completions','ronin-foo')
|
72
|
+
#
|
73
|
+
def self.completion_file(new_completion_file=nil)
|
74
|
+
if new_completion_file
|
75
|
+
@completion_file = new_completion_file
|
76
|
+
else
|
77
|
+
@completion_file || raise(NotImplementedError,"#{self} did not set completion_file")
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
command_name 'completion'
|
82
|
+
|
83
|
+
option :print, desc: 'Prints the shell completion file' do
|
84
|
+
@mode = :print
|
85
|
+
end
|
86
|
+
|
87
|
+
option :install, desc: 'Installs the shell completion file' do
|
88
|
+
@mode = :install
|
89
|
+
end
|
90
|
+
|
91
|
+
option :uninstall, desc: 'Uninstalls the shell completion file' do
|
92
|
+
@mode = :uninstall
|
93
|
+
end
|
94
|
+
|
95
|
+
examples [
|
96
|
+
'--print',
|
97
|
+
'--install',
|
98
|
+
'--uninstall'
|
99
|
+
]
|
100
|
+
|
101
|
+
bug_report_url 'https://github.com/ronin-rb/ronin-core/issues/new'
|
102
|
+
|
103
|
+
# The command mode.
|
104
|
+
#
|
105
|
+
# @return [:print, :install, :uninstall]
|
106
|
+
attr_reader :mode
|
107
|
+
|
108
|
+
#
|
109
|
+
# Initializes the `completion` command.
|
110
|
+
#
|
111
|
+
# @param [Hash{Symbol => Object}] kwargs
|
112
|
+
# Additional keyword arguments for the command.
|
113
|
+
#
|
114
|
+
def initialize(**kwargs)
|
115
|
+
super(**kwargs)
|
116
|
+
|
117
|
+
@mode = :print
|
118
|
+
end
|
119
|
+
|
120
|
+
#
|
121
|
+
# The `completion` commands registered completion file.
|
122
|
+
#
|
123
|
+
# @return [String]
|
124
|
+
# The completion file path.
|
125
|
+
#
|
126
|
+
# @raise [NotImplementedError]
|
127
|
+
# The command did not set the `completion_file`.
|
128
|
+
#
|
129
|
+
def completion_file
|
130
|
+
self.class.completion_file
|
131
|
+
end
|
132
|
+
|
133
|
+
#
|
134
|
+
# Runs the `completion` command.
|
135
|
+
#
|
136
|
+
def run
|
137
|
+
if shell_type == :fish
|
138
|
+
print_error "shell completions for the fish shell are not currently supported"
|
139
|
+
exit(-1)
|
140
|
+
end
|
141
|
+
|
142
|
+
case @mode
|
143
|
+
when :print
|
144
|
+
print_completion_file
|
145
|
+
when :install
|
146
|
+
install_completion_file
|
147
|
+
|
148
|
+
if shell_type == :zsh
|
149
|
+
puts "Ensure that you have the following lines added to your ~/.zshrc:"
|
150
|
+
puts
|
151
|
+
puts " autoload -Uz +X compinit && compinit"
|
152
|
+
puts " autoload -Uz +X bashcompinit && bashcompinit"
|
153
|
+
puts
|
154
|
+
end
|
155
|
+
when :uninstall
|
156
|
+
uninstall_completion_file
|
157
|
+
|
158
|
+
puts "Completion rules successfully uninstalled. Please restart your shell."
|
159
|
+
else
|
160
|
+
raise(NotImplementedError,"mode not implemented: #{@mode.inspect}")
|
161
|
+
end
|
162
|
+
end
|
163
|
+
|
164
|
+
#
|
165
|
+
# Prints the `completion` command's {completion_file} to stdout.
|
166
|
+
#
|
167
|
+
# @param [String] completion_file
|
168
|
+
# The path to the completion file to print.
|
169
|
+
#
|
170
|
+
# @api private
|
171
|
+
#
|
172
|
+
def print_completion_file(completion_file=self.completion_file)
|
173
|
+
super(completion_file)
|
174
|
+
end
|
175
|
+
|
176
|
+
#
|
177
|
+
# Installs the `completion` command's {completion_file} for the current
|
178
|
+
# `SHELL`.
|
179
|
+
#
|
180
|
+
# @param [String] completion_file
|
181
|
+
# The path to the completion file to install.
|
182
|
+
#
|
183
|
+
# @api private
|
184
|
+
#
|
185
|
+
def install_completion_file(completion_file=self.completion_file)
|
186
|
+
super(completion_file)
|
187
|
+
end
|
188
|
+
|
189
|
+
#
|
190
|
+
# Uninstalls the `completion` command's {completion_file}.
|
191
|
+
#
|
192
|
+
# @param [String] completion_file
|
193
|
+
# The path to the completion file to uninstall.
|
194
|
+
#
|
195
|
+
# @api private
|
196
|
+
#
|
197
|
+
def uninstall_completion_file(completion_file=self.completion_file)
|
198
|
+
uninstall_completion_file_for(File.basename(completion_file))
|
199
|
+
end
|
200
|
+
|
201
|
+
end
|
202
|
+
end
|
203
|
+
end
|
204
|
+
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
#
|
3
|
-
# Copyright (c) 2021-
|
3
|
+
# Copyright (c) 2021-2024 Hal Brodigan (postmodern.mod3 at gmail.com)
|
4
4
|
#
|
5
5
|
# ronin-core is free software: you can redistribute it and/or modify
|
6
6
|
# it under the terms of the GNU Lesser General Public License as published
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
#
|
3
|
-
# Copyright (c) 2021-
|
3
|
+
# Copyright (c) 2021-2024 Hal Brodigan (postmodern.mod3 at gmail.com)
|
4
4
|
#
|
5
5
|
# ronin-core is free software: you can redistribute it and/or modify
|
6
6
|
# it under the terms of the GNU Lesser General Public License as published
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
#
|
3
|
-
# Copyright (c) 2021-
|
3
|
+
# Copyright (c) 2021-2024 Hal Brodigan (postmodern.mod3 at gmail.com)
|
4
4
|
#
|
5
5
|
# ronin-core is free software: you can redistribute it and/or modify
|
6
6
|
# it under the terms of the GNU Lesser General Public License as published
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
#
|
3
|
-
# Copyright (c) 2021-
|
3
|
+
# Copyright (c) 2021-2024 Hal Brodigan (postmodern.mod3 at gmail.com)
|
4
4
|
#
|
5
5
|
# ronin-core is free software: you can redistribute it and/or modify
|
6
6
|
# it under the terms of the GNU Lesser General Public License as published
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
#
|
3
|
-
# Copyright (c) 2021-
|
3
|
+
# Copyright (c) 2021-2024 Hal Brodigan (postmodern.mod3 at gmail.com)
|
4
4
|
#
|
5
5
|
# ronin-core is free software: you can redistribute it and/or modify
|
6
6
|
# it under the terms of the GNU Lesser General Public License as published
|
@@ -0,0 +1,49 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
#
|
3
|
+
# Copyright (c) 2021-2024 Hal Brodigan (postmodern.mod3 at gmail.com)
|
4
|
+
#
|
5
|
+
# ronin-core is free software: you can redistribute it and/or modify
|
6
|
+
# it under the terms of the GNU Lesser General Public License as published
|
7
|
+
# by the Free Software Foundation, either version 3 of the License, or
|
8
|
+
# (at your option) any later version.
|
9
|
+
#
|
10
|
+
# ronin-core is distributed in the hope that it will be useful,
|
11
|
+
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
13
|
+
# GNU Lesser General Public License for more details.
|
14
|
+
#
|
15
|
+
# You should have received a copy of the GNU Lesser General Public License
|
16
|
+
# along with ronin-core. If not, see <https://www.gnu.org/licenses/>.
|
17
|
+
#
|
18
|
+
|
19
|
+
require 'ronin/core/cli/banner'
|
20
|
+
|
21
|
+
module Ronin
|
22
|
+
module Core
|
23
|
+
module CLI
|
24
|
+
module Help
|
25
|
+
#
|
26
|
+
# Adds the Ronin ASCII art banner to the `--help` output.
|
27
|
+
#
|
28
|
+
# @since 0.2.0
|
29
|
+
#
|
30
|
+
module Banner
|
31
|
+
include CLI::Banner
|
32
|
+
|
33
|
+
#
|
34
|
+
# Prints the Ronin ASCII art banner and the `--help` output.
|
35
|
+
#
|
36
|
+
# @note
|
37
|
+
# If `stdout` is not a TTY, the Ronin ASCII art banner will be
|
38
|
+
# omitted.
|
39
|
+
#
|
40
|
+
def help
|
41
|
+
print_banner if stdout.tty?
|
42
|
+
|
43
|
+
super
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
#
|
3
|
-
# Copyright (c) 2021-
|
3
|
+
# Copyright (c) 2021-2024 Hal Brodigan (postmodern.mod3 at gmail.com)
|
4
4
|
#
|
5
5
|
# ronin-core is free software: you can redistribute it and/or modify
|
6
6
|
# it under the terms of the GNU Lesser General Public License as published
|
@@ -44,7 +44,7 @@ module Ronin
|
|
44
44
|
# The message to print.
|
45
45
|
#
|
46
46
|
def log_warn(message)
|
47
|
-
puts("#{colors.bold(colors.
|
47
|
+
puts("#{colors.bold(colors.bright_red('/!\\'))} #{colors.bold(colors.bright_yellow(message))}")
|
48
48
|
end
|
49
49
|
|
50
50
|
#
|
@@ -54,7 +54,7 @@ module Ronin
|
|
54
54
|
# The message to print.
|
55
55
|
#
|
56
56
|
def log_error(message)
|
57
|
-
stderr.puts("#{colors(stderr).bold(colors(stderr).bright_red('!!!'))} #{colors(stderr).bold(colors(stderr).
|
57
|
+
stderr.puts("#{colors(stderr).bold(colors(stderr).bright_red('!!!'))} #{colors(stderr).bold(colors(stderr).red(message))}")
|
58
58
|
end
|
59
59
|
end
|
60
60
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
#
|
3
|
-
# Copyright (c) 2021-
|
3
|
+
# Copyright (c) 2021-2024 Hal Brodigan (postmodern.mod3 at gmail.com)
|
4
4
|
#
|
5
5
|
# ronin-core is free software: you can redistribute it and/or modify
|
6
6
|
# it under the terms of the GNU Lesser General Public License as published
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
#
|
3
|
-
# Copyright (c) 2021-
|
3
|
+
# Copyright (c) 2021-2024 Hal Brodigan (postmodern.mod3 at gmail.com)
|
4
4
|
#
|
5
5
|
# ronin-core is free software: you can redistribute it and/or modify
|
6
6
|
# it under the terms of the GNU Lesser General Public License as published
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
#
|
3
|
-
# Copyright (c) 2021-
|
3
|
+
# Copyright (c) 2021-2024 Hal Brodigan (postmodern.mod3 at gmail.com)
|
4
4
|
#
|
5
5
|
# ronin-core is free software: you can redistribute it and/or modify
|
6
6
|
# it under the terms of the GNU Lesser General Public License as published
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
#
|
3
|
-
# Copyright (c) 2021-
|
3
|
+
# Copyright (c) 2021-2024 Hal Brodigan (postmodern.mod3 at gmail.com)
|
4
4
|
#
|
5
5
|
# ronin-core is free software: you can redistribute it and/or modify
|
6
6
|
# it under the terms of the GNU Lesser General Public License as published
|
@@ -55,13 +55,38 @@ module Ronin
|
|
55
55
|
indent do
|
56
56
|
klass.authors.each do |author|
|
57
57
|
puts "* #{author}"
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
58
|
+
|
59
|
+
if author.pgp?
|
60
|
+
puts " * PGP: #{author.pgp}"
|
61
|
+
end
|
62
|
+
|
63
|
+
if author.website?
|
64
|
+
puts " * Website: #{author.website}"
|
65
|
+
end
|
66
|
+
|
67
|
+
if author.blog?
|
68
|
+
puts " * Blog: #{author.blog}"
|
69
|
+
end
|
70
|
+
|
71
|
+
if author.github?
|
72
|
+
puts " * GitHub: #{author.github_url}"
|
73
|
+
end
|
74
|
+
|
75
|
+
if author.gitlab?
|
76
|
+
puts " * GitLab: #{author.gitlab_url}"
|
77
|
+
end
|
78
|
+
|
79
|
+
if author.twitter?
|
80
|
+
puts " * Twitter: #{author.twitter_url}"
|
81
|
+
end
|
82
|
+
|
83
|
+
if author.mastodon?
|
84
|
+
puts " * Mastodon: #{author.mastodon_url}"
|
85
|
+
end
|
86
|
+
|
87
|
+
if author.discord?
|
88
|
+
puts " * Discord: #{author.discord}"
|
89
|
+
end
|
65
90
|
end
|
66
91
|
end
|
67
92
|
else
|
@@ -1,6 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
#
|
3
|
-
# Copyright (c) 2021-
|
3
|
+
# Copyright (c) 2021-2024 Hal Brodigan (postmodern.mod3 at gmail.com)
|
4
4
|
#
|
5
5
|
# ronin-core is free software: you can redistribute it and/or modify
|
6
6
|
# it under the terms of the GNU Lesser General Public License as published
|