diff --git a/.github/workflows/pull-request-tests.yml b/.github/workflows/pull-request-tests.yml index 54638ff..415070d 100644 --- a/.github/workflows/pull-request-tests.yml +++ b/.github/workflows/pull-request-tests.yml @@ -16,6 +16,15 @@ jobs: - name: Checkout uses: actions/checkout@v4 + - name: Select Xcode 26.4 + run: sudo xcode-select -s /Applications/Xcode_26.4.app + + - name: Install XcodeGen + run: brew install xcodegen + + - name: Generate Xcode project + run: xcodegen generate + - name: List Devices run: xcrun xctrace list devices 2>&1 diff --git a/.gitignore b/.gitignore index 9d23279..cc97ac9 100644 --- a/.gitignore +++ b/.gitignore @@ -40,7 +40,7 @@ playground.xcworkspace Packages/ # Package.pins Package.resolved -# *.xcodeproj +*.xcodeproj # # Xcode automatically generates this directory with a .xcworkspacedata file and xcuserdata # hence it is not needed unless you have added a package configuration file to your project diff --git a/Configs/Base.xcconfig b/Configs/Base.xcconfig new file mode 100644 index 0000000..24761df --- /dev/null +++ b/Configs/Base.xcconfig @@ -0,0 +1,65 @@ +// Base.xcconfig — Shared project-level settings + +// Deployment +IPHONEOS_DEPLOYMENT_TARGET = 18.5 +SDKROOT = iphoneos +TARGETED_DEVICE_FAMILY = 1,2 + +// Swift +SWIFT_VERSION = 5.0 +SWIFT_EMIT_LOC_STRINGS = YES + +// C / C++ +GCC_C_LANGUAGE_STANDARD = gnu17 +CLANG_CXX_LANGUAGE_STANDARD = gnu++20 + +// Modules & ARC +CLANG_ENABLE_MODULES = YES +CLANG_ENABLE_OBJC_ARC = YES +CLANG_ENABLE_OBJC_WEAK = YES + +// Search Paths +ALWAYS_SEARCH_USER_PATHS = NO + +// Warnings — Clang +CLANG_ANALYZER_NONNULL = YES +CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE +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 + +// Warnings — GCC +GCC_NO_COMMON_BLOCKS = YES +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 + +// Misc +ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES +COPY_PHASE_STRIP = NO +ENABLE_STRICT_OBJC_MSGSEND = YES +ENABLE_USER_SCRIPT_SANDBOXING = YES +LOCALIZATION_PREFERS_STRING_CATALOGS = YES +MTL_FAST_MATH = YES diff --git a/Configs/Debug.xcconfig b/Configs/Debug.xcconfig new file mode 100644 index 0000000..9c501fd --- /dev/null +++ b/Configs/Debug.xcconfig @@ -0,0 +1,22 @@ +// Debug.xcconfig + +#include "Base.xcconfig" + +// Debug Info +DEBUG_INFORMATION_FORMAT = dwarf +MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE + +// Optimization +GCC_OPTIMIZATION_LEVEL = 0 +SWIFT_OPTIMIZATION_LEVEL = -Onone +GCC_DYNAMIC_NO_PIC = NO + +// Architecture +ONLY_ACTIVE_ARCH = YES + +// Testing +ENABLE_TESTABILITY = YES + +// Preprocessor +GCC_PREPROCESSOR_DEFINITIONS = DEBUG=1 $(inherited) +SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG $(inherited) diff --git a/Configs/Release.xcconfig b/Configs/Release.xcconfig new file mode 100644 index 0000000..b664407 --- /dev/null +++ b/Configs/Release.xcconfig @@ -0,0 +1,14 @@ +// Release.xcconfig + +#include "Base.xcconfig" + +// Debug Info +DEBUG_INFORMATION_FORMAT = dwarf-with-dsym +MTL_ENABLE_DEBUG_INFO = NO + +// Optimization +SWIFT_COMPILATION_MODE = wholemodule + +// Validation +VALIDATE_PRODUCT = YES +ENABLE_NS_ASSERTIONS = NO diff --git a/Configs/SatsBuddy.xcconfig b/Configs/SatsBuddy.xcconfig new file mode 100644 index 0000000..1493818 --- /dev/null +++ b/Configs/SatsBuddy.xcconfig @@ -0,0 +1,37 @@ +// SatsBuddy.xcconfig — Target-level settings + +// Identity +PRODUCT_BUNDLE_IDENTIFIER = com.bitcoindevkit.SatsBuddy +PRODUCT_NAME = $(TARGET_NAME) +MARKETING_VERSION = 1.0 +CURRENT_PROJECT_VERSION = 1 + +// Signing +DEVELOPMENT_TEAM = WUQYBPQJWN +CODE_SIGN_STYLE = Automatic +CODE_SIGN_ENTITLEMENTS = SatsBuddy/SatsBuddy.entitlements + +// Info.plist +GENERATE_INFOPLIST_FILE = YES +INFOPLIST_FILE = SatsBuddy/Info.plist +INFOPLIST_KEY_CFBundleDisplayName = SATSBUDDY +INFOPLIST_KEY_ITSAppUsesNonExemptEncryption = NO +INFOPLIST_KEY_LSApplicationCategoryType = +INFOPLIST_KEY_NFCReaderUsageDescription = We need NFC access to scan SatsCards. +INFOPLIST_KEY_NSCameraUsageDescription = Camera access is required to scan Bitcoin addresses from QR codes +INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES +INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES +INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen +INFOPLIST_KEY_UIRequiredDeviceCapabilities = nfc +INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight +INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight + +// Assets +ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon +ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor + +// Previews +ENABLE_PREVIEWS = YES + +// Linking +LD_RUNPATH_SEARCH_PATHS = $(inherited) @executable_path/Frameworks diff --git a/README.md b/README.md index d9949d3..1b31e97 100644 --- a/README.md +++ b/README.md @@ -18,6 +18,43 @@ - [KeychainAccess](https://github.com/kishikawakatsumi/KeychainAccess) - [rust-cktap](https://github.com/bitcoindevkit/rust-cktap) +## Running SatsBuddy Locally + +### Prerequisites + +- Xcode (and Xcode Command Line Tools) +- [XcodeGen](https://github.com/yonaskolb/XcodeGen) +- Git + +You can verify the required tools are installed with: + +```bash +xcodebuild -version +xcodegen --version +git --version +``` + +Install XcodeGen via Homebrew if needed: + +```bash +brew install xcodegen +``` + +### Repository Setup + +Clone SatsBuddy, generate the Xcode project, and open it: + +```bash +git clone https://github.com/reez/SatsBuddy.git +cd SatsBuddy +xcodegen generate +open SatsBuddy.xcodeproj +``` + +The `.xcodeproj` is not checked into version control — it is generated from `project.yml` and the xcconfig files in `Configs/`. You need to run `xcodegen generate` after cloning and whenever source files are added or removed. + +SatsBuddy resolves `CKTap` from the remote `rust-cktap` Swift Package (`v0.2.2`). + ## SwiftUI Previews This project links native and FFI-heavy dependencies (`CKTap`, `BitcoinDevKit`). diff --git a/SatsBuddy.xcodeproj/project.pbxproj b/SatsBuddy.xcodeproj/project.pbxproj deleted file mode 100644 index 8f1fec5..0000000 --- a/SatsBuddy.xcodeproj/project.pbxproj +++ /dev/null @@ -1,646 +0,0 @@ -// !$*UTF8*$! -{ - archiveVersion = 1; - classes = { - }; - objectVersion = 77; - objects = { - -/* Begin PBXBuildFile section */ - 01FD2AA78828AFA7E431C8DD /* BitcoinDevKit in Frameworks */ = {isa = PBXBuildFile; productRef = AE75A9BB2E43D13700A3A159 /* BitcoinDevKit */; }; - 1AFAB31627BE9B8130EC10CA /* ModelValueTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2AFD110A4FECFF28E42FB3D8 /* ModelValueTests.swift */; }; - 3205429CB279D92EB77EF045 /* CardsStoreTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4A2D4D75541C6BE7B514F143 /* CardsStoreTests.swift */; }; - 67331506D4886C568D8F8FED /* TestSupport.swift in Sources */ = {isa = PBXBuildFile; fileRef = B4AC5C31F8AE2442FC9EBA8F /* TestSupport.swift */; }; - 6B4370B895AA7E93F396EDA9 /* SlotHistoryViewModelTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 97D21E20AA31FFE36EFC756C /* SlotHistoryViewModelTests.swift */; }; - 77B3C2CA2F76C2FA001A6F97 /* PriceStoreTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 77B3C2C92F76C2FA001A6F97 /* PriceStoreTests.swift */; }; - 895B27F4E3C2B0DA5ABE3C9B /* SatsCardViewModelTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 407D7DAB313D564E0D4E5E35 /* SatsCardViewModelTests.swift */; }; - 99EFCAFB7EB028A5A0F0253A /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 70B804D47EFF5F4F80B44A30 /* Foundation.framework */; }; - AE2B3E6B2E85968F0046F873 /* KeychainAccess in Frameworks */ = {isa = PBXBuildFile; productRef = AE2B3E6A2E85968F0046F873 /* KeychainAccess */; }; - AE3134762ED1152D0046FDAD /* CodeScanner in Frameworks */ = {isa = PBXBuildFile; productRef = AE3134752ED1152D0046FDAD /* CodeScanner */; }; - AE44A8672E7614EE00F00611 /* README.md in Resources */ = {isa = PBXBuildFile; fileRef = AE44A8662E7614EE00F00611 /* README.md */; }; - AE627CAD2E873F0000FB25C9 /* BitcoinUI in Frameworks */ = {isa = PBXBuildFile; productRef = AE627CAC2E873F0000FB25C9 /* BitcoinUI */; }; - AE75A9BC2E43D13700A3A159 /* BitcoinDevKit in Frameworks */ = {isa = PBXBuildFile; productRef = AE75A9BB2E43D13700A3A159 /* BitcoinDevKit */; }; - AEA64EAB2E67604100108F53 /* CKTap in Frameworks */ = {isa = PBXBuildFile; productRef = AEA64EAA2E67604100108F53 /* CKTap */; }; - D7F85A72F72279E8040CEF5E /* FeeViewModelTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8124BA935E5E83F0D5A1C7BA /* FeeViewModelTests.swift */; }; -/* End PBXBuildFile section */ - -/* Begin PBXContainerItemProxy section */ - 81509F3FEB4622DD81AC9149 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = AE2B97532E43ADDF002051EC /* Project object */; - proxyType = 1; - remoteGlobalIDString = AE2B975A2E43ADDF002051EC; - remoteInfo = SatsBuddy; - }; -/* End PBXContainerItemProxy section */ - -/* Begin PBXFileReference section */ - 2AFD110A4FECFF28E42FB3D8 /* ModelValueTests.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = ModelValueTests.swift; path = SatsBuddyTests/ModelValueTests.swift; sourceTree = ""; }; - 407D7DAB313D564E0D4E5E35 /* SatsCardViewModelTests.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SatsCardViewModelTests.swift; path = SatsBuddyTests/SatsCardViewModelTests.swift; sourceTree = ""; }; - 4A2D4D75541C6BE7B514F143 /* CardsStoreTests.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = CardsStoreTests.swift; path = SatsBuddyTests/CardsStoreTests.swift; sourceTree = ""; }; - 70B804D47EFF5F4F80B44A30 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS18.0.sdk/System/Library/Frameworks/Foundation.framework; sourceTree = DEVELOPER_DIR; }; - 77B3C2C92F76C2FA001A6F97 /* PriceStoreTests.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = PriceStoreTests.swift; path = SatsBuddyTests/PriceStoreTests.swift; sourceTree = ""; }; - 8124BA935E5E83F0D5A1C7BA /* FeeViewModelTests.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = FeeViewModelTests.swift; path = SatsBuddyTests/FeeViewModelTests.swift; sourceTree = ""; }; - 97D21E20AA31FFE36EFC756C /* SlotHistoryViewModelTests.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = SlotHistoryViewModelTests.swift; path = SatsBuddyTests/SlotHistoryViewModelTests.swift; sourceTree = ""; }; - AE2B975B2E43ADDF002051EC /* SatsBuddy.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SatsBuddy.app; sourceTree = BUILT_PRODUCTS_DIR; }; - AE44A8662E7614EE00F00611 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; - B4AC5C31F8AE2442FC9EBA8F /* TestSupport.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = TestSupport.swift; path = SatsBuddyTests/TestSupport.swift; sourceTree = ""; }; - E6E0597B70C34F72262A4F6F /* SatsBuddyTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = SatsBuddyTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; -/* End PBXFileReference section */ - -/* Begin PBXFileSystemSynchronizedBuildFileExceptionSet section */ - AEC2D9092E676C8500368DC1 /* Exceptions for "SatsBuddy" folder in "SatsBuddy" target */ = { - isa = PBXFileSystemSynchronizedBuildFileExceptionSet; - membershipExceptions = ( - Info.plist, - ); - target = AE2B975A2E43ADDF002051EC /* SatsBuddy */; - }; -/* End PBXFileSystemSynchronizedBuildFileExceptionSet section */ - -/* Begin PBXFileSystemSynchronizedRootGroup section */ - AE2B975D2E43ADDF002051EC /* SatsBuddy */ = { - isa = PBXFileSystemSynchronizedRootGroup; - exceptions = ( - AEC2D9092E676C8500368DC1 /* Exceptions for "SatsBuddy" folder in "SatsBuddy" target */, - ); - path = SatsBuddy; - sourceTree = ""; - }; -/* End PBXFileSystemSynchronizedRootGroup section */ - -/* Begin PBXFrameworksBuildPhase section */ - 6B1E6E5CC468999701319653 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 99EFCAFB7EB028A5A0F0253A /* Foundation.framework in Frameworks */, - 01FD2AA78828AFA7E431C8DD /* BitcoinDevKit in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - AE2B97582E43ADDF002051EC /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - AEA64EAB2E67604100108F53 /* CKTap in Frameworks */, - AE75A9BC2E43D13700A3A159 /* BitcoinDevKit in Frameworks */, - AE2B3E6B2E85968F0046F873 /* KeychainAccess in Frameworks */, - AE627CAD2E873F0000FB25C9 /* BitcoinUI in Frameworks */, - AE3134762ED1152D0046FDAD /* CodeScanner in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXFrameworksBuildPhase section */ - -/* Begin PBXGroup section */ - 4E3FF7FA856EE32F7D2D85A8 /* Frameworks */ = { - isa = PBXGroup; - children = ( - B16E16004ACB67B9571F9014 /* iOS */, - ); - name = Frameworks; - sourceTree = ""; - }; - 4E484444A7E8EFF3DAAD88C8 /* SatsBuddyTests */ = { - isa = PBXGroup; - children = ( - 77B3C2C92F76C2FA001A6F97 /* PriceStoreTests.swift */, - 4A2D4D75541C6BE7B514F143 /* CardsStoreTests.swift */, - 8124BA935E5E83F0D5A1C7BA /* FeeViewModelTests.swift */, - 2AFD110A4FECFF28E42FB3D8 /* ModelValueTests.swift */, - 407D7DAB313D564E0D4E5E35 /* SatsCardViewModelTests.swift */, - 97D21E20AA31FFE36EFC756C /* SlotHistoryViewModelTests.swift */, - B4AC5C31F8AE2442FC9EBA8F /* TestSupport.swift */, - ); - name = SatsBuddyTests; - sourceTree = ""; - }; - AE2B97522E43ADDF002051EC = { - isa = PBXGroup; - children = ( - AE44A8662E7614EE00F00611 /* README.md */, - AE2B975D2E43ADDF002051EC /* SatsBuddy */, - AE2B975C2E43ADDF002051EC /* Products */, - 4E3FF7FA856EE32F7D2D85A8 /* Frameworks */, - 4E484444A7E8EFF3DAAD88C8 /* SatsBuddyTests */, - ); - sourceTree = ""; - }; - AE2B975C2E43ADDF002051EC /* Products */ = { - isa = PBXGroup; - children = ( - AE2B975B2E43ADDF002051EC /* SatsBuddy.app */, - E6E0597B70C34F72262A4F6F /* SatsBuddyTests.xctest */, - ); - name = Products; - sourceTree = ""; - }; - B16E16004ACB67B9571F9014 /* iOS */ = { - isa = PBXGroup; - children = ( - 70B804D47EFF5F4F80B44A30 /* Foundation.framework */, - ); - name = iOS; - sourceTree = ""; - }; -/* End PBXGroup section */ - -/* Begin PBXNativeTarget section */ - 40F64AC2E246985E63AF8790 /* SatsBuddyTests */ = { - isa = PBXNativeTarget; - buildConfigurationList = B49B2D843F3F11CC6816494D /* Build configuration list for PBXNativeTarget "SatsBuddyTests" */; - buildPhases = ( - 16B88A8A495F8E878815C42F /* Sources */, - 6B1E6E5CC468999701319653 /* Frameworks */, - A573443BAEDC419EC7FBEF66 /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - 12C31BA8C45E1688CBB16BA3 /* PBXTargetDependency */, - ); - name = SatsBuddyTests; - packageProductDependencies = ( - AE75A9BB2E43D13700A3A159 /* BitcoinDevKit */, - ); - productName = SatsBuddyTests; - productReference = E6E0597B70C34F72262A4F6F /* SatsBuddyTests.xctest */; - productType = "com.apple.product-type.bundle.unit-test"; - }; - AE2B975A2E43ADDF002051EC /* SatsBuddy */ = { - isa = PBXNativeTarget; - buildConfigurationList = AE2B97662E43ADE1002051EC /* Build configuration list for PBXNativeTarget "SatsBuddy" */; - buildPhases = ( - AE2B97572E43ADDF002051EC /* Sources */, - AE2B97582E43ADDF002051EC /* Frameworks */, - AE2B97592E43ADDF002051EC /* Resources */, - ); - buildRules = ( - ); - dependencies = ( - ); - fileSystemSynchronizedGroups = ( - AE2B975D2E43ADDF002051EC /* SatsBuddy */, - ); - name = SatsBuddy; - packageProductDependencies = ( - AE75A9BB2E43D13700A3A159 /* BitcoinDevKit */, - AEA64EAA2E67604100108F53 /* CKTap */, - AE2B3E6A2E85968F0046F873 /* KeychainAccess */, - AE627CAC2E873F0000FB25C9 /* BitcoinUI */, - AE3134752ED1152D0046FDAD /* CodeScanner */, - ); - productName = SatsBuddy; - productReference = AE2B975B2E43ADDF002051EC /* SatsBuddy.app */; - productType = "com.apple.product-type.application"; - }; -/* End PBXNativeTarget section */ - -/* Begin PBXProject section */ - AE2B97532E43ADDF002051EC /* Project object */ = { - isa = PBXProject; - attributes = { - BuildIndependentTargetsInParallel = 1; - LastSwiftUpdateCheck = 2620; - LastUpgradeCheck = 1640; - TargetAttributes = { - 40F64AC2E246985E63AF8790 = { - CreatedOnToolsVersion = 16.4; - TestTargetID = AE2B975A2E43ADDF002051EC; - }; - AE2B975A2E43ADDF002051EC = { - CreatedOnToolsVersion = 16.4; - }; - }; - }; - buildConfigurationList = AE2B97562E43ADDF002051EC /* Build configuration list for PBXProject "SatsBuddy" */; - developmentRegion = en; - hasScannedForEncodings = 0; - knownRegions = ( - en, - Base, - ); - mainGroup = AE2B97522E43ADDF002051EC; - minimizedProjectReferenceProxies = 1; - packageReferences = ( - AE75A9BA2E43D13700A3A159 /* XCRemoteSwiftPackageReference "bdk-swift" */, - AEA64EA92E67604100108F53 /* XCRemoteSwiftPackageReference "rust-cktap" */, - AE2B3E692E85968F0046F873 /* XCRemoteSwiftPackageReference "KeychainAccess" */, - AE627CAB2E873F0000FB25C9 /* XCRemoteSwiftPackageReference "BitcoinUI" */, - AE3134742ED1152D0046FDAD /* XCRemoteSwiftPackageReference "CodeScanner" */, - ); - preferredProjectObjectVersion = 77; - productRefGroup = AE2B975C2E43ADDF002051EC /* Products */; - projectDirPath = ""; - projectRoot = ""; - targets = ( - AE2B975A2E43ADDF002051EC /* SatsBuddy */, - 40F64AC2E246985E63AF8790 /* SatsBuddyTests */, - ); - }; -/* End PBXProject section */ - -/* Begin PBXResourcesBuildPhase section */ - A573443BAEDC419EC7FBEF66 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - AE2B97592E43ADDF002051EC /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - AE44A8672E7614EE00F00611 /* README.md in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXResourcesBuildPhase section */ - -/* Begin PBXSourcesBuildPhase section */ - 16B88A8A495F8E878815C42F /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 3205429CB279D92EB77EF045 /* CardsStoreTests.swift in Sources */, - D7F85A72F72279E8040CEF5E /* FeeViewModelTests.swift in Sources */, - 1AFAB31627BE9B8130EC10CA /* ModelValueTests.swift in Sources */, - 77B3C2CA2F76C2FA001A6F97 /* PriceStoreTests.swift in Sources */, - 895B27F4E3C2B0DA5ABE3C9B /* SatsCardViewModelTests.swift in Sources */, - 6B4370B895AA7E93F396EDA9 /* SlotHistoryViewModelTests.swift in Sources */, - 67331506D4886C568D8F8FED /* TestSupport.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - AE2B97572E43ADDF002051EC /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; -/* End PBXSourcesBuildPhase section */ - -/* Begin PBXTargetDependency section */ - 12C31BA8C45E1688CBB16BA3 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = SatsBuddy; - target = AE2B975A2E43ADDF002051EC /* SatsBuddy */; - targetProxy = 81509F3FEB4622DD81AC9149 /* PBXContainerItemProxy */; - }; -/* End PBXTargetDependency section */ - -/* Begin XCBuildConfiguration section */ - 7DF46597C927B89E370CCA78 /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; - CLANG_ENABLE_OBJC_WEAK = NO; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = WUQYBPQJWN; - GENERATE_INFOPLIST_FILE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 18.5; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = com.bitcoindevkit.SatsBuddyTests; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; - SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/SatsBuddy.app/SatsBuddy"; - TEST_TARGET_NAME = SatsBuddy; - }; - name = Debug; - }; - AE2B97642E43ADE1002051EC /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; - 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; - DEVELOPMENT_TEAM = 9G6M658RKZ; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_TESTABILITY = YES; - ENABLE_USER_SCRIPT_SANDBOXING = YES; - GCC_C_LANGUAGE_STANDARD = gnu17; - 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 = 18.5; - LOCALIZATION_PREFERS_STRING_CATALOGS = YES; - MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; - MTL_FAST_MATH = YES; - ONLY_ACTIVE_ARCH = YES; - SDKROOT = iphoneos; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "DEBUG $(inherited)"; - SWIFT_OPTIMIZATION_LEVEL = "-Onone"; - }; - name = Debug; - }; - AE2B97652E43ADE1002051EC /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ALWAYS_SEARCH_USER_PATHS = NO; - ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES; - CLANG_ANALYZER_NONNULL = YES; - CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; - CLANG_CXX_LANGUAGE_STANDARD = "gnu++20"; - 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-with-dsym"; - DEVELOPMENT_TEAM = 9G6M658RKZ; - ENABLE_NS_ASSERTIONS = NO; - ENABLE_STRICT_OBJC_MSGSEND = YES; - ENABLE_USER_SCRIPT_SANDBOXING = YES; - GCC_C_LANGUAGE_STANDARD = gnu17; - GCC_NO_COMMON_BLOCKS = YES; - 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 = 18.5; - LOCALIZATION_PREFERS_STRING_CATALOGS = YES; - MTL_ENABLE_DEBUG_INFO = NO; - MTL_FAST_MATH = YES; - SDKROOT = iphoneos; - SWIFT_COMPILATION_MODE = wholemodule; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; - AE2B97672E43ADE1002051EC /* Debug */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; - CODE_SIGN_ENTITLEMENTS = SatsBuddy/SatsBuddy.entitlements; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = WUQYBPQJWN; - ENABLE_PREVIEWS = YES; - GENERATE_INFOPLIST_FILE = YES; - INFOPLIST_FILE = SatsBuddy/Info.plist; - INFOPLIST_KEY_CFBundleDisplayName = SATSBUDDY; - INFOPLIST_KEY_ITSAppUsesNonExemptEncryption = NO; - INFOPLIST_KEY_LSApplicationCategoryType = ""; - INFOPLIST_KEY_NFCReaderUsageDescription = "SATSBUDDY uses NFC to scan your SATSCARD, read slot details, and sign transactions."; - INFOPLIST_KEY_NSCameraUsageDescription = "Camera access is required to scan Bitcoin addresses from QR codes"; - INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; - INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; - INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; - INFOPLIST_KEY_UIRequiredDeviceCapabilities = nfc; - INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; - INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = com.bitcoindevkit.SatsBuddy; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_EMIT_LOC_STRINGS = YES; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - AE2B97682E43ADE1002051EC /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; - CODE_SIGN_ENTITLEMENTS = SatsBuddy/SatsBuddy.entitlements; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = WUQYBPQJWN; - ENABLE_PREVIEWS = YES; - GENERATE_INFOPLIST_FILE = YES; - INFOPLIST_FILE = SatsBuddy/Info.plist; - INFOPLIST_KEY_CFBundleDisplayName = SATSBUDDY; - INFOPLIST_KEY_ITSAppUsesNonExemptEncryption = NO; - INFOPLIST_KEY_LSApplicationCategoryType = ""; - INFOPLIST_KEY_NFCReaderUsageDescription = "SATSBUDDY uses NFC to scan your SATSCARD, read slot details, and sign transactions."; - INFOPLIST_KEY_NSCameraUsageDescription = "Camera access is required to scan Bitcoin addresses from QR codes"; - INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES; - INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; - INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; - INFOPLIST_KEY_UIRequiredDeviceCapabilities = nfc; - INFOPLIST_KEY_UISupportedInterfaceOrientations_iPad = "UIInterfaceOrientationPortrait UIInterfaceOrientationPortraitUpsideDown UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; - INFOPLIST_KEY_UISupportedInterfaceOrientations_iPhone = "UIInterfaceOrientationPortrait UIInterfaceOrientationLandscapeLeft UIInterfaceOrientationLandscapeRight"; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - MARKETING_VERSION = 1.0; - PRODUCT_BUNDLE_IDENTIFIER = com.bitcoindevkit.SatsBuddy; - PRODUCT_NAME = "$(TARGET_NAME)"; - SWIFT_EMIT_LOC_STRINGS = YES; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Release; - }; - F3B33B93E29806AC50C8AEB5 /* Release */ = { - isa = XCBuildConfiguration; - buildSettings = { - BUNDLE_LOADER = "$(TEST_HOST)"; - CLANG_ENABLE_OBJC_WEAK = NO; - CODE_SIGN_STYLE = Automatic; - CURRENT_PROJECT_VERSION = 1; - DEVELOPMENT_TEAM = WUQYBPQJWN; - GENERATE_INFOPLIST_FILE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 18.5; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - PRODUCT_BUNDLE_IDENTIFIER = com.bitcoindevkit.SatsBuddyTests; - PRODUCT_NAME = "$(TARGET_NAME)"; - SDKROOT = iphoneos; - SUPPORTED_PLATFORMS = "iphoneos iphonesimulator"; - SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2"; - TEST_HOST = "$(BUILT_PRODUCTS_DIR)/SatsBuddy.app/SatsBuddy"; - TEST_TARGET_NAME = SatsBuddy; - VALIDATE_PRODUCT = YES; - }; - name = Release; - }; -/* End XCBuildConfiguration section */ - -/* Begin XCConfigurationList section */ - AE2B97562E43ADDF002051EC /* Build configuration list for PBXProject "SatsBuddy" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - AE2B97642E43ADE1002051EC /* Debug */, - AE2B97652E43ADE1002051EC /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - AE2B97662E43ADE1002051EC /* Build configuration list for PBXNativeTarget "SatsBuddy" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - AE2B97672E43ADE1002051EC /* Debug */, - AE2B97682E43ADE1002051EC /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - B49B2D843F3F11CC6816494D /* Build configuration list for PBXNativeTarget "SatsBuddyTests" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - F3B33B93E29806AC50C8AEB5 /* Release */, - 7DF46597C927B89E370CCA78 /* Debug */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; -/* End XCConfigurationList section */ - -/* Begin XCRemoteSwiftPackageReference section */ - AE2B3E692E85968F0046F873 /* XCRemoteSwiftPackageReference "KeychainAccess" */ = { - isa = XCRemoteSwiftPackageReference; - repositoryURL = "https://github.com/kishikawakatsumi/KeychainAccess"; - requirement = { - kind = exactVersion; - version = 4.2.2; - }; - }; - AE3134742ED1152D0046FDAD /* XCRemoteSwiftPackageReference "CodeScanner" */ = { - isa = XCRemoteSwiftPackageReference; - repositoryURL = "https://github.com/twostraws/CodeScanner.git"; - requirement = { - kind = exactVersion; - version = 2.5.2; - }; - }; - AE627CAB2E873F0000FB25C9 /* XCRemoteSwiftPackageReference "BitcoinUI" */ = { - isa = XCRemoteSwiftPackageReference; - repositoryURL = "https://github.com/reez/BitcoinUI"; - requirement = { - branch = main; - kind = branch; - }; - }; - AE75A9BA2E43D13700A3A159 /* XCRemoteSwiftPackageReference "bdk-swift" */ = { - isa = XCRemoteSwiftPackageReference; - repositoryURL = "https://github.com/bitcoindevkit/bdk-swift"; - requirement = { - kind = exactVersion; - version = 2.3.1; - }; - }; - AEA64EA92E67604100108F53 /* XCRemoteSwiftPackageReference "rust-cktap" */ = { - isa = XCRemoteSwiftPackageReference; - repositoryURL = "https://github.com/bitcoindevkit/rust-cktap"; - requirement = { - kind = exactVersion; - version = 0.2.2; - }; - }; -/* End XCRemoteSwiftPackageReference section */ - -/* Begin XCSwiftPackageProductDependency section */ - AE2B3E6A2E85968F0046F873 /* KeychainAccess */ = { - isa = XCSwiftPackageProductDependency; - package = AE2B3E692E85968F0046F873 /* XCRemoteSwiftPackageReference "KeychainAccess" */; - productName = KeychainAccess; - }; - AE3134752ED1152D0046FDAD /* CodeScanner */ = { - isa = XCSwiftPackageProductDependency; - package = AE3134742ED1152D0046FDAD /* XCRemoteSwiftPackageReference "CodeScanner" */; - productName = CodeScanner; - }; - AE627CAC2E873F0000FB25C9 /* BitcoinUI */ = { - isa = XCSwiftPackageProductDependency; - package = AE627CAB2E873F0000FB25C9 /* XCRemoteSwiftPackageReference "BitcoinUI" */; - productName = BitcoinUI; - }; - AE75A9BB2E43D13700A3A159 /* BitcoinDevKit */ = { - isa = XCSwiftPackageProductDependency; - package = AE75A9BA2E43D13700A3A159 /* XCRemoteSwiftPackageReference "bdk-swift" */; - productName = BitcoinDevKit; - }; - AEA64EAA2E67604100108F53 /* CKTap */ = { - isa = XCSwiftPackageProductDependency; - package = AEA64EA92E67604100108F53 /* XCRemoteSwiftPackageReference "rust-cktap" */; - productName = CKTap; - }; -/* End XCSwiftPackageProductDependency section */ - }; - rootObject = AE2B97532E43ADDF002051EC /* Project object */; -} diff --git a/SatsBuddy.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/SatsBuddy.xcodeproj/project.xcworkspace/contents.xcworkspacedata deleted file mode 100644 index 919434a..0000000 --- a/SatsBuddy.xcodeproj/project.xcworkspace/contents.xcworkspacedata +++ /dev/null @@ -1,7 +0,0 @@ - - - - - diff --git a/project.yml b/project.yml new file mode 100644 index 0000000..1320cf7 --- /dev/null +++ b/project.yml @@ -0,0 +1,87 @@ +name: SatsBuddy + +options: + xcodeVersion: "16.3" + deploymentTarget: + iOS: "18.5" + defaultConfig: Release + +configs: + Debug: debug + Release: release + +settings: + configs: + Debug: + xcconfig: Configs/Debug.xcconfig + Release: + xcconfig: Configs/Release.xcconfig + +packages: + bdk-swift: + url: https://github.com/bitcoindevkit/bdk-swift + exactVersion: "2.3.1" + rust-cktap: + url: https://github.com/bitcoindevkit/rust-cktap + exactVersion: "0.2.2" + KeychainAccess: + url: https://github.com/kishikawakatsumi/KeychainAccess + exactVersion: "4.2.2" + BitcoinUI: + url: https://github.com/reez/BitcoinUI + branch: main + CodeScanner: + url: https://github.com/twostraws/CodeScanner.git + exactVersion: "2.5.2" + +targets: + SatsBuddy: + type: application + platform: iOS + configFiles: + Debug: Configs/SatsBuddy.xcconfig + Release: Configs/SatsBuddy.xcconfig + sources: + - path: SatsBuddy + excludes: + - Info.plist + resources: + - path: README.md + dependencies: + - package: bdk-swift + product: BitcoinDevKit + - package: rust-cktap + product: CKTap + - package: KeychainAccess + - package: BitcoinUI + - package: CodeScanner + + SatsBuddyTests: + type: bundle.unit-test + platform: iOS + sources: + - path: SatsBuddyTests + settings: + base: + GENERATE_INFOPLIST_FILE: YES + PRODUCT_BUNDLE_IDENTIFIER: com.reez.SatsBuddyTests + dependencies: + - target: SatsBuddy + +schemes: + SatsBuddy: + build: + targets: + SatsBuddy: all + SatsBuddyTests: [test] + test: + targets: + - SatsBuddyTests + run: + config: Debug + profile: + config: Release + analyze: + config: Debug + archive: + config: Release