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

def license_map(name, targets = [], opts = []):
  """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 = "python $(location //tools/bzl:license-map.py) %s %s > $@" % (" ".join(opts), " ".join(xmls)),
    outs = [ name + ".txt" ],
    tools = tools
  )

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 = "//" + 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 ],
  )
