1# Copyright 2017 The Chromium Authors. All rights reserved. 2# Use of this source code is governed by a BSD-style license that can be 3# found in the LICENSE file. 4 5import argparse 6import sys 7import os 8 9COPYRIGHT="""// Copyright 2017 The Chromium Authors. All rights reserved. 10// Use of this source code is governed by a BSD-style license that can be 11// found in the LICENSE file. 12""" 13 14HEADER="""{copyright} 15 16#include "headless/lib/util/embedded_file.h" 17 18namespace {namespace} {{ 19 20extern const headless::util::EmbeddedFile {variable_name}; 21 22}} // namespace {namespace} 23""" 24 25SOURCE="""{copyright} 26 27#include "{header_file}" 28 29namespace {{ 30 31const uint8_t contents[] = {contents}; 32 33}} // anonymous namespace 34 35namespace {namespace} {{ 36 37const headless::util::EmbeddedFile {variable_name} = {{ {length}, contents }}; 38 39}} // namespace {namespace} 40""" 41 42def ParseArguments(args): 43 cmdline_parser = argparse.ArgumentParser() 44 cmdline_parser.add_argument('--data_file', required=True) 45 cmdline_parser.add_argument('--gendir', required=True) 46 cmdline_parser.add_argument('--header_file', required=True) 47 cmdline_parser.add_argument('--source_file', required=True) 48 cmdline_parser.add_argument('--namespace', required=True) 49 cmdline_parser.add_argument('--variable_name', required=True) 50 51 return cmdline_parser.parse_args(args) 52 53 54def GenerateArray(filepath): 55 with open(filepath, 'rb') as f: 56 contents = f.read() 57 58 contents = [ str(ord(char)) for char in contents ] 59 60 return len(contents), '{' + ','.join(contents) + '}' 61 62 63def GenerateHeader(args): 64 return HEADER.format( 65 copyright=COPYRIGHT, 66 namespace=args.namespace, 67 variable_name=args.variable_name) 68 69def GenerateSource(args): 70 length, contents = GenerateArray(args.data_file) 71 72 return SOURCE.format( 73 copyright=COPYRIGHT, 74 header_file=args.header_file, 75 namespace=args.namespace, 76 length=length, 77 contents=contents, 78 variable_name=args.variable_name) 79 80 81def WriteHeader(args): 82 with open(os.path.join(args.gendir, args.header_file), 'w') as f: 83 f.write(GenerateHeader(args)) 84 85 86def WriteSource(args): 87 with open(os.path.join(args.gendir, args.source_file), 'w') as f: 88 f.write(GenerateSource(args)) 89 90 91if __name__ == '__main__': 92 args = ParseArguments(sys.argv[1:]) 93 94 WriteHeader(args) 95 WriteSource(args) 96 97