Class: Pindo::Command::Appstore::Adhocbuild

Inherits:
Pindo::Command::Appstore show all
Defined in:
lib/pindo/command/appstore/adhocbuild.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 inherited from Pindo::Command

command_name, #initialize_options, run

Methods included from Funlog::Mixin

#pindo_log_instance

Methods included from Pindoconfig::Mixin

#pindo_single_config

Constructor Details

#initialize(argv) ⇒ Adhocbuild



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

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

  # 一行代码完成参数初始化(自动推导命令名、自动启用缓存)
  @options = initialize_options(argv)

  # 保存参数到实例变量
  # 优先使用选项参数,如果没有则使用位置参数
  @args_bundle_id = @options[:bundleid] || positional_bundleid
  @args_send_flag = @options[:send]
  # send 依赖 upload:如果指定了 send,自动启用 upload
  @args_upload_flag = @options[:send] || @options[:upload]
  @args_proj_name = @options[:proj]
  @args_increase_flag = @options[:increase]
  @args_skip_config = argv.flag?('skipconfig', false)
  @args_skip_lib = argv.flag?('skiplib', false)
  @args_skip_yoo = argv.flag?('skipyoo', false)

  super
  @additional_args = argv.remainder!
end

Class Method Details

.option_itemsObject

定义此命令使用的参数项(类方法,避免重复定义)



78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
# File 'lib/pindo/command/appstore/adhocbuild.rb', line 78

def self.option_items
  @option_items ||= begin
    items = Pindo::Options::OptionGroup.merge(
      Pindo::Options::BuildOptions.select(:bundleid),
      Pindo::Options::JPSOptions.select(:proj, :upload, :send),
      Pindo::Options::UnityOptions.all
    )

    # 添加 increase 参数
    items << Pindo::Options::OptionItem.new(
      key: :increase,
      description: '自动增加编译的app版本号',
      type: Pindo::Options::OptionItem::Boolean,
      optional: true,
      example: 'pindo appstore adhocbuild --increase'
    )

    items
  end
end

.optionsObject

命令的选项列表



100
101
102
# File 'lib/pindo/command/appstore/adhocbuild.rb', line 100

def self.options
  option_items.map(&:to_claide_option).concat(super)
end

.use_cache?Boolean

启用缓存机制



31
32
33
# File 'lib/pindo/command/appstore/adhocbuild.rb', line 31

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

Instance Method Details

#runObject



131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
# File 'lib/pindo/command/appstore/adhocbuild.rb', line 131

def run
  pindo_project_dir = Dir.pwd

  begin
    # 加载 JPS 配置(如果存在)
    Pindo::BuildHelper.share_instance.load_jps_build_config(pindo_project_dir)

    # 处理配置文件
    prepare_config(pindo_project_dir)

    # 准备配置
    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}"
  ensure
    # 清除命令状态(如果启用了缓存,这里会自动保存)
    Pindo::Options::GlobalOptionsState.instance.clear
  end
end

#validate!Object



127
128
129
# File 'lib/pindo/command/appstore/adhocbuild.rb', line 127

def validate!
  super
end