def normalize_target_name(target):
    return target.replace("//", "").replace("/", "__").replace(":", "___")

def license_map(name, targets = [], opts = [], **kwargs):
    """Generate XML for all targets that depend directly on a LICENSE file"""
    xmls = []
    tools = ["//tools/bzl:license-map.py", "//lib:all-licenses"]
    for target in targets:
        subname = name + "_" + normalize_target_name(target) + ".xml"
        xmls.append("$(location :%s)" % subname)
        tools.append(subname)
        native.genquery(
            name = subname,
            scope = [target],

            # Find everything that depends on a license file, but remove
            # the license files themselves from this list.
            expression = 'rdeps(%s, filter("//lib:LICENSE.*", deps(%s)),1) - filter("//lib:LICENSE.*", deps(%s))' % (target, target, target),

            # We are interested in the edges of the graph ({java_library,
            # license-file} tuples).  'query' provides this in the XML output.
            opts = ["--output=xml"],
        )

    # post process the XML into our favorite format.
    native.genrule(
        name = "gen_license_txt_" + name,
        cmd = "python3 $(location //tools/bzl:license-map.py) %s %s > $@" % (" ".join(opts), " ".join(xmls)),
        outs = [name + ".gen.txt"],
        tools = tools,
        **kwargs
    )

def license_test(name, target):
    """Make sure a target doesn't depend on DO_NOT_DISTRIBUTE license"""
    txt = name + "-forbidden.txt"

    # fully qualify target name.
    if target[0] not in ":/":
        target = ":" + target
    if target[0] != "/":
        target = "//" + native.package_name() + target

    forbidden = "//lib:LICENSE-DO_NOT_DISTRIBUTE"
    native.genquery(
        name = txt,
        scope = [target, forbidden],
        # Find everything that depends on a license file, but remove
        # the license files themselves from this list.
        expression = 'rdeps(%s, "%s", 1) - rdeps(%s, "%s", 0)' % (target, forbidden, target, forbidden),
    )
    native.sh_test(
        name = name,
        srcs = ["//tools/bzl:test_license.sh"],
        args = ["$(location :%s)" % txt],
        data = [txt],
    )
