Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(367)

Side by Side Diff: headless/lib/embed_data.py

Issue 1969313005: [headless] Embed pak file into binary. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fixes according to comments Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 # Copyright 2016 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
5 import argparse
6 import sys
7 import os
8
9 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.
10
11 namespace {namespace} {{
12
13 extern const headless::util::EmbeddedFile {variable_name};
14
15 }} // namespace {namespace}
16 """
17
18 SOURCE="""#include "{header_file}"
Sami 2016/05/16 10:00:20 Copyright header here too please.
altimin 2016/05/16 14:32:50 Done.
19
20 namespace {{
21
22 const uint8_t contents[] = {contents};
23
24 }} // anonymous namespace
25
26 namespace {namespace} {{
27
28 const headless::util::EmbeddedFile {variable_name} = {{ {length}, contents }};
29
30 }} // namespace {namespace}
31 """
32
33 def ParseArguments(args):
34 cmdline_parser = argparse.ArgumentParser()
35 cmdline_parser.add_argument('--data_file', required=True)
36 cmdline_parser.add_argument('--gendir', required=True)
37 cmdline_parser.add_argument('--header_file', required=True)
38 cmdline_parser.add_argument('--source_file', required=True)
39 cmdline_parser.add_argument('--namespace', required=True)
40 cmdline_parser.add_argument('--variable_name', required=True)
41
42 return cmdline_parser.parse_args(args)
43
44
45 def GenerateArray(filepath):
46 with open(filepath, 'rb') as f:
47 contents = f.read()
48
49 contents = [ str(ord(char)) for char in contents ]
50
51 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.
52
53 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.
54 return HEADER.format(
55 namespace=args.namespace,
56 variable_name=args.variable_name)
57
58 def GenerateSource(args):
59 length, contents = GenerateArray(args.data_file)
60
61 return SOURCE.format(
62 header_file=args.header_file,
63 namespace=args.namespace,
64 length=length,
65 contents=contents,
66 variable_name=args.variable_name)
67
68 def WriteHeader(args):
69 with open(os.path.join(args.gendir, args.header_file), 'w') as f:
70 f.write(GenerateHeader(args))
71
72 def WriteSource(args):
73 with open(os.path.join(args.gendir, args.source_file), 'w') as f:
74 f.write(GenerateSource(args))
75
76 if __name__ == "__main__":
77 args = ParseArguments(sys.argv[1:])
78
79 WriteHeader(args)
80 WriteSource(args)
81
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698