| # 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) |
| |