ronin-core 0.1.2 → 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/.github/workflows/ruby.yml +3 -2
- data/.rubocop.yml +2 -0
- data/ChangeLog.md +30 -0
- data/Gemfile +1 -1
- data/README.md +2 -3
- data/gemspec.yml +1 -1
- data/lib/ronin/core/class_registry.rb +6 -7
- 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 +17 -5
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/.github/workflows/ruby.yml
CHANGED
@@ -12,11 +12,12 @@ jobs:
|
|
12
12
|
- '3.0'
|
13
13
|
- '3.1'
|
14
14
|
- '3.2'
|
15
|
+
- '3.3'
|
15
16
|
- jruby
|
16
17
|
- truffleruby
|
17
18
|
name: Ruby ${{ matrix.ruby }}
|
18
19
|
steps:
|
19
|
-
- uses: actions/checkout@
|
20
|
+
- uses: actions/checkout@v4
|
20
21
|
- name: Set up Ruby
|
21
22
|
uses: ruby/setup-ruby@v1
|
22
23
|
with:
|
@@ -31,7 +32,7 @@ jobs:
|
|
31
32
|
rubocop:
|
32
33
|
runs-on: ubuntu-latest
|
33
34
|
steps:
|
34
|
-
- uses: actions/checkout@
|
35
|
+
- uses: actions/checkout@v4
|
35
36
|
- name: Set up Ruby
|
36
37
|
uses: ruby/setup-ruby@v1
|
37
38
|
with:
|
data/.rubocop.yml
CHANGED
data/ChangeLog.md
CHANGED
@@ -1,3 +1,32 @@
|
|
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
|
+
|
25
|
+
### 0.1.3 / 2024-06-19
|
26
|
+
|
27
|
+
* Improved {Ronin::Core::ClassRegistry::ClassMethods#load_class_from_file}
|
28
|
+
to handle returning the class when the file has already been loaded.
|
29
|
+
|
1
30
|
### 0.1.2 / 2023-07-18
|
2
31
|
|
3
32
|
#### CLI
|
@@ -26,3 +55,4 @@
|
|
26
55
|
shells.
|
27
56
|
* Provides a `Params` API for adding user configurable parameters to classes.
|
28
57
|
|
58
|
+
[command_kit]: https://github.com/postmodern/command_kit.rb#readme
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -9,7 +9,6 @@
|
|
9
9
|
* [Issues](https://github.com/ronin-rb/ronin-core/issues)
|
10
10
|
* [Documentation](https://ronin-rb.dev/docs/ronin-core/frames)
|
11
11
|
* [Discord](https://discord.gg/6WAb3PsVX9) |
|
12
|
-
[Twitter](https://twitter.com/ronin_rb) |
|
13
12
|
[Mastodon](https://infosec.exchange/@ronin_rb)
|
14
13
|
|
15
14
|
## Description
|
@@ -36,7 +35,7 @@ and development.
|
|
36
35
|
|
37
36
|
* [Ruby] >= 3.0.0
|
38
37
|
* [reline] ~> 0.1
|
39
|
-
* [command_kit] ~> 0.
|
38
|
+
* [command_kit] ~> 0.5
|
40
39
|
* [irb] ~> 1.0
|
41
40
|
|
42
41
|
## Install
|
@@ -275,7 +274,7 @@ http> post /foo var=bar
|
|
275
274
|
|
276
275
|
## License
|
277
276
|
|
278
|
-
Copyright (c) 2021-
|
277
|
+
Copyright (c) 2021-2024 Hal Brodigan (postmodern.mod3@gmail.com)
|
279
278
|
|
280
279
|
ronin-core is free software: you can redistribute it and/or modify
|
281
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
|
@@ -190,17 +190,15 @@ module Ronin
|
|
190
190
|
raise(ClassNotFound,"no such file or directory: #{file.inspect}")
|
191
191
|
end
|
192
192
|
|
193
|
-
previous_entries = registry.keys
|
194
|
-
|
195
193
|
require(file)
|
196
194
|
|
197
|
-
|
195
|
+
registry.each_value do |worker_class|
|
196
|
+
class_file, = worker_class.const_source_location(worker_class.name)
|
198
197
|
|
199
|
-
|
200
|
-
raise(ClassNotFound,"file did not register a class: #{file.inspect}")
|
198
|
+
return worker_class if class_file == file
|
201
199
|
end
|
202
200
|
|
203
|
-
|
201
|
+
raise(ClassNotFound,"file did not register a class: #{file.inspect}")
|
204
202
|
end
|
205
203
|
|
206
204
|
#
|
@@ -231,6 +229,7 @@ module Ronin
|
|
231
229
|
end
|
232
230
|
|
233
231
|
previous_entries = registry.keys
|
232
|
+
|
234
233
|
require(path)
|
235
234
|
|
236
235
|
unless (klass = registry[id])
|
@@ -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
|