Class: Pindo::Command::Ios::Autobuild

Inherits:
Pindo::Command::Ios show all
Includes:
Appselect, Githelper
Defined in:
lib/pindo/command/ios/autobuild.rb

Constant Summary

Constants inherited from Pindo::Command

DEFAULT_OPTIONS, DEFAULT_ROOT_OPTIONS

Instance Attribute Summary

Attributes inherited from Pindo::Command

#args_help_flag

Class Method Summary collapse

Instance Method Summary collapse

Methods included from Githelper

#add_branch, #add_tag, #add_tag_with_check, #clone_clang_repo, #clone_devclang_repo, #clone_pindo_common_config_repo, #clone_pindo_env_config_repo, #clong_buildconfig_repo, #get_repo_base_name, #getcode_to_dir, #git_addpush_repo, #git_latest_commit_id, #git_root_directory, #is_git_directory?, #local_branch_exists?, #local_tag_exists?, #prepare_gitenv, #process_need_add_files, #remote_branch_exists?, #remote_tag_exists?, #remove_branch, #remove_tag

Methods included from Executable

capture_command, #executable, execute_command, which, which!

Methods included from Appselect

#all_deploy_bundle_name, #all_dev_bundle_name, #all_dev_bundleid, #all_itc_bundleid, #all_release_bundleid, #all_tool_bundleid, #deploy_build_setting_json, #dev_build_setting_json, #get_deploy_repo_with_modul_name, #get_deploy_setting_repo, #get_dev_setting_repo, #get_selected_deploy_bundle_name, #get_selected_deploy_bundleid, #get_selected_dev_bundle_name, #get_selected_dev_bundleid, #get_setting_bundleid_withdir, #load_setting, #select_main_app

Methods inherited from Pindo::Command

run

Methods included from Funlog::Mixin

#pindo_log_instance

Methods included from Pindoconfig::Mixin

#pindo_single_config

Constructor Details

#initialize(argv) ⇒ Autobuild

Returns a new instance of Autobuild.



80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
# File 'lib/pindo/command/ios/autobuild.rb', line 80

def initialize(argv)

    @args_deploy_flag = argv.flag?('deploy', false)
    @args_adhoc_flag = argv.flag?('adhoc', false)  
    @args_upload_flag = argv.flag?('upload', false)  
    @args_send_flag = argv.flag?('send', false)  
    @args_proj_name = argv.option('proj')  
    @args_bundle_id = argv.option('bundleid')

    if @args_send_flag
        @args_upload_flag = true
    end

    super
    @additional_args = argv.remainder!
end

Class Method Details

.optionsObject

命令的选项列表



69
70
71
72
73
74
75
76
77
78
# File 'lib/pindo/command/ios/autobuild.rb', line 69

def self.options
    [
        ['--bundleid=ID', '指定打包的Bundle ID'],
        ['--proj=NAME',   '指定上传到测试平台的项目名称'],
        ['--upload',      '编译后上传到测试平台(上传成功后自动发送给自己)'],
        ['--send',        '发送通知到测试群组(同时也会发送给自己)'],
        ['--adhoc',       '使用AdHoc证书打包(默认使用Dev证书)'],
        ['--deploy',      '使用发布证书打包']
    ].concat(super)
end

.use_cache?Boolean

启用缓存机制

Returns:

  • (Boolean)


28
29
30
# File 'lib/pindo/command/ios/autobuild.rb', line 28

def self.use_cache?
    true  # 此命令启用缓存
end

Instance Method Details

#runObject



102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
# File 'lib/pindo/command/ios/autobuild.rb', line 102

def run
    pindo_project_dir = Dir.pwd

    # 加载 JPS 配置(如果存在)
    context = Pindo::PindoContext.instance
    context.load_and_apply_jps_config(pindo_project_dir)
    # 确认并应用缓存(如果有)
    context.confirm_and_apply_cache

    # 准备配置
    config = prepare_ios_config(pindo_project_dir)

    # 创建并执行任务
    tasks = make_build_task(config)

    # 添加到任务管理器并执行
    task_manager = Pindo::TaskSystem::TaskManager.instance
    task_manager.clear_all
    tasks.each { |task| task_manager.add_task(task) }
    task_manager.start

    system "open #{pindo_project_dir}"
end

#validate!Object



97
98
99
100
# File 'lib/pindo/command/ios/autobuild.rb', line 97

def validate!
    
    super
end