-
Notifications
You must be signed in to change notification settings - Fork 13
Expand file tree
/
Copy pathmain.py
More file actions
97 lines (83 loc) · 2.81 KB
/
Copy pathmain.py
File metadata and controls
97 lines (83 loc) · 2.81 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
import os
import signal
import site
import sys
import warnings
import click
from click_plugins import with_plugins
from pkg_resources import iter_entry_points
from py42.settings import set_user_agent_prefix
from code42cli import BANNER
from code42cli import PRODUCT_NAME
from code42cli.__version__ import __version__
from code42cli.click_ext.groups import ExceptionHandlingGroup
from code42cli.cmds.alert_rules import alert_rules
from code42cli.cmds.alerts import alerts
from code42cli.cmds.auditlogs import audit_logs
from code42cli.cmds.cases import cases
from code42cli.cmds.devices import devices
from code42cli.cmds.legal_hold import legal_hold
from code42cli.cmds.profile import profile
from code42cli.cmds.securitydata import security_data
from code42cli.cmds.shell import shell
from code42cli.cmds.trustedactivities import trusted_activities
from code42cli.cmds.users import users
from code42cli.cmds.watchlists import watchlists
from code42cli.options import sdk_options
warnings.simplefilter("ignore", DeprecationWarning)
# Handle KeyboardInterrupts by just exiting instead of printing out a stack
def exit_on_interrupt(signal, frame):
click.echo(err=True)
sys.exit(1)
signal.signal(signal.SIGINT, exit_on_interrupt)
# Sets part of the user agent string that py42 attaches to requests for the purposes of
# identifying CLI users.
set_user_agent_prefix(f"{PRODUCT_NAME}/{__version__} (Code42; code42.com )")
CONTEXT_SETTINGS = {
"help_option_names": ["-h", "--help"],
"max_content_width": 200,
}
@with_plugins(iter_entry_points("code42cli.plugins"))
@click.group(
cls=ExceptionHandlingGroup,
context_settings=CONTEXT_SETTINGS,
help=BANNER,
invoke_without_command=True,
no_args_is_help=True,
)
@click.option(
"--python",
is_flag=True,
help="Print path to the python interpreter env that `code42cli` is installed in.",
)
@click.option(
"--script-dir",
is_flag=True,
help="Print the directory the `code42` script was installed in (for adding to your PATH if needed).",
)
@sdk_options(hidden=True)
def cli(state, python, script_dir):
if python:
click.echo(sys.executable)
sys.exit(0)
if script_dir:
for root, _dirs, files in os.walk(site.PREFIXES[0]):
if "code42" in files or "code42.exe" in files:
print(root)
sys.exit(0)
for root, _dirs, files in os.walk(site.USER_BASE):
if "code42" in files or "code42.exe" in files:
print(root)
sys.exit(0)
cli.add_command(alerts)
cli.add_command(alert_rules)
cli.add_command(audit_logs)
cli.add_command(cases)
cli.add_command(devices)
cli.add_command(legal_hold)
cli.add_command(profile)
cli.add_command(security_data)
cli.add_command(shell)
cli.add_command(users)
cli.add_command(trusted_activities)
cli.add_command(watchlists)