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