| Index: build/config/mac/write_pkg_info.py
|
| diff --git a/build/config/mac/write_pkg_info.py b/build/config/mac/write_pkg_info.py
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..b03e77928059d67cd8e20a82536faad81cc1847e
|
| --- /dev/null
|
| +++ b/build/config/mac/write_pkg_info.py
|
| @@ -0,0 +1,47 @@
|
| +# 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 os
|
| +import plistlib
|
| +import sys
|
| +
|
| +# This script creates a PkgInfo file for an OS X .app bundle's plist.
|
| +# Usage: python write_pkg_info.py --plist Foo.app/Contents/Info.plist \
|
| +# --output Foo.app/Contents/PkgInfo
|
| +
|
| +def Main():
|
| + parser = argparse.ArgumentParser(
|
| + description='A script to write PkgInfo files for .app bundles.')
|
| + parser.add_argument('--plist', required=True,
|
| + help='Path to the Info.plist for the .app.')
|
| + parser.add_argument('--output', required=True,
|
| + help='Path to the desired output file.')
|
| + args = parser.parse_args()
|
| +
|
| + # Remove the output if it exists already.
|
| + if os.path.exists(args.output):
|
| + os.unlink(args.output)
|
| +
|
| + plist = plistlib.readPlist(args.plist)
|
| + package_type = plist['CFBundlePackageType']
|
| + if package_type != 'APPL':
|
| + raise ValueError('Expected CFBundlePackageType to be %s, got %s' % \
|
| + ('AAPL', package_type))
|
| +
|
| + # The format of PkgInfo is eight characters, representing the bundle type
|
| + # and bundle signature, each four characters. If that is missing, four
|
| + # '?' characters are used instead.
|
| + signature_code = plist.get('CFBundleSignature', '????')
|
| + if len(signature_code) != 4:
|
| + raise ValueError('CFBundleSignature should be exactly four characters, ' +
|
| + 'got %s' % signature_code)
|
| +
|
| + with open(args.output, 'w') as fp:
|
| + fp.write('%s%s' % (package_type, signature_code))
|
| + return 0
|
| +
|
| +
|
| +if __name__ == '__main__':
|
| + sys.exit(Main())
|
|
|