blob: a4b73c7b6ba4e1e1816c561bd8d7cb9e4aaee13a [file] [log] [blame]
#!/usr/bin/env python3
# Copyright 2019 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""Update our node_modules bundle."""
import logging
import os
import sys
import libdot
def get_parser():
"""Get a command line parser."""
parser = libdot.ArgumentParser(description=__doc__)
return parser
def main(argv):
"""The main func!"""
parser = get_parser()
_opts = parser.parse_args(argv)
libdot.node_and_npm_setup()
tar = libdot.LIBAPPS_DIR / 'node_modules.tar.xz'
os.chdir(libdot.LIBAPPS_DIR)
libdot.unlink('package-lock.json')
logging.info('Removing modules not listed in package.json')
libdot.npm.run(['prune'])
logging.info('Updating modules from package.json')
libdot.npm.run(['upgrade', '--no-save'])
libdot.pack(tar, ['node_modules'], exclude=[
'node_modules/.hash',
'node_modules/.node/*',
'node_modules/.bin/node',
'node_modules/.bin/npm',
'node_modules/puppeteer/.local-chromium',
])
new_hash = libdot.sha256(tar)
final_tar = f'node_modules-{new_hash}.tar.xz'
tar.rename(final_tar)
logging.info(
'To update the hash, run:\n'
"sed -i \"/^NODE_MODULES_HASH *=/s:=.*:= '%s':\" '%s/node'",
new_hash, libdot.BIN_DIR)
logging.info('To upload the new modules:\ngsutil cp -a public-read %s %s/',
final_tar, libdot.node.NODE_MODULES_GS_URI)
if __name__ == '__main__':
sys.exit(main(sys.argv[1:]))