Compare commits

..
7 Commits
Author SHA1 Message Date
Florian Gabach 5da43391f5 3.2.0 release 2018-12-10 19:47:31 +01:00
Florian Gabach ee9f7efe68 Update fastlane file 2018-12-10 19:46:24 +01:00
Florian Gabach 0dbf658de9 Small code refactoring 2018-12-10 17:22:28 +01:00
Florian Gabach 016099a7c3 Add fastlane automation 2018-12-10 17:22:05 +01:00
Florian Gabach db3f5b2062 Improve exemple project 2018-12-10 17:21:54 +01:00
Florian Gabach 24c47fbcab Folder organisation 2018-10-29 11:52:43 +01:00
Florian Gabach 11f73c553a Clean & fix background color 2018-10-29 11:51:56 +01:00
49 changed files with 357 additions and 173 deletions
+9
View File
@@ -1,6 +1,15 @@
Changelog
==========
### 3.2.0
- Small refactoring
- Add fastlane for pods release
### 3.1.1
- Fix background color
### 3.1.0
- Code cleanup
@@ -7,36 +7,45 @@
objects = {
/* Begin PBXBuildFile section */
76229B602180AB5000A61697 /* OpenSourceControllerConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76229B5E2180AB5000A61697 /* OpenSourceControllerConfig.swift */; };
76229B612180AB5000A61697 /* OpenSourceController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76229B5F2180AB5000A61697 /* OpenSourceController.swift */; };
76229B662180AB5D00A61697 /* OpenSourceTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76229B622180AB5C00A61697 /* OpenSourceTableViewCell.swift */; };
76229B672180AB5D00A61697 /* LoadingViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76229B632180AB5D00A61697 /* LoadingViewController.swift */; };
76229B682180AB5D00A61697 /* OpenSourceViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76229B642180AB5D00A61697 /* OpenSourceViewController.swift */; };
76229B692180AB5D00A61697 /* LicenceListViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76229B652180AB5D00A61697 /* LicenceListViewController.swift */; };
76229B832180AFAD00A61697 /* HTTPDataLoader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76229B822180AFAD00A61697 /* HTTPDataLoader.swift */; };
7627B06221807C4B0057FFBB /* README.md in Resources */ = {isa = PBXBuildFile; fileRef = 7627B06121807C4B0057FFBB /* README.md */; };
76D7F28121BEB3A0004B74CB /* OpenSourceController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76D7F26F21BEB3A0004B74CB /* OpenSourceController.swift */; };
76D7F28221BEB3A0004B74CB /* OpenSourceControllerConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76D7F27021BEB3A0004B74CB /* OpenSourceControllerConfig.swift */; };
76D7F28321BEB3A0004B74CB /* Array+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76D7F27221BEB3A0004B74CB /* Array+Extensions.swift */; };
76D7F28421BEB3A0004B74CB /* UIViewController+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76D7F27321BEB3A0004B74CB /* UIViewController+Extensions.swift */; };
76D7F28521BEB3A0004B74CB /* UIView+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76D7F27421BEB3A0004B74CB /* UIView+Extensions.swift */; };
76D7F28621BEB3A0004B74CB /* Reusable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76D7F27521BEB3A0004B74CB /* Reusable.swift */; };
76D7F28721BEB3A0004B74CB /* UITableView+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76D7F27621BEB3A0004B74CB /* UITableView+Extensions.swift */; };
76D7F28821BEB3A0004B74CB /* OpenSourceViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76D7F27821BEB3A0004B74CB /* OpenSourceViewController.swift */; };
76D7F28921BEB3A0004B74CB /* LicenceListViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76D7F27921BEB3A0004B74CB /* LicenceListViewController.swift */; };
76D7F28A21BEB3A0004B74CB /* OpenSourceTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76D7F27A21BEB3A0004B74CB /* OpenSourceTableViewCell.swift */; };
76D7F28B21BEB3A0004B74CB /* LoadingViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76D7F27B21BEB3A0004B74CB /* LoadingViewController.swift */; };
76D7F28C21BEB3A0004B74CB /* HTTPDataLoader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76D7F27D21BEB3A0004B74CB /* HTTPDataLoader.swift */; };
76D7F28D21BEB3A0004B74CB /* LicenceFile.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76D7F27F21BEB3A0004B74CB /* LicenceFile.swift */; };
76D7F28E21BEB3A0004B74CB /* LicenceLoader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76D7F28021BEB3A0004B74CB /* LicenceLoader.swift */; };
76EAA8651E93F2CC009A41DA /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76EAA8641E93F2CC009A41DA /* AppDelegate.swift */; };
76EAA8671E93F2CC009A41DA /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76EAA8661E93F2CC009A41DA /* ViewController.swift */; };
76EAA86A1E93F2CC009A41DA /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 76EAA8681E93F2CC009A41DA /* Main.storyboard */; };
76EAA86C1E93F2CC009A41DA /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 76EAA86B1E93F2CC009A41DA /* Assets.xcassets */; };
76EAA86F1E93F2CC009A41DA /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 76EAA86D1E93F2CC009A41DA /* LaunchScreen.storyboard */; };
76EAA88D1E93F675009A41DA /* LicenceLoader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76EAA88A1E93F675009A41DA /* LicenceLoader.swift */; };
76EAA88E1E93F675009A41DA /* LicenceFile.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76EAA88B1E93F675009A41DA /* LicenceFile.swift */; };
76EAA8911E93F67B009A41DA /* Array+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76EAA8901E93F67B009A41DA /* Array+Extensions.swift */; };
76FED173217F6CEF0037BD09 /* UIViewController+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76FED172217F6CEF0037BD09 /* UIViewController+Extensions.swift */; };
76FED175217F6D400037BD09 /* UIView+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76FED174217F6D400037BD09 /* UIView+Extensions.swift */; };
C33E4D96204442AC00142EE6 /* CHANGELOG.md in Resources */ = {isa = PBXBuildFile; fileRef = C33E4D95204442AC00142EE6 /* CHANGELOG.md */; };
/* End PBXBuildFile section */
/* Begin PBXFileReference section */
76229B5E2180AB5000A61697 /* OpenSourceControllerConfig.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = OpenSourceControllerConfig.swift; path = ../../Sources/OpenSourceControllerConfig.swift; sourceTree = "<group>"; };
76229B5F2180AB5000A61697 /* OpenSourceController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = OpenSourceController.swift; path = ../../Sources/OpenSourceController.swift; sourceTree = "<group>"; };
76229B622180AB5C00A61697 /* OpenSourceTableViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = OpenSourceTableViewCell.swift; path = ../../Sources/OpenSourceViewController/OpenSourceTableViewCell.swift; sourceTree = "<group>"; };
76229B632180AB5D00A61697 /* LoadingViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = LoadingViewController.swift; path = ../../Sources/OpenSourceViewController/LoadingViewController.swift; sourceTree = "<group>"; };
76229B642180AB5D00A61697 /* OpenSourceViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = OpenSourceViewController.swift; path = ../../Sources/OpenSourceViewController/OpenSourceViewController.swift; sourceTree = "<group>"; };
76229B652180AB5D00A61697 /* LicenceListViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = LicenceListViewController.swift; path = ../../Sources/OpenSourceViewController/LicenceListViewController.swift; sourceTree = "<group>"; };
76229B822180AFAD00A61697 /* HTTPDataLoader.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = HTTPDataLoader.swift; path = ../../Sources/Loader/HTTPDataLoader.swift; sourceTree = "<group>"; };
7627B06121807C4B0057FFBB /* README.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; name = README.md; path = ../README.md; sourceTree = "<group>"; };
76D7F26F21BEB3A0004B74CB /* OpenSourceController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OpenSourceController.swift; sourceTree = "<group>"; };
76D7F27021BEB3A0004B74CB /* OpenSourceControllerConfig.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OpenSourceControllerConfig.swift; sourceTree = "<group>"; };
76D7F27221BEB3A0004B74CB /* Array+Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Array+Extensions.swift"; sourceTree = "<group>"; };
76D7F27321BEB3A0004B74CB /* UIViewController+Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIViewController+Extensions.swift"; sourceTree = "<group>"; };
76D7F27421BEB3A0004B74CB /* UIView+Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIView+Extensions.swift"; sourceTree = "<group>"; };
76D7F27521BEB3A0004B74CB /* Reusable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Reusable.swift; sourceTree = "<group>"; };
76D7F27621BEB3A0004B74CB /* UITableView+Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UITableView+Extensions.swift"; sourceTree = "<group>"; };
76D7F27821BEB3A0004B74CB /* OpenSourceViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OpenSourceViewController.swift; sourceTree = "<group>"; };
76D7F27921BEB3A0004B74CB /* LicenceListViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LicenceListViewController.swift; sourceTree = "<group>"; };
76D7F27A21BEB3A0004B74CB /* OpenSourceTableViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OpenSourceTableViewCell.swift; sourceTree = "<group>"; };
76D7F27B21BEB3A0004B74CB /* LoadingViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LoadingViewController.swift; sourceTree = "<group>"; };
76D7F27D21BEB3A0004B74CB /* HTTPDataLoader.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HTTPDataLoader.swift; sourceTree = "<group>"; };
76D7F27F21BEB3A0004B74CB /* LicenceFile.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LicenceFile.swift; sourceTree = "<group>"; };
76D7F28021BEB3A0004B74CB /* LicenceLoader.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LicenceLoader.swift; sourceTree = "<group>"; };
76EAA8611E93F2CC009A41DA /* OpenSourceControllerDemo.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = OpenSourceControllerDemo.app; sourceTree = BUILT_PRODUCTS_DIR; };
76EAA8641E93F2CC009A41DA /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
76EAA8661E93F2CC009A41DA /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = "<group>"; };
@@ -44,11 +53,6 @@
76EAA86B1E93F2CC009A41DA /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
76EAA86E1E93F2CC009A41DA /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
76EAA8701E93F2CC009A41DA /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
76EAA88A1E93F675009A41DA /* LicenceLoader.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = LicenceLoader.swift; path = ../../Sources/Model/LicenceLoader.swift; sourceTree = "<group>"; };
76EAA88B1E93F675009A41DA /* LicenceFile.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = LicenceFile.swift; path = ../../Sources/Model/LicenceFile.swift; sourceTree = "<group>"; };
76EAA8901E93F67B009A41DA /* Array+Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = "Array+Extensions.swift"; path = "../../Sources/Extensions/Array+Extensions.swift"; sourceTree = "<group>"; };
76FED172217F6CEF0037BD09 /* UIViewController+Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = "UIViewController+Extensions.swift"; path = "../../Sources/Extensions/UIViewController+Extensions.swift"; sourceTree = "<group>"; };
76FED174217F6D400037BD09 /* UIView+Extensions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = "UIView+Extensions.swift"; path = "../../Sources/Extensions/UIView+Extensions.swift"; sourceTree = "<group>"; };
C33E4D95204442AC00142EE6 /* CHANGELOG.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; name = CHANGELOG.md; path = ../CHANGELOG.md; sourceTree = "<group>"; };
/* End PBXFileReference section */
@@ -63,12 +67,58 @@
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
76229B5D2180AA8E00A61697 /* Loader */ = {
76D7F26E21BEB3A0004B74CB /* Sources */ = {
isa = PBXGroup;
children = (
76229B822180AFAD00A61697 /* HTTPDataLoader.swift */,
76D7F26F21BEB3A0004B74CB /* OpenSourceController.swift */,
76D7F27021BEB3A0004B74CB /* OpenSourceControllerConfig.swift */,
76D7F27121BEB3A0004B74CB /* Utils */,
76D7F27721BEB3A0004B74CB /* Controller */,
76D7F27C21BEB3A0004B74CB /* Loader */,
76D7F27E21BEB3A0004B74CB /* Model */,
);
name = Loader;
name = Sources;
path = ../Sources;
sourceTree = "<group>";
};
76D7F27121BEB3A0004B74CB /* Utils */ = {
isa = PBXGroup;
children = (
76D7F27221BEB3A0004B74CB /* Array+Extensions.swift */,
76D7F27321BEB3A0004B74CB /* UIViewController+Extensions.swift */,
76D7F27421BEB3A0004B74CB /* UIView+Extensions.swift */,
76D7F27521BEB3A0004B74CB /* Reusable.swift */,
76D7F27621BEB3A0004B74CB /* UITableView+Extensions.swift */,
);
path = Utils;
sourceTree = "<group>";
};
76D7F27721BEB3A0004B74CB /* Controller */ = {
isa = PBXGroup;
children = (
76D7F27821BEB3A0004B74CB /* OpenSourceViewController.swift */,
76D7F27921BEB3A0004B74CB /* LicenceListViewController.swift */,
76D7F27A21BEB3A0004B74CB /* OpenSourceTableViewCell.swift */,
76D7F27B21BEB3A0004B74CB /* LoadingViewController.swift */,
);
path = Controller;
sourceTree = "<group>";
};
76D7F27C21BEB3A0004B74CB /* Loader */ = {
isa = PBXGroup;
children = (
76D7F27D21BEB3A0004B74CB /* HTTPDataLoader.swift */,
);
path = Loader;
sourceTree = "<group>";
};
76D7F27E21BEB3A0004B74CB /* Model */ = {
isa = PBXGroup;
children = (
76D7F27F21BEB3A0004B74CB /* LicenceFile.swift */,
76D7F28021BEB3A0004B74CB /* LicenceLoader.swift */,
);
path = Model;
sourceTree = "<group>";
};
76EAA8581E93F2CC009A41DA = {
@@ -77,6 +127,7 @@
C33E4D95204442AC00142EE6 /* CHANGELOG.md */,
7627B06121807C4B0057FFBB /* README.md */,
76EAA8631E93F2CC009A41DA /* OpenSourceControllerDemo */,
76D7F26E21BEB3A0004B74CB /* Sources */,
76EAA8621E93F2CC009A41DA /* Products */,
);
sourceTree = "<group>";
@@ -98,54 +149,10 @@
76EAA86D1E93F2CC009A41DA /* LaunchScreen.storyboard */,
76EAA86B1E93F2CC009A41DA /* Assets.xcassets */,
76EAA8701E93F2CC009A41DA /* Info.plist */,
76EAA8891E93F66A009A41DA /* Sources */,
);
path = OpenSourceControllerDemo;
sourceTree = "<group>";
};
76EAA8891E93F66A009A41DA /* Sources */ = {
isa = PBXGroup;
children = (
76229B5F2180AB5000A61697 /* OpenSourceController.swift */,
76229B5E2180AB5000A61697 /* OpenSourceControllerConfig.swift */,
76FED17B217F6E2E0037BD09 /* OpenSourceViewController */,
76FED17A217F6E0F0037BD09 /* Extensions */,
76229B5D2180AA8E00A61697 /* Loader */,
76FED17C217F6E4A0037BD09 /* Model */,
);
name = Sources;
sourceTree = "<group>";
};
76FED17A217F6E0F0037BD09 /* Extensions */ = {
isa = PBXGroup;
children = (
76FED172217F6CEF0037BD09 /* UIViewController+Extensions.swift */,
76EAA8901E93F67B009A41DA /* Array+Extensions.swift */,
76FED174217F6D400037BD09 /* UIView+Extensions.swift */,
);
name = Extensions;
sourceTree = "<group>";
};
76FED17B217F6E2E0037BD09 /* OpenSourceViewController */ = {
isa = PBXGroup;
children = (
76229B652180AB5D00A61697 /* LicenceListViewController.swift */,
76229B632180AB5D00A61697 /* LoadingViewController.swift */,
76229B622180AB5C00A61697 /* OpenSourceTableViewCell.swift */,
76229B642180AB5D00A61697 /* OpenSourceViewController.swift */,
);
name = OpenSourceViewController;
sourceTree = "<group>";
};
76FED17C217F6E4A0037BD09 /* Model */ = {
isa = PBXGroup;
children = (
76EAA88A1E93F675009A41DA /* LicenceLoader.swift */,
76EAA88B1E93F675009A41DA /* LicenceFile.swift */,
);
name = Model;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
@@ -222,20 +229,22 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
76229B692180AB5D00A61697 /* LicenceListViewController.swift in Sources */,
76229B612180AB5000A61697 /* OpenSourceController.swift in Sources */,
76EAA88D1E93F675009A41DA /* LicenceLoader.swift in Sources */,
76229B682180AB5D00A61697 /* OpenSourceViewController.swift in Sources */,
76EAA88E1E93F675009A41DA /* LicenceFile.swift in Sources */,
76229B662180AB5D00A61697 /* OpenSourceTableViewCell.swift in Sources */,
76229B832180AFAD00A61697 /* HTTPDataLoader.swift in Sources */,
76FED173217F6CEF0037BD09 /* UIViewController+Extensions.swift in Sources */,
76EAA8911E93F67B009A41DA /* Array+Extensions.swift in Sources */,
76D7F28721BEB3A0004B74CB /* UITableView+Extensions.swift in Sources */,
76D7F28521BEB3A0004B74CB /* UIView+Extensions.swift in Sources */,
76D7F28221BEB3A0004B74CB /* OpenSourceControllerConfig.swift in Sources */,
76D7F28321BEB3A0004B74CB /* Array+Extensions.swift in Sources */,
76EAA8671E93F2CC009A41DA /* ViewController.swift in Sources */,
76FED175217F6D400037BD09 /* UIView+Extensions.swift in Sources */,
76D7F28921BEB3A0004B74CB /* LicenceListViewController.swift in Sources */,
76D7F28C21BEB3A0004B74CB /* HTTPDataLoader.swift in Sources */,
76D7F28A21BEB3A0004B74CB /* OpenSourceTableViewCell.swift in Sources */,
76D7F28E21BEB3A0004B74CB /* LicenceLoader.swift in Sources */,
76D7F28821BEB3A0004B74CB /* OpenSourceViewController.swift in Sources */,
76D7F28621BEB3A0004B74CB /* Reusable.swift in Sources */,
76EAA8651E93F2CC009A41DA /* AppDelegate.swift in Sources */,
76229B602180AB5000A61697 /* OpenSourceControllerConfig.swift in Sources */,
76229B672180AB5D00A61697 /* LoadingViewController.swift in Sources */,
76D7F28D21BEB3A0004B74CB /* LicenceFile.swift in Sources */,
76D7F28421BEB3A0004B74CB /* UIViewController+Extensions.swift in Sources */,
76D7F28B21BEB3A0004B74CB /* LoadingViewController.swift in Sources */,
76D7F28121BEB3A0004B74CB /* OpenSourceController.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -3,61 +3,61 @@
{
"size" : "20x20",
"idiom" : "iphone",
"filename" : "logo 8-1.png",
"filename" : "logo 7-3 2 2-2.png",
"scale" : "2x"
},
{
"size" : "20x20",
"idiom" : "iphone",
"filename" : "logo 8.png",
"filename" : "logo 7-3 2 2-1.png",
"scale" : "3x"
},
{
"size" : "29x29",
"idiom" : "iphone",
"filename" : "logo 9-1.png",
"filename" : "logo 7-3 2 2.png",
"scale" : "2x"
},
{
"size" : "29x29",
"idiom" : "iphone",
"filename" : "logo 9.png",
"filename" : "logo 7-3 2-4.png",
"scale" : "3x"
},
{
"size" : "40x40",
"idiom" : "iphone",
"filename" : "logo 10-3.png",
"filename" : "logo 7-3 2-3.png",
"scale" : "2x"
},
{
"size" : "40x40",
"idiom" : "iphone",
"filename" : "logo 10-2.png",
"filename" : "logo 7-3 2-2.png",
"scale" : "3x"
},
{
"size" : "60x60",
"idiom" : "iphone",
"filename" : "logo 10-1.png",
"filename" : "logo 7-3 2-1.png",
"scale" : "2x"
},
{
"size" : "60x60",
"idiom" : "iphone",
"filename" : "logo 10.png",
"filename" : "logo 7-3 2.png",
"scale" : "3x"
},
{
"size" : "20x20",
"idiom" : "ipad",
"filename" : "logo 4-1.png",
"filename" : "logo 7-5.png",
"scale" : "1x"
},
{
"size" : "20x20",
"idiom" : "ipad",
"filename" : "logo 4.png",
"filename" : "logo 7-4.png",
"scale" : "2x"
},
{
Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.2 KiB

@@ -0,0 +1,6 @@
{
"info" : {
"version" : 1,
"author" : "xcode"
}
}
@@ -0,0 +1,23 @@
{
"images" : [
{
"idiom" : "universal",
"filename" : "logo 7-3 2 2 2-2.png",
"scale" : "1x"
},
{
"idiom" : "universal",
"filename" : "logo 7-3 2 2 2-1.png",
"scale" : "2x"
},
{
"idiom" : "universal",
"filename" : "logo 7-3 2 2 2.png",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
Binary file not shown.

After

Width:  |  Height:  |  Size: 259 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 259 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 259 KiB

@@ -1,7 +1,11 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="11134" systemVersion="15F34" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="14460.31" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES" colorMatched="YES" initialViewController="01J-lp-oVM">
<device id="retina4_7" orientation="portrait">
<adaptation id="fullscreen"/>
</device>
<dependencies>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="11106"/>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="14460.20"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<scenes>
@@ -16,7 +20,20 @@
<view key="view" contentMode="scaleToFill" id="Ze5-6b-2t3">
<rect key="frame" x="0.0" y="0.0" width="375" height="667"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="Logo" translatesAutoresizingMaskIntoConstraints="NO" id="AmH-DA-KFE">
<rect key="frame" x="87.5" y="233.5" width="200" height="200"/>
<constraints>
<constraint firstAttribute="height" constant="200" id="TkH-v5-gZa"/>
<constraint firstAttribute="width" constant="200" id="b8V-t1-IPP"/>
</constraints>
</imageView>
</subviews>
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstItem="AmH-DA-KFE" firstAttribute="centerX" secondItem="Ze5-6b-2t3" secondAttribute="centerX" id="K8c-8t-pu8"/>
<constraint firstItem="AmH-DA-KFE" firstAttribute="centerY" secondItem="Ze5-6b-2t3" secondAttribute="centerY" id="dMd-Ag-82A"/>
</constraints>
</view>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="iYj-Kq-Ea1" userLabel="First Responder" sceneMemberID="firstResponder"/>
@@ -24,4 +41,7 @@
<point key="canvasLocation" x="53" y="375"/>
</scene>
</scenes>
<resources>
<image name="Logo" width="1024" height="1024"/>
</resources>
</document>
@@ -1,15 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="14313.18" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES" initialViewController="fdz-at-fDg">
<document type="com.apple.InterfaceBuilder3.CocoaTouch.Storyboard.XIB" version="3.0" toolsVersion="14460.31" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES" colorMatched="YES" initialViewController="fdz-at-fDg">
<device id="retina4_7" orientation="portrait">
<adaptation id="fullscreen"/>
</device>
<dependencies>
<deployment identifier="iOS"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="14283.14"/>
<plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="14460.20"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<scenes>
<!--View Controller-->
<!--Demo-->
<scene sceneID="tne-QT-ifu">
<objects>
<viewController id="BYZ-38-t0r" customClass="ViewController" customModule="OpenSourceControllerDemo" customModuleProvider="target" sceneMemberID="viewController">
@@ -23,20 +23,38 @@
<subviews>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="LI4-fC-2Ry">
<rect key="frame" x="23" y="318.5" width="329" height="30"/>
<state key="normal" title="Show me"/>
<state key="normal" title="Show me (push)">
<color key="titleColor" cocoaTouchSystemColor="darkTextColor"/>
</state>
<connections>
<action selector="showOpenSource:" destination="BYZ-38-t0r" eventType="touchUpInside" id="vmT-jj-Xvr"/>
<action selector="pushOpenSourceController:" destination="BYZ-38-t0r" eventType="touchUpInside" id="Exu-2l-lfA"/>
</connections>
</button>
<button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" buttonType="roundedRect" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="wfq-WN-CRo">
<rect key="frame" x="23" y="356" width="329" height="30"/>
<constraints>
<constraint firstAttribute="height" constant="30" id="LLB-12-8xE"/>
</constraints>
<state key="normal" title="Show me (present)">
<color key="titleColor" cocoaTouchSystemColor="darkTextColor"/>
</state>
<connections>
<action selector="presentOpenSourceController:" destination="BYZ-38-t0r" eventType="touchUpInside" id="SoS-HF-0LZ"/>
</connections>
</button>
</subviews>
<color key="backgroundColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="genericGamma22GrayColorSpace"/>
<color key="tintColor" red="0.0" green="0.58980089430000004" blue="1" alpha="1" colorSpace="custom" customColorSpace="sRGB"/>
<constraints>
<constraint firstItem="wfq-WN-CRo" firstAttribute="leading" secondItem="8bC-Xf-vdC" secondAttribute="leadingMargin" constant="7" id="7s5-n0-5gS"/>
<constraint firstAttribute="trailingMargin" secondItem="wfq-WN-CRo" secondAttribute="trailing" constant="7" id="Qvn-Hu-Pci"/>
<constraint firstItem="LI4-fC-2Ry" firstAttribute="centerY" secondItem="8bC-Xf-vdC" secondAttribute="centerY" id="jXk-ZK-0PF"/>
<constraint firstItem="wfq-WN-CRo" firstAttribute="top" secondItem="LI4-fC-2Ry" secondAttribute="bottom" constant="7.5" id="ncu-07-cO6"/>
<constraint firstItem="LI4-fC-2Ry" firstAttribute="leading" secondItem="8bC-Xf-vdC" secondAttribute="leadingMargin" constant="7" id="q0g-Cs-CVt"/>
<constraint firstItem="LI4-fC-2Ry" firstAttribute="centerX" secondItem="8bC-Xf-vdC" secondAttribute="centerX" id="wVV-oT-zRH"/>
</constraints>
</view>
<navigationItem key="navigationItem" id="0ga-4U-IeA"/>
<navigationItem key="navigationItem" title="Demo" id="0ga-4U-IeA"/>
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="dkx-z0-nzr" sceneMemberID="firstResponder"/>
</objects>
@@ -16,17 +16,15 @@ class ViewController: UIViewController {
super.viewDidLoad()
}
// MARK: - Action
// MARK: - Action
/// Handle button click & show the controller with licences
@IBAction func showOpenSource(_ sender: Any) {
// Create controller
private func buildOpenSourceController() -> OpenSourceController {
let openSourceVC = OpenSourceController()
// Apply some customisation if you want
// Apply some customisation if you want
//self.applyCustomUI(openSourceVC: openSourceVC)
// Init with LicenceFile object
// Init with LicenceFile object
openSourceVC.licences = [LicenceFile(title: "FacebookImagePicker",
url: "https://raw.githubusercontent.com/terflogag/FacebookImagePicker/master/LICENSE"),
LicenceFile(title: "JSQMessagesViewController",
@@ -38,13 +36,21 @@ class ViewController: UIViewController {
LicenceFile(title: "EasyTipView",
url: "https://raw.githubusercontent.com/teodorpatras/EasyTipView/master/LICENSE"),
LicenceFile(title: "FakeAdress",
url: "https://raw.giusercontent.com/ashleymills/Reachability.swift/master/LICENSE"),
url: "https://fake.com/fake/LICENCE"),
LicenceFile(title: "KeychainAccess",
url: "https://raw.githubusercontent.com/kishikawakatsumi/KeychainAccess/master/LICENSE")]
// Present controller
return openSourceVC
}
@IBAction func pushOpenSourceController(_ sender: Any) {
let openSourceVC = self.buildOpenSourceController()
openSourceVC.pushOpenSourceController(from: self)
//openSourceVC.presentOpenSourceController(from: self)
}
@IBAction func presentOpenSourceController(_ sender: Any) {
let openSourceVC = self.buildOpenSourceController()
openSourceVC.presentOpenSourceController(from: self)
}
// MARK: - Customization
+4
View File
@@ -0,0 +1,4 @@
source "https://rubygems.org"
gem "cocoapods"
gem "fastlane"
+1 -1
View File
@@ -1,6 +1,6 @@
Pod::Spec.new do |s|
s.name = 'OpenSourceController'
s.version = '3.1.0'
s.version = '3.2.0'
s.summary = 'Display all the librarys licence used in your application. Enjoy !'
s.description = 'Display a screen with all licence used in your apply can be painful to maintain. OpenSourceController was built to respond to this problem. OpenSourceController is a simple parser to display the licences which are used in your application.'
s.homepage = 'https://github.com/floriangbh/OpenSourceController'
+39 -31
View File
@@ -8,17 +8,19 @@
/* Begin PBXBuildFile section */
52D6D9871BEFF229002C0205 /* OpenSourceController.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 52D6D97C1BEFF229002C0205 /* OpenSourceController.framework */; };
76229B6E2180AD6400A61697 /* UIViewController+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76229B6C2180AD6400A61697 /* UIViewController+Extensions.swift */; };
76229B6F2180AD6400A61697 /* UIView+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76229B6D2180AD6400A61697 /* UIView+Extensions.swift */; };
76229B722180AD8400A61697 /* LicenceLoader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76229B712180AD8400A61697 /* LicenceLoader.swift */; };
76229B772180AD8B00A61697 /* OpenSourceTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76229B732180AD8B00A61697 /* OpenSourceTableViewCell.swift */; };
76229B782180AD8B00A61697 /* LoadingViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76229B742180AD8B00A61697 /* LoadingViewController.swift */; };
76229B792180AD8B00A61697 /* OpenSourceViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76229B752180AD8B00A61697 /* OpenSourceViewController.swift */; };
76229B7A2180AD8B00A61697 /* LicenceListViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76229B762180AD8B00A61697 /* LicenceListViewController.swift */; };
76229B7D2180AD9F00A61697 /* HTTPDataLoader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76229B7C2180AD9F00A61697 /* HTTPDataLoader.swift */; };
76229B802180ADA800A61697 /* OpenSourceControllerConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76229B7E2180ADA800A61697 /* OpenSourceControllerConfig.swift */; };
76229B812180ADA800A61697 /* OpenSourceController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76229B7F2180ADA800A61697 /* OpenSourceController.swift */; };
76EAA8481E93EDB3009A41DA /* Array+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76EAA8471E93EDB3009A41DA /* Array+Extensions.swift */; };
769FD9D121871DEC00FB5A53 /* OpenSourceViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 769FD9CD21871DEC00FB5A53 /* OpenSourceViewController.swift */; };
769FD9D221871DEC00FB5A53 /* LicenceListViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 769FD9CE21871DEC00FB5A53 /* LicenceListViewController.swift */; };
769FD9D321871DEC00FB5A53 /* LoadingViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 769FD9CF21871DEC00FB5A53 /* LoadingViewController.swift */; };
769FD9D421871DEC00FB5A53 /* OpenSourceTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 769FD9D021871DEC00FB5A53 /* OpenSourceTableViewCell.swift */; };
76D7F24521BEB18A004B74CB /* UITableView+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76D7F24021BEB18A004B74CB /* UITableView+Extensions.swift */; };
76D7F24621BEB18A004B74CB /* Reusable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76D7F24121BEB18A004B74CB /* Reusable.swift */; };
76D7F24721BEB18A004B74CB /* UIViewController+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76D7F24221BEB18A004B74CB /* UIViewController+Extensions.swift */; };
76D7F24821BEB18A004B74CB /* Array+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76D7F24321BEB18A004B74CB /* Array+Extensions.swift */; };
76D7F24921BEB18A004B74CB /* UIView+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76D7F24421BEB18A004B74CB /* UIView+Extensions.swift */; };
76EAA84F1E93EDCD009A41DA /* LicenceFile.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76EAA84C1E93EDCD009A41DA /* LicenceFile.swift */; };
/* End PBXBuildFile section */
@@ -35,17 +37,19 @@
/* Begin PBXFileReference section */
52D6D97C1BEFF229002C0205 /* OpenSourceController.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = OpenSourceController.framework; sourceTree = BUILT_PRODUCTS_DIR; };
52D6D9861BEFF229002C0205 /* OpenSourceController-iOS Tests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "OpenSourceController-iOS Tests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
76229B6C2180AD6400A61697 /* UIViewController+Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = "UIViewController+Extensions.swift"; path = "Sources/Extensions/UIViewController+Extensions.swift"; sourceTree = "<group>"; };
76229B6D2180AD6400A61697 /* UIView+Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = "UIView+Extensions.swift"; path = "Sources/Extensions/UIView+Extensions.swift"; sourceTree = "<group>"; };
76229B712180AD8400A61697 /* LicenceLoader.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = LicenceLoader.swift; path = Sources/Model/LicenceLoader.swift; sourceTree = "<group>"; };
76229B732180AD8B00A61697 /* OpenSourceTableViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = OpenSourceTableViewCell.swift; path = Sources/OpenSourceViewController/OpenSourceTableViewCell.swift; sourceTree = "<group>"; };
76229B742180AD8B00A61697 /* LoadingViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = LoadingViewController.swift; path = Sources/OpenSourceViewController/LoadingViewController.swift; sourceTree = "<group>"; };
76229B752180AD8B00A61697 /* OpenSourceViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = OpenSourceViewController.swift; path = Sources/OpenSourceViewController/OpenSourceViewController.swift; sourceTree = "<group>"; };
76229B762180AD8B00A61697 /* LicenceListViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = LicenceListViewController.swift; path = Sources/OpenSourceViewController/LicenceListViewController.swift; sourceTree = "<group>"; };
76229B7C2180AD9F00A61697 /* HTTPDataLoader.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = HTTPDataLoader.swift; path = Sources/Loader/HTTPDataLoader.swift; sourceTree = "<group>"; };
76229B7E2180ADA800A61697 /* OpenSourceControllerConfig.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = OpenSourceControllerConfig.swift; path = Sources/OpenSourceControllerConfig.swift; sourceTree = "<group>"; };
76229B7F2180ADA800A61697 /* OpenSourceController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = OpenSourceController.swift; path = Sources/OpenSourceController.swift; sourceTree = "<group>"; };
76EAA8471E93EDB3009A41DA /* Array+Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = "Array+Extensions.swift"; path = "Sources/Extensions/Array+Extensions.swift"; sourceTree = "<group>"; };
769FD9CD21871DEC00FB5A53 /* OpenSourceViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = OpenSourceViewController.swift; path = Sources/Controller/OpenSourceViewController.swift; sourceTree = "<group>"; };
769FD9CE21871DEC00FB5A53 /* LicenceListViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = LicenceListViewController.swift; path = Sources/Controller/LicenceListViewController.swift; sourceTree = "<group>"; };
769FD9CF21871DEC00FB5A53 /* LoadingViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = LoadingViewController.swift; path = Sources/Controller/LoadingViewController.swift; sourceTree = "<group>"; };
769FD9D021871DEC00FB5A53 /* OpenSourceTableViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = OpenSourceTableViewCell.swift; path = Sources/Controller/OpenSourceTableViewCell.swift; sourceTree = "<group>"; };
76D7F24021BEB18A004B74CB /* UITableView+Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = "UITableView+Extensions.swift"; path = "Sources/Utils/UITableView+Extensions.swift"; sourceTree = "<group>"; };
76D7F24121BEB18A004B74CB /* Reusable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Reusable.swift; path = Sources/Utils/Reusable.swift; sourceTree = "<group>"; };
76D7F24221BEB18A004B74CB /* UIViewController+Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = "UIViewController+Extensions.swift"; path = "Sources/Utils/UIViewController+Extensions.swift"; sourceTree = "<group>"; };
76D7F24321BEB18A004B74CB /* Array+Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = "Array+Extensions.swift"; path = "Sources/Utils/Array+Extensions.swift"; sourceTree = "<group>"; };
76D7F24421BEB18A004B74CB /* UIView+Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = "UIView+Extensions.swift"; path = "Sources/Utils/UIView+Extensions.swift"; sourceTree = "<group>"; };
76EAA84C1E93EDCD009A41DA /* LicenceFile.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = LicenceFile.swift; path = Sources/Model/LicenceFile.swift; sourceTree = "<group>"; };
AD2FAA261CD0B6D800659CF4 /* OpenSourceController.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = OpenSourceController.plist; sourceTree = "<group>"; };
AD2FAA281CD0B6E100659CF4 /* OpenSourceControllerTests.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = OpenSourceControllerTests.plist; sourceTree = "<group>"; };
@@ -114,14 +118,16 @@
name = Loader;
sourceTree = "<group>";
};
76EAA8491E93EDBB009A41DA /* Extensions */ = {
76EAA8491E93EDBB009A41DA /* Utils */ = {
isa = PBXGroup;
children = (
76229B6D2180AD6400A61697 /* UIView+Extensions.swift */,
76229B6C2180AD6400A61697 /* UIViewController+Extensions.swift */,
76EAA8471E93EDB3009A41DA /* Array+Extensions.swift */,
76D7F24321BEB18A004B74CB /* Array+Extensions.swift */,
76D7F24121BEB18A004B74CB /* Reusable.swift */,
76D7F24021BEB18A004B74CB /* UITableView+Extensions.swift */,
76D7F24421BEB18A004B74CB /* UIView+Extensions.swift */,
76D7F24221BEB18A004B74CB /* UIViewController+Extensions.swift */,
);
name = Extensions;
name = Utils;
sourceTree = "<group>";
};
76EAA84A1E93EDC0009A41DA /* Sources */ = {
@@ -132,7 +138,7 @@
76229B7B2180AD8E00A61697 /* Loader */,
76229B702180AD7700A61697 /* Model */,
76EAA8511E93EDD2009A41DA /* Controller */,
76EAA8491E93EDBB009A41DA /* Extensions */,
76EAA8491E93EDBB009A41DA /* Utils */,
);
name = Sources;
sourceTree = "<group>";
@@ -140,10 +146,10 @@
76EAA8511E93EDD2009A41DA /* Controller */ = {
isa = PBXGroup;
children = (
76229B762180AD8B00A61697 /* LicenceListViewController.swift */,
76229B742180AD8B00A61697 /* LoadingViewController.swift */,
76229B732180AD8B00A61697 /* OpenSourceTableViewCell.swift */,
76229B752180AD8B00A61697 /* OpenSourceViewController.swift */,
769FD9CE21871DEC00FB5A53 /* LicenceListViewController.swift */,
769FD9CF21871DEC00FB5A53 /* LoadingViewController.swift */,
769FD9D021871DEC00FB5A53 /* OpenSourceTableViewCell.swift */,
769FD9CD21871DEC00FB5A53 /* OpenSourceViewController.swift */,
);
name = Controller;
sourceTree = "<group>";
@@ -276,18 +282,20 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
76229B782180AD8B00A61697 /* LoadingViewController.swift in Sources */,
76229B772180AD8B00A61697 /* OpenSourceTableViewCell.swift in Sources */,
76D7F24921BEB18A004B74CB /* UIView+Extensions.swift in Sources */,
76229B7D2180AD9F00A61697 /* HTTPDataLoader.swift in Sources */,
76229B7A2180AD8B00A61697 /* LicenceListViewController.swift in Sources */,
76229B6F2180AD6400A61697 /* UIView+Extensions.swift in Sources */,
76229B792180AD8B00A61697 /* OpenSourceViewController.swift in Sources */,
76D7F24621BEB18A004B74CB /* Reusable.swift in Sources */,
769FD9D221871DEC00FB5A53 /* LicenceListViewController.swift in Sources */,
769FD9D121871DEC00FB5A53 /* OpenSourceViewController.swift in Sources */,
76D7F24721BEB18A004B74CB /* UIViewController+Extensions.swift in Sources */,
76EAA84F1E93EDCD009A41DA /* LicenceFile.swift in Sources */,
76229B722180AD8400A61697 /* LicenceLoader.swift in Sources */,
76D7F24521BEB18A004B74CB /* UITableView+Extensions.swift in Sources */,
769FD9D421871DEC00FB5A53 /* OpenSourceTableViewCell.swift in Sources */,
76D7F24821BEB18A004B74CB /* Array+Extensions.swift in Sources */,
76229B812180ADA800A61697 /* OpenSourceController.swift in Sources */,
76229B6E2180AD6400A61697 /* UIViewController+Extensions.swift in Sources */,
769FD9D321871DEC00FB5A53 /* LoadingViewController.swift in Sources */,
76229B802180ADA800A61697 /* OpenSourceControllerConfig.swift in Sources */,
76EAA8481E93EDB3009A41DA /* Array+Extensions.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -11,8 +11,6 @@ import UIKit
final class LicenceListViewController: UITableViewController {
// MARK: - Var
fileprivate let reuseIdentifier = "openSourceCell"
fileprivate var config: OpenSourceControllerConfig
@@ -40,7 +38,7 @@ final class LicenceListViewController: UITableViewController {
fileprivate func prepareTableView() {
self.tableView.tableFooterView = UIView()
self.tableView.register(OpenSourceTableViewCell.self, forCellReuseIdentifier: self.reuseIdentifier)
self.tableView.register(cellType: OpenSourceTableViewCell.self)
self.tableView.dataSource = self
self.tableView.delegate = self
self.tableView.separatorStyle = .singleLine
@@ -61,19 +59,10 @@ extension LicenceListViewController {
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
var cell = tableView.dequeueReusableCell(withIdentifier: self.reuseIdentifier,
for: indexPath) as? OpenSourceTableViewCell
// Init cell
if cell == nil {
cell = OpenSourceTableViewCell(style: UITableViewCell.CellStyle.default, reuseIdentifier: self.reuseIdentifier)
}
// Configure the cell with licence
if let licence = self.downloadedLicence.get(at: indexPath.row) {
cell?.configure(licence: licence, config: self.config)
}
return cell!
let cell: OpenSourceTableViewCell = tableView.dequeueReusableCell(for: indexPath)
guard let licence = self.downloadedLicence.get(at: indexPath.row) else { return cell }
cell.configure(licence: licence, config: self.config)
return cell
}
override func tableView(_ tableView: UITableView, estimatedHeightForRowAt indexPath: IndexPath) -> CGFloat {
@@ -6,7 +6,7 @@
import UIKit
final class OpenSourceTableViewCell: UITableViewCell {
final class OpenSourceTableViewCell: UITableViewCell, Reusable {
// MARK: - Lifecycle
@@ -29,15 +29,10 @@ final class OpenSourceTableViewCell: UITableViewCell {
// MARK: - Configure
/// Initialize the cell content with Licence model
///
/// - Parameter licence: the licence model
func configure(licence: LicenceFile, config: OpenSourceControllerConfig) {
// Set text
self.textLabel?.attributedText = licence.attributedContent
self.textLabel?.textColor = config.uiConfig.licenceTextColor
// Background
if let backgroundColor = config.uiConfig.licenceBackgroundColor {
self.backgroundColor = backgroundColor
}
@@ -14,6 +14,8 @@ final class OpenSourceViewController: UIViewController {
fileprivate var licences: [LicenceFile]
fileprivate var licenceLoader: LicenceLoader
fileprivate var config: OpenSourceControllerConfig
fileprivate lazy var loadingController = {
@@ -28,7 +30,8 @@ final class OpenSourceViewController: UIViewController {
// MARK: - Lifecyle
init(licences: [LicenceFile], showCloseButton: Bool, configuration: OpenSourceControllerConfig) {
init(licences: [LicenceFile], showCloseButton: Bool, configuration: OpenSourceControllerConfig, licenceLoader: LicenceLoader) {
self.licenceLoader = licenceLoader
self.licences = licences
self.showCloseButton = showCloseButton
self.config = configuration
@@ -44,6 +47,8 @@ final class OpenSourceViewController: UIViewController {
self.title = self.config.title
self.view.backgroundColor = self.config.uiConfig.backgroundColor
self.prepareCloseButton()
self.prepareStyle()
@@ -54,12 +59,10 @@ final class OpenSourceViewController: UIViewController {
// MARK: - Prepare
fileprivate func prepareStyle() {
// Apply navigation bar tint color if needed
if let tintColor = self.config.uiConfig.barTintColor {
self.navigationController?.navigationBar.barTintColor = tintColor
}
// Apply navigation bar text color if needed
if let textColor = self.config.uiConfig.titleColor {
let attribut = [NSAttributedString.Key.foregroundColor: textColor]
self.navigationController?.navigationBar.titleTextAttributes = attribut
@@ -67,7 +70,7 @@ final class OpenSourceViewController: UIViewController {
}
fileprivate func prepareLicences() {
LicenceLoader.downloadLicences(licences: licences, config: config) { [weak self] in
self.licenceLoader.downloadLicences(licences: licences, config: config) { [weak self] in
guard let strongSelf = self else { return }
let listController = LicenceListViewController(downloadedLicence: strongSelf.licences, config: strongSelf.config)
strongSelf.loadingController.remove()
+1 -1
View File
@@ -13,7 +13,7 @@ final class LicenceLoader {
/// - Parameters:
/// - licences: array which contains licence model model
/// - completion: end downloading completion
class func downloadLicences(licences: [LicenceFile],
func downloadLicences(licences: [LicenceFile],
config: OpenSourceControllerConfig,
completion: @escaping () -> Void) {
let licenceGroupe = DispatchGroup()
+10 -2
View File
@@ -18,7 +18,11 @@ open class OpenSourceController: NSObject {
///
/// - Parameter from: the source controller
open func presentOpenSourceController(from: UIViewController) {
let licenceController = OpenSourceViewController(licences: licences, showCloseButton: true, configuration: config)
let loader: LicenceLoader = LicenceLoader()
let licenceController = OpenSourceViewController(licences: licences,
showCloseButton: true,
configuration: config,
licenceLoader: loader)
let navController = UINavigationController(rootViewController: licenceController)
from.present(navController, animated: true)
}
@@ -27,7 +31,11 @@ open class OpenSourceController: NSObject {
///
/// - Parameter from: the source controller
open func pushOpenSourceController(from: UIViewController) {
let licenceController = OpenSourceViewController(licences: licences, showCloseButton: false, configuration: config)
let loader: LicenceLoader = LicenceLoader()
let licenceController = OpenSourceViewController(licences: licences,
showCloseButton: false,
configuration: config,
licenceLoader: loader)
guard let navigationController = from.navigationController else {
assertionFailure("Source controller isn't embeded in navigation controller. Can't push.")
return
+19
View File
@@ -0,0 +1,19 @@
//
// Reusable.swift
// OpenSourceControllerDemo
//
// Created by Florian Gabach on 10/12/2018.
// Copyright © 2018 OpenSourceController. All rights reserved.
//
import Foundation
public protocol Reusable: class {
static var reuseIdentifier: String { get }
}
public extension Reusable {
static var reuseIdentifier: String {
return String(describing: self)
}
}
@@ -0,0 +1,28 @@
//
// UITableView+Extensions.swift
// OpenSourceControllerDemo
//
// Created by Florian Gabach on 10/12/2018.
// Copyright © 2018 OpenSourceController. All rights reserved.
//
import UIKit
extension UITableView {
final func register<T: UITableViewCell>(cellType: T.Type)
where T: Reusable {
self.register(cellType.self, forCellReuseIdentifier: cellType.reuseIdentifier)
}
final func dequeueReusableCell<T: UITableViewCell>(for indexPath: IndexPath, cellType: T.Type = T.self) -> T
where T: Reusable {
guard let cell = self.dequeueReusableCell(withIdentifier: cellType.reuseIdentifier, for: indexPath) as? T else {
fatalError(
"Failed to dequeue a cell with identifier \(cellType.reuseIdentifier) matching type \(cellType.self). "
+ "Check that the reuseIdentifier is set properly in your XIB/Storyboard "
+ "and that you registered the cell beforehand"
)
}
return cell
}
}
+6
View File
@@ -0,0 +1,6 @@
# app_identifier("[[APP_IDENTIFIER]]") # The bundle identifier of your app
# apple_id("[[APPLE_ID]]") # Your Apple email address
# For more information about the Appfile, see:
# https://docs.fastlane.tools/advanced/#appfile
+33
View File
@@ -0,0 +1,33 @@
# Usage : bundle exec fastlane ios (patch | minor | major)
default_platform(:ios)
platform :ios do
podspec_name = "OpenSourceController.podspec"
desc "Release a new version with a patch bump_type"
lane :patch do
release("patch")
end
desc "Release a new version with a minor bump_type"
lane :minor do
release("minor")
end
desc "Release a new version with a major bump_type"
lane :major do
release("major")
end
def release(type)
pod_lib_lint(use_bundle_exec: false)
version = version_bump_podspec(path: podspec_name, bump_type: type)
git_add(path: podspec_name)
git_commit(path: [podspec_name], message: "#{version} release")
add_git_tag(tag: "#{version}")
push_to_git_remote
pod_push(use_bundle_exec: false)
end
end