name: Publish Swift Bindings on: workflow_dispatch: inputs: version: description: 'nostr-sdk repo release (MAJOR.MINOR.PATCH)' required: true type: string jobs: build-tag-release: name: Build, tag, and release the Nostr SDK Swift bindings runs-on: macOS-latest permissions: contents: write steps: - name: Checkout nostr repo uses: actions/checkout@v3 with: repository: ${{ github.repository_owner }}/nostr path: build # ref: v${{ inputs.version }} - name: Checkout nostr-sdk-swift repo uses: actions/checkout@v3 with: path: dist ssh-key: ${{ secrets.NOSTR_SDK_SWIFT_DEPLOY_KEY }} - name: Build Swift bindings working-directory: build/bindings/nostr-sdk-ffi run: | make init make bindings-swift - name: Compress XCFramework working-directory: build/bindings/nostr-sdk-ffi/bindings-swift run: | zip -9 -r nostr_sdkFFI.xcframework.zip nostr_sdkFFI.xcframework echo "XCF_CHECKSUM=`swift package compute-checksum nostr_sdkFFI.xcframework.zip`" >> $GITHUB_ENV - name: Update Swift Package definition working-directory: build/bindings/nostr-sdk-ffi/bindings-swift run: | sed 's#.binaryTarget(name: "nostr_sdkFFI", path: "./nostr_sdkFFI.xcframework"),#.binaryTarget(name: "nostr_sdkFFI", url: "https://github.com/rust-nostr/nostr-sdk-swift/releases/download/${{ inputs.version }}/nostr_sdkFFI.xcframework.zip", checksum: "${{ env.XCF_CHECKSUM }}"),#;/.testTarget(name: "NostrSDKTests", dependencies: \["NostrSDK"\]),/d' Package.swift > ../../../../dist/Package.swift cp -r Sources ../../../../dist - name: Tag the Swift bindings working-directory: dist run: | git config user.name github-actions git config user.email github-actions@github.com git add Package.swift git add Sources git commit -m "Update Nostr SDK Swift bindings to version ${{ inputs.version }}" git push git tag ${{ inputs.version }} -m "${{ inputs.version }}" git push --tags - name: Release and attach XCFramework binary artifact uses: ncipollo/release-action@v1 with: artifacts: "build/bindings/nostr-sdk-ffi/bindings-swift/nostr_sdkFFI.xcframework.zip" tag: ${{ inputs.version }} token: ${{ secrets.GITHUB_TOKEN }} name: ${{ inputs.version }} prerelease: true