diff --git a/Examples/DeveloperCocoapodsExample/Podfile.lock b/Examples/DeveloperCocoapodsExample/Podfile.lock index 64f717d2f..25acc2a16 100644 --- a/Examples/DeveloperCocoapodsExample/Podfile.lock +++ b/Examples/DeveloperCocoapodsExample/Podfile.lock @@ -9,7 +9,7 @@ EXTERNAL SOURCES: :path: "../../Appcues.podspec" SPEC CHECKSUMS: - Appcues: 2ef5422afb13bc37cdc5240703c54287ed400703 + Appcues: b8bf2e83c90c2a000f4e9f29b0e2244c4ddc09eb PODFILE CHECKSUM: d073e1e0b242bcec57ace36973467c46cd0f6c03 diff --git a/Sources/AppcuesKit/Generated/Appcues+ResourceBundle.swift b/Sources/AppcuesKit/Generated/Appcues+ResourceBundle.swift new file mode 100644 index 000000000..30fc8f923 --- /dev/null +++ b/Sources/AppcuesKit/Generated/Appcues+ResourceBundle.swift @@ -0,0 +1,25 @@ +// +// Appcues+ResourceBundle.swift +// Appcues +// +// Created by Matt on 2022-01-26. +// + +import Foundation + +extension Appcues { + /// Bundle reference used by SwifGen. + /// + /// Reference: https://github.com/SwiftGen/SwiftGen/blob/stable/Documentation/Articles/Customize-loading-of-resources.md + static let resourceBundle: Bundle = { + #if SWIFT_PACKAGE + return Bundle.module + #else + guard let url = Bundle(for: Appcues.self).url(forResource: "Appcues", withExtension: "bundle"), + let bundle = Bundle(url: url) else { + fatalError("Can't find 'Appcues' resource bundle") + } + return bundle + #endif + }() +} diff --git a/Sources/AppcuesKit/Generated/Asset+Generated.swift b/Sources/AppcuesKit/Generated/Asset+Generated.swift index 1ec4bbb0c..ce67e9d0e 100644 --- a/Sources/AppcuesKit/Generated/Asset+Generated.swift +++ b/Sources/AppcuesKit/Generated/Asset+Generated.swift @@ -38,7 +38,7 @@ internal struct ImageAsset { @available(iOS 8.0, tvOS 9.0, watchOS 2.0, macOS 10.7, *) internal var image: Image { - let bundle = BundleToken.bundle + let bundle = Appcues.resourceBundle #if os(iOS) || os(tvOS) let image = Image(named: name, in: bundle, compatibleWith: nil) #elseif os(macOS) @@ -56,7 +56,7 @@ internal struct ImageAsset { #if os(iOS) || os(tvOS) @available(iOS 8.0, tvOS 9.0, *) internal func image(compatibleWith traitCollection: UITraitCollection) -> Image { - let bundle = BundleToken.bundle + let bundle = Appcues.resourceBundle guard let result = Image(named: name, in: bundle, compatibleWith: traitCollection) else { fatalError("Unable to load image asset named \(name).") } @@ -71,7 +71,7 @@ internal extension ImageAsset.Image { message: "This initializer is unsafe on macOS, please use the ImageAsset.image property") convenience init?(asset: ImageAsset) { #if os(iOS) || os(tvOS) - let bundle = BundleToken.bundle + let bundle = Appcues.resourceBundle self.init(named: asset.name, in: bundle, compatibleWith: nil) #elseif os(macOS) self.init(named: NSImage.Name(asset.name)) @@ -80,15 +80,3 @@ internal extension ImageAsset.Image { #endif } } - -// swiftlint:disable convenience_type -private final class BundleToken { - static let bundle: Bundle = { - #if SWIFT_PACKAGE - return Bundle.module - #else - return Bundle(for: BundleToken.self) - #endif - }() -} -// swiftlint:enable convenience_type diff --git a/swiftgen.yml b/swiftgen.yml index b93a4a363..0974bf22b 100644 --- a/swiftgen.yml +++ b/swiftgen.yml @@ -15,4 +15,5 @@ xcassets: - templateName: swift5 params: forceProvidesNamespaces: true + bundle: Appcues.resourceBundle output: Asset+Generated.swift