cocoapods-bin 0.1.24 → 0.1.25

Sign up to get free protection for your applications and to get access to all the features.
Files changed (48) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +2 -2
  3. data/lib/cocoapods-bin.rb +3 -1
  4. data/lib/cocoapods-bin/command.rb +2 -0
  5. data/lib/cocoapods-bin/command/bin.rb +4 -2
  6. data/lib/cocoapods-bin/command/bin/archive.rb +21 -15
  7. data/lib/cocoapods-bin/command/bin/init.rb +14 -9
  8. data/lib/cocoapods-bin/command/bin/lib.rb +3 -1
  9. data/lib/cocoapods-bin/command/bin/lib/lint.rb +13 -9
  10. data/lib/cocoapods-bin/command/bin/list.rb +16 -12
  11. data/lib/cocoapods-bin/command/bin/open.rb +10 -8
  12. data/lib/cocoapods-bin/command/bin/repo.rb +3 -1
  13. data/lib/cocoapods-bin/command/bin/repo/push.rb +22 -14
  14. data/lib/cocoapods-bin/command/bin/repo/update.rb +6 -4
  15. data/lib/cocoapods-bin/command/bin/search.rb +9 -7
  16. data/lib/cocoapods-bin/command/bin/spec.rb +3 -1
  17. data/lib/cocoapods-bin/command/bin/spec/create.rb +15 -8
  18. data/lib/cocoapods-bin/command/bin/spec/lint.rb +18 -10
  19. data/lib/cocoapods-bin/command/bin/umbrella.rb +13 -7
  20. data/lib/cocoapods-bin/config/config.rb +18 -14
  21. data/lib/cocoapods-bin/config/config_asker.rb +22 -19
  22. data/lib/cocoapods-bin/gem_version.rb +5 -3
  23. data/lib/cocoapods-bin/helpers.rb +2 -0
  24. data/lib/cocoapods-bin/helpers/framework.rb +5 -3
  25. data/lib/cocoapods-bin/helpers/framework_builder.rb +31 -24
  26. data/lib/cocoapods-bin/helpers/sources_helper.rb +6 -4
  27. data/lib/cocoapods-bin/helpers/spec_creator.rb +28 -18
  28. data/lib/cocoapods-bin/helpers/spec_files_helper.rb +28 -15
  29. data/lib/cocoapods-bin/native.rb +16 -14
  30. data/lib/cocoapods-bin/native/acknowledgements.rb +5 -2
  31. data/lib/cocoapods-bin/native/analyzer.rb +6 -5
  32. data/lib/cocoapods-bin/native/installation_options.rb +13 -11
  33. data/lib/cocoapods-bin/native/installer.rb +54 -47
  34. data/lib/cocoapods-bin/native/linter.rb +4 -2
  35. data/lib/cocoapods-bin/native/path_source.rb +9 -7
  36. data/lib/cocoapods-bin/native/pod_source_installer.rb +10 -6
  37. data/lib/cocoapods-bin/native/podfile.rb +11 -7
  38. data/lib/cocoapods-bin/native/podfile_env.rb +11 -9
  39. data/lib/cocoapods-bin/native/podspec_finder.rb +3 -0
  40. data/lib/cocoapods-bin/native/resolver.rb +65 -45
  41. data/lib/cocoapods-bin/native/sandbox_analyzer.rb +27 -25
  42. data/lib/cocoapods-bin/native/source.rb +7 -4
  43. data/lib/cocoapods-bin/native/sources_manager.rb +11 -9
  44. data/lib/cocoapods-bin/native/specification.rb +14 -12
  45. data/lib/cocoapods-bin/native/validator.rb +3 -3
  46. data/lib/cocoapods-bin/source_provider_hook.rb +12 -8
  47. data/lib/cocoapods_plugin.rb +2 -0
  48. metadata +3 -3
@@ -1,10 +1,11 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'parallel'
2
4
  require 'cocoapods'
3
5
 
4
6
  module Pod
5
7
  class Installer
6
8
  class Analyzer
7
-
8
9
  # > 1.6.0
9
10
  # all_specs[dep.name] 为 nil 会崩溃
10
11
  # 主要原因是 all_specs 分析错误
@@ -29,13 +30,13 @@ module Pod
29
30
  # > 1.5.3 版本
30
31
  # rewrite update_repositories
31
32
  #
32
- alias_method :old_update_repositories, :update_repositories
33
+ alias old_update_repositories update_repositories
33
34
  def update_repositories
34
35
  if installation_options.update_source_with_multi_processes
35
36
  # 并发更新私有源
36
37
  # 这里多线程会导致 pod update 额外输出 --verbose 的内容
37
38
  # 不知道为什么?
38
- Parallel.each(sources.uniq { |s| s.url }, in_processes: 4) do |source|
39
+ Parallel.each(sources.uniq(&:url), in_processes: 4) do |source|
39
40
  if source.git?
40
41
  config.sources_manager.update(source.name, true)
41
42
  else
@@ -43,10 +44,10 @@ module Pod
43
44
  end
44
45
  end
45
46
  @specs_updated = true
46
- else
47
+ else
47
48
  old_update_repositories
48
49
  end
49
50
  end
50
51
  end
51
52
  end
52
- end
53
+ end
@@ -1,24 +1,26 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'cocoapods'
2
4
 
3
5
  module Pod
4
6
  class Installer
5
7
  class InstallationOptions
6
- def self.env_option(key, default = true)
8
+ def self.env_option(key, default = true)
7
9
  option key, ENV[key.to_s].nil? ? default : ENV[key.to_s] == 'true'
8
10
  end
9
11
 
10
- # 不同 source 存在相同 spec 名时,默认不警告
11
- defaults.delete('warn_for_multiple_pod_sources')
12
- env_option :warn_for_multiple_pod_sources, false
12
+ # 不同 source 存在相同 spec 名时,默认不警告
13
+ defaults.delete('warn_for_multiple_pod_sources')
14
+ env_option :warn_for_multiple_pod_sources, false
13
15
 
14
- # 是否警告不安全 source (如 http )
15
- env_option :warn_for_unsecure_source, false
16
+ # 是否警告不安全 source (如 http )
17
+ env_option :warn_for_unsecure_source, false
16
18
 
17
- # 是否多线程执行 install_pod_sources
18
- env_option :install_with_multi_threads, true
19
+ # 是否多线程执行 install_pod_sources
20
+ env_option :install_with_multi_threads, true
19
21
 
20
- # 是否多进程执行 update_repositories
21
- env_option :update_source_with_multi_processes, true
22
+ # 是否多进程执行 update_repositories
23
+ env_option :update_source_with_multi_processes, true
22
24
  end
23
25
  end
24
- end
26
+ end
@@ -1,37 +1,38 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'parallel'
2
4
  require 'cocoapods'
3
5
  require 'cocoapods-bin/native/pod_source_installer'
4
6
 
5
7
  module Pod
6
- class Installer
7
- alias_method :old_create_pod_installer, :create_pod_installer
8
- def create_pod_installer(pod_name)
9
- installer = old_create_pod_installer(pod_name)
10
- installer.installation_options = installation_options
11
- installer
12
- end
8
+ class Installer
9
+ alias old_create_pod_installer create_pod_installer
10
+ def create_pod_installer(pod_name)
11
+ installer = old_create_pod_installer(pod_name)
12
+ installer.installation_options = installation_options
13
+ installer
14
+ end
13
15
 
14
- alias_method :old_install_pod_sources, :install_pod_sources
16
+ alias old_install_pod_sources install_pod_sources
15
17
  def install_pod_sources
16
- if installation_options.install_with_multi_threads
17
- if Pod.match_version?('~> 1.4.0')
18
- install_pod_sources_for_version_in_1_4_0
19
- elsif Pod.match_version?('~> 1.5')
20
- install_pod_sources_for_version_above_1_5_0
21
- else
22
- old_install_pod_sources
23
- end
18
+ if installation_options.install_with_multi_threads
19
+ if Pod.match_version?('~> 1.4.0')
20
+ install_pod_sources_for_version_in_1_4_0
21
+ elsif Pod.match_version?('~> 1.5')
22
+ install_pod_sources_for_version_above_1_5_0
23
+ else
24
+ old_install_pod_sources
25
+ end
24
26
  else
25
- old_install_pod_sources
26
- end
27
+ old_install_pod_sources
28
+ end
27
29
  end
28
30
 
29
-
30
- # rewrite install_pod_sources
31
- def install_pod_sources_for_version_in_1_4_0
32
- @installed_specs = []
31
+ # rewrite install_pod_sources
32
+ def install_pod_sources_for_version_in_1_4_0
33
+ @installed_specs = []
33
34
  pods_to_install = sandbox_state.added | sandbox_state.changed
34
- title_options = { :verbose_prefix => '-> '.green }
35
+ title_options = { verbose_prefix: '-> '.green }
35
36
  Parallel.each(root_specs.sort_by(&:name), in_threads: 4) do |spec|
36
37
  if pods_to_install.include?(spec.name)
37
38
  if sandbox_state.changed.include?(spec.name) && sandbox.manifest
@@ -49,12 +50,12 @@ module Pod
49
50
  end
50
51
  end
51
52
  end
52
- end
53
+ end
53
54
 
54
- def install_pod_sources_for_version_above_1_5_0
55
- @installed_specs = []
55
+ def install_pod_sources_for_version_above_1_5_0
56
+ @installed_specs = []
56
57
  pods_to_install = sandbox_state.added | sandbox_state.changed
57
- title_options = { :verbose_prefix => '-> '.green }
58
+ title_options = { verbose_prefix: '-> '.green }
58
59
  # 多进程下载,多线程时 log 会显著交叉,多进程好点,但是多进程需要利用文件锁对 cache 进行保护
59
60
  # in_processes: 10
60
61
  Parallel.each(root_specs.sort_by(&:name), in_threads: 4) do |spec|
@@ -63,14 +64,22 @@ module Pod
63
64
  current_version = spec.version
64
65
  previous_version = sandbox.manifest.version(spec.name)
65
66
  has_changed_version = current_version != previous_version
66
- current_repo = analysis_result.specs_by_source.detect { |key, values| break key if values.map(&:name).include?(spec.name) }
67
+ current_repo = analysis_result.specs_by_source.detect do |key, values|
68
+ break key if values.map(&:name).include?(spec.name)
69
+ end
67
70
  current_repo &&= current_repo.url || current_repo.name
68
71
  previous_spec_repo = sandbox.manifest.spec_repo(spec.name)
69
72
  has_changed_repo = !previous_spec_repo.nil? && current_repo && (current_repo != previous_spec_repo)
70
73
  title = "Installing #{spec.name} #{spec.version}"
71
- title << " (was #{previous_version} and source changed to `#{current_repo}` from `#{previous_spec_repo}`)" if has_changed_version && has_changed_repo
72
- title << " (was #{previous_version})" if has_changed_version && !has_changed_repo
73
- title << " (source changed to `#{current_repo}` from `#{previous_spec_repo}`)" if !has_changed_version && has_changed_repo
74
+ if has_changed_version && has_changed_repo
75
+ title << " (was #{previous_version} and source changed to `#{current_repo}` from `#{previous_spec_repo}`)"
76
+ end
77
+ if has_changed_version && !has_changed_repo
78
+ title << " (was #{previous_version})"
79
+ end
80
+ if !has_changed_version && has_changed_repo
81
+ title << " (source changed to `#{current_repo}` from `#{previous_spec_repo}`)"
82
+ end
74
83
  else
75
84
  title = "Installing #{spec}"
76
85
  end
@@ -83,26 +92,24 @@ module Pod
83
92
  end
84
93
  end
85
94
  end
86
- end
87
-
88
- end
95
+ end
96
+ end
89
97
 
90
98
  module Downloader
91
99
  class Cache
92
- # 多线程锁
93
- @@lock = Mutex.new
94
-
95
- # 后面如果要切到进程的话,可以在 cache root 里面新建一个文件
96
- # 利用这个文件 lock
97
- # https://stackoverflow.com/questions/23748648/using-fileflock-as-ruby-global-lock-mutex-for-processes
100
+ # 多线程锁
101
+ @@lock = Mutex.new
98
102
 
99
- # rmtree 在多进程情况下可能 Directory not empty @ dir_s_rmdir 错误
100
- # old_ensure_matching_version 会移除不是同一个 CocoaPods 版本的组件缓存
101
- alias_method :old_ensure_matching_version, :ensure_matching_version
102
- def ensure_matching_version
103
- @@lock.synchronize { old_ensure_matching_version }
104
- end
103
+ # 后面如果要切到进程的话,可以在 cache root 里面新建一个文件
104
+ # 利用这个文件 lock
105
+ # https://stackoverflow.com/questions/23748648/using-fileflock-as-ruby-global-lock-mutex-for-processes
105
106
 
107
+ # rmtree 在多进程情况下可能 Directory not empty @ dir_s_rmdir 错误
108
+ # old_ensure_matching_version 会移除不是同一个 CocoaPods 版本的组件缓存
109
+ alias old_ensure_matching_version ensure_matching_version
110
+ def ensure_matching_version
111
+ @@lock.synchronize { old_ensure_matching_version }
112
+ end
106
113
  end
107
114
  end
108
- end
115
+ end
@@ -1,9 +1,11 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'cocoapods-bin/native/specification'
2
4
 
3
5
  module Pod
4
6
  class Specification
5
7
  class Linter
6
- # !@group Lint steps
8
+ # !@group Lint steps
7
9
 
8
10
  # Checks that the spec's root name matches the filename.
9
11
  #
@@ -21,4 +23,4 @@ module Pod
21
23
  end
22
24
  end
23
25
  end
24
- end
26
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'cocoapods-bin/native/specification'
2
4
 
3
5
  module Pod
@@ -12,12 +14,12 @@ module Pod
12
14
  if extension == '.podspec' || extension == '.json'
13
15
  path_with_ext = declared_path
14
16
  else
15
- # 默认先从 binary podspec 找起,因为 binary podspec 的 subspec 可能比 code podspec 多
16
- # 这里可能出现 code subspec 和 binary subspec 对应不上的情况,导致 lint 失败
17
- # 所以不要在 code podspec 同一目录下保留 binary podspec
18
- path_with_ext = Specification::VALID_EXTNAME
19
- .map { |extname| "#{declared_path}/#{name}#{extname}" }
20
- .find { |file| File.exist?(file) } || "#{declared_path}/#{name}.podspec"
17
+ # 默认先从 binary podspec 找起,因为 binary podspec 的 subspec 可能比 code podspec 多
18
+ # 这里可能出现 code subspec 和 binary subspec 对应不上的情况,导致 lint 失败
19
+ # 所以不要在 code podspec 同一目录下保留 binary podspec
20
+ path_with_ext = Specification::VALID_EXTNAME
21
+ .map { |extname| "#{declared_path}/#{name}#{extname}" }
22
+ .find { |file| File.exist?(file) } || "#{declared_path}/#{name}.podspec"
21
23
  end
22
24
 
23
25
  UI.message "获取的 podspec 路径为 `#{path_with_ext}`"
@@ -28,4 +30,4 @@ module Pod
28
30
  end
29
31
  end
30
32
  end
31
- end
33
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'cocoapods-bin/native/installation_options'
2
4
 
3
5
  module Pod
@@ -5,11 +7,13 @@ module Pod
5
7
  class PodSourceInstaller
6
8
  attr_accessor :installation_options
7
9
 
8
- alias_method :old_verify_source_is_secure, :verify_source_is_secure
9
- def verify_source_is_secure(root_spec)
10
- # http source 默认不警告
11
- old_verify_source_is_secure(root_spec) if installation_options.warn_for_unsecure_source?
12
- end
10
+ alias old_verify_source_is_secure verify_source_is_secure
11
+ def verify_source_is_secure(root_spec)
12
+ # http source 默认不警告
13
+ if installation_options.warn_for_unsecure_source?
14
+ old_verify_source_is_secure(root_spec)
15
+ end
16
+ end
13
17
  end
14
18
  end
15
- end
19
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'cocoapods'
2
4
  require 'cocoapods-bin/native/podfile_env'
3
5
 
@@ -27,15 +29,14 @@ module Pod
27
29
  end
28
30
  end
29
31
 
30
- alias_method :old_plugins, :plugins
32
+ alias old_plugins plugins
31
33
  def plugins
32
34
  if ENV[USE_PLUGINS]
33
- env_plugins = ENV[USE_PLUGINS].split(',').reduce({}) do |result, name|
34
- result[name] = {}
35
- result
35
+ env_plugins = ENV[USE_PLUGINS].split(',').each_with_object({}) do |name, result|
36
+ result[name] = {}
36
37
  end
37
38
  env_plugins.merge!(old_plugins)
38
- else
39
+ else
39
40
  old_plugins
40
41
  end
41
42
  end
@@ -57,8 +58,11 @@ module Pod
57
58
  end
58
59
 
59
60
  private
61
+
60
62
  def valid_bin_plugin
61
- raise Pod::Informative, 'You should add `plugin \'cocoapods-bin\'` before using its DSL' unless plugins.keys.include?('cocoapods-bin')
63
+ unless plugins.keys.include?('cocoapods-bin')
64
+ raise Pod::Informative, 'You should add `plugin \'cocoapods-bin\'` before using its DSL'
65
+ end
62
66
  end
63
67
 
64
68
  # set_hash_value 有 key 限制
@@ -72,4 +76,4 @@ module Pod
72
76
  internal_hash.fetch(key, default)
73
77
  end
74
78
  end
75
- end
79
+ end
@@ -1,25 +1,27 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Pod
2
4
  class Podfile
3
- USE_BINARIES = 'use_binaries'.freeze
4
- USE_SOURCE_PODS = 'use_source_pods'.freeze
5
- USE_BINARIES_SELECTOR = 'use_binaries_selector'.freeze
6
- ALLOW_PRERELEASE = 'allow_prerelease'.freeze
7
- USE_PLUGINS = 'use_plugins'.freeze
5
+ USE_BINARIES = 'use_binaries'
6
+ USE_SOURCE_PODS = 'use_source_pods'
7
+ USE_BINARIES_SELECTOR = 'use_binaries_selector'
8
+ ALLOW_PRERELEASE = 'allow_prerelease'
9
+ USE_PLUGINS = 'use_plugins'
8
10
 
9
11
  module ENVExecutor
10
12
  def execute_with_bin_plugin(&block)
11
- execute_with_key(USE_PLUGINS, -> {'cocoapods-bin'}, &block)
13
+ execute_with_key(USE_PLUGINS, -> { 'cocoapods-bin' }, &block)
12
14
  end
13
15
 
14
16
  def execute_with_allow_prerelease(allow_prerelease, &block)
15
17
  execute_with_key(ALLOW_PRERELEASE, -> { allow_prerelease ? 'true' : 'false' }, &block)
16
18
  end
17
-
19
+
18
20
  def execute_with_use_binaries(use_binaries, &block)
19
21
  execute_with_key(USE_BINARIES, -> { use_binaries ? 'true' : 'false' }, &block)
20
22
  end
21
23
 
22
- def execute_with_key(key, value_returner, &block)
24
+ def execute_with_key(key, value_returner)
23
25
  origin_value = ENV[key]
24
26
  ENV[key] = value_returner.call
25
27
 
@@ -31,4 +33,4 @@ module Pod
31
33
 
32
34
  extend ENVExecutor
33
35
  end
34
- end
36
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'cocoapods-bin/native/specification'
2
4
 
3
5
  module Pod
@@ -5,6 +7,7 @@ module Pod
5
7
  class PodspecFinder
6
8
  def podspecs
7
9
  return @specs_by_name if @specs_by_name
10
+
8
11
  @specs_by_name = {}
9
12
  spec_files = Pathname.glob(root + '{,*}.podspec{,.json}')
10
13
  # pod 指向分支时,如果目标组件有 subspec ,并且有 template spec ,request 之后使用的 spec 不应该为 template spec
@@ -1,13 +1,15 @@
1
- require "parallel"
2
- require "cocoapods"
3
- require "cocoapods-bin/native/podfile"
4
- require "cocoapods-bin/native/sources_manager"
5
- require "cocoapods-bin/native/installation_options"
6
- require "cocoapods-bin/gem_version"
1
+ # frozen_string_literal: true
2
+
3
+ require 'parallel'
4
+ require 'cocoapods'
5
+ require 'cocoapods-bin/native/podfile'
6
+ require 'cocoapods-bin/native/sources_manager'
7
+ require 'cocoapods-bin/native/installation_options'
8
+ require 'cocoapods-bin/gem_version'
7
9
 
8
10
  module Pod
9
11
  class Resolver
10
- if Pod.match_version?("~> 1.6")
12
+ if Pod.match_version?('~> 1.6')
11
13
  # 其实不用到 resolver_specs_by_target 再改 spec
12
14
  # 在这个方法里面,通过修改 dependency 的 source 应该也可以
13
15
  # 就是有一点,如果改了之后,对应的 source 没有符合 dependency 的版本
@@ -16,7 +18,7 @@ module Pod
16
18
  #
17
19
  def aggregate_for_dependency(dependency)
18
20
  sources_manager = Config.instance.sources_manager
19
- if dependency && dependency.podspec_repo
21
+ if dependency&.podspec_repo
20
22
  sources_manager.aggregate_for_dependency(dependency)
21
23
  # 采用 lock 中的 source ,会导致插件对 source 的先后调整失效
22
24
  # elsif (locked_vertex = @locked_dependencies.vertex_named(dependency.name)) && (locked_dependency = locked_vertex.payload) && locked_dependency.podspec_repo
@@ -27,48 +29,59 @@ module Pod
27
29
  end
28
30
  end
29
31
 
30
- if Pod.match_version?("~> 1.4")
32
+ if Pod.match_version?('~> 1.4')
31
33
  def specifications_for_dependency(dependency, additional_requirements_frozen = [])
32
34
  additional_requirements = additional_requirements_frozen.dup
33
35
  additional_requirements.compact!
34
36
  requirement = Requirement.new(dependency.requirement.as_list + additional_requirements.flat_map(&:as_list))
35
- requirement = Requirement.new(dependency.requirement.as_list.map { |r| r + ".a" } + additional_requirements.flat_map(&:as_list)) if podfile.allow_prerelease? && !requirement.prerelease?
36
-
37
- if Pod.match_version?("~> 1.7")
38
- options = podfile.installation_options
39
- else
40
- options = installation_options
37
+ if podfile.allow_prerelease? && !requirement.prerelease?
38
+ requirement = Requirement.new(dependency.requirement.as_list.map { |r| r + '.a' } + additional_requirements.flat_map(&:as_list))
41
39
  end
42
40
 
43
- if Pod.match_version?("~> 1.8")
44
- specifications = find_cached_set(dependency).
45
- all_specifications(options.warn_for_multiple_pod_sources, requirement)
41
+ options = if Pod.match_version?('~> 1.7')
42
+ podfile.installation_options
43
+ else
44
+ installation_options
45
+ end
46
+
47
+ if Pod.match_version?('~> 1.8')
48
+ specifications = find_cached_set(dependency)
49
+ .all_specifications(options.warn_for_multiple_pod_sources, requirement)
46
50
  else
47
- specifications = find_cached_set(dependency).
48
- all_specifications(options.warn_for_multiple_pod_sources)
51
+ specifications = find_cached_set(dependency)
52
+ .all_specifications(options.warn_for_multiple_pod_sources)
49
53
  end
50
54
 
51
- specifications.
52
- map { |s| s.subspec_by_name(dependency.name, false, true) }.
53
- compact
55
+ specifications
56
+ .map { |s| s.subspec_by_name(dependency.name, false, true) }
57
+ .compact
54
58
  end
55
59
  end
56
60
 
57
- if Pod.match_version?("~> 1.6")
58
- alias_method :old_valid_possibility_version_for_root_name?, :valid_possibility_version_for_root_name?
61
+ if Pod.match_version?('~> 1.6')
62
+ alias old_valid_possibility_version_for_root_name? valid_possibility_version_for_root_name?
59
63
 
60
64
  def valid_possibility_version_for_root_name?(requirement, activated, spec)
61
65
  return true if podfile.allow_prerelease?
66
+
62
67
  old_valid_possibility_version_for_root_name?(requirement, activated, spec)
63
68
  end
64
- elsif Pod.match_version?("~> 1.4")
69
+ elsif Pod.match_version?('~> 1.4')
65
70
  def requirement_satisfied_by?(requirement, activated, spec)
66
71
  version = spec.version
67
72
  return false unless requirement.requirement.satisfied_by?(version)
73
+
68
74
  shared_possibility_versions, prerelease_requirement = possibility_versions_for_root_name(requirement, activated)
69
- return false if !shared_possibility_versions.empty? && !shared_possibility_versions.include?(version)
70
- return false if !podfile.allow_prerelease? && version.prerelease? && !prerelease_requirement
71
- return false unless spec_is_platform_compatible?(activated, requirement, spec)
75
+ if !shared_possibility_versions.empty? && !shared_possibility_versions.include?(version)
76
+ return false
77
+ end
78
+ if !podfile.allow_prerelease? && version.prerelease? && !prerelease_requirement
79
+ return false
80
+ end
81
+ unless spec_is_platform_compatible?(activated, requirement, spec)
82
+ return false
83
+ end
84
+
72
85
  true
73
86
  end
74
87
  end
@@ -76,10 +89,10 @@ module Pod
76
89
  # >= 1.4.0 才有 resolver_specs_by_target 以及 ResolverSpecification
77
90
  # >= 1.5.0 ResolverSpecification 才有 source,供 install 或者其他操作时,输入 source 变更
78
91
  #
79
- if Pod.match_version?("~> 1.4")
92
+ if Pod.match_version?('~> 1.4')
80
93
  old_resolver_specs_by_target = instance_method(:resolver_specs_by_target)
81
94
  define_method(:resolver_specs_by_target) do
82
- specs_by_target = old_resolver_specs_by_target.bind(self).call()
95
+ specs_by_target = old_resolver_specs_by_target.bind(self).call
83
96
 
84
97
  sources_manager = Config.instance.sources_manager
85
98
  use_source_pods = podfile.use_source_pods
@@ -90,7 +103,7 @@ module Pod
90
103
  use_binary_rspecs = if podfile.use_binaries? || podfile.use_binaries_selector
91
104
  rspecs.select do |rspec|
92
105
  ([rspec.name, rspec.root.name] & use_source_pods).empty? &&
93
- (podfile.use_binaries_selector.nil? || podfile.use_binaries_selector.call(rspec.spec))
106
+ (podfile.use_binaries_selector.nil? || podfile.use_binaries_selector.call(rspec.spec))
94
107
  end
95
108
  else
96
109
  []
@@ -102,7 +115,9 @@ module Pod
102
115
  # next rspec if rspec.spec.subspec? || rspec.spec.subspecs.any?
103
116
 
104
117
  # developments 组件采用默认输入的 spec (development pods 的 source 为 nil)
105
- next rspec unless rspec.spec.respond_to?(:spec_source) && rspec.spec.spec_source
118
+ unless rspec.spec.respond_to?(:spec_source) && rspec.spec.spec_source
119
+ next rspec
120
+ end
106
121
 
107
122
  # 采用二进制依赖并且不为开发组件
108
123
  use_binary = use_binary_rspecs.include?(rspec)
@@ -117,25 +132,27 @@ module Pod
117
132
  specification = source.specification(rspec.root.name, spec_version)
118
133
 
119
134
  # 组件是 subspec
120
- specification = specification.subspec_by_name(rspec.name, false, true) if rspec.spec.subspec?
135
+ if rspec.spec.subspec?
136
+ specification = specification.subspec_by_name(rspec.name, false, true)
137
+ end
121
138
  # 这里可能出现分析依赖的 source 和切换后的 source 对应 specification 的 subspec 对应不上
122
139
  # 造成 subspec_by_name 返回 nil,这个是正常现象
123
140
  next unless specification
124
141
 
125
- if Pod.match_version?("~> 1.7")
126
- used_by_only = rspec.used_by_non_library_targets_only
127
- else
128
- used_by_only = rspec.used_by_tests_only
129
- end
142
+ used_by_only = if Pod.match_version?('~> 1.7')
143
+ rspec.used_by_non_library_targets_only
144
+ else
145
+ rspec.used_by_tests_only
146
+ end
130
147
  # used_by_only = rspec.respond_to?(:used_by_tests_only) ? rspec.used_by_tests_only : rspec.used_by_non_library_targets_only
131
148
  # 组装新的 rspec ,替换原 rspec
132
- rspec = if Pod.match_version?("~> 1.4.0")
149
+ rspec = if Pod.match_version?('~> 1.4.0')
133
150
  ResolverSpecification.new(specification, used_by_only)
134
151
  else
135
152
  ResolverSpecification.new(specification, used_by_only, source)
136
153
  end
137
154
  rspec
138
- rescue Pod::StandardError => error
155
+ rescue Pod::StandardError => e
139
156
  # 没有从新的 source 找到对应版本组件,直接返回原 rspec
140
157
  missing_binary_specs << rspec.spec if use_binary
141
158
  rspec
@@ -145,16 +162,18 @@ module Pod
145
162
  end.compact
146
163
  end
147
164
 
148
- missing_binary_specs.uniq.each do |spec|
149
- UI.message "【#{spec.name} | #{spec.version}】组件无对应二进制版本 , 将采用源码依赖."
150
- end if missing_binary_specs.any?
165
+ if missing_binary_specs.any?
166
+ missing_binary_specs.uniq.each do |spec|
167
+ UI.message "【#{spec.name} | #{spec.version}】组件无对应二进制版本 , 将采用源码依赖."
168
+ end
169
+ end
151
170
 
152
171
  specs_by_target
153
172
  end
154
173
  end
155
174
  end
156
175
 
157
- if Pod.match_version?("~> 1.4.0")
176
+ if Pod.match_version?('~> 1.4.0')
158
177
  # 1.4.0 没有 spec_source
159
178
  class Specification
160
179
  class Set
@@ -170,6 +189,7 @@ module Pod
170
189
 
171
190
  def respond_to?(method, include_all = false)
172
191
  return super unless method == :spec_source
192
+
173
193
  true
174
194
  end
175
195
  end