GERRIT = 'http://gerrit-maven.commondatastorage.googleapis.com'
MAVEN_CENTRAL = 'http://repo1.maven.org/maven2'

def define_license(name):
  n = 'LICENSE-' + name
  genrule(
    name = n,
    cmd = 'ln -f $SRCS $OUT',
    srcs = [n],
    out = n + '.txt',
    visibility = ['PUBLIC'],
  )

def maven_jar(
    name,
    group, artifact, version,
    license,
    exclude = [],
    exclude_java_sources = False,
    deps = [],
    sha1 = '',
    classifier = None,
    repository = MAVEN_CENTRAL,
    visibility = ['PUBLIC']):
  url = '/'.join([
    repository,
    group.replace('.', '/'),
    artifact,
    version,
    artifact + '-' + version])
  jar = artifact.lower() + '-' + version
  if classifier:
    url += '-' + classifier
    jar += '-' + classifier
  downloaded_jar(
    name = name,
    url = url + '.jar',
	jar = jar + '.jar',
    license = license,
    exclude = exclude,
    exclude_java_sources = exclude_java_sources,
    deps = deps,
    sha1 = sha1,
    visibility = visibility,
  )

def downloaded_jar(
    name,
    url,
	jar,
    license,
    exclude = [],
    exclude_java_sources = False,
    deps = [],
    sha1 = '',
    visibility = ['PUBLIC']):
  cmd = ['${//lib:download_jar}', '-o', '$OUT', '-u', url]
  if sha1:
    cmd += ['-v', sha1]
  if exclude:
    cmd += ['-x'] + exclude
  if exclude_java_sources:
    cmd += ['--exclude_java_sources']

  genrule(
    name = name + '.download',
    cmd = ' '.join(cmd),
    srcs = [],
    deps = ['//lib:download_jar'],
    out = jar,
  )
  prebuilt_jar(
    name = name,
    deps = deps + [
      ':' + name + '.download',
      '//lib:LICENSE-' + license,
    ],
    binary_jar = genfile(jar),
    visibility = visibility,
  )
