Clone of official tools

Revision:
22:9e85236d8716
Parent:
13:ab47a20b66f0
Child:
29:1210849dba19
--- a/options.py	Fri Jul 15 22:58:15 2016 +0100
+++ b/options.py	Sat Jul 16 00:34:03 2016 +0100
@@ -14,33 +14,40 @@
 See the License for the specific language governing permissions and
 limitations under the License.
 """
-from optparse import OptionParser
+from argparse import ArgumentParser
 from tools.toolchains import TOOLCHAINS
 from tools.targets import TARGET_NAMES
-
+from utils import argparse_force_uppercase_type, argparse_lowercase_hyphen_type, argparse_many
 
 def get_default_options_parser(add_clean=True, add_options=True):
-    parser = OptionParser()
+    parser = ArgumentParser()
 
     targetnames = TARGET_NAMES
     targetnames.sort()
     toolchainlist = list(TOOLCHAINS)
     toolchainlist.sort()
 
-    parser.add_option("-m", "--mcu",
-                  help="build for the given MCU (%s)" % ', '.join(targetnames),
-                  metavar="MCU")
+    parser.add_argument("-m", "--mcu",
+                      help="build for the given MCU (%s)" % ', '.join(targetnames),
+                      metavar="MCU",
+                      type=argparse_many(argparse_force_uppercase_type(targetnames, "MCU")))
 
-    parser.add_option("-t", "--tool",
-                  help="build using the given TOOLCHAIN (%s)" % ', '.join(toolchainlist),
-                  metavar="TOOLCHAIN")
+    parser.add_argument("-t", "--tool",
+                      help="build using the given TOOLCHAIN (%s)" % ', '.join(toolchainlist),
+                      metavar="TOOLCHAIN",
+                      type=argparse_many(argparse_force_uppercase_type(toolchainlist, "toolchain")))
+
+    parser.add_argument("--color",
+                        help="print Warnings, and Errors in color",
+                        action="store_true", default=False)
 
     if add_clean:
-        parser.add_option("-c", "--clean", action="store_true", default=False,
+        parser.add_argument("-c", "--clean", action="store_true", default=False,
                       help="clean the build directory")
 
     if add_options:
-        parser.add_option("-o", "--options", action="append",
-                      help='Add a build option ("save-asm": save the asm generated by the compiler, "debug-info": generate debugging information, "analyze": run Goanna static code analyzer")')
+        parser.add_argument("-o", "--options", action="append",
+                          help='Add a build argument ("save-asm": save the asm generated by the compiler, "debug-info": generate debugging information, "analyze": run Goanna static code analyzer")',
+                          type=argparse_lowercase_hyphen_type(['save-asm', 'debug-info', 'analyze'], "build option"))
 
     return parser