Mercurial > public > simoleon
changeset 128:87f02d4f9c26
Add custom build configuration
Now I can add logic when the app is built under the Screenshots scheme
author | Dennis Concepcion Martin <dennisconcepcionmartin@gmail.com> |
---|---|
date | Mon, 16 Aug 2021 18:21:39 +0100 |
parents | 0e693e85db9b |
children | 1fd9e27df5be |
files | Simoleon.xcodeproj/project.pbxproj Simoleon.xcodeproj/xcshareddata/xcschemes/Screenshots.xcscheme Simoleon/Favorites.swift Simoleon/Helpers/CurrencySelector.swift Simoleon/Settings.swift |
diffstat | 5 files changed, 190 insertions(+), 21 deletions(-) [+] |
line wrap: on
line diff
--- a/Simoleon.xcodeproj/project.pbxproj Sun Aug 15 15:16:56 2021 +0100 +++ b/Simoleon.xcodeproj/project.pbxproj Mon Aug 16 18:21:39 2021 +0100 @@ -739,8 +739,10 @@ "@executable_path/Frameworks", "@loader_path/Frameworks", ); + OTHER_SWIFT_FLAGS = ""; PRODUCT_BUNDLE_IDENTIFIER = io.dennistech.SimoleonScreenshots; PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; TEST_TARGET_NAME = Simoleon; @@ -759,13 +761,168 @@ "@executable_path/Frameworks", "@loader_path/Frameworks", ); + OTHER_SWIFT_FLAGS = ""; PRODUCT_BUNDLE_IDENTIFIER = io.dennistech.SimoleonScreenshots; PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = ""; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = Simoleon; + }; + name = Release; + }; + 95B9EECD26CAC9EF00D94D60 /* Screenshots */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_ENABLE_OBJC_WEAK = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + COPY_PHASE_STRIP = NO; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu11; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 14.4; + MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; + MTL_FAST_MATH = YES; + ONLY_ACTIVE_ARCH = YES; + SDKROOT = iphoneos; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + }; + name = Screenshots; + }; + 95B9EECE26CAC9EF00D94D60 /* Screenshots */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 9585BB0F26A6B58500E3193E /* Config.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + CODE_SIGN_ENTITLEMENTS = Simoleon/Simoleon.entitlements; + CODE_SIGN_STYLE = Automatic; + CURRENT_PROJECT_VERSION = 1; + DEVELOPMENT_ASSET_PATHS = "\"Simoleon/Preview Content\""; + DEVELOPMENT_TEAM = MTX83R5H8X; + ENABLE_PREVIEWS = YES; + INFOPLIST_FILE = Simoleon/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 14.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + MARKETING_VERSION = 1.3.1; + PRODUCT_BUNDLE_IDENTIFIER = io.dennistech.Simoleon; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = SCREENSHOTS; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Screenshots; + }; + 95B9EECF26CAC9EF00D94D60 /* Screenshots */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + BUNDLE_LOADER = "$(TEST_HOST)"; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = MTX83R5H8X; + INFOPLIST_FILE = SimoleonTests/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 14.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = io.dennistech.SimoleonTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Simoleon.app/Simoleon"; + }; + name = Screenshots; + }; + 95B9EED026CAC9EF00D94D60 /* Screenshots */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = YES; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = MTX83R5H8X; + INFOPLIST_FILE = SimoleonUITests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + PRODUCT_BUNDLE_IDENTIFIER = io.dennistech.SimoleonUITests; + PRODUCT_NAME = "$(TARGET_NAME)"; SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; TEST_TARGET_NAME = Simoleon; }; - name = Release; + name = Screenshots; + }; + 95B9EED126CAC9EF00D94D60 /* Screenshots */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = MTX83R5H8X; + INFOPLIST_FILE = SimoleonScreenshots/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 14.5; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + OTHER_SWIFT_FLAGS = ""; + PRODUCT_BUNDLE_IDENTIFIER = io.dennistech.SimoleonScreenshots; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = Simoleon; + }; + name = Screenshots; }; 95C5B24C2697752700941585 /* Debug */ = { isa = XCBuildConfiguration; @@ -1028,6 +1185,7 @@ isa = XCConfigurationList; buildConfigurations = ( 959F6DEF26BBD53500101E53 /* Debug */, + 95B9EED126CAC9EF00D94D60 /* Screenshots */, 959F6DF026BBD53500101E53 /* Release */, ); defaultConfigurationIsVisible = 0; @@ -1037,6 +1195,7 @@ isa = XCConfigurationList; buildConfigurations = ( 95C5B24C2697752700941585 /* Debug */, + 95B9EECD26CAC9EF00D94D60 /* Screenshots */, 95C5B24D2697752700941585 /* Release */, ); defaultConfigurationIsVisible = 0; @@ -1046,6 +1205,7 @@ isa = XCConfigurationList; buildConfigurations = ( 95C5B24F2697752700941585 /* Debug */, + 95B9EECE26CAC9EF00D94D60 /* Screenshots */, 95C5B2502697752700941585 /* Release */, ); defaultConfigurationIsVisible = 0; @@ -1055,6 +1215,7 @@ isa = XCConfigurationList; buildConfigurations = ( 95C5B2522697752700941585 /* Debug */, + 95B9EECF26CAC9EF00D94D60 /* Screenshots */, 95C5B2532697752700941585 /* Release */, ); defaultConfigurationIsVisible = 0; @@ -1064,6 +1225,7 @@ isa = XCConfigurationList; buildConfigurations = ( 95C5B2552697752700941585 /* Debug */, + 95B9EED026CAC9EF00D94D60 /* Screenshots */, 95C5B2562697752700941585 /* Release */, ); defaultConfigurationIsVisible = 0;
--- a/Simoleon.xcodeproj/xcshareddata/xcschemes/Screenshots.xcscheme Sun Aug 15 15:16:56 2021 +0100 +++ b/Simoleon.xcodeproj/xcshareddata/xcschemes/Screenshots.xcscheme Mon Aug 16 18:21:39 2021 +0100 @@ -65,7 +65,7 @@ </BuildActionEntries> </BuildAction> <TestAction - buildConfiguration = "Debug" + buildConfiguration = "Screenshots" selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" shouldUseLaunchSchemeArgsEnv = "YES"
--- a/Simoleon/Favorites.swift Sun Aug 15 15:16:56 2021 +0100 +++ b/Simoleon/Favorites.swift Mon Aug 16 18:21:39 2021 +0100 @@ -11,14 +11,15 @@ @Environment(\.managedObjectContext) private var viewContext @FetchRequest( sortDescriptors: [NSSortDescriptor(keyPath: \Favorite.currencyPair, ascending: true)], - animation: .default) private var favorite: FetchedResults<Favorite> + animation: .default) private var favorites: FetchedResults<Favorite> var body: some View { VStack { - if favorite.isEmpty { + if favorites.isEmpty { Group { Image(systemName: "star") .font(.title) + Text("Search a currency pair and add it to favourites.") .padding(.top, 5) } @@ -27,7 +28,7 @@ .padding(.horizontal, 50) } else { List { - ForEach(favorite) { favorite in + ForEach(favorites) { favorite in NavigationLink(destination: Conversion(showNavigationView: false, currencyPair: favorite.currencyPair)) { CurrencyRow(currencyPairName: favorite.currencyPair) } @@ -47,15 +48,15 @@ NavigationView { content } } .onAppear { - #if DEBUG - generateFavoritesToScreenshots() + #if SCREENSHOTS + generateFavoritesForScreenshots() #endif } } private func removeFromFavorites(offsets: IndexSet) { withAnimation { - offsets.map { favorite[$0] }.forEach(viewContext.delete) + offsets.map { favorites[$0] }.forEach(viewContext.delete) do { try viewContext.save() @@ -66,17 +67,22 @@ } } - #if DEBUG - private func generateFavoritesToScreenshots() { - if favorite.isEmpty { - let favoriteCurrencies = [ - "EUR/USD", "BTC/USD", "USD/HKD", "USD/JPY", "AUD/USD", - "XAU/GBP", "DASH/ETH", "EUR/USD", "XAG/CAD" - ] - - for favoriteCurrency in favoriteCurrencies { - let favorite = Favorite(context: viewContext) - favorite.currencyPair = favoriteCurrency + #if SCREENSHOTS + /* + Save currencies to favourites to take screenshots for the App Store + */ + private func generateFavoritesForScreenshots() { + let favoriteCurrencies = [ + "EUR/USD", "BTC/USD", "USD/HKD", "USD/JPY", "AUD/USD", + "XAU/GBP", "DASH/ETH", "EUR/USD", "XAG/CAD" + ] + + let coreDataCurrencyPairs = favorites.map { $0.currencyPair } + + for favoriteCurrency in favoriteCurrencies { + if !coreDataCurrencyPairs.contains(favoriteCurrency) { + let favorites = Favorite(context: viewContext) + favorites.currencyPair = favoriteCurrency do { try viewContext.save()
--- a/Simoleon/Helpers/CurrencySelector.swift Sun Aug 15 15:16:56 2021 +0100 +++ b/Simoleon/Helpers/CurrencySelector.swift Mon Aug 16 18:21:39 2021 +0100 @@ -40,6 +40,7 @@ VStack { SearchBar(placeholder: "Search...", text: $searchCurrency) .padding() + .accessibilityIdentifier("CurrencySearchBar") List { if entitlementIsActive { @@ -97,7 +98,7 @@ // Check if user subscription is active private func checkEntitlement() { - #if DEBUG + #if SCREENSHOTS entitlementIsActive = true #else Purchases.shared.purchaserInfo { (purchaserInfo, error) in
--- a/Simoleon/Settings.swift Sun Aug 15 15:16:56 2021 +0100 +++ b/Simoleon/Settings.swift Mon Aug 16 18:21:39 2021 +0100 @@ -150,7 +150,7 @@ // Check if user subscription is active private func checkEntitlement() { - #if DEBUG + #if SCREENSHOTS entitlementIsActive = true #else Purchases.shared.purchaserInfo { (purchaserInfo, error) in