blob: 3f81f6b48419b4f38542c7b245a9028fdb41306a [file] [log] [blame]
#!/usr/bin/env vpython
# -*- coding: UTF-8 -*-
#
# Copyright 2020 The Chromium Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""
Builds inspector overlay:
- bundles input js files using rollup
- copies css files as is
"""
from os import path
from os.path import join
from modular_build import read_file, write_file
from itertools import tee
import os
import sys
import subprocess
import rjsmin
try:
original_sys_path = sys.path
sys.path = sys.path + [
path.join(os.path.dirname(os.path.realpath(__file__)), '..')
]
import devtools_paths
finally:
sys.path = original_sys_path
def check_size(filename, data, max_size):
assert len(
data
) < max_size, "generated file %s should not exceed max_size of %d bytes. Current size: %d" % (
filename, max_size, len(data))
def rollup(input_path, output_path, filename, max_size, rollup_plugin):
target = join(input_path, filename)
rollup_process = subprocess.Popen(
[devtools_paths.node_path(),
devtools_paths.rollup_path()] +
['--format', 'iife', '-n', 'InspectorOverlay'] + ['--input', target] +
['--plugin', rollup_plugin],
stdout=subprocess.PIPE,
stderr=subprocess.PIPE)
out, error = rollup_process.communicate()
if not out:
raise Exception("rollup failed: " + error)
min = rjsmin.jsmin(out)
check_size(filename, min, max_size)
write_file(join(output_path, filename), min)
def to_pairs(list):
pairs = []
while list:
pairs.append((list.pop(0), list.pop(0)))
return pairs
def main(argv):
try:
input_path_flag_index = argv.index('--input_path')
input_path = argv[input_path_flag_index + 1]
output_path_flag_index = argv.index('--output_path')
output_path = argv[output_path_flag_index + 1]
rollup_plugin_index = argv.index('--rollup_plugin')
rollup_plugin = argv[rollup_plugin_index + 1]
file_names_with_sizes = to_pairs(argv[1:input_path_flag_index])
for filename, max_size in file_names_with_sizes:
max_size = int(max_size)
if filename.endswith(".js"):
rollup(input_path, output_path, filename, max_size,
rollup_plugin)
if filename.endswith(".css"):
css_file = read_file(join(input_path, filename))
check_size(filename, css_file, max_size)
write_file(join(output_path, filename), css_file)
except:
print(
'Usage: %s filename_1 max_size_1 filename_2 max_size_2 ... filename_N max_size_N --input_path <input_path> --output_path <output_path>'
% argv[0])
raise
if __name__ == '__main__':
sys.exit(main(sys.argv))