Chromium Code Reviews| Index: headless/lib/embed_data.py |
| diff --git a/headless/lib/embed_data.py b/headless/lib/embed_data.py |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..02e7057806510b36a4f68307ed3d151730d2a0c7 |
| --- /dev/null |
| +++ b/headless/lib/embed_data.py |
| @@ -0,0 +1,81 @@ |
| +# Copyright 2016 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 |
| + |
| +HEADER="""#include "headless/lib/util/embedded_file.h" |
|
Sami
2016/05/16 10:00:20
Could you add include guards and a copyright heade
altimin
2016/05/16 14:32:50
Done.
|
| + |
| +namespace {namespace} {{ |
| + |
| +extern const headless::util::EmbeddedFile {variable_name}; |
| + |
| +}} // namespace {namespace} |
| +""" |
| + |
| +SOURCE="""#include "{header_file}" |
|
Sami
2016/05/16 10:00:20
Copyright header here too please.
altimin
2016/05/16 14:32:50
Done.
|
| + |
| +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) + "}" |
|
Sami
2016/05/16 10:00:20
Single quotes instead of double please.
altimin
2016/05/16 14:32:50
Done.
|
| + |
| +def GenerateHeader(args): |
|
Sami
2016/05/16 10:00:20
Two blank lines between top-level entries (here an
altimin
2016/05/16 14:32:50
Done.
|
| + return HEADER.format( |
| + namespace=args.namespace, |
| + variable_name=args.variable_name) |
| + |
| +def GenerateSource(args): |
| + length, contents = GenerateArray(args.data_file) |
| + |
| + return SOURCE.format( |
| + 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) |
| + |