Skip to content

Commit 616a5ca

Browse files
committed
Use argparse lib to ingest CL args
1 parent e6be56f commit 616a5ca

1 file changed

Lines changed: 23 additions & 32 deletions

File tree

scripts/merge_packages.py

Lines changed: 23 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -4,55 +4,46 @@
44
# Attempts to merge related Malware Subjects
55
import sys
66
import os
7+
import argparse
78
import maec
89
from maec.utils.merge import merge_documents
910

1011
USAGE_TEXT = """
1112
MAEC Package Merge Script v0.10 BETA
1213
*Merges two or more MAEC Package XML documents
1314
*Attempts to merge related (e.g., same MD5 hash) Malware Subjects
14-
15-
Usage: python merge_packages.py -o <output file name> -l <single whitespace separated list of MAEC Package files> OR -d <directory name>
1615
"""
1716

1817
def main():
19-
infilenames = []
20-
list_mode = False
21-
directoryname = ''
22-
outfilename = ''
23-
24-
#Get the command-line arguments
25-
args = sys.argv[1:]
26-
27-
if len(args) < 3:
28-
print USAGE_TEXT
29-
sys.exit(1)
30-
31-
for i in range(0,len(args)):
32-
if args[i] == '-o':
33-
outfilename = args[i+1]
34-
elif args[i] == '-l':
35-
list_mode = True
36-
elif args[i] == '-d':
37-
directoryname = args[i+1]
38-
39-
if outfilename == '':
40-
print USAGE_TEXT
41-
sys.exit(1)
18+
parser = argparse.ArgumentParser(description=USAGE_TEXT)
19+
mutex_group = parser.add_mutually_exclusive_group()
20+
required_group = parser.add_argument_group('required arguments')
21+
mutex_group.add_argument(
22+
'-l', '--list', nargs='+',
23+
help='single whitespace separated list of MAEC Package files'
24+
)
25+
mutex_group.add_argument(
26+
'-d', '--directory',
27+
help='directory name'
28+
)
29+
required_group.add_argument(
30+
'-o', '--output', required=True,
31+
help='output file name'
32+
)
33+
args = parser.parse_args()
4234

4335
sys.stdout.write("Merging...")
4436
# Get the list of input files and perform the merge operation
45-
if list_mode:
46-
files = args[3:]
47-
merge_documents(files, outfilename)
48-
elif directoryname != '':
37+
if args.list:
38+
merge_documents(args.list, args.output)
39+
elif args.directory:
4940
file_list = []
50-
for filename in os.listdir(directoryname):
41+
for filename in os.listdir(args.directory):
5142
if '.xml' not in filename:
5243
pass
5344
else:
54-
file_list.append(os.path.join(directoryname, filename))
55-
merge_documents(file_list, outfilename)
45+
file_list.append(os.path.join(args.directory, filename))
46+
merge_documents(file_list, args.output)
5647
sys.stdout.write("Done.")
5748

5849
if __name__ == "__main__":

0 commit comments

Comments
 (0)