GERRIT = 'GERRIT:'
GERRIT_API = 'GERRIT_API:'
MAVEN_LOCAL = 'MAVEN_LOCAL:'

def maven_jar(
    name,
    id,
    license,
    deps = [],
    sha1 = '',
    bin_sha1 = '',
    src_sha1 = '',
    repository = GERRIT,
    attach_source = True,
    visibility = ['PUBLIC']):
  from os import path

  parts = id.split(':')
  if len(parts) != 3:
    raise NameError('expected id="groupId:artifactId:version"')
  group, artifact, version = parts

  file_version = version

  jar = path.join(name, artifact.lower() + '-' + file_version)
  url = '/'.join([
    repository,
    group.replace('.', '/'), artifact, version,
    artifact + '-' + file_version])

  binjar = jar + '.jar'
  binurl = url + '.jar'

  srcjar = jar + '-src.jar'
  srcurl = url + '-sources.jar'

  cmd = ['$(exe //tools:download_file)', '-o', '$OUT', '-u', binurl]
  if sha1:
    cmd.extend(['-v', sha1])
  elif bin_sha1:
    cmd.extend(['-v', bin_sha1])

  genrule(
    name = name + '__download_bin',
    cmd = ' '.join(cmd),
    deps = ['//tools:download_file'],
    out = binjar,
  )

  srcjar = None
  genrule(
    name = name + '__download_src',
    cmd = ':>$OUT',
    out = '__' + name + '__no_src',
  )

  prebuilt_jar(
    name = name,
    deps = deps + [':' + name + '__download_bin'],
    binary_jar = genfile(binjar),
    source_jar = genfile(srcjar) if srcjar else None,
    visibility = visibility,
  )
