Move auto_gen_test_config.py to argparse.

Follow up to aosp/2752414

Test: atest-dev auto_gen_test_config_test
Change-Id: I401c6213f0ed5e97eb97b1c603a8b6c5286f0d88
diff --git a/tools/auto_gen_test_config.py b/tools/auto_gen_test_config.py
index 0bf47c6..8ee599a 100755
--- a/tools/auto_gen_test_config.py
+++ b/tools/auto_gen_test_config.py
@@ -17,6 +17,7 @@
 """A tool to generate TradeFed test config file.
 """
 
+import argparse
 import re
 import os
 import shutil
@@ -43,20 +44,28 @@
   Returns:
     0 if no error, otherwise 1.
   """
-  if len(argv) != 4 and len(argv) != 6:
-    sys.stderr.write(
-        f'Invalid arguments: {argv}. The script requires 4 arguments for file paths: '
-        'target_config, android_manifest (or the xmltree dump), empty_config, '
-        'instrumentation_test_config_template, '
-        'and 2 optional arguments for extra configs: '
-        '--extra-configs \'EXTRA_CONFIGS\'.\n')
-    return 1
 
-  target_config = argv[0]
-  android_manifest = argv[1]
-  empty_config = argv[2]
-  instrumentation_test_config_template = argv[3]
-  extra_configs = '\n'.join(argv[5].split('\\n')) if len(argv) == 6 else ''
+  parser = argparse.ArgumentParser()
+  parser.add_argument(
+      "target_config",
+      help="Path to the generated output config.")
+  parser.add_argument(
+      "android_manifest",
+      help="Path to AndroidManifest.xml or output of 'aapt2 dump xmltree' with .xmltree extension.")
+  parser.add_argument(
+      "empty_config",
+      help="Path to the empty config template.")
+  parser.add_argument(
+      "instrumentation_test_config_template",
+      help="Path to the instrumentation test config template.")
+  parser.add_argument("--extra-configs", default="")
+  args = parser.parse_args(argv)
+
+  target_config = args.target_config
+  android_manifest = args.android_manifest
+  empty_config = args.empty_config
+  instrumentation_test_config_template = args.instrumentation_test_config_template
+  extra_configs = '\n'.join(args.extra_configs.split('\\n'))
 
   module = os.path.splitext(os.path.basename(target_config))[0]
 
@@ -70,7 +79,7 @@
       #                                                          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
       pattern = re.compile(r"\(Raw:\s\"(.*)\"\)$")
       curr_element = None
-      for line in manifest.readlines():
+      for line in manifest:
         curr_line = line.strip()
         if curr_line.startswith("E:"):
           # e.g. "E: instrumentation (line=9)"