Clone of official tools

Revision:
24:25bff2709c20
Parent:
23:fbae331171fa
Child:
29:1210849dba19
--- a/project.py	Sat Jul 16 22:51:17 2016 +0100
+++ b/project.py	Mon Aug 01 09:10:17 2016 +0100
@@ -12,8 +12,9 @@
 from tools.tests import TESTS, TEST_MAP
 from tools.tests import test_known, test_name_known
 from tools.targets import TARGET_NAMES
+from tools.libraries import LIBRARIES
 from utils import argparse_filestring_type, argparse_many
-from utils import argparse_force_lowercase_type, argparse_force_uppercase_type
+from utils import argparse_force_lowercase_type, argparse_force_uppercase_type, argparse_dir_not_parent
 from project_api import setup_project, perform_export, print_results, get_lib_symbols
 
 
@@ -57,8 +58,8 @@
 
     parser.add_argument("-b",
                       dest="build",
-                      action="store_true",
                       default=False,
+                      type=argparse_dir_not_parent(ROOT),
                       help="use the mbed library build, instead of the sources")
 
     group.add_argument("-L", "--list-tests",
@@ -134,14 +135,19 @@
     for mcu in options.mcu:
         # Program Number or name
         p, src, ide = options.program, options.source_dir, options.ide
-        project_dir, project_name, project_temp = setup_project(mcu, ide, p, src, options.build)
+        try:
+            project_dir, project_name, project_temp = setup_project(mcu, ide, p, src, options.build)
+            zip = not bool(src) # create zip when no src_dir provided
+            clean = not bool(src) # don't clean when source is provided, use acrual source tree for IDE files
 
-        zip = src is []  # create zip when no src_dir provided
-        clean = src is []  # don't clean when source is provided, use acrual source tree for IDE files
-
-        # Export to selected toolchain
-        lib_symbols = get_lib_symbols(options.macros, src, p)
-        tmp_path, report = export(project_dir, project_name, ide, mcu, project_dir[0], project_temp, clean=clean, make_zip=zip, extra_symbols=lib_symbols, sources_relative=sources_relative)
+            # Export to selected toolchain
+            lib_symbols = get_lib_symbols(options.macros, src, p)
+            tmp_path, report = export(project_dir, project_name, ide, mcu, project_dir[0], project_temp, clean=clean, make_zip=zip, extra_symbols=lib_symbols, sources_relative=sources_relative)
+        except OSError as e:
+            if e.errno == 2:
+                report = dict(success=False, errormsg="Library path '%s' does not exist. Ensure that the library is built." % (e.filename))
+            else:
+                report = dict(success=False, errormsg="An OS error occured: errno #{}".format(e.errno))
         if report['success']:
             if not zip:
                 zip_path = join(project_temp, project_name)