打包脚本

2022-08-19  本文已影响0人  _海角_
# 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/

上一篇下一篇

猜你喜欢

热点阅读