diff --git a/Bundle+Extension.swift b/Bundle+Extension.swift new file mode 100644 index 0000000..70a9ee2 --- /dev/null +++ b/Bundle+Extension.swift @@ -0,0 +1,35 @@ +import Foundation + +private class MyClass {} + +extension Bundle { + static var myClass: Bundle = { + #if DEBUG && SWIFT_PACKAGE + let bundleName = "MyClass" + let candidates = [ + /* Bundle should be present here when the package is linked into an App. */ + Bundle.main.resourceURL, + /* Bundle should be present here when the package is linked into a framework. */ + Bundle(for: MyClass.self).resourceURL, + /* For command-line tools. */ + Bundle.main.bundleURL, + /* Bundle should be present here when running previews from a different package (this is the path to "…/Debug-iphonesimulator/"). */ + Bundle(for: MyClass.self).resourceURL?.deletingLastPathComponent().deletingLastPathComponent(), + /* Bundle should be present here when running previews from a framework which imports framework whick imports PhoneNumberKit package (this is the path to "…/Debug-iphonesimulator/"). */ + Bundle(for: MyClass.self).resourceURL?.deletingLastPathComponent() + ] + for candidate in candidates { + let bundlePath = candidate?.appendingPathComponent(bundleName + ".bundle") + if let bundle = bundlePath.flatMap(Bundle.init(url:)) { + return bundle + } + } + #endif + + #if SWIFT_PACKAGE + return Bundle.module + #else + return Bundle(for: MyClass.self) + #endif + }() +}