commandline: Add build_target argument type support.
Add support to automatically validate a build target name and parse
it into a BuildTarget object.
BUG=chromium:1059441
TEST=run_tests
Change-Id: Id6d2c463687b26b1272547f04a7954722ca1ef77
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/chromite/+/2092491
Reviewed-by: Mike Frysinger <vapier@chromium.org>
Reviewed-by: Chris McDonald <cjmcdonald@chromium.org>
Commit-Queue: Alex Klein <saklein@chromium.org>
Tested-by: Alex Klein <saklein@chromium.org>
diff --git a/lib/build_target_util.py b/lib/build_target_util.py
index 7214b8f..c701c54 100644
--- a/lib/build_target_util.py
+++ b/lib/build_target_util.py
@@ -8,6 +8,7 @@
from __future__ import print_function
import os
+import re
class Error(Exception):
@@ -39,7 +40,7 @@
if build_root:
self.root = os.path.normpath(build_root)
else:
- self.root = GetDefaultSysrootPath(self.name)
+ self.root = get_default_sysroot_path(self.name)
def __eq__(self, other):
if self.__class__ is other.__class__:
@@ -75,8 +76,15 @@
"""
return '%s-%s' % (base_command, self.name)
-def GetDefaultSysrootPath(target_name):
- if target_name:
- return os.path.join('/build', target_name)
+
+def get_default_sysroot_path(build_target_name):
+ """Get the default sysroot path for a build target."""
+ if build_target_name:
+ return os.path.join('/build', build_target_name)
else:
raise InvalidNameError('Target name is required.')
+
+
+def is_valid_name(build_target_name):
+ """Validate |build_target_name| is a valid name."""
+ return bool(re.match(r'^[a-zA-Z0-9-_]+$', build_target_name))