cmd2 2.5.7__py3-none-any.whl → 2.5.8__py3-none-any.whl
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.
- cmd2/ansi.py +0 -3
- cmd2/cmd2.py +40 -115
- {cmd2-2.5.7.dist-info → cmd2-2.5.8.dist-info}/METADATA +61 -60
- {cmd2-2.5.7.dist-info → cmd2-2.5.8.dist-info}/RECORD +7 -7
- {cmd2-2.5.7.dist-info → cmd2-2.5.8.dist-info}/LICENSE +0 -0
- {cmd2-2.5.7.dist-info → cmd2-2.5.8.dist-info}/WHEEL +0 -0
- {cmd2-2.5.7.dist-info → cmd2-2.5.8.dist-info}/top_level.txt +0 -0
cmd2/ansi.py
CHANGED
@@ -1042,9 +1042,6 @@ def style(
|
|
1042
1042
|
# Default styles for printing strings of various types.
|
1043
1043
|
# These can be altered to suit an application's needs and only need to be a
|
1044
1044
|
# function with the following structure: func(str) -> str
|
1045
|
-
style_output = functools.partial(style)
|
1046
|
-
"""Partial function supplying arguments to :meth:`cmd2.ansi.style()` which colors text for normal output"""
|
1047
|
-
|
1048
1045
|
style_success = functools.partial(style, fg=Fg.GREEN)
|
1049
1046
|
"""Partial function supplying arguments to :meth:`cmd2.ansi.style()` which colors text to signify success"""
|
1050
1047
|
|
cmd2/cmd2.py
CHANGED
@@ -1212,123 +1212,67 @@ class Cmd(cmd.Cmd):
|
|
1212
1212
|
|
1213
1213
|
def print_to(
|
1214
1214
|
self,
|
1215
|
-
dest:
|
1215
|
+
dest: IO[str],
|
1216
1216
|
msg: Any,
|
1217
1217
|
*,
|
1218
1218
|
end: str = '\n',
|
1219
1219
|
style: Optional[Callable[[str], str]] = None,
|
1220
|
-
paged: bool = False,
|
1221
|
-
chop: bool = False,
|
1222
1220
|
) -> None:
|
1223
|
-
|
1224
|
-
|
1225
|
-
self.ppaged(final_msg, end=end, chop=chop, dest=dest)
|
1226
|
-
else:
|
1227
|
-
try:
|
1228
|
-
ansi.style_aware_write(dest, f'{final_msg}{end}')
|
1229
|
-
except BrokenPipeError:
|
1230
|
-
# This occurs if a command's output is being piped to another
|
1231
|
-
# process and that process closes before the command is
|
1232
|
-
# finished. If you would like your application to print a
|
1233
|
-
# warning message, then set the broken_pipe_warning attribute
|
1234
|
-
# to the message you want printed.
|
1235
|
-
if self.broken_pipe_warning:
|
1236
|
-
sys.stderr.write(self.broken_pipe_warning)
|
1221
|
+
"""
|
1222
|
+
Print message to a given file object.
|
1237
1223
|
|
1238
|
-
|
1239
|
-
|
1240
|
-
|
1241
|
-
|
1242
|
-
|
1243
|
-
|
1244
|
-
|
1245
|
-
|
1246
|
-
|
1224
|
+
:param dest: the file object being written to
|
1225
|
+
:param msg: object to print
|
1226
|
+
:param end: string appended after the end of the message, default a newline
|
1227
|
+
:param style: optional style function to format msg with (e.g. ansi.style_success)
|
1228
|
+
"""
|
1229
|
+
final_msg = style(msg) if style is not None else msg
|
1230
|
+
try:
|
1231
|
+
ansi.style_aware_write(dest, f'{final_msg}{end}')
|
1232
|
+
except BrokenPipeError:
|
1233
|
+
# This occurs if a command's output is being piped to another
|
1234
|
+
# process and that process closes before the command is
|
1235
|
+
# finished. If you would like your application to print a
|
1236
|
+
# warning message, then set the broken_pipe_warning attribute
|
1237
|
+
# to the message you want printed.
|
1238
|
+
if self.broken_pipe_warning:
|
1239
|
+
sys.stderr.write(self.broken_pipe_warning)
|
1240
|
+
|
1241
|
+
def poutput(self, msg: Any = '', *, end: str = '\n') -> None:
|
1247
1242
|
"""Print message to self.stdout and appends a newline by default
|
1248
1243
|
|
1249
|
-
Also handles BrokenPipeError exceptions for when a command's output has
|
1250
|
-
been piped to another process and that process terminates before the
|
1251
|
-
cmd2 command is finished executing.
|
1252
|
-
|
1253
1244
|
:param msg: object to print
|
1254
1245
|
:param end: string appended after the end of the message, default a newline
|
1255
|
-
:param apply_style: If True, then ansi.style_output will be applied to the message text. Set to False in cases
|
1256
|
-
where the message text already has the desired style. Defaults to True.
|
1257
|
-
:param paged: If True, pass the output through the configured pager.
|
1258
|
-
:param chop: If paged is True, True to truncate long lines or False to wrap long lines.
|
1259
1246
|
"""
|
1260
|
-
self.print_to(self.stdout, msg, end=end
|
1247
|
+
self.print_to(self.stdout, msg, end=end)
|
1261
1248
|
|
1262
|
-
def perror(
|
1263
|
-
self,
|
1264
|
-
msg: Any = '',
|
1265
|
-
*,
|
1266
|
-
end: str = '\n',
|
1267
|
-
apply_style: bool = True,
|
1268
|
-
paged: bool = False,
|
1269
|
-
chop: bool = False,
|
1270
|
-
) -> None:
|
1249
|
+
def perror(self, msg: Any = '', *, end: str = '\n', apply_style: bool = True) -> None:
|
1271
1250
|
"""Print message to sys.stderr
|
1272
1251
|
|
1273
1252
|
:param msg: object to print
|
1274
1253
|
:param end: string appended after the end of the message, default a newline
|
1275
1254
|
:param apply_style: If True, then ansi.style_error will be applied to the message text. Set to False in cases
|
1276
1255
|
where the message text already has the desired style. Defaults to True.
|
1277
|
-
:param paged: If True, pass the output through the configured pager.
|
1278
|
-
:param chop: If paged is True, True to truncate long lines or False to wrap long lines.
|
1279
1256
|
"""
|
1280
|
-
self.print_to(sys.stderr, msg, end=end, style=ansi.style_error if apply_style else None
|
1257
|
+
self.print_to(sys.stderr, msg, end=end, style=ansi.style_error if apply_style else None)
|
1281
1258
|
|
1282
|
-
def psuccess(
|
1283
|
-
|
1284
|
-
msg: Any = '',
|
1285
|
-
*,
|
1286
|
-
end: str = '\n',
|
1287
|
-
paged: bool = False,
|
1288
|
-
chop: bool = False,
|
1289
|
-
) -> None:
|
1290
|
-
"""Writes to stdout applying ansi.style_success by default
|
1259
|
+
def psuccess(self, msg: Any = '', *, end: str = '\n') -> None:
|
1260
|
+
"""Wraps poutput, but applies ansi.style_success by default
|
1291
1261
|
|
1292
1262
|
:param msg: object to print
|
1293
1263
|
:param end: string appended after the end of the message, default a newline
|
1294
|
-
:param paged: If True, pass the output through the configured pager.
|
1295
|
-
:param chop: If paged is True, True to truncate long lines or False to wrap long lines.
|
1296
1264
|
"""
|
1297
|
-
|
1265
|
+
msg = ansi.style_success(msg)
|
1266
|
+
self.poutput(msg, end=end)
|
1298
1267
|
|
1299
|
-
def pwarning(
|
1300
|
-
self,
|
1301
|
-
msg: Any = '',
|
1302
|
-
*,
|
1303
|
-
end: str = '\n',
|
1304
|
-
paged: bool = False,
|
1305
|
-
chop: bool = False,
|
1306
|
-
) -> None:
|
1268
|
+
def pwarning(self, msg: Any = '', *, end: str = '\n') -> None:
|
1307
1269
|
"""Wraps perror, but applies ansi.style_warning by default
|
1308
1270
|
|
1309
1271
|
:param msg: object to print
|
1310
1272
|
:param end: string appended after the end of the message, default a newline
|
1311
|
-
:param paged: If True, pass the output through the configured pager.
|
1312
|
-
:param chop: If paged is True, True to truncate long lines or False to wrap long lines.
|
1313
|
-
"""
|
1314
|
-
self.print_to(sys.stderr, msg, end=end, style=ansi.style_warning, paged=paged, chop=chop)
|
1315
|
-
|
1316
|
-
def pfailure(
|
1317
|
-
self,
|
1318
|
-
msg: Any = '',
|
1319
|
-
*,
|
1320
|
-
end: str = '\n',
|
1321
|
-
paged: bool = False,
|
1322
|
-
chop: bool = False,
|
1323
|
-
) -> None:
|
1324
|
-
"""Writes to stderr applying ansi.style_error by default
|
1325
|
-
|
1326
|
-
:param msg: object to print
|
1327
|
-
:param end: string appended after the end of the message, default a newline
|
1328
|
-
:param paged: If True, pass the output through the configured pager.
|
1329
|
-
:param chop: If paged is True, True to truncate long lines or False to wrap long lines.
|
1330
1273
|
"""
|
1331
|
-
|
1274
|
+
msg = ansi.style_warning(msg)
|
1275
|
+
self.perror(msg, end=end, apply_style=False)
|
1332
1276
|
|
1333
1277
|
def pexcept(self, msg: Any, *, end: str = '\n', apply_style: bool = True) -> None:
|
1334
1278
|
"""Print Exception message to sys.stderr. If debug is true, print exception traceback if one exists.
|
@@ -1357,36 +1301,20 @@ class Cmd(cmd.Cmd):
|
|
1357
1301
|
|
1358
1302
|
self.perror(final_msg, end=end, apply_style=False)
|
1359
1303
|
|
1360
|
-
def pfeedback(
|
1361
|
-
self,
|
1362
|
-
msg: Any,
|
1363
|
-
*,
|
1364
|
-
end: str = '\n',
|
1365
|
-
apply_style: bool = True,
|
1366
|
-
paged: bool = False,
|
1367
|
-
chop: bool = False,
|
1368
|
-
) -> None:
|
1304
|
+
def pfeedback(self, msg: Any, *, end: str = '\n') -> None:
|
1369
1305
|
"""For printing nonessential feedback. Can be silenced with `quiet`.
|
1370
1306
|
Inclusion in redirected output is controlled by `feedback_to_output`.
|
1371
1307
|
|
1372
1308
|
:param msg: object to print
|
1373
1309
|
:param end: string appended after the end of the message, default a newline
|
1374
|
-
:param apply_style: If True, then ansi.style_output will be applied to the message text. Set to False in cases
|
1375
|
-
where the message text already has the desired style. Defaults to True.
|
1376
|
-
:param paged: If True, pass the output through the configured pager.
|
1377
|
-
:param chop: If paged is True, True to truncate long lines or False to wrap long lines.
|
1378
1310
|
"""
|
1379
1311
|
if not self.quiet:
|
1380
|
-
self.
|
1381
|
-
self.
|
1382
|
-
|
1383
|
-
end=end,
|
1384
|
-
style=ansi.style_output if apply_style else None,
|
1385
|
-
paged=paged,
|
1386
|
-
chop=chop,
|
1387
|
-
)
|
1312
|
+
if self.feedback_to_output:
|
1313
|
+
self.poutput(msg, end=end)
|
1314
|
+
else:
|
1315
|
+
self.perror(msg, end=end, apply_style=False)
|
1388
1316
|
|
1389
|
-
def ppaged(self, msg: Any, *, end: str = '\n', chop: bool = False
|
1317
|
+
def ppaged(self, msg: Any, *, end: str = '\n', chop: bool = False) -> None:
|
1390
1318
|
"""Print output using a pager if it would go off screen and stdout isn't currently being redirected.
|
1391
1319
|
|
1392
1320
|
Never uses a pager inside a script (Python or text) or when output is being redirected or piped or when
|
@@ -1399,17 +1327,14 @@ class Cmd(cmd.Cmd):
|
|
1399
1327
|
- chopping is ideal for displaying wide tabular data as is done in utilities like pgcli
|
1400
1328
|
False -> causes lines longer than the screen width to wrap to the next line
|
1401
1329
|
- wrapping is ideal when you want to keep users from having to use horizontal scrolling
|
1402
|
-
:param dest: Optionally specify the destination stream to write to. If unspecified, defaults to self.stdout
|
1403
1330
|
|
1404
1331
|
WARNING: On Windows, the text always wraps regardless of what the chop argument is set to
|
1405
1332
|
"""
|
1406
|
-
dest = self.stdout if dest is None else dest
|
1407
|
-
|
1408
1333
|
# Attempt to detect if we are not running within a fully functional terminal.
|
1409
1334
|
# Don't try to use the pager when being run by a continuous integration system like Jenkins + pexpect.
|
1410
1335
|
functional_terminal = False
|
1411
1336
|
|
1412
|
-
if self.stdin.isatty() and
|
1337
|
+
if self.stdin.isatty() and self.stdout.isatty():
|
1413
1338
|
if sys.platform.startswith('win') or os.environ.get('TERM') is not None:
|
1414
1339
|
functional_terminal = True
|
1415
1340
|
|
@@ -1430,7 +1355,7 @@ class Cmd(cmd.Cmd):
|
|
1430
1355
|
with self.sigint_protection:
|
1431
1356
|
import subprocess
|
1432
1357
|
|
1433
|
-
pipe_proc = subprocess.Popen(pager, shell=True, stdin=subprocess.PIPE, stdout=
|
1358
|
+
pipe_proc = subprocess.Popen(pager, shell=True, stdin=subprocess.PIPE, stdout=self.stdout)
|
1434
1359
|
pipe_proc.communicate(final_msg.encode('utf-8', 'replace'))
|
1435
1360
|
except BrokenPipeError:
|
1436
1361
|
# This occurs if a command's output is being piped to another process and that process closes before the
|
@@ -1439,7 +1364,7 @@ class Cmd(cmd.Cmd):
|
|
1439
1364
|
if self.broken_pipe_warning:
|
1440
1365
|
sys.stderr.write(self.broken_pipe_warning)
|
1441
1366
|
else:
|
1442
|
-
self.
|
1367
|
+
self.poutput(msg, end=end)
|
1443
1368
|
|
1444
1369
|
# ----- Methods related to tab completion -----
|
1445
1370
|
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: cmd2
|
3
|
-
Version: 2.5.
|
3
|
+
Version: 2.5.8
|
4
4
|
Summary: cmd2 - quickly build feature-rich and user-friendly interactive command line applications in Python
|
5
5
|
Author: cmd2 Contributors
|
6
6
|
License: The MIT License (MIT)
|
@@ -89,7 +89,6 @@ Requires-Dist: types-setuptools; extra == "validate"
|
|
89
89
|
[](http://cmd2.readthedocs.io/en/latest/?badge=latest)
|
90
90
|
<a href="https://discord.gg/RpVG6tk"><img src="https://img.shields.io/badge/chat-on%20discord-7289da.svg" alt="Chat"></a>
|
91
91
|
|
92
|
-
|
93
92
|
<p align="center">
|
94
93
|
<a href="#the-developers-toolbox">Developer's Toolbox</a> •
|
95
94
|
<a href="#philosophy">Philosophy</a> •
|
@@ -104,17 +103,15 @@ Requires-Dist: types-setuptools; extra == "validate"
|
|
104
103
|
|
105
104
|
cmd2 is a tool for building interactive command line applications in Python. Its goal is to make it
|
106
105
|
quick and easy for developers to build feature-rich and user-friendly interactive command line
|
107
|
-
applications.
|
108
|
-
[cmd](https://docs.python.org/3/library/cmd.html) module.
|
106
|
+
applications. It provides a simple API which is an extension of Python's built-in
|
107
|
+
[cmd](https://docs.python.org/3/library/cmd.html) module. cmd2 provides a wealth of features on top
|
109
108
|
of cmd to make your life easier and eliminates much of the boilerplate code which would be necessary
|
110
109
|
when using cmd.
|
111
110
|
|
112
|
-
The developers toolbox
|
113
|
-
----------------------
|
111
|
+
## The developers toolbox
|
114
112
|
|
115
113
|

|
116
114
|
|
117
|
-
|
118
115
|
When creating solutions developers have no shortage of tools to create rich and smart user interfaces.
|
119
116
|
System administrators have long been duct taping together brittle workflows based on a menagerie of simple command line tools created by strangers on github and the guy down the hall.
|
120
117
|
Unfortunately, when CLIs become significantly complex the ease of command discoverability tends to fade quickly.
|
@@ -125,15 +122,13 @@ The price we pay for beautifully colored displays is complexity required to aggr
|
|
125
122
|
The `cmd2` framework provides a great mixture of both worlds. Application designers can easily create complex applications and rely on the cmd2 library to offer effortless user facing help and extensive tab completion.
|
126
123
|
When users become comfortable with functionality, cmd2 turns into a feature rich library enabling a smooth transition to full automation. If designed with enough forethought, a well implemented cmd2 application can serve as a boutique workflow tool. `cmd2` pulls off this flexibility based on two pillars of philosophy:
|
127
124
|
|
128
|
-
|
129
|
-
|
125
|
+
- Tab Completion
|
126
|
+
- Automation Transition
|
130
127
|
|
131
|
-
Philosophy
|
132
|
-
-------------
|
128
|
+
## Philosophy
|
133
129
|
|
134
130
|
<a href="https://imgflip.com/i/63h03x"><img src="https://i.imgflip.com/63h03x.jpg" title="made at imgflip.com" width="70%" height="%70"/></a>
|
135
131
|
|
136
|
-
|
137
132
|
Deep extensive tab completion and help text generation based on the argparse library create the first pillar of 'ease of command discovery'. The following is a list of features in this category.
|
138
133
|
|
139
134
|
- Great tab completion of commands, subcommands, file system paths, and shell commands.
|
@@ -152,9 +147,8 @@ cmd2 creates the second pillar of 'ease of transition to automation' through ali
|
|
152
147
|
- Powerful and flexible built-in Python scripting of your application using the `run_pyscript` command
|
153
148
|
- Transcripts for use with built-in regression can be automatically generated from `history -t` or `run_script -t`
|
154
149
|
|
150
|
+
## Installation
|
155
151
|
|
156
|
-
Installation
|
157
|
-
------------
|
158
152
|
On all operating systems, the latest stable version of `cmd2` can be installed using pip:
|
159
153
|
|
160
154
|
```bash
|
@@ -167,31 +161,26 @@ For information on other installation options, see
|
|
167
161
|
[Installation Instructions](https://cmd2.readthedocs.io/en/latest/overview/installation.html) in the cmd2
|
168
162
|
documentation.
|
169
163
|
|
164
|
+
## Documentation
|
170
165
|
|
171
|
-
Documentation
|
172
|
-
-------------
|
173
166
|
The latest documentation for cmd2 can be read online here: https://cmd2.readthedocs.io/en/latest/
|
174
167
|
|
175
168
|
It is available in HTML, PDF, and ePub formats.
|
176
169
|
|
177
|
-
|
178
170
|
The best way to learn the cmd2 api is to delve into the example applications located in source under examples.
|
179
171
|
|
180
|
-
Tutorials
|
181
|
-
---------
|
182
|
-
|
183
|
-
* PyOhio 2019 presentation:
|
184
|
-
* [video](https://www.youtube.com/watch?v=pebeWrTqIIw)
|
185
|
-
* [slides](https://github.com/python-cmd2/talks/blob/master/PyOhio_2019/cmd2-PyOhio_2019.pdf)
|
186
|
-
* [example code](https://github.com/python-cmd2/talks/tree/master/PyOhio_2019/examples)
|
187
|
-
* [Cookiecutter](https://github.com/cookiecutter/cookiecutter) Templates from community
|
188
|
-
* Basic cookiecutter template for cmd2 application : https://github.com/jayrod/cookiecutter-python-cmd2
|
189
|
-
* Advanced cookiecutter template with external plugin support : https://github.com/jayrod/cookiecutter-python-cmd2-ext-plug
|
190
|
-
* [Example Applications](https://github.com/jayrod/cmd2-example-apps)
|
172
|
+
## Tutorials
|
191
173
|
|
174
|
+
- PyOhio 2019 presentation:
|
175
|
+
- [video](https://www.youtube.com/watch?v=pebeWrTqIIw)
|
176
|
+
- [slides](https://github.com/python-cmd2/talks/blob/master/PyOhio_2019/cmd2-PyOhio_2019.pdf)
|
177
|
+
- [example code](https://github.com/python-cmd2/talks/tree/master/PyOhio_2019/examples)
|
178
|
+
- [Cookiecutter](https://github.com/cookiecutter/cookiecutter) Templates from community
|
179
|
+
- Basic cookiecutter template for cmd2 application : https://github.com/jayrod/cookiecutter-python-cmd2
|
180
|
+
- Advanced cookiecutter template with external plugin support : https://github.com/jayrod/cookiecutter-python-cmd2-ext-plug
|
181
|
+
- [Example Applications](https://github.com/jayrod/cmd2-example-apps)
|
192
182
|
|
193
|
-
Hello World
|
194
|
-
-----------
|
183
|
+
## Hello World
|
195
184
|
|
196
185
|
```python
|
197
186
|
#!/usr/bin/env python
|
@@ -212,36 +201,48 @@ if __name__ == '__main__':
|
|
212
201
|
|
213
202
|
```
|
214
203
|
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
|
232
|
-
|
233
|
-
| [
|
234
|
-
| [
|
235
|
-
| [
|
236
|
-
| [Poseidon](https://github.com/
|
237
|
-
| [
|
238
|
-
| [
|
239
|
-
| [
|
240
|
-
| [
|
241
|
-
| [
|
242
|
-
|
204
|
+
## Found a bug?
|
205
|
+
|
206
|
+
If you think you've found a bug, please first read through the open [Issues](https://github.com/python-cmd2/cmd2/issues). If you're confident it's a new bug, go ahead and create a new GitHub issue. Be sure to include as much information as possible so we can reproduce the bug. At a minimum, please state the following:
|
207
|
+
|
208
|
+
- `cmd2` version
|
209
|
+
- Python version
|
210
|
+
- OS name and version
|
211
|
+
- What you did to cause the bug to occur
|
212
|
+
- Include any traceback or error message associated with the bug
|
213
|
+
|
214
|
+
## Projects using cmd2
|
215
|
+
|
216
|
+
| Application Name | Description | Organization or Author |
|
217
|
+
| --------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------- |
|
218
|
+
| [CephFS Shell](https://github.com/ceph/ceph) | The Ceph File System, or CephFS, is a POSIX-compliant file system built on top of Ceph’s distributed object store | [ceph](https://ceph.com/) |
|
219
|
+
| [garak](https://github.com/NVIDIA/garak) | LLM vulnerability scanner that checks if an LLM can be made to fail in a way we don't want | [NVIDIA](https://github.com/NVIDIA) |
|
220
|
+
| [medusa](https://github.com/Ch0pin/medusa) | Binary instrumentation framework that that automates processes for the dynamic analysis of Android and iOS Applications | [Ch0pin](https://github.com/Ch0pin) |
|
221
|
+
| [InternalBlue](https://github.com/seemoo-lab/internalblue) | Bluetooth experimentation framework for Broadcom and Cypress chips | [Secure Mobile Networking Lab](https://github.com/seemoo-lab) |
|
222
|
+
| [SCCMHunter](https://github.com/garrettfoster13/sccmhunter) | A post-ex tool built to streamline identifying, profiling, and attacking SCCM related assets in an Active Directory domain | [Garret Foster](https://github.com/garrettfoster13) |
|
223
|
+
| [Unipacker](https://github.com/unipacker/unipacker) | Automatic and platform-independent unpacker for Windows binaries based on emulation | [unipacker](https://github.com/unipacker) |
|
224
|
+
| [Frankenstein](https://github.com/seemoo-lab/frankenstein) | Broadcom and Cypress firmware emulation for fuzzing and further full-stack debugging | [Secure Mobile Networking Lab](https://github.com/seemoo-lab) |
|
225
|
+
| [Poseidon](https://github.com/faucetsdn/poseidon) | Leverages software-defined networks (SDNs) to acquire and then feed network traffic to a number of machine learning techniques. | [Faucet SDN](https://github.com/faucetsdn) |
|
226
|
+
| [DFTimewolf](https://github.com/log2timeline/dftimewolf) | A framework for orchestrating forensic collection, processing and data export | [log2timeline](https://github.com/log2timeline) |
|
227
|
+
| [GAP SDK](https://github.com/GreenWaves-Technologies/gap_sdk) | SDK for Greenwaves Technologies' GAP8 IoT Application Processor | [GreenWaves Technologies](https://github.com/GreenWaves-Technologies) |
|
228
|
+
| [REW Sploit](https://github.com/REW-sploit/REW-sploit) | Emulate and Dissect Metasploit Framework (MSF) and other attacks | [REW-sploit](https://github.com/REW-sploit) |
|
229
|
+
| [tomcatmanager](https://github.com/tomcatmanager/tomcatmanager) | A command line tool and python library for managing a tomcat server | [tomcatmanager](https://github.com/tomcatmanager) |
|
230
|
+
| [Falcon Toolkit](https://github.com/CrowdStrike/Falcon-Toolkit) | Unleash the power of the CrowdStrike Falcon Platform at the CLI | [CrowdStrike](https://github.com/CrowdStrike) |
|
231
|
+
| [EXPLIoT](https://gitlab.com/expliot_framework/expliot) | Internet of Things Security Testing and Exploitation framework | [expliot_framework](https://gitlab.com/expliot_framework/) |
|
243
232
|
|
244
233
|
Possibly defunct but still good examples
|
245
234
|
|
246
|
-
|
247
|
-
|
235
|
+
| Application Name | Description | Organization or Author |
|
236
|
+
| ----------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- | -------------------------------------------------------------- |
|
237
|
+
| [Katana](https://github.com/JohnHammond/katana) | Automatic CTF Challenge Solver | [John Hammond](https://github.com/JohnHammond) |
|
238
|
+
| [SatanSword](https://github.com/Lucifer1993/SatanSword) (in Chinese) | Comprehensive Penetration Framework for Red Teaming | [Lucifer1993](https://github.com/Lucifer1993) |
|
239
|
+
| [Jok3r](http://www.jok3r-framework.com) | Network & Web Pentest Automation Framework | [Koutto](https://github.com/koutto) |
|
240
|
+
| [Counterfit](https://github.com/Azure/counterfit) | a CLI that provides a generic automation layer for assessing the security of ML models | [Microsoft Azure](https://github.com/Azure) |
|
241
|
+
| [Overlord](https://github.com/qsecure-labs/overlord) | Red Teaming Infrastructure Automation | [QSecure Labs](https://github.com/qsecure-labs) |
|
242
|
+
| [Automated Reconnaissance Pipeline](https://github.com/epi052/recon-pipeline) | An automated target reconnaissance pipeline | [epi052](https://github.com/epi052) |
|
243
|
+
| [JSShell](https://github.com/Den1al/JSShell) | An interactive multi-user web JavaScript (JS) shell | [Den1al](https://github.com/Den1al) |
|
244
|
+
| [RedShell](https://github.com/Verizon/redshell) | An interactive command prompt for red teaming and pentesting | [Verizon](https://github.com/Verizon) |
|
245
|
+
| [FLASHMINGO](https://github.com/mandiant/flashmingo) | Automatic analysis of SWF files based on some heuristics. Extensible via plugins. | [Mandiant](https://github.com/mandiant) |
|
246
|
+
| [psiTurk](https://github.com/NYUCCL/psiTurk) | An open platform for science on Amazon Mechanical Turk | [NYU Computation and Cognition Lab](https://github.com/NYUCCL) |
|
247
|
+
|
248
|
+
Note: If you have created an application based on `cmd2` that you would like us to mention here, please get in touch.
|
@@ -1,9 +1,9 @@
|
|
1
1
|
cmd2/__init__.py,sha256=C6IHJ_uHgkqejuRwA10IK0-OzPxHKyZbPn82nMUwn-A,2602
|
2
|
-
cmd2/ansi.py,sha256=
|
2
|
+
cmd2/ansi.py,sha256=DD1yVk4EnbKSmGM9Tj8jxWv23UZBVjbhdf0oOVhhl_c,32054
|
3
3
|
cmd2/argparse_completer.py,sha256=6z0zmODqM7vhQhI0c6JUvCmR2V4qfdWQEyTZeNIea8c,36505
|
4
4
|
cmd2/argparse_custom.py,sha256=bbAYRr79ZSJWGchd7trmRQDHWAsSJaW0dTQMp65Mrv4,57806
|
5
5
|
cmd2/clipboard.py,sha256=7EISono76d7djj17hbvR9cCTB7jVGSBkUjgVQiMyUjE,549
|
6
|
-
cmd2/cmd2.py,sha256
|
6
|
+
cmd2/cmd2.py,sha256=--45LzbUB5vLrrHYPV_pSQK3H9ePAacb4lBlXBQfB1A,261355
|
7
7
|
cmd2/command_definition.py,sha256=OscFEk-O2N20fb8_fhkczqclaCxOwYyxNTnXWXOlngg,7655
|
8
8
|
cmd2/constants.py,sha256=DioxETv-_HzcMUnjuPyz7Cqw4YEt_MTrzOMotiHj-Jo,1981
|
9
9
|
cmd2/decorators.py,sha256=XXQKqei5CVM6k5zt8CdBmIDan-QwuN3YgJiaIsabbuA,19820
|
@@ -17,8 +17,8 @@ cmd2/rl_utils.py,sha256=HVPdNjuYyU67-XerPUJArmzhohzI1ABrZhU9cLc-EIs,11538
|
|
17
17
|
cmd2/table_creator.py,sha256=qoxt9s3MxQkfSkp4cIPFMlVzC7kRjUU55p0ow7pFQus,47544
|
18
18
|
cmd2/transcript.py,sha256=I0sD38RbG79Qz9GXIlfh1pHSNmWBTY2SLZAKEdSLWI4,9182
|
19
19
|
cmd2/utils.py,sha256=4eBvbG6yqe3wg9wwi2jdng2iy5gghueNQjuF2afSyuI,49385
|
20
|
-
cmd2-2.5.
|
21
|
-
cmd2-2.5.
|
22
|
-
cmd2-2.5.
|
23
|
-
cmd2-2.5.
|
24
|
-
cmd2-2.5.
|
20
|
+
cmd2-2.5.8.dist-info/LICENSE,sha256=QXrW0Z0merk9mncyUkn-sgRxhT8_o1dL5HEaBNH47Q4,1099
|
21
|
+
cmd2-2.5.8.dist-info/METADATA,sha256=-y-uEodZc06B7Akuvlb5oRWVfaTmuUqjwJZ4kGuvR_I,18098
|
22
|
+
cmd2-2.5.8.dist-info/WHEEL,sha256=PZUExdf71Ui_so67QXpySuHtCi3-J3wvF4ORK6k_S8U,91
|
23
|
+
cmd2-2.5.8.dist-info/top_level.txt,sha256=gJbOJmyrARwLhm5diXAtzlNQdxbDZ8iRJ8HJi65_5hg,5
|
24
|
+
cmd2-2.5.8.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|