| BASE = get_base_path() |
| CORE = [ |
| 'commit-message-length-validator', |
| 'download-commands', |
| 'replication', |
| 'reviewnotes', |
| 'singleusergroup' |
| ] |
| CUSTOM = [ |
| # Add custom core plugins here |
| ] |
| |
| # 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 core_plugins(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 = core_plugins(CORE + CUSTOM) |
| |
| 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'], |
| ) |