mirror of
https://github.com/dart-lang/sdk
synced 2024-11-02 09:43:08 +00:00
b5c63ce757
* Migrate to python3; drop python support. * Update Windows toolchain support. * Remove some unused methods. * Python 2.7 is still needed on Windows. * Update gsutil to a version that supports python3. Fixes: https://github.com/dart-lang/sdk/issues/28793 TEST=Manually tested common user journeys. Change-Id: I663a22b237a548bb82dc2e601e399e3bc3649211 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/192182 Reviewed-by: William Hesse <whesse@google.com> Reviewed-by: Alexander Aprelev <aam@google.com>
108 lines
2.8 KiB
Python
108 lines
2.8 KiB
Python
#!/usr/bin/env python3
|
|
# Copyright (c) 2015 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 errno
|
|
import subprocess
|
|
import sys
|
|
|
|
PLUTIL = ['/usr/bin/env', 'xcrun', 'plutil']
|
|
|
|
IBTOOL = [
|
|
'/usr/bin/env',
|
|
'xcrun',
|
|
'ibtool',
|
|
]
|
|
|
|
|
|
def MakeDirectories(path):
|
|
try:
|
|
os.makedirs(path)
|
|
except OSError as exc:
|
|
if exc.errno == errno.EEXIST and os.path.isdir(path):
|
|
return 0
|
|
else:
|
|
return -1
|
|
|
|
return 0
|
|
|
|
|
|
def ProcessInfoPlist(args):
|
|
output_plist_file = os.path.abspath(os.path.join(args.output, 'Info.plist'))
|
|
return subprocess.check_call(PLUTIL + [
|
|
'-convert',
|
|
'binary1',
|
|
'-o',
|
|
output_plist_file,
|
|
'--',
|
|
args.input,
|
|
])
|
|
|
|
|
|
def ProcessNIB(args):
|
|
output_nib_file = os.path.join(
|
|
os.path.abspath(args.output),
|
|
"%s.nib" % os.path.splitext(os.path.basename(args.input))[0])
|
|
|
|
return subprocess.check_call(IBTOOL + [
|
|
'--module',
|
|
args.module,
|
|
'--auto-activate-custom-fonts',
|
|
'--target-device',
|
|
'mac',
|
|
'--compile',
|
|
output_nib_file,
|
|
os.path.abspath(args.input),
|
|
])
|
|
|
|
|
|
def GenerateProjectStructure(args):
|
|
application_path = os.path.join(args.dir, args.name + ".app", "Contents")
|
|
return MakeDirectories(application_path)
|
|
|
|
|
|
def Main():
|
|
parser = argparse.ArgumentParser(description='A script that aids in '
|
|
'the creation of an Mac application')
|
|
|
|
subparsers = parser.add_subparsers()
|
|
|
|
# Plist Parser
|
|
|
|
plist_parser = subparsers.add_parser('plist', help='Process the Info.plist')
|
|
plist_parser.set_defaults(func=ProcessInfoPlist)
|
|
|
|
plist_parser.add_argument('-i', dest='input', help='The input plist path')
|
|
plist_parser.add_argument('-o', dest='output', help='The output plist dir')
|
|
|
|
# NIB Parser
|
|
|
|
plist_parser = subparsers.add_parser('nib', help='Process a NIB file')
|
|
plist_parser.set_defaults(func=ProcessNIB)
|
|
|
|
plist_parser.add_argument('-i', dest='input', help='The input nib path')
|
|
plist_parser.add_argument('-o', dest='output', help='The output nib dir')
|
|
plist_parser.add_argument('-m', dest='module', help='The module name')
|
|
|
|
# Directory Structure Parser
|
|
|
|
dir_struct_parser = subparsers.add_parser(
|
|
'structure', help='Creates the directory of an Mac application')
|
|
|
|
dir_struct_parser.set_defaults(func=GenerateProjectStructure)
|
|
|
|
dir_struct_parser.add_argument('-d', dest='dir', help='Out directory')
|
|
dir_struct_parser.add_argument('-n', dest='name', help='App name')
|
|
|
|
# Engage!
|
|
|
|
args = parser.parse_args()
|
|
|
|
return args.func(args)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
sys.exit(Main())
|