Class: Pindo::Command::Web::Autobuild

Inherits:
Pindo::Command::Web show all
Includes:
Appselect
Defined in:
lib/pindo/command/web/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 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) ⇒ Autobuild

Returns a new instance of Autobuild.



79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
# File 'lib/pindo/command/web/autobuild.rb', line 79

def initialize(argv)
    @options = initialize_options(argv)

    @args_deploy_flag = argv.flag?('deploy', false)
    @args_adhoc_flag = argv.flag?('adhoc', false)
    @args_upload_flag = @options[:upload] || false
    @args_send_flag = @options[:send] || false
    @args_proj_name = @options[:proj]
    @args_bundle_id = argv.option('bundleid')
    @args_run_flag = argv.flag?('run', false)
    @args_skip_lib = @options[:skiplib] || false
    @args_skip_yoo = @options[:skipyoo] || false

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

    if @args_send_flag
        @args_upload_flag = true
    end

    super
    @additional_args = argv.remainder!
end

Class Method Details

.option_itemsObject

定义此命令使用的参数项



62
63
64
65
66
67
68
69
# File 'lib/pindo/command/web/autobuild.rb', line 62

def self.option_items
    @option_items ||= Pindo::Options::OptionGroup.merge(
        Pindo::Options::JPSOptions.select(:proj, :upload, :send),
        Pindo::Options::UnityOptions.select(:skiplib, :skipyoo),
        Pindo::Options::UnityOptions.select_with_defaults(skipconfig: true),
        Pindo::Options::GitOptions.all
    )
end

.optionsObject

命令的选项列表



72
73
74
75
76
77
# File 'lib/pindo/command/web/autobuild.rb', line 72

def self.options
    [
        ['--bundleid', '指定打包的bundleID'],
        ['--run',   '编译完成后再本地打开webgl包']
    ].concat(option_items.map(&:to_claide_option)).concat(super)
end

.use_cache?Boolean

启用缓存机制

Returns:

  • (Boolean)


29
30
31
# File 'lib/pindo/command/web/autobuild.rb', line 29

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

Instance Method Details

#runObject



111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
# File 'lib/pindo/command/web/autobuild.rb', line 111

def run
    pindo_project_dir = Dir.pwd

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

    # 准备配置
    config = prepare_web_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}"

    # 可选运行 WebGL
    Pindo::Command::Web::Run.run([]) if @args_run_flag
end

#validate!Object



106
107
108
109
# File 'lib/pindo/command/web/autobuild.rb', line 106

def validate!
    
    super
end