BASE = get_base_path()
CORE = [
  'commit-message-length-validator',
  'download-commands',
  'replication',
  'reviewnotes',
]

# buck audit parses and resolves all deps even if not reachable
# from the root(s) passed to audit. Filter dependencies to only
# the ones that currently exist to allow buck to parse cleanly.
# TODO(sop): buck should more lazily resolve deps
def filter(names):
  from os import path
  h, n = [], []
  for p in names:
    if path.exists(path.join(BASE, p, 'BUCK')):
      h.append(p)
    else:
      n.append(p)
  return h, n
HAVE, NEED = filter(CORE)

genrule(
  name = 'core',
  cmd = '' +
    ';'.join(['echo >&2 plugins/'+n+' is required.' for n in NEED]) +
    (';echo >&2;exit 1;' if NEED else '') +
    'mkdir -p $TMP/WEB-INF/plugins;' +
    'for s in $SRCS;do ln -s $s $TMP/WEB-INF/plugins;done;' +
    'cd $TMP;' +
    'zip -qr $OUT .',
  srcs = [genfile('%s/%s.jar' % (n, n)) for n in CORE],
  deps = ['//%s/%s:%s' % (BASE, n, n) for n in HAVE],
  out = 'core.zip',
  visibility = ['//:release'],
)
