cocoapods-acknowledgements-addons 0.1.0 → 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/.travis.yml +13 -0
- data/CHANGELOG.md +4 -0
- data/Gemfile +1 -0
- data/Gemfile.lock +5 -1
- data/README.md +5 -2
- data/Rakefile +19 -6
- data/example/Acknowledgements/Crypto/Crypto.podspec +28 -6
- data/example/App.xcodeproj/project.pbxproj +149 -0
- data/example/App.xcodeproj/xcshareddata/xcschemes/App.xcscheme +101 -0
- data/example/App/App-Bridging-Header.h +5 -0
- data/example/App/Info.plist +1 -1
- data/example/App/MethodSwizzler.h +17 -0
- data/example/App/MethodSwizzler.m +69 -0
- data/example/App/Settings.bundle/Pods-App-settings-metadata.plist +84 -0
- data/example/App/Settings.bundle/Root.plist +19 -0
- data/example/App/Settings.bundle/en.lproj/Root.strings +0 -0
- data/example/AppTests/AppTests.swift +35 -0
- data/example/AppTests/Info.plist +22 -0
- data/example/Podfile +1 -1
- data/example/Podfile.lock +14 -1
- data/example/README.md +7 -2
- data/lib/cocoapods_acknowledgements/addons.rb +8 -5
- data/lib/cocoapods_acknowledgements/addons/acknowledgement.rb +68 -0
- data/lib/cocoapods_acknowledgements/addons/plist_modifier.rb +30 -19
- data/lib/cocoapods_acknowledgements/addons/podspec_accumulator.rb +6 -18
- data/lib/cocoapods_acknowledgements/addons/settings_plist_modifier.rb +58 -0
- data/lib/version.rb +1 -1
- metadata +14 -3
- data/example/Acknowledgements/Crypto/LICENSE +0 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9579102a7ccf5078d193c91e92266b5346b5eb2f
|
4
|
+
data.tar.gz: 17bab814c232b3e6c29ac8c0532b2c22b5f67296
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5b5aa16b7665ce04c71a7d0961dcddc845c5ae67aebd05ae42e6f1a26f29e73c25db50883af2e590a3598ce18b3e0c16c81462e358ea568961213f33cdc6894c
|
7
|
+
data.tar.gz: 88721c7124d40be4dd3db598c7e36b6c66f6f50bc1b0a8a5838c75ffc7dd1b04b85df7295b6cb8a9318f87f32c9e33989c5e0900bfedd89ebf12308899418e72
|
data/.travis.yml
ADDED
data/CHANGELOG.md
CHANGED
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
cocoapods-acknowledgements-addons (0.
|
4
|
+
cocoapods-acknowledgements-addons (0.2.0)
|
5
5
|
cocoapods (>= 0.36)
|
6
6
|
cocoapods-acknowledgements
|
7
7
|
|
@@ -72,6 +72,7 @@ GEM
|
|
72
72
|
method_source (~> 0.9.0)
|
73
73
|
rake (12.3.2)
|
74
74
|
redcarpet (3.4.0)
|
75
|
+
rouge (2.0.7)
|
75
76
|
ruby-macho (1.4.0)
|
76
77
|
thread_safe (0.3.6)
|
77
78
|
tzinfo (1.2.5)
|
@@ -82,6 +83,8 @@ GEM
|
|
82
83
|
claide (>= 1.0.2, < 2.0)
|
83
84
|
colored2 (~> 3.1)
|
84
85
|
nanaimo (~> 0.2.6)
|
86
|
+
xcpretty (0.3.0)
|
87
|
+
rouge (~> 2.0.7)
|
85
88
|
yard (0.9.19)
|
86
89
|
|
87
90
|
PLATFORMS
|
@@ -94,6 +97,7 @@ DEPENDENCIES
|
|
94
97
|
cocoapods-acknowledgements-addons!
|
95
98
|
pry
|
96
99
|
rake
|
100
|
+
xcpretty
|
97
101
|
yard
|
98
102
|
|
99
103
|
BUNDLED WITH
|
data/README.md
CHANGED
@@ -1,5 +1,8 @@
|
|
1
1
|
# CocoaPods Acknowledgements Add-ons
|
2
2
|
|
3
|
+
[](https://travis-ci.org/bcylin/cocoapods-acknowledgements-addons)
|
4
|
+
[](https://badge.fury.io/rb/cocoapods-acknowledgements-addons)
|
5
|
+
|
3
6
|
A CocoaPods plugin that adds additional acknowledgements to the plist generated by [cocoapods-acknowledgements](https://github.com/CocoaPods/cocoapods-acknowledgements).
|
4
7
|
|
5
8
|
## Installation
|
@@ -40,9 +43,9 @@ The plugin searches `**/*.podspec` located in the specified directories and adds
|
|
40
43
|
└── Pods-{target_name}-metadata.plist
|
41
44
|
```
|
42
45
|
|
43
|
-
|
46
|
+
This plugin also updates the app's `Settings.bundle/Pods-{target_name}-settings-metadata.plist` if it exists.
|
44
47
|
|
45
|
-
Check out the [example app](https://github.com/bcylin/cocoapods-acknowledgements-addons/tree/master/
|
48
|
+
Check out the [example app](https://github.com/bcylin/cocoapods-acknowledgements-addons/tree/master/example) for the configuration to use with [CPDAcknowledgements](https://github.com/CocoaPods/CPDAcknowledgements).
|
46
49
|
|
47
50
|
## License
|
48
51
|
|
data/Rakefile
CHANGED
@@ -1,14 +1,27 @@
|
|
1
1
|
desc "Launch the example app"
|
2
2
|
task :example do
|
3
|
-
Rake::Task["
|
3
|
+
Rake::Task["install"].execute
|
4
4
|
sh "open example/App.xcworkspace"
|
5
5
|
end
|
6
6
|
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
7
|
+
desc "Use the plugin with the example app"
|
8
|
+
task :install do
|
9
|
+
Dir.chdir("example") { sh "make install" }
|
10
|
+
end
|
11
|
+
|
12
|
+
desc "Run the tests in the example app"
|
13
|
+
task :test do
|
14
|
+
Dir.chdir("example") do
|
15
|
+
sh [
|
16
|
+
%(xcodebuild),
|
17
|
+
%(-workspace App.xcworkspace),
|
18
|
+
%(-scheme App),
|
19
|
+
%(-sdk iphonesimulator),
|
20
|
+
%(-destination 'platform=iOS Simulator,name=iPhone X,OS=12.1'),
|
21
|
+
%(clean test),
|
22
|
+
%(| bundle exec xcpretty -c)
|
23
|
+
].join " "
|
11
24
|
end
|
12
25
|
end
|
13
26
|
|
14
|
-
task :default => ["
|
27
|
+
task :default => ["install"]
|
@@ -1,8 +1,30 @@
|
|
1
1
|
Pod::Spec.new do |s|
|
2
|
-
s.name
|
3
|
-
s.version
|
4
|
-
s.summary
|
5
|
-
s.homepage
|
6
|
-
s.
|
7
|
-
s.
|
2
|
+
s.name = "Crypto"
|
3
|
+
s.version = "0.6.0"
|
4
|
+
s.summary = "Simple CommonCrypto wrapper for Swift for macOS, iOS, watchOS, and tvOS with Carthage support."
|
5
|
+
s.homepage = "https://github.com/soffes/Crypto"
|
6
|
+
s.author = "Sam Soffes"
|
7
|
+
s.license = { type: "MIT", text: <<-LICENSE
|
8
|
+
Copyright (c) 2015–2016 Sam Soffes, http://soff.es
|
9
|
+
|
10
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
11
|
+
a copy of this software and associated documentation files (the
|
12
|
+
"Software"), to deal in the Software without restriction, including
|
13
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
14
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
15
|
+
permit persons to whom the Software is furnished to do so, subject to
|
16
|
+
the following conditions:
|
17
|
+
|
18
|
+
The above copyright notice and this permission notice shall be
|
19
|
+
included in all copies or substantial portions of the Software.
|
20
|
+
|
21
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
22
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
23
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
24
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
25
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
26
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
27
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
28
|
+
LICENSE
|
29
|
+
}
|
8
30
|
end
|
@@ -8,20 +8,42 @@
|
|
8
8
|
|
9
9
|
/* Begin PBXBuildFile section */
|
10
10
|
1DCBABEF664A580CC51A20C7 /* Pods-App-metadata.plist in Resources */ = {isa = PBXBuildFile; fileRef = 86483D0B459CFC778983F352 /* Pods-App-metadata.plist */; };
|
11
|
+
3E324390228999D00019890D /* Settings.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 3E32438F228999D00019890D /* Settings.bundle */; };
|
12
|
+
A13E030E47F7A0E2770732C8 /* Pods-App-settings-metadata.plist in Resources */ = {isa = PBXBuildFile; fileRef = 708796955B2F3A219047F849 /* Pods-App-settings-metadata.plist */; };
|
11
13
|
B43EC93C93DC3C2360974509 /* Pods_App.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BA157747EC044E59B9C2F90B /* Pods_App.framework */; };
|
12
14
|
B514E8CD2286FB6F002DAF01 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = B514E8CC2286FB6F002DAF01 /* AppDelegate.swift */; };
|
13
15
|
B514E8D42286FB73002DAF01 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = B514E8D32286FB73002DAF01 /* Assets.xcassets */; };
|
14
16
|
B514E8D72286FB73002DAF01 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = B514E8D52286FB73002DAF01 /* LaunchScreen.storyboard */; };
|
17
|
+
B54C08752291CD6700B569A7 /* MethodSwizzler.m in Sources */ = {isa = PBXBuildFile; fileRef = B54C08742291CD6700B569A7 /* MethodSwizzler.m */; };
|
18
|
+
B5B510B0228B6E7700153ED4 /* AppTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5B510AF228B6E7700153ED4 /* AppTests.swift */; };
|
15
19
|
/* End PBXBuildFile section */
|
16
20
|
|
21
|
+
/* Begin PBXContainerItemProxy section */
|
22
|
+
B5B510B2228B6E7700153ED4 /* PBXContainerItemProxy */ = {
|
23
|
+
isa = PBXContainerItemProxy;
|
24
|
+
containerPortal = B514E8C12286FB6E002DAF01 /* Project object */;
|
25
|
+
proxyType = 1;
|
26
|
+
remoteGlobalIDString = B514E8C82286FB6E002DAF01;
|
27
|
+
remoteInfo = App;
|
28
|
+
};
|
29
|
+
/* End PBXContainerItemProxy section */
|
30
|
+
|
17
31
|
/* Begin PBXFileReference section */
|
18
32
|
214E416B10370E7D6559A33E /* Pods-App.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-App.debug.xcconfig"; path = "Target Support Files/Pods-App/Pods-App.debug.xcconfig"; sourceTree = "<group>"; };
|
33
|
+
3E32438F228999D00019890D /* Settings.bundle */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.plug-in"; path = Settings.bundle; sourceTree = "<group>"; };
|
34
|
+
708796955B2F3A219047F849 /* Pods-App-settings-metadata.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; name = "Pods-App-settings-metadata.plist"; path = "../App/Settings.bundle/Pods-App-settings-metadata.plist"; sourceTree = "<group>"; };
|
19
35
|
86483D0B459CFC778983F352 /* Pods-App-metadata.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-App-metadata.plist"; sourceTree = "<group>"; };
|
20
36
|
B514E8C92286FB6E002DAF01 /* App.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = App.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
21
37
|
B514E8CC2286FB6F002DAF01 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
|
22
38
|
B514E8D32286FB73002DAF01 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
|
23
39
|
B514E8D62286FB73002DAF01 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
|
24
40
|
B514E8D82286FB74002DAF01 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
41
|
+
B54C08722291CD6700B569A7 /* App-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "App-Bridging-Header.h"; sourceTree = "<group>"; };
|
42
|
+
B54C08732291CD6700B569A7 /* MethodSwizzler.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MethodSwizzler.h; sourceTree = "<group>"; };
|
43
|
+
B54C08742291CD6700B569A7 /* MethodSwizzler.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MethodSwizzler.m; sourceTree = "<group>"; };
|
44
|
+
B5B510AD228B6E7600153ED4 /* AppTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = AppTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
|
45
|
+
B5B510AF228B6E7700153ED4 /* AppTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppTests.swift; sourceTree = "<group>"; };
|
46
|
+
B5B510B1228B6E7700153ED4 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
25
47
|
BA157747EC044E59B9C2F90B /* Pods_App.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_App.framework; sourceTree = BUILT_PRODUCTS_DIR; };
|
26
48
|
CC4EEEFD98089300586144D8 /* Pods-App.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-App.release.xcconfig"; path = "Target Support Files/Pods-App/Pods-App.release.xcconfig"; sourceTree = "<group>"; };
|
27
49
|
/* End PBXFileReference section */
|
@@ -35,6 +57,13 @@
|
|
35
57
|
);
|
36
58
|
runOnlyForDeploymentPostprocessing = 0;
|
37
59
|
};
|
60
|
+
B5B510AA228B6E7600153ED4 /* Frameworks */ = {
|
61
|
+
isa = PBXFrameworksBuildPhase;
|
62
|
+
buildActionMask = 2147483647;
|
63
|
+
files = (
|
64
|
+
);
|
65
|
+
runOnlyForDeploymentPostprocessing = 0;
|
66
|
+
};
|
38
67
|
/* End PBXFrameworksBuildPhase section */
|
39
68
|
|
40
69
|
/* Begin PBXGroup section */
|
@@ -50,6 +79,7 @@
|
|
50
79
|
isa = PBXGroup;
|
51
80
|
children = (
|
52
81
|
86483D0B459CFC778983F352 /* Pods-App-metadata.plist */,
|
82
|
+
708796955B2F3A219047F849 /* Pods-App-settings-metadata.plist */,
|
53
83
|
214E416B10370E7D6559A33E /* Pods-App.debug.xcconfig */,
|
54
84
|
CC4EEEFD98089300586144D8 /* Pods-App.release.xcconfig */,
|
55
85
|
);
|
@@ -60,6 +90,7 @@
|
|
60
90
|
isa = PBXGroup;
|
61
91
|
children = (
|
62
92
|
B514E8CB2286FB6E002DAF01 /* App */,
|
93
|
+
B5B510AE228B6E7700153ED4 /* AppTests */,
|
63
94
|
24D37DD367BF85989738F0D1 /* Frameworks */,
|
64
95
|
84983485F7D75172E02E6D59 /* Pods */,
|
65
96
|
B514E8CA2286FB6E002DAF01 /* Products */,
|
@@ -70,6 +101,7 @@
|
|
70
101
|
isa = PBXGroup;
|
71
102
|
children = (
|
72
103
|
B514E8C92286FB6E002DAF01 /* App.app */,
|
104
|
+
B5B510AD228B6E7600153ED4 /* AppTests.xctest */,
|
73
105
|
);
|
74
106
|
name = Products;
|
75
107
|
sourceTree = "<group>";
|
@@ -77,14 +109,27 @@
|
|
77
109
|
B514E8CB2286FB6E002DAF01 /* App */ = {
|
78
110
|
isa = PBXGroup;
|
79
111
|
children = (
|
112
|
+
B54C08722291CD6700B569A7 /* App-Bridging-Header.h */,
|
80
113
|
B514E8CC2286FB6F002DAF01 /* AppDelegate.swift */,
|
81
114
|
B514E8D32286FB73002DAF01 /* Assets.xcassets */,
|
82
115
|
B514E8D82286FB74002DAF01 /* Info.plist */,
|
83
116
|
B514E8D52286FB73002DAF01 /* LaunchScreen.storyboard */,
|
117
|
+
B54C08732291CD6700B569A7 /* MethodSwizzler.h */,
|
118
|
+
B54C08742291CD6700B569A7 /* MethodSwizzler.m */,
|
119
|
+
3E32438F228999D00019890D /* Settings.bundle */,
|
84
120
|
);
|
85
121
|
path = App;
|
86
122
|
sourceTree = "<group>";
|
87
123
|
};
|
124
|
+
B5B510AE228B6E7700153ED4 /* AppTests */ = {
|
125
|
+
isa = PBXGroup;
|
126
|
+
children = (
|
127
|
+
B5B510AF228B6E7700153ED4 /* AppTests.swift */,
|
128
|
+
B5B510B1228B6E7700153ED4 /* Info.plist */,
|
129
|
+
);
|
130
|
+
path = AppTests;
|
131
|
+
sourceTree = "<group>";
|
132
|
+
};
|
88
133
|
/* End PBXGroup section */
|
89
134
|
|
90
135
|
/* Begin PBXNativeTarget section */
|
@@ -107,6 +152,24 @@
|
|
107
152
|
productReference = B514E8C92286FB6E002DAF01 /* App.app */;
|
108
153
|
productType = "com.apple.product-type.application";
|
109
154
|
};
|
155
|
+
B5B510AC228B6E7600153ED4 /* AppTests */ = {
|
156
|
+
isa = PBXNativeTarget;
|
157
|
+
buildConfigurationList = B5B510B6228B6E7700153ED4 /* Build configuration list for PBXNativeTarget "AppTests" */;
|
158
|
+
buildPhases = (
|
159
|
+
B5B510A9228B6E7600153ED4 /* Sources */,
|
160
|
+
B5B510AA228B6E7600153ED4 /* Frameworks */,
|
161
|
+
B5B510AB228B6E7600153ED4 /* Resources */,
|
162
|
+
);
|
163
|
+
buildRules = (
|
164
|
+
);
|
165
|
+
dependencies = (
|
166
|
+
B5B510B3228B6E7700153ED4 /* PBXTargetDependency */,
|
167
|
+
);
|
168
|
+
name = AppTests;
|
169
|
+
productName = AppTests;
|
170
|
+
productReference = B5B510AD228B6E7600153ED4 /* AppTests.xctest */;
|
171
|
+
productType = "com.apple.product-type.bundle.unit-test";
|
172
|
+
};
|
110
173
|
/* End PBXNativeTarget section */
|
111
174
|
|
112
175
|
/* Begin PBXProject section */
|
@@ -119,6 +182,11 @@
|
|
119
182
|
TargetAttributes = {
|
120
183
|
B514E8C82286FB6E002DAF01 = {
|
121
184
|
CreatedOnToolsVersion = 10.1;
|
185
|
+
LastSwiftMigration = 1010;
|
186
|
+
};
|
187
|
+
B5B510AC228B6E7600153ED4 = {
|
188
|
+
CreatedOnToolsVersion = 10.1;
|
189
|
+
TestTargetID = B514E8C82286FB6E002DAF01;
|
122
190
|
};
|
123
191
|
};
|
124
192
|
};
|
@@ -136,6 +204,7 @@
|
|
136
204
|
projectRoot = "";
|
137
205
|
targets = (
|
138
206
|
B514E8C82286FB6E002DAF01 /* App */,
|
207
|
+
B5B510AC228B6E7600153ED4 /* AppTests */,
|
139
208
|
);
|
140
209
|
};
|
141
210
|
/* End PBXProject section */
|
@@ -148,6 +217,15 @@
|
|
148
217
|
B514E8D42286FB73002DAF01 /* Assets.xcassets in Resources */,
|
149
218
|
B514E8D72286FB73002DAF01 /* LaunchScreen.storyboard in Resources */,
|
150
219
|
1DCBABEF664A580CC51A20C7 /* Pods-App-metadata.plist in Resources */,
|
220
|
+
A13E030E47F7A0E2770732C8 /* Pods-App-settings-metadata.plist in Resources */,
|
221
|
+
3E324390228999D00019890D /* Settings.bundle in Resources */,
|
222
|
+
);
|
223
|
+
runOnlyForDeploymentPostprocessing = 0;
|
224
|
+
};
|
225
|
+
B5B510AB228B6E7600153ED4 /* Resources */ = {
|
226
|
+
isa = PBXResourcesBuildPhase;
|
227
|
+
buildActionMask = 2147483647;
|
228
|
+
files = (
|
151
229
|
);
|
152
230
|
runOnlyForDeploymentPostprocessing = 0;
|
153
231
|
};
|
@@ -163,12 +241,14 @@
|
|
163
241
|
);
|
164
242
|
inputPaths = (
|
165
243
|
"${PODS_ROOT}/Target Support Files/Pods-App/Pods-App-frameworks.sh",
|
244
|
+
"${BUILT_PRODUCTS_DIR}/Alamofire/Alamofire.framework",
|
166
245
|
"${BUILT_PRODUCTS_DIR}/CPDAcknowledgements/CPDAcknowledgements.framework",
|
167
246
|
);
|
168
247
|
name = "[CP] Embed Pods Frameworks";
|
169
248
|
outputFileListPaths = (
|
170
249
|
);
|
171
250
|
outputPaths = (
|
251
|
+
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Alamofire.framework",
|
172
252
|
"${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CPDAcknowledgements.framework",
|
173
253
|
);
|
174
254
|
runOnlyForDeploymentPostprocessing = 0;
|
@@ -206,11 +286,28 @@
|
|
206
286
|
buildActionMask = 2147483647;
|
207
287
|
files = (
|
208
288
|
B514E8CD2286FB6F002DAF01 /* AppDelegate.swift in Sources */,
|
289
|
+
B54C08752291CD6700B569A7 /* MethodSwizzler.m in Sources */,
|
290
|
+
);
|
291
|
+
runOnlyForDeploymentPostprocessing = 0;
|
292
|
+
};
|
293
|
+
B5B510A9228B6E7600153ED4 /* Sources */ = {
|
294
|
+
isa = PBXSourcesBuildPhase;
|
295
|
+
buildActionMask = 2147483647;
|
296
|
+
files = (
|
297
|
+
B5B510B0228B6E7700153ED4 /* AppTests.swift in Sources */,
|
209
298
|
);
|
210
299
|
runOnlyForDeploymentPostprocessing = 0;
|
211
300
|
};
|
212
301
|
/* End PBXSourcesBuildPhase section */
|
213
302
|
|
303
|
+
/* Begin PBXTargetDependency section */
|
304
|
+
B5B510B3228B6E7700153ED4 /* PBXTargetDependency */ = {
|
305
|
+
isa = PBXTargetDependency;
|
306
|
+
target = B514E8C82286FB6E002DAF01 /* App */;
|
307
|
+
targetProxy = B5B510B2228B6E7700153ED4 /* PBXContainerItemProxy */;
|
308
|
+
};
|
309
|
+
/* End PBXTargetDependency section */
|
310
|
+
|
214
311
|
/* Begin PBXVariantGroup section */
|
215
312
|
B514E8D52286FB73002DAF01 /* LaunchScreen.storyboard */ = {
|
216
313
|
isa = PBXVariantGroup;
|
@@ -344,6 +441,7 @@
|
|
344
441
|
baseConfigurationReference = 214E416B10370E7D6559A33E /* Pods-App.debug.xcconfig */;
|
345
442
|
buildSettings = {
|
346
443
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
444
|
+
CLANG_ENABLE_MODULES = YES;
|
347
445
|
CODE_SIGN_STYLE = Automatic;
|
348
446
|
INFOPLIST_FILE = App/Info.plist;
|
349
447
|
LD_RUNPATH_SEARCH_PATHS = (
|
@@ -352,6 +450,8 @@
|
|
352
450
|
);
|
353
451
|
PRODUCT_BUNDLE_IDENTIFIER = io.github.bcylin.app;
|
354
452
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
453
|
+
SWIFT_OBJC_BRIDGING_HEADER = "App/App-Bridging-Header.h";
|
454
|
+
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
355
455
|
SWIFT_VERSION = 4.2;
|
356
456
|
TARGETED_DEVICE_FAMILY = "1,2";
|
357
457
|
};
|
@@ -362,6 +462,7 @@
|
|
362
462
|
baseConfigurationReference = CC4EEEFD98089300586144D8 /* Pods-App.release.xcconfig */;
|
363
463
|
buildSettings = {
|
364
464
|
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
|
465
|
+
CLANG_ENABLE_MODULES = YES;
|
365
466
|
CODE_SIGN_STYLE = Automatic;
|
366
467
|
INFOPLIST_FILE = App/Info.plist;
|
367
468
|
LD_RUNPATH_SEARCH_PATHS = (
|
@@ -370,8 +471,47 @@
|
|
370
471
|
);
|
371
472
|
PRODUCT_BUNDLE_IDENTIFIER = io.github.bcylin.app;
|
372
473
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
474
|
+
SWIFT_OBJC_BRIDGING_HEADER = "App/App-Bridging-Header.h";
|
475
|
+
SWIFT_VERSION = 4.2;
|
476
|
+
TARGETED_DEVICE_FAMILY = "1,2";
|
477
|
+
};
|
478
|
+
name = Release;
|
479
|
+
};
|
480
|
+
B5B510B4228B6E7700153ED4 /* Debug */ = {
|
481
|
+
isa = XCBuildConfiguration;
|
482
|
+
buildSettings = {
|
483
|
+
BUNDLE_LOADER = "$(TEST_HOST)";
|
484
|
+
CODE_SIGN_STYLE = Automatic;
|
485
|
+
INFOPLIST_FILE = AppTests/Info.plist;
|
486
|
+
LD_RUNPATH_SEARCH_PATHS = (
|
487
|
+
"$(inherited)",
|
488
|
+
"@executable_path/Frameworks",
|
489
|
+
"@loader_path/Frameworks",
|
490
|
+
);
|
491
|
+
PRODUCT_BUNDLE_IDENTIFIER = io.github.bcylin.AppTests;
|
492
|
+
PRODUCT_NAME = "$(TARGET_NAME)";
|
493
|
+
SWIFT_VERSION = 4.2;
|
494
|
+
TARGETED_DEVICE_FAMILY = "1,2";
|
495
|
+
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/App.app/App";
|
496
|
+
};
|
497
|
+
name = Debug;
|
498
|
+
};
|
499
|
+
B5B510B5228B6E7700153ED4 /* Release */ = {
|
500
|
+
isa = XCBuildConfiguration;
|
501
|
+
buildSettings = {
|
502
|
+
BUNDLE_LOADER = "$(TEST_HOST)";
|
503
|
+
CODE_SIGN_STYLE = Automatic;
|
504
|
+
INFOPLIST_FILE = AppTests/Info.plist;
|
505
|
+
LD_RUNPATH_SEARCH_PATHS = (
|
506
|
+
"$(inherited)",
|
507
|
+
"@executable_path/Frameworks",
|
508
|
+
"@loader_path/Frameworks",
|
509
|
+
);
|
510
|
+
PRODUCT_BUNDLE_IDENTIFIER = io.github.bcylin.AppTests;
|
511
|
+
PRODUCT_NAME = "$(TARGET_NAME)";
|
373
512
|
SWIFT_VERSION = 4.2;
|
374
513
|
TARGETED_DEVICE_FAMILY = "1,2";
|
514
|
+
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/App.app/App";
|
375
515
|
};
|
376
516
|
name = Release;
|
377
517
|
};
|
@@ -396,6 +536,15 @@
|
|
396
536
|
defaultConfigurationIsVisible = 0;
|
397
537
|
defaultConfigurationName = Release;
|
398
538
|
};
|
539
|
+
B5B510B6228B6E7700153ED4 /* Build configuration list for PBXNativeTarget "AppTests" */ = {
|
540
|
+
isa = XCConfigurationList;
|
541
|
+
buildConfigurations = (
|
542
|
+
B5B510B4228B6E7700153ED4 /* Debug */,
|
543
|
+
B5B510B5228B6E7700153ED4 /* Release */,
|
544
|
+
);
|
545
|
+
defaultConfigurationIsVisible = 0;
|
546
|
+
defaultConfigurationName = Release;
|
547
|
+
};
|
399
548
|
/* End XCConfigurationList section */
|
400
549
|
};
|
401
550
|
rootObject = B514E8C12286FB6E002DAF01 /* Project object */;
|
@@ -0,0 +1,101 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<Scheme
|
3
|
+
LastUpgradeVersion = "1010"
|
4
|
+
version = "1.3">
|
5
|
+
<BuildAction
|
6
|
+
parallelizeBuildables = "YES"
|
7
|
+
buildImplicitDependencies = "YES">
|
8
|
+
<BuildActionEntries>
|
9
|
+
<BuildActionEntry
|
10
|
+
buildForTesting = "YES"
|
11
|
+
buildForRunning = "YES"
|
12
|
+
buildForProfiling = "YES"
|
13
|
+
buildForArchiving = "YES"
|
14
|
+
buildForAnalyzing = "YES">
|
15
|
+
<BuildableReference
|
16
|
+
BuildableIdentifier = "primary"
|
17
|
+
BlueprintIdentifier = "B514E8C82286FB6E002DAF01"
|
18
|
+
BuildableName = "App.app"
|
19
|
+
BlueprintName = "App"
|
20
|
+
ReferencedContainer = "container:App.xcodeproj">
|
21
|
+
</BuildableReference>
|
22
|
+
</BuildActionEntry>
|
23
|
+
</BuildActionEntries>
|
24
|
+
</BuildAction>
|
25
|
+
<TestAction
|
26
|
+
buildConfiguration = "Debug"
|
27
|
+
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
28
|
+
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
29
|
+
shouldUseLaunchSchemeArgsEnv = "YES">
|
30
|
+
<Testables>
|
31
|
+
<TestableReference
|
32
|
+
skipped = "NO">
|
33
|
+
<BuildableReference
|
34
|
+
BuildableIdentifier = "primary"
|
35
|
+
BlueprintIdentifier = "B5B510AC228B6E7600153ED4"
|
36
|
+
BuildableName = "AppTests.xctest"
|
37
|
+
BlueprintName = "AppTests"
|
38
|
+
ReferencedContainer = "container:App.xcodeproj">
|
39
|
+
</BuildableReference>
|
40
|
+
</TestableReference>
|
41
|
+
</Testables>
|
42
|
+
<MacroExpansion>
|
43
|
+
<BuildableReference
|
44
|
+
BuildableIdentifier = "primary"
|
45
|
+
BlueprintIdentifier = "B514E8C82286FB6E002DAF01"
|
46
|
+
BuildableName = "App.app"
|
47
|
+
BlueprintName = "App"
|
48
|
+
ReferencedContainer = "container:App.xcodeproj">
|
49
|
+
</BuildableReference>
|
50
|
+
</MacroExpansion>
|
51
|
+
<AdditionalOptions>
|
52
|
+
</AdditionalOptions>
|
53
|
+
</TestAction>
|
54
|
+
<LaunchAction
|
55
|
+
buildConfiguration = "Debug"
|
56
|
+
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
|
57
|
+
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
|
58
|
+
launchStyle = "0"
|
59
|
+
useCustomWorkingDirectory = "NO"
|
60
|
+
ignoresPersistentStateOnLaunch = "NO"
|
61
|
+
debugDocumentVersioning = "YES"
|
62
|
+
debugServiceExtension = "internal"
|
63
|
+
allowLocationSimulation = "YES">
|
64
|
+
<BuildableProductRunnable
|
65
|
+
runnableDebuggingMode = "0">
|
66
|
+
<BuildableReference
|
67
|
+
BuildableIdentifier = "primary"
|
68
|
+
BlueprintIdentifier = "B514E8C82286FB6E002DAF01"
|
69
|
+
BuildableName = "App.app"
|
70
|
+
BlueprintName = "App"
|
71
|
+
ReferencedContainer = "container:App.xcodeproj">
|
72
|
+
</BuildableReference>
|
73
|
+
</BuildableProductRunnable>
|
74
|
+
<AdditionalOptions>
|
75
|
+
</AdditionalOptions>
|
76
|
+
</LaunchAction>
|
77
|
+
<ProfileAction
|
78
|
+
buildConfiguration = "Release"
|
79
|
+
shouldUseLaunchSchemeArgsEnv = "YES"
|
80
|
+
savedToolIdentifier = ""
|
81
|
+
useCustomWorkingDirectory = "NO"
|
82
|
+
debugDocumentVersioning = "YES">
|
83
|
+
<BuildableProductRunnable
|
84
|
+
runnableDebuggingMode = "0">
|
85
|
+
<BuildableReference
|
86
|
+
BuildableIdentifier = "primary"
|
87
|
+
BlueprintIdentifier = "B514E8C82286FB6E002DAF01"
|
88
|
+
BuildableName = "App.app"
|
89
|
+
BlueprintName = "App"
|
90
|
+
ReferencedContainer = "container:App.xcodeproj">
|
91
|
+
</BuildableReference>
|
92
|
+
</BuildableProductRunnable>
|
93
|
+
</ProfileAction>
|
94
|
+
<AnalyzeAction
|
95
|
+
buildConfiguration = "Debug">
|
96
|
+
</AnalyzeAction>
|
97
|
+
<ArchiveAction
|
98
|
+
buildConfiguration = "Release"
|
99
|
+
revealArchiveInOrganizer = "YES">
|
100
|
+
</ArchiveAction>
|
101
|
+
</Scheme>
|
data/example/App/Info.plist
CHANGED
@@ -0,0 +1,17 @@
|
|
1
|
+
//
|
2
|
+
// MethodSwizzler.h
|
3
|
+
// App
|
4
|
+
//
|
5
|
+
// Created by Ben on 19/05/2019.
|
6
|
+
// Copyright © 2019 bcylin. All rights reserved.
|
7
|
+
//
|
8
|
+
|
9
|
+
#import <Foundation/Foundation.h>
|
10
|
+
|
11
|
+
NS_ASSUME_NONNULL_BEGIN
|
12
|
+
|
13
|
+
@interface MethodSwizzler : NSObject
|
14
|
+
|
15
|
+
@end
|
16
|
+
|
17
|
+
NS_ASSUME_NONNULL_END
|
@@ -0,0 +1,69 @@
|
|
1
|
+
//
|
2
|
+
// MethodSwizzler.m
|
3
|
+
// App
|
4
|
+
//
|
5
|
+
// Created by Ben on 19/05/2019.
|
6
|
+
// Copyright © 2019 bcylin. All rights reserved.
|
7
|
+
//
|
8
|
+
|
9
|
+
@import CPDAcknowledgements;
|
10
|
+
|
11
|
+
#import <objc/runtime.h>
|
12
|
+
#import "MethodSwizzler.h"
|
13
|
+
|
14
|
+
@implementation MethodSwizzler
|
15
|
+
|
16
|
+
+ (void)load {
|
17
|
+
static dispatch_once_t onceToken;
|
18
|
+
dispatch_once(&onceToken, ^{
|
19
|
+
Class class = object_getClass(NSClassFromString(@"CPDCocoaPodsLibrariesLoader"));
|
20
|
+
|
21
|
+
SEL originalSelector = @selector(loadAcknowledgementsWithBundle:);
|
22
|
+
SEL swizzledSelector = @selector(loadAcknowledgementsWithBundle:);
|
23
|
+
|
24
|
+
Method originalMethod = class_getClassMethod(class, originalSelector);
|
25
|
+
Method swizzledMethod = class_getClassMethod(self, swizzledSelector);
|
26
|
+
|
27
|
+
BOOL didAddMethod = class_addMethod(class,
|
28
|
+
originalSelector,
|
29
|
+
method_getImplementation(swizzledMethod),
|
30
|
+
method_getTypeEncoding(swizzledMethod));
|
31
|
+
if (didAddMethod) {
|
32
|
+
class_replaceMethod(class,
|
33
|
+
swizzledSelector,
|
34
|
+
method_getImplementation(originalMethod),
|
35
|
+
method_getTypeEncoding(originalMethod));
|
36
|
+
} else {
|
37
|
+
method_exchangeImplementations(originalMethod, swizzledMethod);
|
38
|
+
}
|
39
|
+
});
|
40
|
+
}
|
41
|
+
|
42
|
+
/**
|
43
|
+
Load `*-App-metadata.plist` instead of `*-metadata.plist`.
|
44
|
+
|
45
|
+
@param bundle The bundle that contains the plist.
|
46
|
+
@return An array of CPDLibrary.
|
47
|
+
*/
|
48
|
+
+ (NSArray <CPDLibrary *>*)loadAcknowledgementsWithBundle:(NSBundle *)bundle {
|
49
|
+
Class class = NSClassFromString(@"CPDCocoaPodsLibrariesLoader");
|
50
|
+
|
51
|
+
#pragma clang diagnostic push
|
52
|
+
#pragma clang diagnostic ignored "-Wundeclared-selector"
|
53
|
+
NSString *path = [class performSelector:@selector(pathForFirstFileWithSuffix:inBundle:)
|
54
|
+
withObject:@"-App-metadata.plist"
|
55
|
+
withObject:bundle];
|
56
|
+
#pragma clang diagnostic pop
|
57
|
+
|
58
|
+
NSArray *entries = [NSDictionary dictionaryWithContentsOfFile:path][@"specs"];
|
59
|
+
NSMutableArray *acknowledgements = [NSMutableArray array];
|
60
|
+
|
61
|
+
for (NSDictionary *entry in entries) {
|
62
|
+
CPDLibrary *acknowledgement = [[CPDLibrary alloc] initWithCocoaPodsMetadataPlistDictionary:entry];
|
63
|
+
[acknowledgements addObject:acknowledgement];
|
64
|
+
}
|
65
|
+
|
66
|
+
return [acknowledgements copy];
|
67
|
+
}
|
68
|
+
|
69
|
+
@end
|
@@ -0,0 +1,84 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
3
|
+
<plist version="1.0"><dict><key>PreferenceSpecifiers</key><array><dict><key>FooterText</key><string>This application makes use of the following third party libraries:</string><key>Title</key><string>Acknowledgements</string><key>Type</key><string>PSGroupSpecifier</string></dict><dict><key>Title</key><string>Alamofire</string><key>Type</key><string>PSGroupSpecifier</string><key>FooterText</key><string>Copyright (c) 2014 Alamofire Software Foundation (http://alamofire.org/)
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in
|
13
|
+
all copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
21
|
+
THE SOFTWARE.
|
22
|
+
</string></dict><dict><key>FooterText</key><string>Copyright (c) 2014 Orta Therox <orta.therox@gmail.com>
|
23
|
+
Fabio Pelosin <fabio.pelosin@gmail.com>
|
24
|
+
|
25
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
26
|
+
of this software and associated documentation files (the "Software"), to deal
|
27
|
+
in the Software without restriction, including without limitation the rights
|
28
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
29
|
+
copies of the Software, and to permit persons to whom the Software is
|
30
|
+
furnished to do so, subject to the following conditions:
|
31
|
+
|
32
|
+
The above copyright notice and this permission notice shall be included in
|
33
|
+
all copies or substantial portions of the Software.
|
34
|
+
|
35
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
36
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
37
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
38
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
39
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
40
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
41
|
+
THE SOFTWARE.
|
42
|
+
</string><key>Title</key><string>CPDAcknowledgements</string><key>Type</key><string>PSGroupSpecifier</string></dict><dict><key>Title</key><string>Crypto</string><key>Type</key><string>PSGroupSpecifier</string><key>FooterText</key><string>Copyright (c) 2015–2016 Sam Soffes, http://soff.es
|
43
|
+
|
44
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
45
|
+
a copy of this software and associated documentation files (the
|
46
|
+
"Software"), to deal in the Software without restriction, including
|
47
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
48
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
49
|
+
permit persons to whom the Software is furnished to do so, subject to
|
50
|
+
the following conditions:
|
51
|
+
|
52
|
+
The above copyright notice and this permission notice shall be
|
53
|
+
included in all copies or substantial portions of the Software.
|
54
|
+
|
55
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
56
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
57
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
58
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
59
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
60
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
61
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
62
|
+
</string></dict><dict><key>Title</key><string>Strongify</string><key>Type</key><string>PSGroupSpecifier</string><key>FooterText</key><string>The MIT License (MIT)
|
63
|
+
|
64
|
+
Copyright (c) 2017 Krzysztof Zablocki
|
65
|
+
|
66
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
67
|
+
of this software and associated documentation files (the "Software"), to deal
|
68
|
+
in the Software without restriction, including without limitation the rights
|
69
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
70
|
+
copies of the Software, and to permit persons to whom the Software is
|
71
|
+
furnished to do so, subject to the following conditions:
|
72
|
+
|
73
|
+
The above copyright notice and this permission notice shall be included in all
|
74
|
+
copies or substantial portions of the Software.
|
75
|
+
|
76
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
77
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
78
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
79
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
80
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
81
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
82
|
+
SOFTWARE.
|
83
|
+
|
84
|
+
</string></dict><dict><key>FooterText</key><string>Generated by CocoaPods - http://cocoapods.org</string><key>Title</key><string></string><key>Type</key><string>PSGroupSpecifier</string></dict></array><key>StringsTable</key><string>Acknowledgements</string><key>Title</key><string>Acknowledgements</string></dict></plist>
|
@@ -0,0 +1,19 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
3
|
+
<plist version="1.0">
|
4
|
+
<dict>
|
5
|
+
<key>StringsTable</key>
|
6
|
+
<string>Root</string>
|
7
|
+
<key>PreferenceSpecifiers</key>
|
8
|
+
<array>
|
9
|
+
<dict>
|
10
|
+
<key>Type</key>
|
11
|
+
<string>PSChildPaneSpecifier</string>
|
12
|
+
<key>Title</key>
|
13
|
+
<string>Acknowledgements</string>
|
14
|
+
<key>File</key>
|
15
|
+
<string>Pods-App-settings-metadata</string>
|
16
|
+
</dict>
|
17
|
+
</array>
|
18
|
+
</dict>
|
19
|
+
</plist>
|
Binary file
|
@@ -0,0 +1,35 @@
|
|
1
|
+
//
|
2
|
+
// AppTests.swift
|
3
|
+
// AppTests
|
4
|
+
//
|
5
|
+
// Created by Ben on 14/05/2019.
|
6
|
+
// Copyright © 2019 bcylin. All rights reserved.
|
7
|
+
//
|
8
|
+
|
9
|
+
import XCTest
|
10
|
+
|
11
|
+
final class AppTests: XCTestCase {
|
12
|
+
|
13
|
+
func testAcknowledgementsPlist() {
|
14
|
+
let resourcePath = URL(string: Bundle.main.resourcePath!)!
|
15
|
+
let plistPath = resourcePath.appendingPathComponent("Pods-App-metadata.plist")
|
16
|
+
|
17
|
+
let dictionary = NSDictionary(contentsOfFile: plistPath.absoluteString)!
|
18
|
+
let acknowledgements = (dictionary["specs"] as! [[String: Any]]).map { $0["name"] } as? [String]
|
19
|
+
|
20
|
+
XCTAssertEqual(acknowledgements, ["Alamofire", "CPDAcknowledgements", "Crypto", "Strongify"])
|
21
|
+
}
|
22
|
+
|
23
|
+
func testSettingsPlist() {
|
24
|
+
let resourcePath = URL(string: Bundle.main.resourcePath!)!
|
25
|
+
let plistPath = resourcePath.appendingPathComponent("Pods-App-settings-metadata.plist")
|
26
|
+
|
27
|
+
let dictionary = NSDictionary(contentsOfFile: plistPath.absoluteString)!
|
28
|
+
let header = ["Acknowledgements"]
|
29
|
+
let acknowledgements = (dictionary["PreferenceSpecifiers"] as! [[String: Any]]).map { $0["Title"] } as? [String]
|
30
|
+
let footer = [""]
|
31
|
+
|
32
|
+
XCTAssertEqual(acknowledgements, header + ["Alamofire", "CPDAcknowledgements", "Crypto", "Strongify"] + footer)
|
33
|
+
}
|
34
|
+
|
35
|
+
}
|
@@ -0,0 +1,22 @@
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
2
|
+
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
3
|
+
<plist version="1.0">
|
4
|
+
<dict>
|
5
|
+
<key>CFBundleDevelopmentRegion</key>
|
6
|
+
<string>$(DEVELOPMENT_LANGUAGE)</string>
|
7
|
+
<key>CFBundleExecutable</key>
|
8
|
+
<string>$(EXECUTABLE_NAME)</string>
|
9
|
+
<key>CFBundleIdentifier</key>
|
10
|
+
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
|
11
|
+
<key>CFBundleInfoDictionaryVersion</key>
|
12
|
+
<string>6.0</string>
|
13
|
+
<key>CFBundleName</key>
|
14
|
+
<string>$(PRODUCT_NAME)</string>
|
15
|
+
<key>CFBundlePackageType</key>
|
16
|
+
<string>BNDL</string>
|
17
|
+
<key>CFBundleShortVersionString</key>
|
18
|
+
<string>0.2.0</string>
|
19
|
+
<key>CFBundleVersion</key>
|
20
|
+
<string>1</string>
|
21
|
+
</dict>
|
22
|
+
</plist>
|
data/example/Podfile
CHANGED
data/example/Podfile.lock
CHANGED
@@ -1,16 +1,29 @@
|
|
1
1
|
PODS:
|
2
|
+
- Alamofire (4.8.2)
|
2
3
|
- CPDAcknowledgements (1.0.0)
|
3
4
|
|
4
5
|
DEPENDENCIES:
|
6
|
+
- Alamofire (from `https://github.com/Alamofire/Alamofire.git`, tag `4.8.2`)
|
5
7
|
- CPDAcknowledgements
|
6
8
|
|
7
9
|
SPEC REPOS:
|
8
10
|
https://github.com/cocoapods/specs.git:
|
9
11
|
- CPDAcknowledgements
|
10
12
|
|
13
|
+
EXTERNAL SOURCES:
|
14
|
+
Alamofire:
|
15
|
+
:git: https://github.com/Alamofire/Alamofire.git
|
16
|
+
:tag: 4.8.2
|
17
|
+
|
18
|
+
CHECKOUT OPTIONS:
|
19
|
+
Alamofire:
|
20
|
+
:git: https://github.com/Alamofire/Alamofire.git
|
21
|
+
:tag: 4.8.2
|
22
|
+
|
11
23
|
SPEC CHECKSUMS:
|
24
|
+
Alamofire: ae5c501addb7afdbb13687d7f2f722c78734c2d3
|
12
25
|
CPDAcknowledgements: 6e15e71849ba4ad5e8a17a0bb9d20938ad23bac8
|
13
26
|
|
14
|
-
PODFILE CHECKSUM:
|
27
|
+
PODFILE CHECKSUM: f95597022bf609d22d7eb87aee64383751ce2c4c
|
15
28
|
|
16
29
|
COCOAPODS: 1.6.1
|
data/example/README.md
CHANGED
@@ -13,18 +13,23 @@ The plugin finds additional acknowledgements from the following directories:
|
|
13
13
|
```
|
14
14
|
.
|
15
15
|
├── Acknowledgements
|
16
|
-
│ └── Crypto
|
16
|
+
│ └── Crypto
|
17
17
|
├── Carthage
|
18
18
|
│ └── Checkouts
|
19
19
|
│ ├── Alamofire
|
20
20
|
│ ├── Crypto
|
21
|
-
│ └── QuickTableViewController
|
21
|
+
│ └── QuickTableViewController
|
22
22
|
├── Dependencies
|
23
23
|
│ └── Strongify
|
24
24
|
├── Podfile
|
25
25
|
└── Podfile.lock
|
26
26
|
```
|
27
27
|
|
28
|
+
* [`Crypto`](https://github.com/soffes/Crypto) is not available via CocoaPods. `Acknowledgements/Crypto/Crypto.podspec` provides the acknowledgement info.
|
29
|
+
* `Alamofire` is ignored since it's already in Podfile.
|
30
|
+
* `QuickTableViewController` is excluded from the list.
|
31
|
+
* `Strongify` installed via git-submodule will be added to the acknowledgements.
|
32
|
+
|
28
33
|
### Launch the project
|
29
34
|
|
30
35
|
```sh
|
@@ -2,6 +2,7 @@ require "cocoapods"
|
|
2
2
|
require "cocoapods_acknowledgements"
|
3
3
|
require "cocoapods_acknowledgements/addons/podspec_accumulator"
|
4
4
|
require "cocoapods_acknowledgements/addons/plist_modifier"
|
5
|
+
require "cocoapods_acknowledgements/addons/settings_plist_modifier"
|
5
6
|
|
6
7
|
module CocoaPodsAcknowledgements
|
7
8
|
module AddOns
|
@@ -10,18 +11,20 @@ module CocoaPodsAcknowledgements
|
|
10
11
|
paths = [*user_options[:add]]
|
11
12
|
excluded_names = [*user_options[:exclude]]
|
12
13
|
|
13
|
-
|
14
|
+
acknowledgements = paths.reduce([]) do |results, path|
|
14
15
|
accumulator = PodspecAccumulator.new(Pathname(path).expand_path)
|
15
|
-
|
16
|
+
results + accumulator.acknowledgements
|
16
17
|
end
|
17
|
-
modifier = PlistModifier.new
|
18
18
|
|
19
19
|
sandbox = context.sandbox if defined? context.sandbox
|
20
20
|
sandbox ||= Pod::Sandbox.new(context.sandbox_root)
|
21
21
|
|
22
22
|
context.umbrella_targets.each do |target|
|
23
|
-
|
24
|
-
|
23
|
+
plist_modifier = PlistModifier.new(target, sandbox)
|
24
|
+
plist_modifier.add(acknowledgements.map(&:plist_metadata), excluded_names)
|
25
|
+
|
26
|
+
settings_plist_modifier = SettingsPlistModifier.new(target)
|
27
|
+
settings_plist_modifier.add(acknowledgements.map(&:settings_plist_metadata), excluded_names)
|
25
28
|
end
|
26
29
|
end
|
27
30
|
|
@@ -0,0 +1,68 @@
|
|
1
|
+
require "cocoapods-core"
|
2
|
+
|
3
|
+
module CocoaPodsAcknowledgements
|
4
|
+
module AddOns
|
5
|
+
class Acknowledgement
|
6
|
+
|
7
|
+
# @param path [String] the path string to a pod spec.
|
8
|
+
#
|
9
|
+
def initialize(file)
|
10
|
+
path = Pathname(file).expand_path if file
|
11
|
+
directory = path.dirname
|
12
|
+
|
13
|
+
@spec = Pod::Specification.from_file(file) if path.exist?
|
14
|
+
@license_text = license_text(@spec, directory)
|
15
|
+
end
|
16
|
+
|
17
|
+
# @param podspec [Pod::Specification]
|
18
|
+
# @param directory [Pathname]
|
19
|
+
#
|
20
|
+
# @return [String] the text of the license.
|
21
|
+
# @return [Nil] if it's not found.
|
22
|
+
#
|
23
|
+
def license_text(podspec, directory)
|
24
|
+
return nil unless podspec
|
25
|
+
text = podspec.license[:text]
|
26
|
+
|
27
|
+
if text.nil?
|
28
|
+
license_file = podspec.license[:file] || "LICENSE"
|
29
|
+
license_path = directory + license_file
|
30
|
+
return nil unless license_path.exist?
|
31
|
+
text = File.read(license_path)
|
32
|
+
end
|
33
|
+
|
34
|
+
text
|
35
|
+
end
|
36
|
+
|
37
|
+
# @return [Hash] the acknowledgement info for the plist.
|
38
|
+
# @return [Nil] if the license text is missing.
|
39
|
+
#
|
40
|
+
def plist_metadata
|
41
|
+
return nil unless @spec and @license_text
|
42
|
+
{
|
43
|
+
name: @spec.name,
|
44
|
+
version: @spec.version.to_s,
|
45
|
+
authors: Hash[@spec.authors.map { |k, v| [k, v || ""] }],
|
46
|
+
socialMediaURL: @spec.social_media_url || "",
|
47
|
+
summary: @spec.summary,
|
48
|
+
licenseType: @spec.license[:type],
|
49
|
+
licenseText: @license_text,
|
50
|
+
homepage: @spec.homepage
|
51
|
+
}
|
52
|
+
end
|
53
|
+
|
54
|
+
# @return [Hash] the acknowledgement info for the Settings.bundle plist.
|
55
|
+
# @return [Nil] if the license text is missing.
|
56
|
+
#
|
57
|
+
def settings_plist_metadata
|
58
|
+
return nil unless @spec and @license_text
|
59
|
+
{
|
60
|
+
Title: @spec.name,
|
61
|
+
Type: "PSGroupSpecifier",
|
62
|
+
FooterText: @license_text
|
63
|
+
}
|
64
|
+
end
|
65
|
+
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
@@ -1,34 +1,45 @@
|
|
1
|
-
require "cocoapods"
|
2
1
|
require "cfpropertylist"
|
2
|
+
require "cocoapods"
|
3
|
+
require "cocoapods_acknowledgements/addons/acknowledgement"
|
3
4
|
|
4
5
|
module CocoaPodsAcknowledgements
|
5
6
|
module AddOns
|
6
7
|
class PlistModifier
|
7
8
|
|
8
|
-
#
|
9
|
-
# @param
|
10
|
-
#
|
11
|
-
|
12
|
-
|
13
|
-
|
9
|
+
# @param target [Pod::Installer::PostInstallHooksContext::UmbrellaTargetDescription] the xcodeproj target.
|
10
|
+
# @param sandbox [Pod::Sandbox] the CocoaPods sandbox
|
11
|
+
#
|
12
|
+
def initialize(target, sandbox)
|
13
|
+
@plist_path = sandbox.root + "#{target.cocoapods_target_label}-metadata.plist"
|
14
|
+
end
|
15
|
+
|
16
|
+
# Adds acknowledgements to the plist except the excluded ones.
|
17
|
+
#
|
18
|
+
# @param plist_metadata [Array<Hash>] the array of acknowledgement plist metadata.
|
19
|
+
# @param excluded_names [Array<String>] the array of names to ignore.
|
20
|
+
#
|
21
|
+
def add(plist_metadata, excluded_names)
|
22
|
+
plist_metadata = [*plist_metadata]
|
14
23
|
excluded_names = [*excluded_names]
|
15
24
|
|
16
|
-
return if
|
25
|
+
return if plist_metadata.empty? or not @plist_path&.writable?
|
17
26
|
|
18
|
-
plist = CFPropertyList::List.new(file: plist_path)
|
19
|
-
|
27
|
+
plist = CFPropertyList::List.new(file: @plist_path)
|
28
|
+
entries = plist.value.value["specs"].value
|
29
|
+
existing_titles = entries.map { |spec| spec.value["name"].value }
|
30
|
+
excluded_names += existing_titles
|
20
31
|
|
21
|
-
|
22
|
-
next if excluded_names.include? metadata[:name]
|
23
|
-
Pod::UI.info "Adding #{metadata[:name]} to #{plist_path.basename}"
|
32
|
+
additions = plist_metadata.map { |metadata|
|
33
|
+
next if metadata.nil? or excluded_names.include? metadata[:name]
|
34
|
+
Pod::UI.info "Adding #{metadata[:name]} to #{@plist_path.basename}"
|
35
|
+
CFPropertyList.guess(metadata)
|
36
|
+
}.reject(&:nil?)
|
24
37
|
|
25
|
-
|
26
|
-
|
27
|
-
plist.value.value["specs"].value.append(node)
|
28
|
-
end
|
38
|
+
acknowledgements = entries + additions
|
39
|
+
acknowledgements.sort! { |a, b| a.value["name"].value <=> b.value["name"].value }
|
29
40
|
|
30
|
-
plist.value.value["specs"].value
|
31
|
-
plist.save(plist_path, CFPropertyList::List::FORMAT_XML)
|
41
|
+
plist.value.value["specs"].value = acknowledgements
|
42
|
+
plist.save(@plist_path, CFPropertyList::List::FORMAT_XML)
|
32
43
|
end
|
33
44
|
|
34
45
|
end
|
@@ -1,32 +1,20 @@
|
|
1
1
|
require "cocoapods-core"
|
2
|
+
require "cocoapods_acknowledgements/addons/acknowledgement"
|
2
3
|
|
3
4
|
module CocoaPodsAcknowledgements
|
4
5
|
module AddOns
|
5
6
|
class PodspecAccumulator
|
6
7
|
|
7
|
-
# Initializes a PodspecAccumulator with a search path.
|
8
8
|
# @param search_path [Pathname] the directory to look for podspecs.
|
9
|
+
#
|
9
10
|
def initialize(search_path = Pathname("").expand_path)
|
10
11
|
@files = Dir[search_path + "**/*.podspec"]
|
11
12
|
end
|
12
13
|
|
13
|
-
# @return [Array<
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
license_file = spec.license[:file] || "LICENSE"
|
18
|
-
license_path = File.join(File.dirname(path), license_file)
|
19
|
-
{
|
20
|
-
name: spec.name,
|
21
|
-
version: spec.version.to_s,
|
22
|
-
authors: Hash[spec.authors.map { |k, v| [k, v || ""] }],
|
23
|
-
socialMediaURL: spec.social_media_url || "",
|
24
|
-
summary: spec.summary,
|
25
|
-
licenseType: spec.license[:type],
|
26
|
-
licenseText: File.read(license_path),
|
27
|
-
homepage: spec.homepage
|
28
|
-
}
|
29
|
-
end
|
14
|
+
# @return [Array<Acknowledgement>] the array of Acknowledgement objects.
|
15
|
+
#
|
16
|
+
def acknowledgements
|
17
|
+
@files.map { |file| Acknowledgement.new(file) }
|
30
18
|
end
|
31
19
|
|
32
20
|
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
require "cfpropertylist"
|
2
|
+
require "cocoapods"
|
3
|
+
require "cocoapods_acknowledgements/addons/acknowledgement"
|
4
|
+
|
5
|
+
module CocoaPodsAcknowledgements
|
6
|
+
module AddOns
|
7
|
+
class SettingsPlistModifier
|
8
|
+
|
9
|
+
# @param target [Pod::Installer::PostInstallHooksContext::UmbrellaTargetDescription] the xcodeproj target.
|
10
|
+
#
|
11
|
+
def initialize(target)
|
12
|
+
project = Xcodeproj::Project.open(target.user_project_path)
|
13
|
+
file = project.files.find { |f| f.path =~ /Settings\.bundle$/ }
|
14
|
+
settings_bundle = file&.real_path
|
15
|
+
|
16
|
+
return unless settings_bundle&.exist?
|
17
|
+
@plist_path = settings_bundle + "#{target.cocoapods_target_label}-settings-metadata.plist"
|
18
|
+
end
|
19
|
+
|
20
|
+
# Adds acknowledgements to the plist except the excluded ones.
|
21
|
+
#
|
22
|
+
# @param plist_metadata [Array<Hash>] the array of acknowledgement plist metadata.
|
23
|
+
# @param excluded_names [Array<String>] the array of names to ignore.
|
24
|
+
#
|
25
|
+
def add(plist_metadata, excluded_names)
|
26
|
+
plist_metadata = [*plist_metadata]
|
27
|
+
excluded_names = [*excluded_names]
|
28
|
+
|
29
|
+
return if plist_metadata.empty? or not @plist_path&.writable?
|
30
|
+
|
31
|
+
plist = CFPropertyList::List.new(file: @plist_path)
|
32
|
+
entries = plist.value.value["PreferenceSpecifiers"].value
|
33
|
+
|
34
|
+
header = entries.first
|
35
|
+
footer = entries.last
|
36
|
+
attributes = [header.value["Title"].value, footer.value["Title"].value]
|
37
|
+
|
38
|
+
existing_titles = entries
|
39
|
+
.map { |spec| spec.value["Title"].value }
|
40
|
+
.reject { |title| attributes.include? title }
|
41
|
+
excluded_names += existing_titles
|
42
|
+
|
43
|
+
additions = plist_metadata.map { |metadata|
|
44
|
+
next if metadata.nil? or excluded_names.include? metadata[:Title]
|
45
|
+
Pod::UI.info "Adding #{metadata[:Title]} to #{@plist_path.basename}"
|
46
|
+
CFPropertyList.guess(metadata)
|
47
|
+
}.reject(&:nil?)
|
48
|
+
|
49
|
+
acknowledgements = entries[1...-1] + additions
|
50
|
+
acknowledgements.sort! { |a, b| a.value["Title"].value <=> b.value["Title"].value }
|
51
|
+
|
52
|
+
plist.value.value["PreferenceSpecifiers"].value = [header] + acknowledgements + [footer]
|
53
|
+
plist.save(@plist_path, CFPropertyList::List::FORMAT_XML)
|
54
|
+
end
|
55
|
+
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
data/lib/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cocoapods-acknowledgements-addons
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- bcylin
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-05-
|
11
|
+
date: 2019-05-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: cocoapods
|
@@ -74,6 +74,7 @@ extra_rdoc_files: []
|
|
74
74
|
files:
|
75
75
|
- ".gitignore"
|
76
76
|
- ".gitmodules"
|
77
|
+
- ".travis.yml"
|
77
78
|
- CHANGELOG.md
|
78
79
|
- Gemfile
|
79
80
|
- Gemfile.lock
|
@@ -83,17 +84,25 @@ files:
|
|
83
84
|
- cocoapods_acknowledgements_addons.gemspec
|
84
85
|
- example/.gitignore
|
85
86
|
- example/Acknowledgements/Crypto/Crypto.podspec
|
86
|
-
- example/Acknowledgements/Crypto/LICENSE
|
87
87
|
- example/App.xcodeproj/project.pbxproj
|
88
88
|
- example/App.xcodeproj/project.xcworkspace/contents.xcworkspacedata
|
89
89
|
- example/App.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
|
90
|
+
- example/App.xcodeproj/xcshareddata/xcschemes/App.xcscheme
|
90
91
|
- example/App.xcworkspace/contents.xcworkspacedata
|
91
92
|
- example/App.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist
|
93
|
+
- example/App/App-Bridging-Header.h
|
92
94
|
- example/App/AppDelegate.swift
|
93
95
|
- example/App/Assets.xcassets/AppIcon.appiconset/Contents.json
|
94
96
|
- example/App/Assets.xcassets/Contents.json
|
95
97
|
- example/App/Base.lproj/LaunchScreen.storyboard
|
96
98
|
- example/App/Info.plist
|
99
|
+
- example/App/MethodSwizzler.h
|
100
|
+
- example/App/MethodSwizzler.m
|
101
|
+
- example/App/Settings.bundle/Pods-App-settings-metadata.plist
|
102
|
+
- example/App/Settings.bundle/Root.plist
|
103
|
+
- example/App/Settings.bundle/en.lproj/Root.strings
|
104
|
+
- example/AppTests/AppTests.swift
|
105
|
+
- example/AppTests/Info.plist
|
97
106
|
- example/Cartfile
|
98
107
|
- example/Cartfile.resolved
|
99
108
|
- example/Gemfile
|
@@ -103,8 +112,10 @@ files:
|
|
103
112
|
- example/Podfile.lock
|
104
113
|
- example/README.md
|
105
114
|
- lib/cocoapods_acknowledgements/addons.rb
|
115
|
+
- lib/cocoapods_acknowledgements/addons/acknowledgement.rb
|
106
116
|
- lib/cocoapods_acknowledgements/addons/plist_modifier.rb
|
107
117
|
- lib/cocoapods_acknowledgements/addons/podspec_accumulator.rb
|
118
|
+
- lib/cocoapods_acknowledgements/addons/settings_plist_modifier.rb
|
108
119
|
- lib/cocoapods_plugin.rb
|
109
120
|
- lib/version.rb
|
110
121
|
homepage: https://github.com/bcylin/cocoapods-acknowledgements-addons
|
@@ -1 +0,0 @@
|
|
1
|
-
example/Acknowledgements/Crypto/../../Carthage/Checkouts/Crypto/LICENSE
|