Class: Pindo::Command::Appstore::Autobuild

Inherits:
Pindo::Command::Appstore show all
Includes:
Appselect, XcodeAppConfig
Defined in:
lib/pindo/command/appstore/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 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 included from XcodeAppConfig

#add_pod_modue, #add_project_modue, #auto_increase_buildnumber, #create_release_tag, #find_group, #modify_appprefix_plist, #remove_test_pod_modue

Methods inherited from Pindo::Command

command_name, #initialize_options, run, use_cache?, #validate!

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
96
97
98
99
100
# File 'lib/pindo/command/appstore/autobuild.rb', line 80

def initialize(argv)
  # 首先获取位置参数(向后兼容)
  positional_bundleid = argv.shift_argument

  # 使用 Options 模块初始化参数
  @options = initialize_options(argv)

  # 保存参数到实例变量
  # 优先使用选项参数,如果没有则使用位置参数
  @args_bundle_id = @options[:bundleid] || positional_bundleid
  @args_skip_config = argv.flag?('skipconfig', false)
  @args_skip_lib = argv.flag?('skiplib', false)
  @args_skip_yoo = argv.flag?('skipyoo', false)

  # Git 参数
  @args_release_branch = @options[:release_branch] || 'master'
  @args_tag_type = Pindo::Options::GitOptions.parse_create_tag_type(@options[:tag_type] || 'new')
  @args_tag_pre = @options[:tag_pre] || 'ios_release_'

  super(argv)
end

Class Method Details

.option_itemsObject

定义此命令使用的参数项



66
67
68
69
70
71
72
73
# File 'lib/pindo/command/appstore/autobuild.rb', line 66

def self.option_items
  @option_items ||= Pindo::Options::OptionGroup.merge(
    Pindo::Options::BuildOptions.select(:bundleid),
    Pindo::Options::UnityOptions.all,
    Pindo::Options::GitOptions.except(:tag_pre),
    Pindo::Options::GitOptions.select_with_defaults(tag_pre: 'ios_release_')
  )
end

.optionsObject

命令的选项列表



76
77
78
# File 'lib/pindo/command/appstore/autobuild.rb', line 76

def self.options
  option_items.map(&:to_claide_option).concat(super)
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
125
126
127
128
129
# File 'lib/pindo/command/appstore/autobuild.rb', line 102

def run
  pindo_project_dir = Dir.pwd

  begin
    # 1. 克隆配置仓库(必须在 Task 外部完成)
    clone_pindo_common_config_repo(force_delete: false)
    clone_pindo_env_config_repo(force_delete: false)

    # 2. 版本检查
    Pindo::VersionCheck::check_pindo_force_upgrade()

    # 3. 处理配置文件
    prepare_config(pindo_project_dir)

    # 4. 创建并执行任务
    tasks = make_build_task(pindo_project_dir)

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

    puts "Build Done !!!"
    puts "#{pindo_project_dir}"
    system "open #{pindo_project_dir}"
  end
end