Merge bdk-swift repo into bdk-ffi/bdk-swift
This commit is contained in:
		
						commit
						13cbe89167
					
				
							
								
								
									
										12
									
								
								bdk-swift/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								bdk-swift/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@ -0,0 +1,12 @@
 | 
			
		||||
.DS_Store
 | 
			
		||||
/.build
 | 
			
		||||
/.swiftpm
 | 
			
		||||
/Packages
 | 
			
		||||
/*.xcodeproj
 | 
			
		||||
xcuserdata/
 | 
			
		||||
DerivedData/
 | 
			
		||||
.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata
 | 
			
		||||
bdkFFI.xcframework.zip
 | 
			
		||||
bdkFFI
 | 
			
		||||
libbdkffi.a
 | 
			
		||||
bdkFFI.h
 | 
			
		||||
							
								
								
									
										37
									
								
								bdk-swift/Package.swift
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										37
									
								
								bdk-swift/Package.swift
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,37 @@
 | 
			
		||||
// swift-tools-version:5.5
 | 
			
		||||
// The swift-tools-version declares the minimum version of Swift required to build this package.
 | 
			
		||||
 | 
			
		||||
import PackageDescription
 | 
			
		||||
 | 
			
		||||
let package = Package(
 | 
			
		||||
    name: "bdk-swift",
 | 
			
		||||
    platforms: [
 | 
			
		||||
        .macOS(.v12),
 | 
			
		||||
        .iOS(.v15)
 | 
			
		||||
    ],
 | 
			
		||||
    products: [
 | 
			
		||||
        // Products define the executables and libraries a package produces, and make them visible to other packages.
 | 
			
		||||
        .library(
 | 
			
		||||
            name: "BitcoinDevKit",
 | 
			
		||||
            targets: ["bdkFFI", "BitcoinDevKit"]),
 | 
			
		||||
    ],
 | 
			
		||||
    dependencies: [
 | 
			
		||||
        // Dependencies declare other packages that this package depends on.
 | 
			
		||||
        // .package(url: /* package url */, from: "1.0.0"),
 | 
			
		||||
    ],
 | 
			
		||||
    targets: [
 | 
			
		||||
        // Targets are the basic building blocks of a package. A target can define a module or a test suite.
 | 
			
		||||
        // Targets can depend on other targets in this package, and on products in packages this package depends on.
 | 
			
		||||
//        .binaryTarget(
 | 
			
		||||
//            name: "bdkFFI",
 | 
			
		||||
//            url: "https://github.com/bitcoindevkit/bdk-swift/releases/download/0.3.0/bdkFFI.xcframework.zip",
 | 
			
		||||
//            checksum: "7d4a2fdeb03fb3eff107e45ee3148dd9b67966406c82d6e3c19f653c27180cfd"),
 | 
			
		||||
        .binaryTarget(name: "bdkFFI", path: "./bdkFFI.xcframework"),
 | 
			
		||||
        .target(
 | 
			
		||||
            name: "BitcoinDevKit",
 | 
			
		||||
            dependencies: ["bdkFFI"]),
 | 
			
		||||
        .testTarget(
 | 
			
		||||
            name: "BitcoinDevKitTests",
 | 
			
		||||
            dependencies: ["BitcoinDevKit"]),
 | 
			
		||||
    ]
 | 
			
		||||
)
 | 
			
		||||
							
								
								
									
										36
									
								
								bdk-swift/Package.swift.txt
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										36
									
								
								bdk-swift/Package.swift.txt
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,36 @@
 | 
			
		||||
// swift-tools-version:5.5
 | 
			
		||||
// The swift-tools-version declares the minimum version of Swift required to build this package.
 | 
			
		||||
 | 
			
		||||
import PackageDescription
 | 
			
		||||
 | 
			
		||||
let package = Package(
 | 
			
		||||
    name: "bdk-swift",
 | 
			
		||||
    platforms: [
 | 
			
		||||
        .macOS(.v12),
 | 
			
		||||
        .iOS(.v15)
 | 
			
		||||
    ],
 | 
			
		||||
    products: [
 | 
			
		||||
        // Products define the executables and libraries a package produces, and make them visible to other packages.
 | 
			
		||||
        .library(
 | 
			
		||||
            name: "BitcoinDevKit",
 | 
			
		||||
            targets: ["bdkFFI", "BitcoinDevKit"]),
 | 
			
		||||
    ],
 | 
			
		||||
    dependencies: [
 | 
			
		||||
        // Dependencies declare other packages that this package depends on.
 | 
			
		||||
        // .package(url: /* package url */, from: "1.0.0"),
 | 
			
		||||
    ],
 | 
			
		||||
    targets: [
 | 
			
		||||
        // Targets are the basic building blocks of a package. A target can define a module or a test suite.
 | 
			
		||||
        // Targets can depend on other targets in this package, and on products in packages this package depends on.
 | 
			
		||||
        .binaryTarget(
 | 
			
		||||
            name: "bdkFFI",
 | 
			
		||||
            url: "BDKFFIURL",
 | 
			
		||||
            checksum: "BDKFFICHECKSUM"),
 | 
			
		||||
        .target(
 | 
			
		||||
            name: "BitcoinDevKit",
 | 
			
		||||
            dependencies: ["bdkFFI"]),
 | 
			
		||||
        .testTarget(
 | 
			
		||||
            name: "BitcoinDevKitTests",
 | 
			
		||||
            dependencies: ["BitcoinDevKit"]),
 | 
			
		||||
    ]
 | 
			
		||||
)
 | 
			
		||||
							
								
								
									
										45
									
								
								bdk-swift/README.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										45
									
								
								bdk-swift/README.md
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,45 @@
 | 
			
		||||
# bdk-swift
 | 
			
		||||
 | 
			
		||||
This project builds a Swift package that provides [Swift] language bindings for the
 | 
			
		||||
[`bdk`] library. The Swift language bindings are created by the [`bdk-ffi`] project which is included as a module of this repository.
 | 
			
		||||
 | 
			
		||||
## How to Use
 | 
			
		||||
 | 
			
		||||
To use the Swift language bindings for [`bdk`] in your [Xcode] iOS or MacOS project add
 | 
			
		||||
the github repository https://github.com/bitcoindevkit/bdk-swift and select one of the
 | 
			
		||||
release versions. You may then import and use the `BitcoinDevKit` library in your Swift
 | 
			
		||||
code. For example:
 | 
			
		||||
 | 
			
		||||
```swift
 | 
			
		||||
import BitcoinDevKit
 | 
			
		||||
 | 
			
		||||
...
 | 
			
		||||
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
Note: the Swift Package Manager package for `bdk-swift` is located in it's own repository (https://github.com/bitcoindevkit/bdk-swift), and that is where releases are created for it. But the code that generates the bindings is located in the https://github.com/bitcoindevkit/bdk-ffi repo in the `bdk-swift/` directory. 
 | 
			
		||||
 | 
			
		||||
### How to test
 | 
			
		||||
 | 
			
		||||
```shell
 | 
			
		||||
swift test
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
### Example Projects
 | 
			
		||||
 | 
			
		||||
* TBD
 | 
			
		||||
 | 
			
		||||
## How to Build and Publish
 | 
			
		||||
 | 
			
		||||
If you are a maintainer of this project or want to build and publish this project to your
 | 
			
		||||
own Github repository use the following steps:
 | 
			
		||||
 | 
			
		||||
If you are a maintainer of this project or want to build and publish this project to your
 | 
			
		||||
own Github repository use the following steps:
 | 
			
		||||
 | 
			
		||||
1. If it doesn't already exist, create a new `release/0.MINOR` branch from the `master` branch.
 | 
			
		||||
2. Add a tag `v0.MINOR.0`.
 | 
			
		||||
3. Run the `publish-spm` workflow on Github from the `bdk-swift` repo for  version `0.MINOR.0`.
 | 
			
		||||
 | 
			
		||||
[Swift]: https://developer.apple.com/swift/
 | 
			
		||||
[Xcode]: https://developer.apple.com/documentation/Xcode
 | 
			
		||||
							
								
								
									
										12
									
								
								bdk-swift/Tests/BitcoinDevKitTests/BitcoinDevKitTests.swift
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										12
									
								
								bdk-swift/Tests/BitcoinDevKitTests/BitcoinDevKitTests.swift
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,12 @@
 | 
			
		||||
import XCTest
 | 
			
		||||
@testable import BitcoinDevKit
 | 
			
		||||
 | 
			
		||||
final class BitcoinDevKitTests: XCTestCase {
 | 
			
		||||
    func testMemoryWalletNewAddress() throws {
 | 
			
		||||
        let desc = "wpkh([c258d2e4/84h/1h/0h]tpubDDYkZojQFQjht8Tm4jsS3iuEmKjTiEGjG6KnuFNKKJb5A6ZUCUZKdvLdSDWofKi4ToRCwb9poe1XdqfUnP4jaJjCB2Zwv11ZLgSbnZSNecE/0/*)"
 | 
			
		||||
        let databaseConfig = DatabaseConfig.memory
 | 
			
		||||
        let wallet = try Wallet.init(descriptor: desc, changeDescriptor: nil, network: Network.regtest, databaseConfig: databaseConfig)
 | 
			
		||||
        let addressInfo = try wallet.getAddress(addressIndex: AddressIndex.new)
 | 
			
		||||
        XCTAssertEqual(addressInfo.address, "bcrt1qzg4mckdh50nwdm9hkzq06528rsu73hjxytqkxs")
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
							
								
								
									
										53
									
								
								bdk-swift/bdkFFI.xcframework/Info.plist
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										53
									
								
								bdk-swift/bdkFFI.xcframework/Info.plist
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,53 @@
 | 
			
		||||
<?xml version="1.0" encoding="UTF-8"?>
 | 
			
		||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
 | 
			
		||||
<plist version="1.0">
 | 
			
		||||
<dict>
 | 
			
		||||
	<key>AvailableLibraries</key>
 | 
			
		||||
	<array>
 | 
			
		||||
		<dict>
 | 
			
		||||
			<key>LibraryIdentifier</key>
 | 
			
		||||
			<string>macos-arm64_x86_64</string>
 | 
			
		||||
			<key>LibraryPath</key>
 | 
			
		||||
			<string>bdkFFI.framework</string>
 | 
			
		||||
			<key>SupportedArchitectures</key>
 | 
			
		||||
			<array>
 | 
			
		||||
				<string>arm64</string>
 | 
			
		||||
				<string>x86_64</string>
 | 
			
		||||
			</array>
 | 
			
		||||
			<key>SupportedPlatform</key>
 | 
			
		||||
			<string>macos</string>
 | 
			
		||||
		</dict>
 | 
			
		||||
		<dict>
 | 
			
		||||
			<key>LibraryIdentifier</key>
 | 
			
		||||
			<string>ios-arm64_x86_64-simulator</string>
 | 
			
		||||
			<key>LibraryPath</key>
 | 
			
		||||
			<string>bdkFFI.framework</string>
 | 
			
		||||
			<key>SupportedArchitectures</key>
 | 
			
		||||
			<array>
 | 
			
		||||
				<string>arm64</string>
 | 
			
		||||
				<string>x86_64</string>
 | 
			
		||||
			</array>
 | 
			
		||||
			<key>SupportedPlatform</key>
 | 
			
		||||
			<string>ios</string>
 | 
			
		||||
			<key>SupportedPlatformVariant</key>
 | 
			
		||||
			<string>simulator</string>
 | 
			
		||||
		</dict>
 | 
			
		||||
		<dict>
 | 
			
		||||
			<key>LibraryIdentifier</key>
 | 
			
		||||
			<string>ios-arm64</string>
 | 
			
		||||
			<key>LibraryPath</key>
 | 
			
		||||
			<string>bdkFFI.framework</string>
 | 
			
		||||
			<key>SupportedArchitectures</key>
 | 
			
		||||
			<array>
 | 
			
		||||
				<string>arm64</string>
 | 
			
		||||
			</array>
 | 
			
		||||
			<key>SupportedPlatform</key>
 | 
			
		||||
			<string>ios</string>
 | 
			
		||||
		</dict>
 | 
			
		||||
	</array>
 | 
			
		||||
	<key>CFBundlePackageType</key>
 | 
			
		||||
	<string>XFWK</string>
 | 
			
		||||
	<key>XCFrameworkFormatVersion</key>
 | 
			
		||||
	<string>1.0</string>
 | 
			
		||||
</dict>
 | 
			
		||||
</plist>
 | 
			
		||||
@ -0,0 +1,4 @@
 | 
			
		||||
// This is the "umbrella header" for our combined Rust code library.
 | 
			
		||||
// It needs to import all of the individual headers.
 | 
			
		||||
 | 
			
		||||
#import "bdkFFI.h"
 | 
			
		||||
@ -0,0 +1,6 @@
 | 
			
		||||
framework module bdkFFI {
 | 
			
		||||
  umbrella header "bdkFFI-umbrella.h"
 | 
			
		||||
 | 
			
		||||
  export *
 | 
			
		||||
  module * { export * }
 | 
			
		||||
}
 | 
			
		||||
@ -0,0 +1,4 @@
 | 
			
		||||
// This is the "umbrella header" for our combined Rust code library.
 | 
			
		||||
// It needs to import all of the individual headers.
 | 
			
		||||
 | 
			
		||||
#import "bdkFFI.h"
 | 
			
		||||
@ -0,0 +1,6 @@
 | 
			
		||||
framework module bdkFFI {
 | 
			
		||||
  umbrella header "bdkFFI-umbrella.h"
 | 
			
		||||
 | 
			
		||||
  export *
 | 
			
		||||
  module * { export * }
 | 
			
		||||
}
 | 
			
		||||
@ -0,0 +1,4 @@
 | 
			
		||||
// This is the "umbrella header" for our combined Rust code library.
 | 
			
		||||
// It needs to import all of the individual headers.
 | 
			
		||||
 | 
			
		||||
#import "bdkFFI.h"
 | 
			
		||||
@ -0,0 +1,6 @@
 | 
			
		||||
framework module bdkFFI {
 | 
			
		||||
  umbrella header "bdkFFI-umbrella.h"
 | 
			
		||||
 | 
			
		||||
  export *
 | 
			
		||||
  module * { export * }
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user