BASE = get_base_path() CORE = [ 'commit-message-length-validator', 'download-commands', 'replication', 'reviewnotes', 'singleusergroup' ] # 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 ' + ' '.join(['$(location //%s/%s:%s)' % (BASE, n, n) for n in HAVE]) + ';do ln -s $s $TMP/WEB-INF/plugins;done;' + 'cd $TMP;' + 'zip -qr $OUT .', out = 'core.zip', visibility = ['//:release'], )