cocoapods-external-pod-sorter 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 596f9acb3f6abd7aa7ff2ab44036b61e0f2c19dd
4
- data.tar.gz: a76266f4e67d31264baecfb49a397bd6b2c55bbd
3
+ metadata.gz: 2a8e8e2015b8d6bee337918679b2223f5bf54c73
4
+ data.tar.gz: 80c37bb4b1e43c787927a674a7f9e16fba9a76b1
5
5
  SHA512:
6
- metadata.gz: 9f5cb463e00cf42613dda5c74895e13dc6bebbf451e38c0c73b592695da27df5ccde19a3b19e4af1313f87fb3e64eca6d6f38b10cdfe105950e40dc6debd5fb2
7
- data.tar.gz: 8c6149ce8a57bacdf5bc42853f1c804e209a4d95dc152114d64c16f9014d2a4052d833d7e071a353c034135cbe9ba0968f010d0a80acda646d81849d5b8e73a3
6
+ metadata.gz: c5400de0b246ab6dd760708460e5b7dd5d8fd93853938452a2f1154a683dc3e5db56597164e77a67a9f9c28b5e38e64c1a5a7397cd4990b6bb7101b697577479
7
+ data.tar.gz: 2ffd9ed420487ce6100333280154258432a97d3360a409615ca86c3537abf2f8bf72f0305c3aaef82dac1d093c5766e8b3307eab8770a77a415f4e58e23d48b4
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # cocoapods-external-pod-sorter
2
2
 
3
- A description of cocoapods-external-pod-sorter.
3
+ Podfile 中依赖 external 的组件进行分组.
4
4
 
5
5
  ## Installation
6
6
 
@@ -8,4 +8,6 @@ A description of cocoapods-external-pod-sorter.
8
8
 
9
9
  ## Usage
10
10
 
11
- $ pod spec sorter POD_NAME
11
+
12
+ $ pod sort
13
+
@@ -47,9 +47,12 @@ module Pod
47
47
  def run
48
48
  config = Pod::Config.instance
49
49
  config.installation_root = Pathname.new(@project_directory) if @project_directory
50
- sorter = ExternalPodSorter.new(config)
50
+ data_source = ExternalPodSorter::LocalDataSource.new(config)
51
+ sorter = ExternalPodSorter.new(data_source)
51
52
  sorter.sort
52
- sorter.grouped_pods.each do |group|
53
+
54
+ if sorter.grouped_pods
55
+ sorter.grouped_pods.each do |group|
53
56
  group.each do |pod|
54
57
  display = pod.name.dup
55
58
  if pod.external_dependency_names.any?
@@ -61,6 +64,10 @@ module Pod
61
64
  puts display
62
65
  end
63
66
  end
67
+ else
68
+ puts '没有未依赖正式版本组件.'
69
+ end
70
+
64
71
  end
65
72
  end
66
73
  end
@@ -4,58 +4,40 @@ require 'cocoapods-external-pod-sorter/cocoapods/sources_manager'
4
4
  require 'cocoapods-external-pod-sorter/cocoapods/specification'
5
5
  require 'cocoapods-external-pod-sorter/external_pod_sorter/pod_item'
6
6
  require 'cocoapods-external-pod-sorter/cocoapods/source'
7
+ require 'cocoapods-external-pod-sorter/external_pod_sorter/data_source'
8
+ require 'cocoapods-external-pod-sorter/external_pod_sorter/data_source/local_data_source'
7
9
 
8
10
  class ExternalPodSorter
9
11
  attr_accessor :grouped_pods
10
12
 
11
- def initialize(config = Pod::Config.instance)
12
- @config = config
13
- @untagged_dependencies = config.podfile.untagged_dependencies
13
+ def initialize(data_source = LocalDataSource.new)
14
+ @data_source = data_source
14
15
  end
15
16
 
16
17
  public
17
18
  def sort
18
- podfile_specs = analyze_podfile_specs
19
- @grouped_pods = group_pods_by_dependency_depth(@untagged_dependencies, podfile_specs)
19
+ @grouped_pods = group_pods_by_dependency_depth(@data_source.untagged_dependencies, @data_source.reference_specifications)
20
20
  @grouped_pods
21
21
  end
22
22
 
23
23
  private
24
-
25
- def analyze_podfile_specs
26
- analyzer = Pod::Installer::Analyzer.new(@config.sandbox, @config.podfile, @config.lockfile)
27
- podfile_specs = @config.with_changes(skip_repo_update: true) do
28
- # allow fetch ,初次install时,或者新增external source 时,由于Pods/Local Podspecs 是空,会抛出找不到specification异常
29
- begin
30
- analyzer.analyze(false).specs_by_target.values.flatten(1)
31
- rescue
32
- analyzer.analyze(true).specs_by_target.values.flatten(1)
33
- end
34
- end
35
-
36
- podfile_specs
37
- rescue
38
- puts 'Can`t fetch specs from project directory, fetch from private source cache'.yellow
39
- @config.sources_manager.default_source.newest_specs
40
- end
41
-
42
- def group_pods_by_dependency_depth(untagged_dependencies, podfile_specs)
24
+ def group_pods_by_dependency_depth(untagged_dependencies, reference_specifications)
43
25
  result = []
44
26
 
45
27
  untagged_dependency_names = untagged_dependencies.map(&:name)
46
- untagged_specs = podfile_specs.select do |spec|
28
+ untagged_specs = reference_specifications.select do |spec|
47
29
  untagged_dependency_names.include?(spec.name)
48
30
  end
49
31
 
50
32
  while untagged_specs.length > 0
51
33
  pods = []
52
34
  untagged_specs.each do |spec|
53
- dependency_names = spec.recursive_dependencies(podfile_specs).map { |dep| dep.name }
35
+ dependency_names = spec.recursive_dependencies(reference_specifications).map { |dep| dep.name }
54
36
  untagged_name = spec.name
55
37
 
56
38
  if untagged_specs.select { |spec| dependency_names.include?(spec.name) }.empty?
57
39
  pod = ExternalPodSorter::PodItem.new(untagged_name)
58
- pod.spec = podfile_specs.find { |spec| spec.name == untagged_name }
40
+ pod.spec = reference_specifications.find { |spec| spec.name == untagged_name }
59
41
  pod.dependency = untagged_dependencies.find { |dep| dep.name == untagged_name }
60
42
  pod.external_dependency_names = dependency_names.select { |name| untagged_dependency_names.include?(name) }
61
43
  pods << pod
@@ -64,7 +46,6 @@ class ExternalPodSorter
64
46
  untagged_specs = untagged_specs.reject do |spec|
65
47
  pods.select { |pod| pod.name == spec.name }.any?
66
48
  end
67
-
68
49
  result << pods
69
50
  end
70
51
 
@@ -0,0 +1,11 @@
1
+ class ExternalPodSorter
2
+ class DataSource
3
+ def untagged_dependencies
4
+ raise NotImplementedError.new("#{self.class.name}#untagged_dependencies是抽象方法")
5
+ end
6
+
7
+ def reference_specifications
8
+ raise NotImplementedError.new("#{self.class.name}#reference_specifications是抽象方法")
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,30 @@
1
+ require 'cocoapods'
2
+
3
+ class ExternalPodSorter
4
+ class LocalDataSource < DataSource
5
+ def initialize(config = Pod::Config.instance)
6
+ @config = config
7
+ end
8
+
9
+ def untagged_dependencies
10
+ @config.podfile.untagged_dependencies
11
+ end
12
+
13
+ def reference_specifications
14
+ analyzer = Pod::Installer::Analyzer.new(@config.sandbox, @config.podfile, @config.lockfile)
15
+ podfile_specs = @config.with_changes(skip_repo_update: true) do
16
+ # allow fetch ,初次install时,或者新增external source 时,由于Pods/Local Podspecs 是空,会抛出找不到specification异常
17
+ begin
18
+ analyzer.analyze(false).specs_by_target.values.flatten(1)
19
+ rescue
20
+ analyzer.analyze(true).specs_by_target.values.flatten(1)
21
+ end
22
+ end
23
+
24
+ podfile_specs
25
+ rescue
26
+ puts 'Can`t fetch specs from project directory, fetch from private source cache'.yellow
27
+ @config.sources_manager.default_source.newest_specs
28
+ end
29
+ end
30
+ end
@@ -1,3 +1,3 @@
1
1
  module CocoapodsExternalPodSorter
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cocoapods-external-pod-sorter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - tripleCC
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-07-25 00:00:00.000000000 Z
11
+ date: 2018-08-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -59,6 +59,8 @@ files:
59
59
  - lib/cocoapods-external-pod-sorter/command.rb
60
60
  - lib/cocoapods-external-pod-sorter/command/sorter.rb
61
61
  - lib/cocoapods-external-pod-sorter/external_pod_sorter.rb
62
+ - lib/cocoapods-external-pod-sorter/external_pod_sorter/data_source.rb
63
+ - lib/cocoapods-external-pod-sorter/external_pod_sorter/data_source/local_data_source.rb
62
64
  - lib/cocoapods-external-pod-sorter/external_pod_sorter/pod_item.rb
63
65
  - lib/cocoapods-external-pod-sorter/gem_version.rb
64
66
  - lib/cocoapods_plugin.rb