# This is a sample Python script.
# Press ⌃R to execute it or replace it with your code.
# Press Double ⇧ to search everywhere for classes, files, tool windows, actions, and settings.
import argparse
import os
def print_hi(name):
# Use a breakpoint in the code line below to debug your script.
print(f'Hi, {name}') # Press ⌘F8 to toggle the breakpoint.
def check_result(result):
if result == 0 or result is None:
return
else:
raise Exception(result)
# def init_git():
# cwd = os.getcwd()
# os.chdir('../')
#
# result = os.system('git pull')
# check_result(result)
# os.chdir(cwd)
class Task:
def __init__(self, arguments):
if arguments.debug:
self.type = 'Debug'
else:
self.type = 'Release'
self.project_name = 'ios 工程名称'
self.export_options_plist_path = arguments.exportOptionsPlistPath
self.cwd = os.getcwd()
self.scheme = arguments.scheme
self.build_path = '%s/build/%s' % (self.cwd, self.scheme)
get_build_numberCode = 'sed -n \'/CURRENT_PROJECT_VERSION/{s/CURRENT_PROJECT_VERSION = //;s/;//;s/^[[' \
':space:]]*//;p;q;}\' ./%s.xcodeproj/project.pbxproj' % self.project_name
self.build_number = os.system(get_build_numberCode)
self.export_file_path = '%s/ipa/%s/%d/%s' % (self.cwd, self.type, self.build_number, self.scheme)
def clean_project(self):
print('*** 正在 清理工程 ***')
clean_code = 'xcodebuild clean -workspace %s/%s.xcworkspace -scheme %s -' \
'configuration %s -quiet' % (self.cwd, self.project_name, self.scheme, self.type)
print(clean_code)
result = os.system(clean_code)
check_result(result)
print('*** 清理完成 ***')
def build_project(self):
print('*** 正在 编译工程 ***')
build_code = 'xcodebuild archive -workspace %s/%s.xcworkspace -scheme %s -' \
'configuration %s -archivePath %s.xcarchive -quiet' % (
self.cwd, self.project_name, self.scheme, self.type, self.build_path)
print(build_code)
result = os.system(build_code)
check_result(result)
print('*** 编译完成 ***')
def export_project(self):
print('*** 正在 打包 ***')
export_code = 'xcodebuild -exportArchive -archivePath %s.xcarchive -' \
'configuration %s -exportPath %s -exportOptionsPlist %s -allowProvisioningUpdates YES -quiet' % (
self.build_path, self.type, self.export_file_path, self.export_options_plist_path)
print(export_code)
result = os.system(export_code)
check_result(result)
print('*** 打包完成 ***')
def start(self):
# init_git()
self.clean_project()
self.build_project()
self.export_project()
# Press the green button in the gutter to run the script.
if __name__ == '__main__':
print_hi('PyCharm')
parser = argparse.ArgumentParser(description="build ios Project")
parser.add_argument('--flavor', default='firIm', choices=['firIm', 'testflight'], help='default is firIm')
parser.add_argument('--debug', action='store_true', default=False,
help='set the environment of build the project')
parser.add_argument('--scheme', default='scheme', choices=['scheme1', 'scheme2', 'scheme3'],
help='select the target to build ')
parser.add_argument('--exportOptionsPlistPath', default='ios'
'/ExportOptions/AppStoreExportOptions1.plist',
help='set the exportOptionsPlist path')
task = Task(parser.parse_args())
task.start()
# See PyCharm help at https://www.jetbrains.com/help/pycharm/
网友评论