class Fastlane::Actions::AnalyzeIosIpaAction
Public Class Methods
analyze_app(group)
click to toggle source
# File lib/fastlane/plugin/analyze_ios_ipa/actions/analyze_ios_ipa_action.rb, line 93 def self.analyze_app(group) app_path = Fastlane::Helper::Config.instance.app_path UI.important "❗️[analyze_ios_ipa_action:analyze_app] app_path: #{app_path}" return false unless app_path return false if app_path.empty? return false unless File.exist?(app_path) # 解析 xx.app app = Fastlane::Helper::App.new(app_path, group: group) Fastlane::Helper::Config.instance.app = app true end
analyze_ipa(group)
click to toggle source
# File lib/fastlane/plugin/analyze_ios_ipa/actions/analyze_ios_ipa_action.rb, line 57 def self.analyze_ipa(group) ipa_path = Fastlane::Helper::Config.instance.ipa_path UI.important "❗️[analyze_ios_ipa_action:analyze_ipa] ipa_path: #{ipa_path}" return false unless ipa_path return false if ipa_path.empty? return false unless File.exist?(ipa_path) # 解析 xx.ipa ipa = Fastlane::Helper::Ipa.new(ipa_path) Fastlane::Helper::Config.instance.ipa = ipa # xx.ipa => xx.app output = File.expand_path('output', File.dirname(ipa_path)) payload = Fastlane::Helper::FileHelper.unzip_ipa(ipa_path, output) UI.success "✅ unzip ipa to: #{payload}" # find xx.app app_path = nil app_paths = Fastlane::Helper::FileHelper.glob_files('*.app', payload) if app_paths.empty? UI.user_error!("❌ app_name not give") unless app_name app_path = File.expand_path("#{app_name}.app", payload) UI.user_error!("❌ #{app_path} not exist") unless File.exist?(app_path) else app_path = app_paths.first end # UI.important("❗️[ipa_unzip_to_app_call_analyze] app_path: #{app_path}") Fastlane::Helper::Config.instance.app_path = app_path # 解析 xx.app analyze_app(group) true end
available_options()
click to toggle source
# File lib/fastlane/plugin/analyze_ios_ipa/actions/analyze_ios_ipa_action.rb, line 134 def self.available_options [ FastlaneCore::ConfigItem.new( key: :ipa_path, description: 'ipa file path', type: String, optional: true, conflicting_options: [:app_path] ), FastlaneCore::ConfigItem.new( key: :app_path, description: 'app file path', type: String, optional: true, conflicting_options: [:ipa_path] ), FastlaneCore::ConfigItem.new( key: :app_name, description: 'app executable file name', type: String, optional: true ), FastlaneCore::ConfigItem.new( key: :group, description: 'is group files in xx.app ?', optional: true, default_value: true, is_string: false ) ] end
description()
click to toggle source
# File lib/fastlane/plugin/analyze_ios_ipa/actions/analyze_ios_ipa_action.rb, line 118 def self.description 'analysis iOS app/ipa multiple data. eg: 1) ipa basic info 2) Size occupied by each component = code + resource' end
details()
click to toggle source
# File lib/fastlane/plugin/analyze_ios_ipa/actions/analyze_ios_ipa_action.rb, line 130 def self.details 'analysis iOS app/ipa multiple data. eg: 1) ipa basic info 2) Size occupied by each component = code + resource' end
generate_hash()
click to toggle source
# File lib/fastlane/plugin/analyze_ios_ipa/actions/analyze_ios_ipa_action.rb, line 111 def self.generate_hash { ipa: (Fastlane::Helper::Config.instance.ipa.generate_hash if Fastlane::Helper::Config.instance.ipa), app: (Fastlane::Helper::Config.instance.app.generate_hash if Fastlane::Helper::Config.instance.app) }.compact end
generate_json()
click to toggle source
# File lib/fastlane/plugin/analyze_ios_ipa/actions/analyze_ios_ipa_action.rb, line 107 def self.generate_json JSON.generate(generate_hash) end
is_supported?(platform)
click to toggle source
# File lib/fastlane/plugin/analyze_ios_ipa/actions/analyze_ios_ipa_action.rb, line 166 def self.is_supported?(platform) :ios == platform end
return_value()
click to toggle source
# File lib/fastlane/plugin/analyze_ios_ipa/actions/analyze_ios_ipa_action.rb, line 126 def self.return_value # If your method provides a return value, you can describe here what it does end
run(params)
click to toggle source
# File lib/fastlane/plugin/analyze_ios_ipa/actions/analyze_ios_ipa_action.rb, line 16 def self.run(params) ipa_path = params[:ipa_path] app_path = params[:app_path] app_name = params[:app_name] group = params[:group] || true valid_params(ipa_path, app_path) UI.important("❗️[analyze_ios_ipa_action:run] ipa: #{ipa_path}") UI.important("❗️[analyze_ios_ipa_action:run] app: #{app_path}") UI.important("❗️[analyze_ios_ipa_action:run] app.name: #{app_name}") UI.important("❗️[analyze_ios_ipa_action:run] group: #{group}") ret = if ipa_path analyze_ipa(group) elsif app_path analyze_app(group) else false end return false unless ret Actions.lane_context[Actions::SharedValues::AnalyzeIosIpaActionResultHash] = generate_hash Actions.lane_context[Actions::SharedValues::AnalyzeIosIpaActionResultJSON] = generate_json true end
valid_params(ipa_path, app_path)
click to toggle source
# File lib/fastlane/plugin/analyze_ios_ipa/actions/analyze_ios_ipa_action.rb, line 42 def self.valid_params(ipa_path, app_path) UI.user_error!("❌ ipa_path 与 app_path 至少传入一个!") if !ipa_path && !app_path if ipa_path UI.user_error!("❌ #{ipa_path} 文件不存在!") unless File.exist?(ipa_path) end if app_path UI.user_error!("❌ #{app_path} 文件不存在!") unless File.exist?(app_path) end Fastlane::Helper::Config.instance.ipa_path = ipa_path Fastlane::Helper::Config.instance.app_path = app_path end