Class: Pindo::Command::Ios::Install

Inherits:
Pindo::Command::Ios show all
Defined in:
lib/pindo/command/ios/install.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, use_cache?

Methods included from Funlog::Mixin

#pindo_log_instance

Methods included from Pindoconfig::Mixin

#pindo_single_config

Constructor Details

#initialize(argv) ⇒ Install

Returns a new instance of Install.



38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/pindo/command/ios/install.rb', line 38

def initialize(argv)
    @args_ipa_file = argv.shift_argument
    @options = initialize_options(argv)

    ipa_option = @options[:ipa]
    if !ipa_option.nil?
        @args_ipa_file = ipa_option
    end
    if @args_ipa_file && !@args_ipa_file.empty?
        @args_ipa_file = @args_ipa_file.strip.gsub(/\"/, '')
    end

    super(argv)
end

Class Method Details

.option_itemsObject



28
29
30
31
32
# File 'lib/pindo/command/ios/install.rb', line 28

def self.option_items
  @option_items ||= Pindo::Options::OptionGroup.merge(
    Pindo::Options::ToolOptions.select(:ipa)
  )
end

.optionsObject



34
35
36
# File 'lib/pindo/command/ios/install.rb', line 34

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

Instance Method Details

#runObject



57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# File 'lib/pindo/command/ios/install.rb', line 57

def run
    # 1. 查找 IPA 文件
    ipa_file = find_ipa_file
    puts "IPA 文件: #{ipa_file}"

    # 2. 检测可用设备
    devices = detect_available_devices
    if devices.empty?
        raise Informative, "未检测到可用的 iPhone/iPad 设备,请确认设备已连接并信任此电脑"
    end

    # 3. 选择设备
    device = select_device(devices)
    puts "目标设备: #{device[:name]} (#{device[:model]})"

    # 4. 安装 IPA
    install_ipa_to_device(ipa_file, device)
end

#validate!Object



53
54
55
# File 'lib/pindo/command/ios/install.rb', line 53

def validate!
    super
end