Class: PM::SpecificationInfo

Inherits:
Object
  • Object
show all
Defined in:
lib/cocoapods-byte-panglem-beta/recorder.rb

Overview

对应cocoapods 的Specification

Constant Summary collapse

@@possibilities =
{}

Class Method Summary collapse

Class Method Details

.get_a_specfication(name, version) ⇒ Object



406
407
408
409
410
411
# File 'lib/cocoapods-byte-panglem-beta/recorder.rb', line 406

def self.get_a_specfication(name, version)
  result =  @@possibilities[name].find { |specification|
    specification.version.version == version
  }
  result
end

.get_infoObject



402
403
404
# File 'lib/cocoapods-byte-panglem-beta/recorder.rb', line 402

def self.get_info()
    @@possibilities
end

.get_specfication(response_data = {}, original_sdk_spec) ⇒ Object



413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
# File 'lib/cocoapods-byte-panglem-beta/recorder.rb', line 413

def self.get_specfication(response_data ={}, original_sdk_spec)

  ##  这里需要获取到所有需要获取SDK期望版本下 所有subspec的specfication集合.
  ## 1. 获取到期望sdk的版本号 和 基础库的版本号
  ## 2. 计算出所有需要的subspec的名称
  ## 3. 计算出升级时需要替换的所有的specfication
  info_r = get_info
  target_sdk_version = response_data["data"]["pangle_sdk_version"]
  if target_sdk_version == nil || target_sdk_version.length == 0
    ## 兜底, 赋值为当前版本
    target_sdk_version = original_sdk_spec.spec.version.version
  end
  sdk_name = PM::BuildConfig.mediation_name
  rely_name = PM::BuildConfig.rely_name
  result = UpdateResut.new()
  result.sdk_name = sdk_name
  result.rely_name = rely_name
  target_sdk_root_spec = nil
  target_sdk_spec_list = info_r[sdk_name].select do |spec|
    target_sdk_root_spec = spec if spec.name == sdk_name && spec.version.version == target_sdk_version
    Pod::Specification.root_name(spec.name) == sdk_name && spec.version.version == target_sdk_version
  end
  if target_sdk_root_spec == nil
    raise "[cocoapods-byte-panglem][error] pangle sdk version:#{target_sdk_version} not found, please try use `pod install --repo-update`"
  end
  if target_sdk_root_spec.version.version != original_sdk_spec.spec.version.version

    result.is_sdk_update = true
    result.sdk_list = target_sdk_spec_list
    result.sdk_original_version = original_sdk_spec.spec.version.version
    result.sdk_target_version = target_sdk_root_spec.version.version
    PM::Recorder.instance.sdk_original_version = result.sdk_original_version
    PM::Recorder.instance.sdk_target_version = result.sdk_target_version
    target_rely_version = target_sdk_root_spec.get_rely_version
    original_rely_version = original_sdk_spec.spec.get_rely_version
    # target_rely_version = "0.2.0.0"
    if target_rely_version != original_rely_version
      target_rely_spec_list = info_r[rely_name].select do |spec|
        Pod::Specification.root_name(spec.name) == rely_name && spec.version.version == target_rely_version
      end
      result.is_rely_update = true
      result.rely_list = target_rely_spec_list
      result.rely_original_version = original_rely_version
      result.rely_target_version = target_rely_version
      PM::Recorder.instance.rely_original_version = result.rely_original_version
      PM::Recorder.instance.rely_target_version = result.rely_target_version
    end
  end
  result
end

.update(name = '', possibilities) ⇒ Object



395
396
397
398
399
400
# File 'lib/cocoapods-byte-panglem-beta/recorder.rb', line 395

def self.update(name = '', possibilities)
    if name.length > 0
        @@possibilities[name] ||= []
        @@possibilities[name] = @@possibilities[name] | possibilities
    end
end