chore(CLI): start working on CLI (#4067)

This commit is contained in:
Pedro Martín
2024-05-24 12:27:48 +02:00
committed by GitHub
parent 3aa28329d2
commit e9670d7291
5 changed files with 77 additions and 2 deletions
View File
+6
View File
@@ -0,0 +1,6 @@
# CLI
To show the banner, use:
`python cli/cli.py banner`
## Listing
List services by provider.
`python cli/cli.py <provider> list-services`
+63
View File
@@ -0,0 +1,63 @@
import typer
from prowler.lib.banner import print_banner
from prowler.lib.check.check import (
list_fixers,
list_services,
print_fixers,
print_services,
)
app = typer.Typer()
aws = typer.Typer(name="aws")
azure = typer.Typer(name="azure")
gcp = typer.Typer(name="gcp")
kubernetes = typer.Typer(name="kubernetes")
app.add_typer(aws, name="aws")
app.add_typer(azure, name="azure")
app.add_typer(gcp, name="gcp")
app.add_typer(kubernetes, name="kubernetes")
def list_resources(provider: str, resource_type: str):
if resource_type == "services":
print_services(list_services(provider))
elif resource_type == "fixers":
print_fixers(list_fixers(provider))
def create_list_commands(provider_typer: typer.Typer):
provider_name = provider_typer.info.name
@provider_typer.command(
"list-services",
help=f"List the {provider_name} services that are supported by Prowler.",
)
def list_services_command():
list_resources(provider_name, "services")
@provider_typer.command(
"list-fixers",
help=f"List the {provider_name} fixers that are supported by Prowler.",
)
def list_fixers_command():
list_resources(provider_name, "fixers")
create_list_commands(aws)
create_list_commands(azure)
create_list_commands(gcp)
create_list_commands(kubernetes)
@app.command("banner", help="Prints the banner of the tool.")
def banner(show: bool = True):
if show:
print_banner(show)
else:
print("Banner is not shown.")
if __name__ == "__main__":
app()
Generated
+2 -2
View File
@@ -1,4 +1,4 @@
# This file is automatically @generated by Poetry 1.8.2 and should not be changed by hand.
# This file is automatically @generated by Poetry 1.7.1 and should not be changed by hand.
[[package]]
name = "about-time"
@@ -4906,4 +4906,4 @@ testing = ["big-O", "jaraco.functools", "jaraco.itertools", "more-itertools", "p
[metadata]
lock-version = "2.0"
python-versions = ">=3.9,<3.13"
content-hash = "39fab9048881d2893a1284d94f00cdac1e2b183665169918b20566b252746c16"
content-hash = "0ba1a37f3f5fbb2cecb16c6429fa9ed75c861ab7caeb10ee57f11eb3c5e546eb"
+6
View File
@@ -70,6 +70,12 @@ slack-sdk = "3.27.2"
tabulate = "0.9.0"
tzlocal = "5.2"
[tool.poetry.group.cli]
optional = true
[tool.poetry.group.cli.dependencies]
typer = "0.12.3"
[tool.poetry.group.dev.dependencies]
bandit = "1.7.8"
black = "24.4.2"