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 +4 -4
- data/README.md +4 -2
- data/lib/cocoapods-external-pod-sorter/command/sorter.rb +9 -2
- data/lib/cocoapods-external-pod-sorter/external_pod_sorter.rb +9 -28
- data/lib/cocoapods-external-pod-sorter/external_pod_sorter/data_source.rb +11 -0
- data/lib/cocoapods-external-pod-sorter/external_pod_sorter/data_source/local_data_source.rb +30 -0
- data/lib/cocoapods-external-pod-sorter/gem_version.rb +1 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2a8e8e2015b8d6bee337918679b2223f5bf54c73
|
4
|
+
data.tar.gz: 80c37bb4b1e43c787927a674a7f9e16fba9a76b1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
-
|
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
|
-
|
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
|
-
|
50
|
+
data_source = ExternalPodSorter::LocalDataSource.new(config)
|
51
|
+
sorter = ExternalPodSorter.new(data_source)
|
51
52
|
sorter.sort
|
52
|
-
|
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(
|
12
|
-
@
|
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
|
-
|
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 =
|
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(
|
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 =
|
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
|
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.
|
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-
|
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
|