Skip to content

Commit 9376989

Browse files
authored
Merge branch 'main' into docs/self-hosted-supabase-and-postgre
2 parents 5dbab5b + 0848b05 commit 9376989

File tree

8 files changed

+63
-98
lines changed

8 files changed

+63
-98
lines changed

.github/workflows/main.yml

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@ jobs:
168168
codesign --sign "${{ secrets.APPLE_TEAM_ID }}" --timestamp --options runtime dist/CloudSync.xcframework # Then sign the xcframework wrapper
169169
ditto -c -k --keepParent dist/CloudSync.xcframework dist/CloudSync.xcframework.zip
170170
xcrun notarytool submit dist/CloudSync.xcframework.zip --apple-id "${{ secrets.APPLE_ID }}" --password "${{ secrets.APPLE_PASSWORD }}" --team-id "${{ secrets.APPLE_TEAM_ID }}" --wait
171-
rm dist/CloudSync.xcframework.zip
171+
rm -rf dist/CloudSync.xcframework
172172
173173
- name: cleanup keychain for codesign
174174
if: matrix.os == 'macos-15'
@@ -380,7 +380,11 @@ jobs:
380380
if [[ "$name" != "cloudsync-apple-xcframework" && "$name" != "cloudsync-android-aar" ]]; then
381381
tar -czf "${name}-${VERSION}.tar.gz" -C "$folder" .
382382
fi
383-
if [[ "$name" != "cloudsync-android-aar" ]]; then
383+
if [[ "$name" == "cloudsync-apple-xcframework" ]]; then
384+
# Use the ditto-created zip that preserves macOS symlinks and extract for other steps
385+
cp "$folder/CloudSync.xcframework.zip" "${name}-${VERSION}.zip"
386+
unzip -q "$folder/CloudSync.xcframework.zip" -d "$folder/"
387+
elif [[ "$name" != "cloudsync-android-aar" ]]; then
384388
(cd "$folder" && zip -rq "../../${name}-${VERSION}.zip" .)
385389
else
386390
cp "$folder"/*.aar "${name}-${VERSION}.aar"
@@ -531,6 +535,23 @@ jobs:
531535
npm publish --provenance --access public --tag latest
532536
echo "✓ Published @sqliteai/sqlite-sync-expo@${{ steps.tag.outputs.version }}"
533537
538+
- name: update Package.swift checksum and version
539+
if: steps.tag.outputs.version != ''
540+
run: |
541+
VERSION=${{ steps.tag.outputs.version }}
542+
ZIP="cloudsync-apple-xcframework-${VERSION}.zip"
543+
if [ -f "$ZIP" ]; then
544+
CHECKSUM=$(swift package compute-checksum "$ZIP")
545+
URL="https://github.com/sqliteai/sqlite-sync/releases/download/${VERSION}/${ZIP}"
546+
sed -i "s|url: \".*cloudsync-apple-xcframework.*\"|url: \"${URL}\"|" Package.swift
547+
sed -i "s|checksum: \".*\"|checksum: \"${CHECKSUM}\"|" Package.swift
548+
git config --global user.email "$GITHUB_ACTOR@users.noreply.github.com"
549+
git config --global user.name "$GITHUB_ACTOR"
550+
git add Package.swift
551+
git commit -m "Update Package.swift checksum for ${VERSION} [skip ci]" || true
552+
git push origin main || true
553+
fi
554+
534555
- uses: softprops/action-gh-release@v2.2.1
535556
if: steps.tag.outputs.version != ''
536557
with:

Makefile

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -384,7 +384,7 @@ endef
384384
LIB_NAMES = ios.dylib ios-sim.dylib macos.dylib
385385
FMWK_NAMES = ios-arm64 ios-arm64_x86_64-simulator macos-arm64_x86_64
386386
$(DIST_DIR)/%.xcframework: $(LIB_NAMES)
387-
@$(foreach i,1 2 3,\
387+
@$(foreach i,1 2,\
388388
lib=$(word $(i),$(LIB_NAMES)); \
389389
fmwk=$(word $(i),$(FMWK_NAMES)); \
390390
mkdir -p $(DIST_DIR)/$$fmwk/CloudSync.framework/Headers; \
@@ -395,6 +395,21 @@ $(DIST_DIR)/%.xcframework: $(LIB_NAMES)
395395
mv $(DIST_DIR)/$$lib $(DIST_DIR)/$$fmwk/CloudSync.framework/CloudSync; \
396396
install_name_tool -id "@rpath/CloudSync.framework/CloudSync" $(DIST_DIR)/$$fmwk/CloudSync.framework/CloudSync; \
397397
)
398+
@lib=$(word 3,$(LIB_NAMES)); \
399+
fmwk=$(word 3,$(FMWK_NAMES)); \
400+
mkdir -p $(DIST_DIR)/$$fmwk/CloudSync.framework/Versions/A/Headers; \
401+
mkdir -p $(DIST_DIR)/$$fmwk/CloudSync.framework/Versions/A/Modules; \
402+
mkdir -p $(DIST_DIR)/$$fmwk/CloudSync.framework/Versions/A/Resources; \
403+
cp src/cloudsync.h $(DIST_DIR)/$$fmwk/CloudSync.framework/Versions/A/Headers/CloudSync.h; \
404+
printf "$(PLIST)" > $(DIST_DIR)/$$fmwk/CloudSync.framework/Versions/A/Resources/Info.plist; \
405+
printf "$(MODULEMAP)" > $(DIST_DIR)/$$fmwk/CloudSync.framework/Versions/A/Modules/module.modulemap; \
406+
mv $(DIST_DIR)/$$lib $(DIST_DIR)/$$fmwk/CloudSync.framework/Versions/A/CloudSync; \
407+
install_name_tool -id "@rpath/CloudSync.framework/CloudSync" $(DIST_DIR)/$$fmwk/CloudSync.framework/Versions/A/CloudSync; \
408+
ln -sf A $(DIST_DIR)/$$fmwk/CloudSync.framework/Versions/Current; \
409+
ln -sf Versions/Current/CloudSync $(DIST_DIR)/$$fmwk/CloudSync.framework/CloudSync; \
410+
ln -sf Versions/Current/Headers $(DIST_DIR)/$$fmwk/CloudSync.framework/Headers; \
411+
ln -sf Versions/Current/Modules $(DIST_DIR)/$$fmwk/CloudSync.framework/Modules; \
412+
ln -sf Versions/Current/Resources $(DIST_DIR)/$$fmwk/CloudSync.framework/Resources;
398413
xcodebuild -create-xcframework $(foreach fmwk,$(FMWK_NAMES),-framework $(DIST_DIR)/$(fmwk)/CloudSync.framework) -output $@
399414
rm -rf $(foreach fmwk,$(FMWK_NAMES),$(DIST_DIR)/$(fmwk))
400415

Package.swift

Lines changed: 7 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -7,27 +7,20 @@ let package = Package(
77
name: "CloudSync",
88
platforms: [.macOS(.v11), .iOS(.v11)],
99
products: [
10-
// Products can be used to vend plugins, making them visible to other packages.
11-
.plugin(
12-
name: "CloudSyncPlugin",
13-
targets: ["CloudSyncPlugin"]),
1410
.library(
1511
name: "CloudSync",
1612
targets: ["CloudSync"])
1713
],
1814
targets: [
19-
// Build tool plugin that invokes the Makefile
20-
.plugin(
21-
name: "CloudSyncPlugin",
22-
capability: .buildTool(),
23-
path: "packages/swift/plugin"
15+
.binaryTarget(
16+
name: "CloudSyncBinary",
17+
url: "https://github.com/sqliteai/sqlite-sync/releases/download/1.0.5/cloudsync-apple-xcframework-1.0.5.zip",
18+
checksum: "8efd5da9e69731f0ed32d0e137314e260c2c8d763c5dc07672092d642418364b"
2419
),
25-
// CloudSync library target
2620
.target(
2721
name: "CloudSync",
28-
dependencies: [],
29-
path: "packages/swift/extension",
30-
plugins: ["CloudSyncPlugin"]
22+
dependencies: ["CloudSyncBinary"],
23+
path: "packages/swift"
3124
),
3225
]
33-
)
26+
)

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ Download a pre-built binary from the [Releases](https://github.com/sqliteai/sqli
5858
| Platform | Install |
5959
|----------|---------|
6060
| **SQLite CLI / C** | `.load ./cloudsync` or `SELECT load_extension('./cloudsync');` |
61-
| **Swift** | [Add this repo as a Swift Package dependency](https://developer.apple.com/documentation/xcode/adding-package-dependencies-to-your-app) |
61+
| **Swift** | [Add this repo as a Swift Package dependency](https://developer.apple.com/documentation/xcode/adding-package-dependencies-to-your-app), follow [steps 4 and 5](https://github.com/sqliteai/sqlite-extensions-guide/blob/main/platforms/ios.md#4-set-up-sqlite-with-extension-loading), and load extension with `CloudSync.path` |
6262
| **Android** | `implementation 'ai.sqlite:sync:1.0.0'` ([Maven Central](https://central.sonatype.com/artifact/ai.sqlite/sync)) |
6363
| **Flutter** | `flutter pub add sqlite_sync` ([pub.dev](https://pub.dev/packages/sqlite_sync)) |
6464
| **Expo** | `npm install @sqliteai/sqlite-sync-expo` |

packages/swift/CloudSync.swift

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
// CloudSync.swift
2+
// Provides the path to the CloudSync SQLite extension for use with sqlite3_load_extension.
3+
4+
import Foundation
5+
6+
public struct CloudSync {
7+
/// Returns the absolute path to the CloudSync dylib for use with sqlite3_load_extension.
8+
public static var path: String {
9+
#if os(macOS)
10+
return Bundle.main.bundlePath + "/Contents/Frameworks/CloudSync.framework/CloudSync"
11+
#else
12+
return Bundle.main.bundlePath + "/Frameworks/CloudSync.framework/CloudSync"
13+
#endif
14+
}
15+
}

packages/swift/extension/CloudSync.swift

Lines changed: 0 additions & 19 deletions
This file was deleted.

packages/swift/plugin/CloudSync.swift

Lines changed: 0 additions & 60 deletions
This file was deleted.

src/cloudsync.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
extern "C" {
1919
#endif
2020

21-
#define CLOUDSYNC_VERSION "1.0.1"
21+
#define CLOUDSYNC_VERSION "1.0.6"
2222
#define CLOUDSYNC_MAX_TABLENAME_LEN 512
2323

2424
#define CLOUDSYNC_VALUE_NOTSET -1

0 commit comments

Comments
 (0)