cocoapods-external-pod-sorter 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
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