Skip to content

Commit e43f284

Browse files
committed
Refactor code to prepare for other output formats
1 parent f2652c2 commit e43f284

File tree

2 files changed

+13
-22
lines changed

2 files changed

+13
-22
lines changed

cve_bin_tool/OutputEngine.py

+10-18
Original file line numberDiff line numberDiff line change
@@ -24,33 +24,24 @@ def output_cves(self, outfile, output=None):
2424
""" Output a list of CVEs
2525
format is modules[checker_name][version] = dict{id: severity}
2626
"""
27-
# if the output is csv we must open a file
28-
if output == "csv":
29-
outfile = open(f"{outfile}", "w")
30-
31-
writer = csv.writer(outfile)
32-
writer.writerow(["Module Name", "Version", "CVE Number", "Severity"])
3327

3428
writer = csv.writer(outfile)
29+
writer.writerow(["Module Name", "Version", "CVE Number", "Severity"])
3530
for modulename, versions in self.modules.items():
3631
for version, cve_list in versions.items():
3732
for cve_number, cve_severity in cve_list.items():
3833
row = [modulename, version, cve_number, cve_severity]
3934
writer.writerow(row)
4035

41-
# We must also close the file
42-
if output == "csv":
43-
outfile.close()
44-
45-
def output_csv(self):
36+
def output_file(self, output="csv"):
4637

47-
""" Generate a CSV file for list of CVE """
38+
""" Generate a file for list of CVE """
4839

4940
# Check if we need to generate a filename
5041
if self.filename == None:
51-
self.generate_filename("csv")
42+
self.generate_filename(output)
5243
else:
53-
self.filename = f"{self.filename}.csv"
44+
self.filename = f"{self.filename}.{output}"
5445
# check if the filename already exists
5546
file_list = os.listdir(os.getcwd())
5647
if self.filename in file_list:
@@ -60,7 +51,7 @@ def output_csv(self):
6051
self.logger.info(
6152
"Generating a new filename with Default Naming Convention"
6253
)
63-
self.generate_filename("csv")
54+
self.generate_filename(output)
6455

6556
# try opening that file
6657
try:
@@ -70,10 +61,11 @@ def output_csv(self):
7061
except Exception as E:
7162
self.logger.warning(E)
7263
self.logger.info("Switching Back to Default Naming Convention")
73-
self.generate_filename("csv")
64+
self.generate_filename(output)
7465

7566
# Log the filename generated
76-
self.logger.info(f"CSV output stored at {os.getcwd()}/{self.filename}")
67+
self.logger.info(f"Output stored at {os.getcwd()}/{self.filename}")
7768

7869
# call to output_cves
79-
self.output_cves(self.filename, "csv")
70+
with open(self.filename, "w") as f:
71+
self.output_cves(f, output)

cve_bin_tool/cli.py

+3-4
Original file line numberDiff line numberDiff line change
@@ -491,10 +491,9 @@ def main(argv=None, outfile=sys.stdout):
491491
and args.output == "console"
492492
):
493493
output.output_cves(outfile)
494-
495-
# If the args are passed for csv we will generate a CSV output
496-
if args.output == "csv":
497-
output.output_csv()
494+
else:
495+
# If the args are passed for csv/json we will generate a file output
496+
output.output_file(args.output)
498497

499498
# Use the number of files with known cves as error code
500499
# as requested by folk planning to automate use of this script.

0 commit comments

Comments
 (0)