mirror of https://github.com/ARMmbed/mbed-os.git
Accept profile name as well as file path for tools/make.py --profile
--profile can be used with just a profile name eg. default, debug as long as <name>.json file is in default profile directory.pull/2986/head
parent
f5fb485dcd
commit
3af2c5ae14
|
@ -16,12 +16,13 @@ limitations under the License.
|
||||||
"""
|
"""
|
||||||
from json import load
|
from json import load
|
||||||
from os.path import join, dirname
|
from os.path import join, dirname
|
||||||
|
from os import listdir
|
||||||
from argparse import ArgumentParser
|
from argparse import ArgumentParser
|
||||||
from tools.toolchains import TOOLCHAINS
|
from tools.toolchains import TOOLCHAINS
|
||||||
from tools.targets import TARGET_NAMES
|
from tools.targets import TARGET_NAMES
|
||||||
from tools.utils import argparse_force_uppercase_type, \
|
from tools.utils import argparse_force_uppercase_type, \
|
||||||
argparse_lowercase_hyphen_type, argparse_many, \
|
argparse_lowercase_hyphen_type, argparse_many, \
|
||||||
argparse_filestring_type, args_error
|
argparse_filestring_type, args_error, argparse_profile_filestring_type
|
||||||
|
|
||||||
def get_default_options_parser(add_clean=True, add_options=True,
|
def get_default_options_parser(add_clean=True, add_options=True,
|
||||||
add_app_config=False):
|
add_app_config=False):
|
||||||
|
@ -73,7 +74,9 @@ def get_default_options_parser(add_clean=True, add_options=True,
|
||||||
|
|
||||||
if add_options:
|
if add_options:
|
||||||
parser.add_argument("--profile", dest="profile", action="append",
|
parser.add_argument("--profile", dest="profile", action="append",
|
||||||
type=argparse_filestring_type,
|
type=argparse_profile_filestring_type,
|
||||||
|
help="Build profile to use. Can be either path to json" \
|
||||||
|
"file or one of the default one ({})".format(", ".join(list_profiles())),
|
||||||
default=[])
|
default=[])
|
||||||
if add_app_config:
|
if add_app_config:
|
||||||
parser.add_argument("--app-config", default=None, dest="app_config",
|
parser.add_argument("--app-config", default=None, dest="app_config",
|
||||||
|
@ -82,6 +85,12 @@ def get_default_options_parser(add_clean=True, add_options=True,
|
||||||
|
|
||||||
return parser
|
return parser
|
||||||
|
|
||||||
|
def list_profiles():
|
||||||
|
"""Lists available build profiles
|
||||||
|
|
||||||
|
Checks default profile directory (mbed-os/tools/profiles/) for all the json files and return list of names only
|
||||||
|
"""
|
||||||
|
return [fn.replace(".json", "") for fn in listdir(join(dirname(__file__), "profiles")) if fn.endswith(".json")]
|
||||||
|
|
||||||
def extract_profile(parser, options, toolchain):
|
def extract_profile(parser, options, toolchain):
|
||||||
"""Extract a Toolchain profile from parsed options
|
"""Extract a Toolchain profile from parsed options
|
||||||
|
|
|
@ -22,7 +22,7 @@ import math
|
||||||
from os import listdir, remove, makedirs
|
from os import listdir, remove, makedirs
|
||||||
from shutil import copyfile
|
from shutil import copyfile
|
||||||
from os.path import isdir, join, exists, split, relpath, splitext, abspath
|
from os.path import isdir, join, exists, split, relpath, splitext, abspath
|
||||||
from os.path import commonprefix, normpath
|
from os.path import commonprefix, normpath, dirname
|
||||||
from subprocess import Popen, PIPE, STDOUT, call
|
from subprocess import Popen, PIPE, STDOUT, call
|
||||||
import json
|
import json
|
||||||
from collections import OrderedDict
|
from collections import OrderedDict
|
||||||
|
@ -435,6 +435,19 @@ def argparse_filestring_type(string):
|
||||||
raise argparse.ArgumentTypeError(
|
raise argparse.ArgumentTypeError(
|
||||||
"{0}"" does not exist in the filesystem.".format(string))
|
"{0}"" does not exist in the filesystem.".format(string))
|
||||||
|
|
||||||
|
def argparse_profile_filestring_type(string):
|
||||||
|
""" An argument parser that verifies that a string passed in is either
|
||||||
|
absolute path or a file name (expanded to
|
||||||
|
mbed-os/tools/profiles/<fname>.json) of a existing file"""
|
||||||
|
fpath = join(dirname(__file__), "profiles/{}.json".format(string))
|
||||||
|
if exists(string):
|
||||||
|
return string
|
||||||
|
elif exists(fpath):
|
||||||
|
return fpath
|
||||||
|
else:
|
||||||
|
raise argparse.ArgumentTypeError(
|
||||||
|
"{0} does not exist in the filesystem.".format(string))
|
||||||
|
|
||||||
def columnate(strings, separator=", ", chars=80):
|
def columnate(strings, separator=", ", chars=80):
|
||||||
""" render a list of strings as a in a bunch of columns
|
""" render a list of strings as a in a bunch of columns
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue