diff --git a/.gitignore b/.gitignore index d4f09272..143464fa 100644 --- a/.gitignore +++ b/.gitignore @@ -16,3 +16,5 @@ profile *.moved-aside DerivedData .idea/ +# SPM +.build/ diff --git a/CoreAardvark.podspec b/CoreAardvark.podspec index 6aec94d7..24280b74 100644 --- a/CoreAardvark.podspec +++ b/CoreAardvark.podspec @@ -11,6 +11,6 @@ Pod::Spec.new do |s| s.ios.deployment_target = '14.0' s.watchos.deployment_target = '7.0' - s.source_files = 'Sources/CoreAardvark/**/*.{h,m,swift}' - s.private_header_files = 'Sources/CoreAardvark/**/*_Testing.h', 'Sources/CoreAardvark/PrivateCategories/*.h' + s.source_files = 'Sources/CoreAardvark/**/*.{h,m}', 'Sources/CoreAardvarkSwift/**/*.{swift}' + s.private_header_files = 'Sources/CoreAardvark/private/*.h' end diff --git a/Package.swift b/Package.swift new file mode 100644 index 00000000..28231e9c --- /dev/null +++ b/Package.swift @@ -0,0 +1,36 @@ +// swift-tools-version:5.10 + +import PackageDescription + +let package = Package( + name: "Aardvark", + defaultLocalization: "en", + platforms: [ + .iOS(.v14), + ], + products: [ + .library( + name: "CoreAardvark", + targets: ["CoreAardvark", "CoreAardvarkSwift"] + ), + ], + targets: [ + .target( + name: "CoreAardvark", + resources: [ + .process("Resources/en.lproj"), + ], + cSettings: [ + .define("SWIFT_PACKAGE"), + .headerSearchPath("private"), + ] + ), + .target( + name: "CoreAardvarkSwift", + dependencies: ["CoreAardvark"], + cSettings: [ + .define("SWIFT_PACKAGE"), + ] + ), + ] +) diff --git a/Sources/CoreAardvark/Logging/ARKLogMessage.m b/Sources/CoreAardvark/Logging/ARKLogMessage.m index ec5f5235..46a1b495 100644 --- a/Sources/CoreAardvark/Logging/ARKLogMessage.m +++ b/Sources/CoreAardvark/Logging/ARKLogMessage.m @@ -14,7 +14,11 @@ // limitations under the License. // +#if SWIFT_PACKAGE +#import "ARKLogMessage.h" +#else #import +#endif #import "AardvarkDefines.h" @@ -46,14 +50,14 @@ - (instancetype)initWithText:(NSString *)text image:(UIImage *)image type:(ARKLo - (instancetype)initWithText:(NSString *)text image:(UIImage *)image type:(ARKLogType)type parameters:(NSDictionary *)parameters userInfo:(NSDictionary *)userInfo date:(nonnull NSDate *)date; { self = [super init]; - + _text = [text copy]; _image = image; _type = type; _parameters = [parameters copy] ?: @{}; _userInfo = [userInfo copy] ?: @{}; _date = date; - + return self; } @@ -69,7 +73,7 @@ - (instancetype)initWithCoder:(NSCoder *)aDecoder; NSDate *const date = [([aDecoder decodeObjectOfClass:[NSDate class] forKey:ARKSelfKeyPath(date)] ?: [aDecoder decodeObjectOfClass:[NSDate class] forKey:ARKSelfKeyPath(creationDate)]) copy]; #pragma clang diagnostic pop NSDictionary *const parameters = [aDecoder decodeObjectOfClass:[NSDictionary class] forKey:ARKSelfKeyPath(parameters)]; - + return [self initWithText:text image:image type:type parameters:parameters userInfo:nil date:date]; } @@ -97,16 +101,16 @@ - (BOOL)isEqual:(id)object; if (![self isMemberOfClass:[object class]]) { return NO; } - + ARKLogMessage *otherMessage = (ARKLogMessage *)object; if (!(self.text == otherMessage.text || [self.text isEqualToString:otherMessage.text])) { return NO; } - + if (!(self.image == otherMessage.image || [self.image isEqual:otherMessage.image])) { return NO; } - + if (self.type != otherMessage.type) { return NO; } @@ -118,7 +122,7 @@ - (BOOL)isEqual:(id)object; if (![self.parameters isEqualToDictionary:otherMessage.parameters]) { return NO; } - + return YES; } diff --git a/Sources/CoreAardvark/Logging/ARKLogging.m b/Sources/CoreAardvark/Logging/ARKLogging.m index a1b2a8cb..3595d1de 100644 --- a/Sources/CoreAardvark/Logging/ARKLogging.m +++ b/Sources/CoreAardvark/Logging/ARKLogging.m @@ -14,7 +14,11 @@ // limitations under the License. // +#if SWIFT_PACKAGE +#import "ARKLogging.h" +#else #import +#endif #import "ARKLogDistributor.h" diff --git a/Sources/CoreAardvark/Logging/ARKDataArchive.h b/Sources/CoreAardvark/include/ARKDataArchive.h similarity index 100% rename from Sources/CoreAardvark/Logging/ARKDataArchive.h rename to Sources/CoreAardvark/include/ARKDataArchive.h diff --git a/Sources/CoreAardvark/Logging/ARKDefaultLogFormatter.h b/Sources/CoreAardvark/include/ARKDefaultLogFormatter.h similarity index 94% rename from Sources/CoreAardvark/Logging/ARKDefaultLogFormatter.h rename to Sources/CoreAardvark/include/ARKDefaultLogFormatter.h index 35dd73e1..43a0db99 100644 --- a/Sources/CoreAardvark/Logging/ARKDefaultLogFormatter.h +++ b/Sources/CoreAardvark/include/ARKDefaultLogFormatter.h @@ -16,7 +16,11 @@ @import Foundation; +#if SWIFT_PACKAGE +#import "ARKLogFormatter.h" +#else #import +#endif @interface ARKDefaultLogFormatter : NSObject diff --git a/Sources/CoreAardvark/Logging/ARKExceptionLogging.h b/Sources/CoreAardvark/include/ARKExceptionLogging.h similarity index 100% rename from Sources/CoreAardvark/Logging/ARKExceptionLogging.h rename to Sources/CoreAardvark/include/ARKExceptionLogging.h diff --git a/Sources/CoreAardvark/Logging/ARKLogDistributor.h b/Sources/CoreAardvark/include/ARKLogDistributor.h similarity index 98% rename from Sources/CoreAardvark/Logging/ARKLogDistributor.h rename to Sources/CoreAardvark/include/ARKLogDistributor.h index b8607e58..55188ec3 100644 --- a/Sources/CoreAardvark/Logging/ARKLogDistributor.h +++ b/Sources/CoreAardvark/include/ARKLogDistributor.h @@ -16,7 +16,11 @@ @import UIKit; +#if SWIFT_PACKAGE +#import "ARKLogTypes.h" +#else #import +#endif @protocol ARKLogObserver; diff --git a/Sources/CoreAardvark/Logging/ARKLogFormatter.h b/Sources/CoreAardvark/include/ARKLogFormatter.h similarity index 100% rename from Sources/CoreAardvark/Logging/ARKLogFormatter.h rename to Sources/CoreAardvark/include/ARKLogFormatter.h diff --git a/Sources/CoreAardvark/Logging/ARKLogMessage.h b/Sources/CoreAardvark/include/ARKLogMessage.h similarity index 97% rename from Sources/CoreAardvark/Logging/ARKLogMessage.h rename to Sources/CoreAardvark/include/ARKLogMessage.h index e1a4e402..43b1674e 100644 --- a/Sources/CoreAardvark/Logging/ARKLogMessage.h +++ b/Sources/CoreAardvark/include/ARKLogMessage.h @@ -16,7 +16,11 @@ @import UIKit; +#if SWIFT_PACKAGE +#import "ARKLogTypes.h" +#else #import +#endif @interface ARKLogMessage : NSObject diff --git a/Sources/CoreAardvark/Logging/ARKLogObserver.h b/Sources/CoreAardvark/include/ARKLogObserver.h similarity index 100% rename from Sources/CoreAardvark/Logging/ARKLogObserver.h rename to Sources/CoreAardvark/include/ARKLogObserver.h diff --git a/Sources/CoreAardvark/Logging/ARKLogStore.h b/Sources/CoreAardvark/include/ARKLogStore.h similarity index 98% rename from Sources/CoreAardvark/Logging/ARKLogStore.h rename to Sources/CoreAardvark/include/ARKLogStore.h index e48fa804..89ecec12 100644 --- a/Sources/CoreAardvark/Logging/ARKLogStore.h +++ b/Sources/CoreAardvark/include/ARKLogStore.h @@ -14,7 +14,11 @@ // limitations under the License. // +#if SWIFT_PACKAGE +#import "ARKLogObserver.h" +#else #import +#endif /// Stores log messages locally for use in bug reports. All methods and properties on this class are threadsafe. diff --git a/Sources/CoreAardvark/Logging/ARKLogTypes.h b/Sources/CoreAardvark/include/ARKLogTypes.h similarity index 100% rename from Sources/CoreAardvark/Logging/ARKLogTypes.h rename to Sources/CoreAardvark/include/ARKLogTypes.h diff --git a/Sources/CoreAardvark/Logging/ARKLogging.h b/Sources/CoreAardvark/include/ARKLogging.h similarity index 96% rename from Sources/CoreAardvark/Logging/ARKLogging.h rename to Sources/CoreAardvark/include/ARKLogging.h index 1e9e59f9..f0eeaad2 100644 --- a/Sources/CoreAardvark/Logging/ARKLogging.h +++ b/Sources/CoreAardvark/include/ARKLogging.h @@ -14,7 +14,11 @@ // limitations under the License. // +#if SWIFT_PACKAGE +#import "ARKLogTypes.h" +#else #import +#endif /// Logs a log with default type to the default log distributor. diff --git a/Sources/CoreAardvark/AardvarkDefines.h b/Sources/CoreAardvark/include/AardvarkDefines.h similarity index 100% rename from Sources/CoreAardvark/AardvarkDefines.h rename to Sources/CoreAardvark/include/AardvarkDefines.h diff --git a/Sources/CoreAardvark/CoreAardvark.h b/Sources/CoreAardvark/include/CoreAardvark.h similarity index 79% rename from Sources/CoreAardvark/CoreAardvark.h rename to Sources/CoreAardvark/include/CoreAardvark.h index 24ef3046..b2049f3c 100644 --- a/Sources/CoreAardvark/CoreAardvark.h +++ b/Sources/CoreAardvark/include/CoreAardvark.h @@ -23,7 +23,19 @@ FOUNDATION_EXPORT double CoreAardvark_iOSVersionNumber; //! Project version string for CoreAardvark-iOS. FOUNDATION_EXPORT const unsigned char CoreAardvark_iOSVersionString[]; - +#if SWIFT_PACKAGE +#import "AardvarkDefines.h" +#import "ARKDataArchive.h" +#import "ARKDefaultLogFormatter.h" +#import "ARKLogDistributor.h" +#import "ARKLogging.h" +#import "ARKLogFormatter.h" +#import "ARKLogMessage.h" +#import "ARKLogObserver.h" +#import "ARKLogStore.h" +#import "ARKLogTypes.h" +#import "ARKExceptionLogging.h" +#else #import #import #import @@ -35,3 +47,4 @@ FOUNDATION_EXPORT const unsigned char CoreAardvark_iOSVersionString[]; #import #import #import +#endif diff --git a/Sources/CoreAardvark/Logging/ARKDataArchive_Testing.h b/Sources/CoreAardvark/private/ARKDataArchive_Testing.h similarity index 93% rename from Sources/CoreAardvark/Logging/ARKDataArchive_Testing.h rename to Sources/CoreAardvark/private/ARKDataArchive_Testing.h index df28253e..9541a7e4 100644 --- a/Sources/CoreAardvark/Logging/ARKDataArchive_Testing.h +++ b/Sources/CoreAardvark/private/ARKDataArchive_Testing.h @@ -16,7 +16,11 @@ @import Foundation; +#if SWIFT_PACKAGE +#import "ARKDataArchive.h" +#else #import +#endif @interface ARKDataArchive (Private) diff --git a/Sources/CoreAardvark/Logging/ARKExceptionLogging_Testing.h b/Sources/CoreAardvark/private/ARKExceptionLogging_Testing.h similarity index 100% rename from Sources/CoreAardvark/Logging/ARKExceptionLogging_Testing.h rename to Sources/CoreAardvark/private/ARKExceptionLogging_Testing.h diff --git a/Sources/CoreAardvark/Logging/ARKLogDistributor_Protected.h b/Sources/CoreAardvark/private/ARKLogDistributor_Protected.h similarity index 93% rename from Sources/CoreAardvark/Logging/ARKLogDistributor_Protected.h rename to Sources/CoreAardvark/private/ARKLogDistributor_Protected.h index 9bf8d257..07c4fb82 100644 --- a/Sources/CoreAardvark/Logging/ARKLogDistributor_Protected.h +++ b/Sources/CoreAardvark/private/ARKLogDistributor_Protected.h @@ -16,7 +16,11 @@ @import Foundation; +#if SWIFT_PACKAGE +#import "ARKLogDistributor.h" +#else #import +#endif @interface ARKLogDistributor (Protected) diff --git a/Sources/CoreAardvark/Logging/ARKLogDistributor_Testing.h b/Sources/CoreAardvark/private/ARKLogDistributor_Testing.h similarity index 92% rename from Sources/CoreAardvark/Logging/ARKLogDistributor_Testing.h rename to Sources/CoreAardvark/private/ARKLogDistributor_Testing.h index ed349684..1269a9dd 100644 --- a/Sources/CoreAardvark/Logging/ARKLogDistributor_Testing.h +++ b/Sources/CoreAardvark/private/ARKLogDistributor_Testing.h @@ -16,7 +16,11 @@ @import Foundation; +#if SWIFT_PACKAGE +#import "ARKLogDistributor.h" +#else #import +#endif @interface ARKLogDistributor (Private) diff --git a/Sources/CoreAardvark/Logging/ARKLogStore_Testing.h b/Sources/CoreAardvark/private/ARKLogStore_Testing.h similarity index 100% rename from Sources/CoreAardvark/Logging/ARKLogStore_Testing.h rename to Sources/CoreAardvark/private/ARKLogStore_Testing.h diff --git a/Sources/CoreAardvark/PrivateCategories/NSFileHandle+ARKAdditions.h b/Sources/CoreAardvark/private/NSFileHandle+ARKAdditions.h similarity index 100% rename from Sources/CoreAardvark/PrivateCategories/NSFileHandle+ARKAdditions.h rename to Sources/CoreAardvark/private/NSFileHandle+ARKAdditions.h diff --git a/Sources/CoreAardvark/PrivateCategories/NSURL+ARKAdditions.h b/Sources/CoreAardvark/private/NSURL+ARKAdditions.h similarity index 100% rename from Sources/CoreAardvark/PrivateCategories/NSURL+ARKAdditions.h rename to Sources/CoreAardvark/private/NSURL+ARKAdditions.h diff --git a/Sources/CoreAardvark/Logging/ARKLogDistributor+SwiftAdditions.swift b/Sources/CoreAardvarkSwift/ARKLogDistributor+SwiftAdditions.swift similarity index 97% rename from Sources/CoreAardvark/Logging/ARKLogDistributor+SwiftAdditions.swift rename to Sources/CoreAardvarkSwift/ARKLogDistributor+SwiftAdditions.swift index 263da41a..02abc08a 100644 --- a/Sources/CoreAardvark/Logging/ARKLogDistributor+SwiftAdditions.swift +++ b/Sources/CoreAardvarkSwift/ARKLogDistributor+SwiftAdditions.swift @@ -16,6 +16,10 @@ import Foundation +#if SWIFT_PACKAGE +import CoreAardvark +#endif + extension ARKLogDistributor { /// Creates a log message and distributes it to the log observers. This is a convenience wrapper for Swift usage diff --git a/Sources/CoreAardvark/Logging/Logging.swift b/Sources/CoreAardvarkSwift/Logging.swift similarity index 97% rename from Sources/CoreAardvark/Logging/Logging.swift rename to Sources/CoreAardvarkSwift/Logging.swift index 44eaa936..e8f65907 100644 --- a/Sources/CoreAardvark/Logging/Logging.swift +++ b/Sources/CoreAardvarkSwift/Logging.swift @@ -16,6 +16,10 @@ import Foundation +#if SWIFT_PACKAGE +import CoreAardvark +#endif + /// Logs a new messages to the default Aardvark log distributor. /// /// - parameter text: The text of the log message.