55import argparse
66import re
77
8+ from util import validate_shebangs
9+
810
911def build_argument_parser ():
1012 """Build and return the argument parser."""
@@ -13,6 +15,12 @@ def build_argument_parser():
1315 description = __doc__ , formatter_class = argparse .RawDescriptionHelpFormatter
1416 )
1517 parser .add_argument ("filenames" , nargs = "*" , help = "Filenames to check." )
18+ parser .add_argument (
19+ "--valid-shebangs" ,
20+ nargs = "+" ,
21+ default = [],
22+ help = "Add other valid shebangs for your environment" ,
23+ )
1624 return parser
1725
1826
@@ -28,13 +36,22 @@ def main(argv=None):
2836 with open (filename , "r" , encoding = "utf-8" ) as openfile :
2937 ea_content = openfile .read ()
3038
39+ # Ensure script contains both <result> and </result> tags
3140 if "<result>" not in ea_content or "</result>" not in ea_content :
3241 print (f"{ filename } : missing <result> and/or </result> tags" )
3342 retval = 1
34- all_results = len (re .findall ("result.*\/result" , ea_content ))
35- proper_results = len (re .findall ("<result>.*<\/result>" , ea_content ))
43+
44+ # Ensure result tags are in proper order (open then close)
45+ all_results = len (re .findall (r"result.*\/result" , ea_content ))
46+ proper_results = len (re .findall (r"<result>.*<\/result>" , ea_content ))
3647 if proper_results < all_results :
37- print (f"{ filename } : has incomplete <result> tags!" )
48+ print (f"{ filename } : has incomplete <result> tags" )
49+ retval = 1
50+
51+ # Ensure all pkginfo scripts have a proper shebang.
52+ if not validate_shebangs (ea_content , filename , args .valid_shebangs ):
53+ print (f"{ filename } : does not start with a valid shebang" )
54+ retval = 1
3855
3956 return retval
4057
0 commit comments