Skip to content

Commit d3e5d75

Browse files
n-thumanngreenbonebot
authored andcommitted
Add: Source API CLI interface
1 parent c21f851 commit d3e5d75

File tree

3 files changed

+63
-0
lines changed

3 files changed

+63
-0
lines changed

pontos/nvd/source/__init__.py

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
# SPDX-FileCopyrightText: 2023 Greenbone AG
2+
#
3+
# SPDX-License-Identifier: GPL-3.0-or-later
4+
5+
import asyncio
6+
from argparse import Namespace
7+
8+
from pontos.nvd.source.api import SourceApi
9+
10+
from ._parser import parse_args
11+
12+
__all__ = ("SourceApi",)
13+
14+
15+
async def query_changes(args: Namespace) -> None:
16+
async with SourceApi() as api:
17+
async for source in api.sources(
18+
source_identifier=args.source_identifier,
19+
request_results=args.number,
20+
start_index=args.start,
21+
):
22+
print(source)
23+
24+
25+
def main() -> None:
26+
try:
27+
args = parse_args()
28+
asyncio.run(query_changes(args))
29+
except KeyboardInterrupt:
30+
pass
31+
32+
33+
if __name__ == "__main__":
34+
main()

pontos/nvd/source/_parser.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# SPDX-FileCopyrightText: 2024 Greenbone AG
2+
#
3+
# SPDX-License-Identifier: GPL-3.0-or-later
4+
5+
from argparse import ArgumentParser, Namespace
6+
from typing import Optional, Sequence
7+
8+
import shtab
9+
10+
11+
def parse_args(args: Optional[Sequence[str]] = None) -> Namespace:
12+
parser = ArgumentParser()
13+
shtab.add_argument_to(parser)
14+
parser.add_argument(
15+
"--source-identifier",
16+
help="Get sources record for this source identifier",
17+
)
18+
parser.add_argument(
19+
"--number", "-n", metavar="N", help="Request only N sources", type=int
20+
)
21+
parser.add_argument(
22+
"--start",
23+
"-s",
24+
help="Index of the first source to request.",
25+
type=int,
26+
default=0,
27+
)
28+
return parser.parse_args(args)

pyproject.toml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,7 @@ pontos-nvd-cpe = 'pontos.nvd.cpe:cpe_main'
124124
pontos-nvd-cpes = 'pontos.nvd.cpe:cpes_main'
125125
pontos-nvd-cpe-match = 'pontos.nvd.cpe_matches:cpe_match_main'
126126
pontos-nvd-cpe-matches = 'pontos.nvd.cpe_matches:cpe_matches_main'
127+
pontos-nvd-sources = 'pontos.nvd.source:main'
127128

128129
[build-system]
129130
requires = ["poetry-core>=1.0.0"]

0 commit comments

Comments
 (0)