| 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'], | |
| ) |