cocoapods-dependency 0.1.1 → 0.2.0
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/Gemfile.lock +17 -17
- data/README.md +6 -11
- data/lib/cocoapods-dependency/command/dependency.rb +23 -4
- data/lib/cocoapods-dependency/resources/index.html +110 -0
- data/lib/cocoapods-dependency/version.rb +1 -1
- data/lib/cocoapods-dependency/visual_out.rb +50 -0
- 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: bbceca13412e0e3a77941bcc66a5c1b0cce58422
|
4
|
+
data.tar.gz: c302b713bab4af69e22c604b2ef09c0ef36c4b47
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 63a9ff5a2d500cfb89fcb8ae17db5bde719c0e668f643af2adb6045c7f9028b2cffce602be60f9d9a37cded311e9d0fe4765cfd779c4e91803b9e6e6b8b0f9ff
|
7
|
+
data.tar.gz: 90b91726a892313e4196b38d8b1288a7197ddf1a8bd50e08ac16cd4a7743611599ece274d777fcd02cddb833afb724c75b10240375d2034f7929a4208b0ba345
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
cocoapods-dependency (0.
|
4
|
+
cocoapods-dependency (0.2.0)
|
5
5
|
cocoapods (~> 1.5)
|
6
6
|
|
7
7
|
GEM
|
@@ -15,10 +15,10 @@ GEM
|
|
15
15
|
tzinfo (~> 1.1)
|
16
16
|
atomos (0.1.3)
|
17
17
|
claide (1.0.2)
|
18
|
-
cocoapods (1.5.
|
18
|
+
cocoapods (1.5.0)
|
19
19
|
activesupport (>= 4.0.2, < 5)
|
20
20
|
claide (>= 1.0.2, < 2.0)
|
21
|
-
cocoapods-core (= 1.5.
|
21
|
+
cocoapods-core (= 1.5.0)
|
22
22
|
cocoapods-deintegrate (>= 1.0.2, < 2.0)
|
23
23
|
cocoapods-downloader (>= 1.2.0, < 2.0)
|
24
24
|
cocoapods-plugins (>= 1.0.0, < 2.0)
|
@@ -34,7 +34,7 @@ GEM
|
|
34
34
|
nap (~> 1.0)
|
35
35
|
ruby-macho (~> 1.1)
|
36
36
|
xcodeproj (>= 1.5.7, < 2.0)
|
37
|
-
cocoapods-core (1.5.
|
37
|
+
cocoapods-core (1.5.0)
|
38
38
|
activesupport (>= 4.0.2, < 6)
|
39
39
|
fuzzy_match (~> 2.0.4)
|
40
40
|
nap (~> 1.0)
|
@@ -71,19 +71,19 @@ GEM
|
|
71
71
|
nap (1.1.0)
|
72
72
|
netrc (0.11.0)
|
73
73
|
rake (10.5.0)
|
74
|
-
rspec (3.
|
75
|
-
rspec-core (~> 3.
|
76
|
-
rspec-expectations (~> 3.
|
77
|
-
rspec-mocks (~> 3.
|
78
|
-
rspec-core (3.
|
79
|
-
rspec-support (~> 3.
|
80
|
-
rspec-expectations (3.
|
74
|
+
rspec (3.8.0)
|
75
|
+
rspec-core (~> 3.8.0)
|
76
|
+
rspec-expectations (~> 3.8.0)
|
77
|
+
rspec-mocks (~> 3.8.0)
|
78
|
+
rspec-core (3.8.0)
|
79
|
+
rspec-support (~> 3.8.0)
|
80
|
+
rspec-expectations (3.8.2)
|
81
81
|
diff-lcs (>= 1.2.0, < 2.0)
|
82
|
-
rspec-support (~> 3.
|
83
|
-
rspec-mocks (3.
|
82
|
+
rspec-support (~> 3.8.0)
|
83
|
+
rspec-mocks (3.8.0)
|
84
84
|
diff-lcs (>= 1.2.0, < 2.0)
|
85
|
-
rspec-support (~> 3.
|
86
|
-
rspec-support (3.
|
85
|
+
rspec-support (~> 3.8.0)
|
86
|
+
rspec-support (3.8.0)
|
87
87
|
ruby-macho (1.3.1)
|
88
88
|
simplecov (0.16.1)
|
89
89
|
docile (~> 1.1)
|
@@ -94,7 +94,7 @@ GEM
|
|
94
94
|
tins (~> 1.0)
|
95
95
|
thor (0.19.4)
|
96
96
|
thread_safe (0.3.6)
|
97
|
-
tins (1.
|
97
|
+
tins (1.17.0)
|
98
98
|
tzinfo (1.2.5)
|
99
99
|
thread_safe (~> 0.1)
|
100
100
|
xcodeproj (1.7.0)
|
@@ -115,4 +115,4 @@ DEPENDENCIES
|
|
115
115
|
rspec (~> 3.0)
|
116
116
|
|
117
117
|
BUNDLED WITH
|
118
|
-
1.
|
118
|
+
1.17.0
|
data/README.md
CHANGED
@@ -14,20 +14,15 @@ A CocoaPods plugin which analyzes the dependencies of any cocoapods projects. Su
|
|
14
14
|
$ gem install cocoapods-dependency
|
15
15
|
|
16
16
|
## Usage
|
17
|
-
|
18
|
-
$ pod dependency
|
19
17
|
|
20
18
|
The command should be executed in directory that contains podfile.
|
21
19
|
|
22
|
-
|
20
|
+
```shell
|
21
|
+
# put the analyze result to console
|
22
|
+
$ pod dependency
|
23
23
|
|
24
|
-
|
25
|
-
|
26
|
-
'Texture' => ['PINCache', 'PINOperation', 'PINRemoteImage'],
|
27
|
-
'PINCache' => ['PINOperation'],
|
28
|
-
'PINRemoteImage' => ['PINCache', 'PINOperation'],
|
29
|
-
'PINOperation' => [],
|
30
|
-
}
|
24
|
+
# write te analyze result to a readable HTML
|
25
|
+
$ pod dependency --visual
|
31
26
|
```
|
32
27
|
|
33
28
|
## Why this gem?
|
@@ -49,7 +44,7 @@ It seems like this project has just a single dependency, but behind this pod, it
|
|
49
44
|
## TODO
|
50
45
|
|
51
46
|
- [X] Lift it to a cocoapods-plugin
|
52
|
-
- [
|
47
|
+
- [X] Pretty printed result
|
53
48
|
|
54
49
|
## License
|
55
50
|
|
@@ -1,5 +1,8 @@
|
|
1
1
|
require 'cocoapods-dependency/analyze'
|
2
2
|
require 'pp'
|
3
|
+
require 'cocoapods-dependency/visual_out'
|
4
|
+
require 'tmpdir'
|
5
|
+
|
3
6
|
module Pod
|
4
7
|
class Command
|
5
8
|
|
@@ -10,20 +13,36 @@ module Pod
|
|
10
13
|
Analyzes the dependencies of any cocoapods projects. Subspecs are properly handled.
|
11
14
|
DESC
|
12
15
|
|
13
|
-
# self.arguments = 'NAME'
|
14
|
-
|
15
16
|
def initialize(argv)
|
16
|
-
@
|
17
|
+
@using_visual_output = argv.flag?('visual', false)
|
17
18
|
super
|
18
19
|
end
|
19
20
|
|
21
|
+
def self.options
|
22
|
+
[
|
23
|
+
['--visual', 'Output the result using html'],
|
24
|
+
].concat(super)
|
25
|
+
end
|
26
|
+
|
20
27
|
def validate!
|
21
28
|
super
|
22
29
|
verify_podfile_exists!
|
23
30
|
end
|
24
31
|
|
25
32
|
def run
|
26
|
-
|
33
|
+
analyze_result = CocoapodsDependency::Analyzer.analyze_with_podfile(nil, config.podfile)
|
34
|
+
if @using_visual_output
|
35
|
+
helper = CocoapodsDependency::VisualOutHelper.new(analyze_result)
|
36
|
+
final_path = Dir.tmpdir
|
37
|
+
helper.write_json_to_file("#{final_path}/index.json")
|
38
|
+
html_path = File.expand_path("../resources/index.html", __dir__)
|
39
|
+
system "cp #{html_path} #{final_path}"
|
40
|
+
final_html_path = "#{final_path}/index.html"
|
41
|
+
puts "[CocoapodsDependency] ✅ html file generated at path #{final_html_path}"
|
42
|
+
system "open #{final_html_path}"
|
43
|
+
else
|
44
|
+
pp result
|
45
|
+
end
|
27
46
|
end
|
28
47
|
end
|
29
48
|
end
|
@@ -0,0 +1,110 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html>
|
3
|
+
|
4
|
+
<head>
|
5
|
+
<meta charset="UTF-8">
|
6
|
+
<title>Dependency Checker for CocoaPods Projects</title>
|
7
|
+
<style type="text/css">
|
8
|
+
#nav a {
|
9
|
+
display: block;
|
10
|
+
}
|
11
|
+
|
12
|
+
html,
|
13
|
+
body {
|
14
|
+
height: 100%;
|
15
|
+
}
|
16
|
+
|
17
|
+
#nav {
|
18
|
+
padding: 10px 30px;
|
19
|
+
float: left;
|
20
|
+
width: 30%;
|
21
|
+
height: 100%;
|
22
|
+
overflow: scroll;
|
23
|
+
}
|
24
|
+
|
25
|
+
#content {
|
26
|
+
padding: 10px 30px;
|
27
|
+
float: left;
|
28
|
+
width: 60%;
|
29
|
+
height: 100%;
|
30
|
+
overflow: scroll;
|
31
|
+
}
|
32
|
+
</style>
|
33
|
+
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/css/bootstrap.min.css" integrity="sha384-/Y6pD6FV/Vv2HJnA6t+vslU6fwYXjCFtcEpHbNJ0lyAFsXTsjBbfaDjzALeQsN6M" crossorigin="anonymous">
|
34
|
+
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/js/bootstrap.min.js" integrity="sha384-h0AbiXch4ZDo7tp9hKZ4TsHbi047NrKGLO3SEJAg45jXxnGIfYzk4Si90RDIqNm1" crossorigin="anonymous"></script>
|
35
|
+
|
36
|
+
<body onload="pageDidLoad()">
|
37
|
+
<script>
|
38
|
+
|
39
|
+
function loadJSON(fileName, callback) {
|
40
|
+
var xobj = new XMLHttpRequest();
|
41
|
+
xobj.overrideMimeType("application/json");
|
42
|
+
xobj.open('GET', fileName, true);
|
43
|
+
xobj.onreadystatechange = function () {
|
44
|
+
if (xobj.readyState == 4 && xobj.status == "200") {
|
45
|
+
callback(xobj.responseText);
|
46
|
+
}
|
47
|
+
};
|
48
|
+
xobj.send(null);
|
49
|
+
}
|
50
|
+
|
51
|
+
function pageDidLoad() {
|
52
|
+
loadJSON('index.json', response => {
|
53
|
+
var actual_JSON = JSON.parse(response);
|
54
|
+
|
55
|
+
let podNames = actual_JSON.links.map(s => s.source);
|
56
|
+
|
57
|
+
renderNavs(podNames)
|
58
|
+
renderPods(actual_JSON.links)
|
59
|
+
});
|
60
|
+
}
|
61
|
+
|
62
|
+
function renderNavs(podNames) {
|
63
|
+
let fLeft = document.getElementById('nav')
|
64
|
+
podNames.forEach(e => {
|
65
|
+
let nav = document.createElement('a')
|
66
|
+
nav.href = '#' + e
|
67
|
+
nav.innerText = e
|
68
|
+
fLeft.appendChild(nav)
|
69
|
+
})
|
70
|
+
}
|
71
|
+
|
72
|
+
function renderPods(pods) {
|
73
|
+
let d = document.getElementById('pods')
|
74
|
+
pods.forEach(element => {
|
75
|
+
let div = document.createElement('div')
|
76
|
+
let header = document.createElement('h3')
|
77
|
+
header.innerHTML = element.source
|
78
|
+
header.id = element.source
|
79
|
+
|
80
|
+
div.appendChild(header)
|
81
|
+
|
82
|
+
let ul = document.createElement('ul')
|
83
|
+
let dependencies = element.dependencies.sort()
|
84
|
+
dependencies.forEach(dependency => {
|
85
|
+
let li = document.createElement('li')
|
86
|
+
let a = document.createElement('a')
|
87
|
+
a.innerHTML = dependency
|
88
|
+
a.href = '#' + dependency
|
89
|
+
ul.appendChild(li)
|
90
|
+
li.appendChild(a)
|
91
|
+
})
|
92
|
+
|
93
|
+
div.appendChild(ul)
|
94
|
+
d.appendChild(div)
|
95
|
+
})
|
96
|
+
}
|
97
|
+
|
98
|
+
</script>
|
99
|
+
</head>
|
100
|
+
|
101
|
+
<body>
|
102
|
+
<div id="nav">
|
103
|
+
|
104
|
+
</div>
|
105
|
+
<div id="content">
|
106
|
+
<div id="pods"></div>
|
107
|
+
</div>
|
108
|
+
</body>
|
109
|
+
|
110
|
+
</html>
|
@@ -0,0 +1,50 @@
|
|
1
|
+
require 'json'
|
2
|
+
require 'yaml'
|
3
|
+
require 'cocoapods'
|
4
|
+
module CocoapodsDependency
|
5
|
+
class VisualOutHelper
|
6
|
+
def initialize(dependency_map)
|
7
|
+
@dependency_map = dependency_map
|
8
|
+
end
|
9
|
+
|
10
|
+
def to_d3js_json
|
11
|
+
json = {}
|
12
|
+
links = []
|
13
|
+
@dependency_map.each do |node, v|
|
14
|
+
v.each do |dependency|
|
15
|
+
links.push(
|
16
|
+
{
|
17
|
+
'source': node,
|
18
|
+
'dest': dependency,
|
19
|
+
}
|
20
|
+
)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
json['links'] = links
|
25
|
+
|
26
|
+
JSON.pretty_generate(json)
|
27
|
+
end
|
28
|
+
|
29
|
+
def write_json_to_file(path)
|
30
|
+
links = []
|
31
|
+
json = {}
|
32
|
+
@dependency_map.each do |node, v|
|
33
|
+
links.push(
|
34
|
+
{
|
35
|
+
'source': node,
|
36
|
+
'dependencies': v,
|
37
|
+
}
|
38
|
+
)
|
39
|
+
end
|
40
|
+
json['links'] = links
|
41
|
+
json_result = JSON.pretty_generate(json)
|
42
|
+
File.write(path, json_result)
|
43
|
+
end
|
44
|
+
|
45
|
+
def write_d3js_to_file(path)
|
46
|
+
json = 'var dependencies = ' + to_d3js_json
|
47
|
+
File.write(path, json)
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cocoapods-dependency
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Xinyu Zhao
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-10-
|
11
|
+
date: 2018-10-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -106,7 +106,9 @@ files:
|
|
106
106
|
- lib/cocoapods-dependency/analyze.rb
|
107
107
|
- lib/cocoapods-dependency/command.rb
|
108
108
|
- lib/cocoapods-dependency/command/dependency.rb
|
109
|
+
- lib/cocoapods-dependency/resources/index.html
|
109
110
|
- lib/cocoapods-dependency/version.rb
|
111
|
+
- lib/cocoapods-dependency/visual_out.rb
|
110
112
|
- lib/cocoapods_plugin.rb
|
111
113
|
homepage: https://github.com/X140Yu/cocoapods-dependency
|
112
114
|
licenses:
|