From 6c5f4dc2e43a21ee870de7833a1f3a43e2ef4726 Mon Sep 17 00:00:00 2001 From: Jakub Mazur Date: Sat, 17 Jul 2021 19:31:09 +0200 Subject: [PATCH 1/6] Swift Package Manager (#1) * add Package.swift * Update Package.swift * scheme build * add Rx support * rename from "+" * set empty dependencies for main target * update readme --- .gitignore | 7 +++ .../Core/ReCaptcha__Tests.swift | 3 +- .../RxSwift/ReCaptcha+Rx__Tests.swift | 4 ++ Package.swift | 52 +++++++++++++++++++ README.md | 10 ++++ ReCaptcha/Classes/Rx/SPM_exported.swift | 16 ++++++ 6 files changed, 90 insertions(+), 2 deletions(-) create mode 100644 Package.swift create mode 100644 ReCaptcha/Classes/Rx/SPM_exported.swift diff --git a/.gitignore b/.gitignore index 8cf9e54..7471d46 100644 --- a/.gitignore +++ b/.gitignore @@ -55,3 +55,10 @@ fastlane/test_output ## VS Code .vscode + +## Swift Package Manager +Packages/ +Package.pins +Package.resolved +.swiftpm +.build/ diff --git a/Example/ReCaptcha_Tests/Core/ReCaptcha__Tests.swift b/Example/ReCaptcha_Tests/Core/ReCaptcha__Tests.swift index 232b508..e132277 100644 --- a/Example/ReCaptcha_Tests/Core/ReCaptcha__Tests.swift +++ b/Example/ReCaptcha_Tests/Core/ReCaptcha__Tests.swift @@ -8,9 +8,8 @@ import AppSwizzle @testable import ReCaptcha -import RxSwift -import XCTest +import XCTest class ReCaptcha__Tests: XCTestCase { fileprivate struct Constants { diff --git a/Example/ReCaptcha_Tests/RxSwift/ReCaptcha+Rx__Tests.swift b/Example/ReCaptcha_Tests/RxSwift/ReCaptcha+Rx__Tests.swift index 9e6c43c..2ae3683 100644 --- a/Example/ReCaptcha_Tests/RxSwift/ReCaptcha+Rx__Tests.swift +++ b/Example/ReCaptcha_Tests/RxSwift/ReCaptcha+Rx__Tests.swift @@ -6,6 +6,8 @@ // Copyright © 2018 ReCaptcha. All rights reserved. // +#if canImport(RxSwift) && canImport(RxBlocking) && canImport(RxSwift) + @testable import ReCaptcha import RxBlocking @@ -263,3 +265,5 @@ class ReCaptcha_Rx__Tests: XCTestCase { } } } + +#endif diff --git a/Package.swift b/Package.swift new file mode 100644 index 0000000..d872d68 --- /dev/null +++ b/Package.swift @@ -0,0 +1,52 @@ +// swift-tools-version:5.3 +// The swift-tools-version declares the minimum version of Swift required to build this package. + +import PackageDescription + +let package = Package( + name: "ReCaptcha", + platforms: [ + .iOS(.v9) + ], + products: [ + .library( + name: "ReCaptcha", + targets: ["ReCaptcha"]), + .library( + name: "ReCaptchaRx", + targets: ["ReCaptchaRx"]) + ], + dependencies: [ + .package(url: "https://github.com/ReactiveX/RxSwift.git", from: "6.0.0"), + .package(url: "https://github.com/JakubMazur/AppSwizzle.git", from: "1.3.2"), + ], + targets: [ + .target( + name: "ReCaptcha", + dependencies: [], + path: "ReCaptcha/Classes", + exclude: ["Rx"], + linkerSettings: [ + .linkedFramework("UIKit") + ] + ), + .target( + name: "ReCaptchaRx", + dependencies: [ + "ReCaptcha", "RxSwift" + ], + path: "ReCaptcha/Classes/Rx", + linkerSettings: [ + .linkedFramework("UIKit") + ]), + .testTarget( + name: "ReCaptcha_Tests", + dependencies: ["ReCaptcha", "AppSwizzle"], + path: "Example/ReCaptcha_Tests", + exclude: ["Info.plist"], + resources: [ + .copy("mock.html") + ]) + ] +) + diff --git a/README.md b/README.md index d0fd1c9..da04e62 100644 --- a/README.md +++ b/README.md @@ -40,7 +40,17 @@ pod "ReCaptcha" pod "ReCaptcha/RxSwift" ``` +#### Swift Package Manager + +```swift +https://github.com/fjcaetano/ReCaptcha +``` + +Adding this in project dependency in Xcode will show option to add `ReCaptcha` and `ReCaptchaRx`, the latter containing +internal dependency for ReCaptcha framework. + #### Carthage + ``` ruby github "fjcaetano/ReCaptcha" ``` diff --git a/ReCaptcha/Classes/Rx/SPM_exported.swift b/ReCaptcha/Classes/Rx/SPM_exported.swift new file mode 100644 index 0000000..9d2c275 --- /dev/null +++ b/ReCaptcha/Classes/Rx/SPM_exported.swift @@ -0,0 +1,16 @@ +// +// SPM_exported.swift +// +// +// Created by Jakub Mazur on 15/07/2021. +// + +/* + +Since Swift Package Manager have directory structure and folders cannot override this is needed to use internal dependency in ReCaptcha+Rx.swift file. + +This file should NOT be included in Cocoapods and Carthage build + +*/ + +@_exported import ReCaptcha From 61bf0fc72553638dd03fa8f0e689cd2ad71c08f9 Mon Sep 17 00:00:00 2001 From: Jakub Mazur Date: Sat, 17 Jul 2021 20:05:13 +0200 Subject: [PATCH 2/6] fix travis SPM issues (#2) --- Package.swift | 3 +-- ReCaptcha/Classes/Rx/SPM_exported.swift | 3 ++- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Package.swift b/Package.swift index d872d68..d8e7193 100644 --- a/Package.swift +++ b/Package.swift @@ -18,7 +18,7 @@ let package = Package( ], dependencies: [ .package(url: "https://github.com/ReactiveX/RxSwift.git", from: "6.0.0"), - .package(url: "https://github.com/JakubMazur/AppSwizzle.git", from: "1.3.2"), + .package(url: "https://github.com/JakubMazur/AppSwizzle.git", from: "1.3.2") ], targets: [ .target( @@ -49,4 +49,3 @@ let package = Package( ]) ] ) - diff --git a/ReCaptcha/Classes/Rx/SPM_exported.swift b/ReCaptcha/Classes/Rx/SPM_exported.swift index 9d2c275..6daefe3 100644 --- a/ReCaptcha/Classes/Rx/SPM_exported.swift +++ b/ReCaptcha/Classes/Rx/SPM_exported.swift @@ -7,7 +7,8 @@ /* -Since Swift Package Manager have directory structure and folders cannot override this is needed to use internal dependency in ReCaptcha+Rx.swift file. +Since Swift Package Manager have directory structure and folders cannot override +this module import is needed to use internal dependency in ReCaptcha+Rx.swift file. This file should NOT be included in Cocoapods and Carthage build From 8176b243db5b7ac7f2f0d2118501eed1470fd989 Mon Sep 17 00:00:00 2001 From: Jakub Mazur Date: Sat, 17 Jul 2021 20:36:58 +0200 Subject: [PATCH 3/6] update AppSwizzle to same target (iOS 9.0) --- Package.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Package.swift b/Package.swift index d8e7193..d2aa5c0 100644 --- a/Package.swift +++ b/Package.swift @@ -18,7 +18,7 @@ let package = Package( ], dependencies: [ .package(url: "https://github.com/ReactiveX/RxSwift.git", from: "6.0.0"), - .package(url: "https://github.com/JakubMazur/AppSwizzle.git", from: "1.3.2") + .package(url: "https://github.com/JakubMazur/AppSwizzle.git", from: "1.3.3") ], targets: [ .target( From 2c539e6eb4de60969f15491bb27493de1eafb859 Mon Sep 17 00:00:00 2001 From: Jakub Mazur Date: Sat, 17 Jul 2021 20:39:40 +0200 Subject: [PATCH 4/6] Update ReCaptcha+Rx__Tests.swift --- Example/ReCaptcha_Tests/RxSwift/ReCaptcha+Rx__Tests.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Example/ReCaptcha_Tests/RxSwift/ReCaptcha+Rx__Tests.swift b/Example/ReCaptcha_Tests/RxSwift/ReCaptcha+Rx__Tests.swift index 2ae3683..fc8104d 100644 --- a/Example/ReCaptcha_Tests/RxSwift/ReCaptcha+Rx__Tests.swift +++ b/Example/ReCaptcha_Tests/RxSwift/ReCaptcha+Rx__Tests.swift @@ -6,7 +6,7 @@ // Copyright © 2018 ReCaptcha. All rights reserved. // -#if canImport(RxSwift) && canImport(RxBlocking) && canImport(RxSwift) +#if canImport(RxSwift) && canImport(RxBlocking) && canImport(RxCocoa) @testable import ReCaptcha From fcb289f09b29e301ddf992b30f5835a9e443d6ed Mon Sep 17 00:00:00 2001 From: Jakub Mazur Date: Mon, 27 Sep 2021 18:58:37 +0200 Subject: [PATCH 5/6] Update SPM (#3) * process recaptcha.html * use module --- Package.swift | 7 +++++-- ReCaptcha/Classes/ReCaptcha.swift | 11 +---------- 2 files changed, 6 insertions(+), 12 deletions(-) diff --git a/Package.swift b/Package.swift index d2aa5c0..28dcf07 100644 --- a/Package.swift +++ b/Package.swift @@ -24,8 +24,11 @@ let package = Package( .target( name: "ReCaptcha", dependencies: [], - path: "ReCaptcha/Classes", - exclude: ["Rx"], + path: "ReCaptcha", + exclude: ["Classes/Rx"], + resources: [ + .process("Assets/recaptcha.html") + ], linkerSettings: [ .linkedFramework("UIKit") ] diff --git a/ReCaptcha/Classes/ReCaptcha.swift b/ReCaptcha/Classes/ReCaptcha.swift index d552175..5bede10 100644 --- a/ReCaptcha/Classes/ReCaptcha.swift +++ b/ReCaptcha/Classes/ReCaptcha.swift @@ -55,16 +55,7 @@ public class ReCaptcha { let baseURL: URL /// The Bundle that holds ReCaptcha's assets - private static let bundle: Bundle = { - let bundle = Bundle(for: ReCaptcha.self) - guard let cocoapodsBundle = bundle - .path(forResource: "ReCaptcha", ofType: "bundle") - .flatMap(Bundle.init(path:)) else { - return bundle - } - - return cocoapodsBundle - }() + private static let bundle: Bundle = Bundle.module /** - parameters: From 6de3b67ee0b7f039a12ad461abd3264997e91d8b Mon Sep 17 00:00:00 2001 From: Jakub Mazur Date: Sun, 3 Apr 2022 13:18:14 +0200 Subject: [PATCH 6/6] SPM (#4) * process recaptcha.html * use module