diff --git a/README.md b/README.md index 6e5d92d..f7d62f5 100644 --- a/README.md +++ b/README.md @@ -79,7 +79,7 @@ The only test(s) that don't run on CI at the moment (e.g. due to lack of X serve Extra tests (not integrated in CI yet): -- `(cd dist && web-ext lint)` +- `./build --lint` - `scripts/test_with_browser.py` diff --git a/build b/build index d6a9b9a..88b10ca 100755 --- a/build +++ b/build @@ -13,19 +13,27 @@ def main(): # TODO rename to --production?? p.add_argument('--release', action='store_true') p.add_argument('--sign', action='store_true') - # TODO --lint? + p.add_argument('--lint', action='store_true') - tg = p.add_mutually_exclusive_group() + tg = p.add_mutually_exclusive_group(required=True) tg.add_argument('--target', type=str, choices=TARGETS) for b in TARGETS: tg.add_argument('--' + b, action='store_const', const=b, dest='target') args = p.parse_args() target = args.target - assert target is not None + + dist_dir = Path(__file__).absolute().parent / 'dist' + def webext(*args, **kwargs): + src_dir = dist_dir # / target + src_dir = src_dir.resolve() # TODO ugh. webext can't into symlinks??? + check_call([ + 'web-ext', + '--source-dir', str(src_dir), + *args, + ], **kwargs) maybe_release = {'NODE_ENV': 'production'} if args.release else {} - env = { 'TARGET': target, **maybe_release, @@ -35,24 +43,27 @@ def main(): 'npm', 'run', 'build', ], env=env, cwd=str(Path(__file__).absolute().parent)) + if args.lint: + # TODO --self-hosted + # TODO warnings as errors?? + webext('lint') + + if args.release: + assert args.lint # TODO not sure.. + if args.sign: assert args.release if target not in ['firefox', 'firefox-mobile']: raise RuntimeError("{target} is not supported for signing yet".format(target=target)) - dist_dir = Path(__file__).absolute().parent / 'dist' - src_dir = dist_dir / target - from firefox_dev_secrets import API_KEY, API_SECRET - check_call([ - 'web-ext', - '--source-dir' , str(src_dir), + webext( '--artifacts-dir', str(dist_dir), - '--api-key' , API_KEY, - '--api-secret' , API_SECRET, + '--api-key' , API_KEY, + '--api-secret', API_SECRET, 'sign', - ]) + ) if __name__ == '__main__': main()