blob: 929bb7e173399032a29725855d914bd725f7d114 [file] [log] [blame]
"""A rule for inferring a java package name."""
_JAVA_ROOTS = [
"javatests/",
"javatest/",
"java/",
]
def infer_java_package_name():
"""Infer a java package name based on current path below 'javatests' or 'java'"""
return _infer_java_package_name_from_path(native.package_name())
def infer_java_package_name_from_label(label):
package_path = _get_path_from_label(label)
return _infer_java_package_name_from_path(package_path)
def _infer_java_package_name_from_path(package_path):
for root in _JAVA_ROOTS:
if root in package_path:
root_index = package_path.rindex(root) + len(root)
return package_path[root_index:].replace("/", ".")
fail("Could not find one of java roots %s in %s" % (_JAVA_ROOTS, package_path))
def _get_path_from_label(label_string):
label_string = label_string.split(":")[0]
if not label_string.startswith("//"):
label_string = "//%s%s" % (native.package_name(), label_string)
return label_string