# Copyright 2017 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. import argparse import sys import os COPYRIGHT="""// Copyright 2017 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. """ HEADER="""{copyright} #include "headless/lib/util/embedded_file.h" namespace {namespace} {{ extern const headless::util::EmbeddedFile {variable_name}; }} // namespace {namespace} """ SOURCE="""{copyright} #include "{header_file}" namespace {{ const uint8_t contents[] = {contents}; }} // anonymous namespace namespace {namespace} {{ const headless::util::EmbeddedFile {variable_name} = {{ {length}, contents }}; }} // namespace {namespace} """ def ParseArguments(args): cmdline_parser = argparse.ArgumentParser() cmdline_parser.add_argument('--data_file', required=True) cmdline_parser.add_argument('--gendir', required=True) cmdline_parser.add_argument('--header_file', required=True) cmdline_parser.add_argument('--source_file', required=True) cmdline_parser.add_argument('--namespace', required=True) cmdline_parser.add_argument('--variable_name', required=True) return cmdline_parser.parse_args(args) def GenerateArray(filepath): with open(filepath, 'rb') as f: contents = f.read() contents = [ str(ord(char)) for char in contents ] return len(contents), '{' + ','.join(contents) + '}' def GenerateHeader(args): return HEADER.format( copyright=COPYRIGHT, namespace=args.namespace, variable_name=args.variable_name) def GenerateSource(args): length, contents = GenerateArray(args.data_file) return SOURCE.format( copyright=COPYRIGHT, header_file=args.header_file, namespace=args.namespace, length=length, contents=contents, variable_name=args.variable_name) def WriteHeader(args): with open(os.path.join(args.gendir, args.header_file), 'w') as f: f.write(GenerateHeader(args)) def WriteSource(args): with open(os.path.join(args.gendir, args.source_file), 'w') as f: f.write(GenerateSource(args)) if __name__ == '__main__': args = ParseArguments(sys.argv[1:]) WriteHeader(args) WriteSource(args)