blob: 528e1d875583cfdf042dbf3d43792365a282713f [file] [log] [blame]
# Copyright 2018 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.
"""Template-combines an HTML and a JSON file and merges them into an output
file as a data: url."""
import argparse
import base64
import os
import string
import sys
def main():
argument_parser = argparse.ArgumentParser()
argument_parser.add_argument('output_file', help='The file to write to')
argument_parser.add_argument('html_template', help='The HTML template file')
argument_parser.add_argument('javascript_file', help='The JS file')
argument_parser.add_argument('output_template',
help='The output HTML template file')
args = argument_parser.parse_args()
# Slurp the input files.
js_file_contents = open(args.javascript_file, 'r').read();
html_template = string.Template(open(args.html_template, 'r').read());
output_template = string.Template(open(args.output_template, 'r').read());
# Stamp the javacript contents into the HTML template.
html_doc = html_template.substitute({'javascript_file': js_file_contents});
# Construct the data: URL that contains the combined doc.
data_url = "data:text/html;base64,%s" % base64.b64encode(html_doc);
# And finally stamp the the data URL into the output template.
output = output_template.substitute({'data_url': data_url})
current_contents = ''
if os.path.isfile(args.output_file):
with open(args.output_file, 'r') as current_file:
current_contents = current_file.read()
if current_contents != output:
with open(args.output_file, 'w') as output_file:
output_file.write(output)
return 0
if __name__ == '__main__':
sys.exit(main())