Skip to content

Commit

Permalink
feat: add SPM support (#382)
Browse files Browse the repository at this point in the history
* feat(live-update): add SPM support

* chore: add `ios:spm:install` script

* fix: add missing scripts

* feat: add SPM support to all packages

* wip

* docs: add changeset [skip ci]

* wip

* wip
  • Loading branch information
robingenz authored Jan 13, 2025
1 parent e7ecf5a commit fdbcd81
Show file tree
Hide file tree
Showing 125 changed files with 867 additions and 544 deletions.
20 changes: 20 additions & 0 deletions .changeset/gorgeous-bottles-hammer.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
---
'@capawesome/capacitor-app-review': minor
'@capawesome/capacitor-app-shortcuts': minor
'@capawesome/capacitor-app-update': minor
'@capawesome/capacitor-background-task': minor
'@capawesome/capacitor-badge': minor
'@capawesome/capacitor-cloudinary': minor
'@capawesome-team/capacitor-datetime-picker': minor
'@capawesome-team/capacitor-file-opener': minor
'@capawesome/capacitor-file-picker': minor
'@capawesome/capacitor-live-update': minor
'@capawesome/capacitor-managed-configurations': minor
'@capawesome/capacitor-photo-editor': minor
'@capawesome/capacitor-posthog': minor
'@capawesome/capacitor-screen-orientation': minor
'@capawesome/capacitor-screenshot': minor
'@capawesome/capacitor-torch': minor
---

feat: add SPM support
16 changes: 14 additions & 2 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ on:
workflow_dispatch:

env:
NODE_VERSION: 18
NODE_VERSION: 20
JAVA_VERSION: 17

jobs:
Expand All @@ -35,8 +35,20 @@ jobs:
with:
distribution: 'zulu'
java-version: ${{ env.JAVA_VERSION }}
- name: Install dependencies
- name: Install Node.js dependencies
run: npm ci
- name: Install CocoaPods dependencies of packages affected by changes
if: github.ref != 'refs/heads/main'
run: npm run affected:ios:pod:install
- name: Install all CocoaPods dependencies
if: github.ref == 'refs/heads/main'
run: npm run ios:pod:install
- name: Install SPM dependencies of packages affected by changes
if: github.ref != 'refs/heads/main'
run: npm run affected:ios:spm:install
- name: Install all SPM dependencies
if: github.ref == 'refs/heads/main'
run: npm run ios:spm:install
- name: Build packages affected by changes
if: github.ref != 'refs/heads/main'
run: npm run affected:verify
Expand Down
3 changes: 3 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
"build": "turbo run build",
"version": "turbo run version",
"ios:pod:install": "turbo run ios:pod:install --concurrency=1 --no-cache",
"ios:spm:install": "turbo run ios:spm:install --concurrency=1 --no-cache",
"affected:verify": "npm run affected:verify:android && npm run affected:verify:ios && npm run affected:verify:web",
"affected:verify:android": "turbo run verify:android --since=origin/main --concurrency=1 --no-cache",
"affected:verify:ios": "turbo run verify:ios --since=origin/main --concurrency=1 --no-cache",
Expand All @@ -25,6 +26,8 @@
"affected:docgen": "turbo run docgen --since=origin/main",
"affected:build": "turbo run build --since=origin/main",
"affected:version": "turbo run version --since=origin/main",
"affected:ios:pod:install": "turbo run ios:pod:install --since=origin/main --concurrency=1 --no-cache",
"affected:ios:spm:install": "turbo run ios:spm:install --since=origin/main --concurrency=1 --no-cache",
"changeset": "changeset",
"release": "npm run build && changeset publish",
"release:preview": "pkg-pr-new publish './packages/*'"
Expand Down
11 changes: 8 additions & 3 deletions packages/android-battery-optimization/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,16 @@ node_modules
# iOS files
Pods
Podfile.lock
Package.resolved
Build
xcuserdata
/.build
/Packages
xcuserdata/
DerivedData/
.swiftpm/configuration/registries.json
.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata
.netrc

# macOS files
.DS_Store
Expand Down Expand Up @@ -59,6 +67,3 @@ captures

# External native build folder generated in Android Studio 2.2 and later
.externalNativeBuild

# VSCode
.vscode
8 changes: 8 additions & 0 deletions packages/android-dark-mode-support/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,16 @@ node_modules
# iOS files
Pods
Podfile.lock
Package.resolved
Build
xcuserdata
/.build
/Packages
xcuserdata/
DerivedData/
.swiftpm/configuration/registries.json
.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata
.netrc

# macOS files
.DS_Store
Expand Down
11 changes: 8 additions & 3 deletions packages/android-foreground-service/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,16 @@ node_modules
# iOS files
Pods
Podfile.lock
Package.resolved
Build
xcuserdata
/.build
/Packages
xcuserdata/
DerivedData/
.swiftpm/configuration/registries.json
.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata
.netrc

# macOS files
.DS_Store
Expand Down Expand Up @@ -59,6 +67,3 @@ captures

# External native build folder generated in Android Studio 2.2 and later
.externalNativeBuild

# VSCode
.vscode
8 changes: 8 additions & 0 deletions packages/app-review/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,16 @@ node_modules
# iOS files
Pods
Podfile.lock
Package.resolved
Build
xcuserdata
/.build
/Packages
xcuserdata/
DerivedData/
.swiftpm/configuration/registries.json
.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata
.netrc

# macOS files
.DS_Store
Expand Down
28 changes: 28 additions & 0 deletions packages/app-review/Package.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
// swift-tools-version: 5.9
import PackageDescription

let package = Package(
name: "CapawesomeCapacitorAppReview",
platforms: [.iOS(.v13)],
products: [
.library(
name: "CapawesomeCapacitorAppReview",
targets: ["AppReviewPlugin"])
],
dependencies: [
.package(url: "https://github.com/ionic-team/capacitor-swift-pm.git", branch: "6.0.0")
],
targets: [
.target(
name: "AppReviewPlugin",
dependencies: [
.product(name: "Capacitor", package: "capacitor-swift-pm"),
.product(name: "Cordova", package: "capacitor-swift-pm")
],
path: "ios/Sources/AppReviewPlugin"),
.testTarget(
name: "AppReviewPluginTests",
dependencies: ["AppReviewPlugin"],
path: "ios/Tests/AppReviewPluginTests")
]
)
8 changes: 0 additions & 8 deletions packages/app-review/ios/Plugin.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,7 @@
2F98D68224C9AAE500613A4C /* AppReview.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2F98D68124C9AAE400613A4C /* AppReview.swift */; };
50ADFF92201F53D600D50D53 /* Plugin.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 50ADFF88201F53D600D50D53 /* Plugin.framework */; };
50ADFF97201F53D600D50D53 /* AppReviewTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50ADFF96201F53D600D50D53 /* AppReviewTests.swift */; };
50ADFF99201F53D600D50D53 /* AppReviewPlugin.h in Headers */ = {isa = PBXBuildFile; fileRef = 50ADFF8B201F53D600D50D53 /* AppReviewPlugin.h */; settings = {ATTRIBUTES = (Public, ); }; };
50ADFFA42020D75100D50D53 /* Capacitor.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 50ADFFA52020D75100D50D53 /* Capacitor.framework */; };
50ADFFA82020EE4F00D50D53 /* AppReviewPlugin.m in Sources */ = {isa = PBXBuildFile; fileRef = 50ADFFA72020EE4F00D50D53 /* AppReviewPlugin.m */; };
50E1A94820377CB70090CE1A /* AppReviewPlugin.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50E1A94720377CB70090CE1A /* AppReviewPlugin.swift */; };
7C80E29B2CEBD87B008BDF17 /* CustomError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C80E29A2CEBD87B008BDF17 /* CustomError.swift */; };
7CD20BC62CF4E99B0099154B /* OpenAppStoreOptions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7CD20BC52CF4E99A0099154B /* OpenAppStoreOptions.swift */; };
Expand All @@ -34,13 +32,11 @@
2F98D68124C9AAE400613A4C /* AppReview.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppReview.swift; sourceTree = "<group>"; };
3B2A61DA5A1F2DD4F959604D /* Pods_Plugin.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Plugin.framework; sourceTree = BUILT_PRODUCTS_DIR; };
50ADFF88201F53D600D50D53 /* Plugin.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Plugin.framework; sourceTree = BUILT_PRODUCTS_DIR; };
50ADFF8B201F53D600D50D53 /* AppReviewPlugin.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppReviewPlugin.h; sourceTree = "<group>"; };
50ADFF8C201F53D600D50D53 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
50ADFF91201F53D600D50D53 /* PluginTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = PluginTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
50ADFF96201F53D600D50D53 /* AppReviewTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppReviewTests.swift; sourceTree = "<group>"; };
50ADFF98201F53D600D50D53 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
50ADFFA52020D75100D50D53 /* Capacitor.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Capacitor.framework; sourceTree = BUILT_PRODUCTS_DIR; };
50ADFFA72020EE4F00D50D53 /* AppReviewPlugin.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppReviewPlugin.m; sourceTree = "<group>"; };
50E1A94720377CB70090CE1A /* AppReviewPlugin.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppReviewPlugin.swift; sourceTree = "<group>"; };
5E23F77F099397094342571A /* Pods-Plugin.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Plugin.debug.xcconfig"; path = "Pods/Target Support Files/Pods-Plugin/Pods-Plugin.debug.xcconfig"; sourceTree = "<group>"; };
7C80E29A2CEBD87B008BDF17 /* CustomError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomError.swift; sourceTree = "<group>"; };
Expand Down Expand Up @@ -100,8 +96,6 @@
7C80E2992CEBD876008BDF17 /* Enums */,
50E1A94720377CB70090CE1A /* AppReviewPlugin.swift */,
2F98D68124C9AAE400613A4C /* AppReview.swift */,
50ADFF8B201F53D600D50D53 /* AppReviewPlugin.h */,
50ADFFA72020EE4F00D50D53 /* AppReviewPlugin.m */,
50ADFF8C201F53D600D50D53 /* Info.plist */,
);
path = Plugin;
Expand Down Expand Up @@ -168,7 +162,6 @@
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
files = (
50ADFF99201F53D600D50D53 /* AppReviewPlugin.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
Expand Down Expand Up @@ -340,7 +333,6 @@
7C80E29B2CEBD87B008BDF17 /* CustomError.swift in Sources */,
2F98D68224C9AAE500613A4C /* AppReview.swift in Sources */,
7CD20BC62CF4E99B0099154B /* OpenAppStoreOptions.swift in Sources */,
50ADFFA82020EE4F00D50D53 /* AppReviewPlugin.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
Expand Down
10 changes: 0 additions & 10 deletions packages/app-review/ios/Plugin/AppReviewPlugin.h

This file was deleted.

9 changes: 0 additions & 9 deletions packages/app-review/ios/Plugin/AppReviewPlugin.m

This file was deleted.

8 changes: 7 additions & 1 deletion packages/app-review/ios/Plugin/AppReviewPlugin.swift
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,13 @@ import Capacitor
* here: https://capacitorjs.com/docs/plugins/ios
*/
@objc(AppReviewPlugin)
public class AppReviewPlugin: CAPPlugin {
public class AppReviewPlugin: CAPPlugin, CAPBridgedPlugin {
public let identifier = "AppReviewPlugin"
public let jsName = "AppReview"
public let pluginMethods: [CAPPluginMethod] = [
CAPPluginMethod(name: "openAppStore", returnType: CAPPluginReturnPromise),
CAPPluginMethod(name: "requestReview", returnType: CAPPluginReturnPromise)
]
public static let tag = "AppReviewPlugin"

private var implementation: AppReview?
Expand Down
4 changes: 3 additions & 1 deletion packages/app-review/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@
"android/build.gradle",
"dist/",
"ios/Plugin/",
"CapawesomeCapacitorAppReview.podspec"
"CapawesomeCapacitorAppReview.podspec",
"Package.swift"
],
"author": "Robin Genz <[email protected]>",
"license": "MIT",
Expand Down Expand Up @@ -57,6 +58,7 @@
"clean": "rimraf ./dist",
"watch": "tsc --watch",
"ios:pod:install": "cd ios && pod install --repo-update && cd ..",
"ios:spm:install": "cd ios && swift package resolve && cd ..",
"prepublishOnly": "npm run build"
},
"devDependencies": {
Expand Down
8 changes: 8 additions & 0 deletions packages/app-shortcuts/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,16 @@ node_modules
# iOS files
Pods
Podfile.lock
Package.resolved
Build
xcuserdata
/.build
/Packages
xcuserdata/
DerivedData/
.swiftpm/configuration/registries.json
.swiftpm/xcode/package.xcworkspace/contents.xcworkspacedata
.netrc

# macOS files
.DS_Store
Expand Down
28 changes: 28 additions & 0 deletions packages/app-shortcuts/Package.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
// swift-tools-version: 5.9
import PackageDescription

let package = Package(
name: "CapawesomeCapacitorAppShortcuts",
platforms: [.iOS(.v13)],
products: [
.library(
name: "CapawesomeCapacitorAppShortcuts",
targets: ["AppShortcutsPlugin"])
],
dependencies: [
.package(url: "https://github.com/ionic-team/capacitor-swift-pm.git", branch: "6.0.0")
],
targets: [
.target(
name: "AppShortcutsPlugin",
dependencies: [
.product(name: "Capacitor", package: "capacitor-swift-pm"),
.product(name: "Cordova", package: "capacitor-swift-pm")
],
path: "ios/Sources/AppShortcutsPlugin"),
.testTarget(
name: "AppShortcutsPluginTests",
dependencies: ["AppShortcutsPlugin"],
path: "ios/Tests/AppShortcutsPluginTests")
]
)
8 changes: 0 additions & 8 deletions packages/app-shortcuts/ios/Plugin.xcodeproj/project.pbxproj
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,7 @@
2F98D68224C9AAE500613A4C /* AppShortcuts.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2F98D68124C9AAE400613A4C /* AppShortcuts.swift */; };
50ADFF92201F53D600D50D53 /* Plugin.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 50ADFF88201F53D600D50D53 /* Plugin.framework */; };
50ADFF97201F53D600D50D53 /* AppShortcutsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50ADFF96201F53D600D50D53 /* AppShortcutsTests.swift */; };
50ADFF99201F53D600D50D53 /* AppShortcutsPlugin.h in Headers */ = {isa = PBXBuildFile; fileRef = 50ADFF8B201F53D600D50D53 /* AppShortcutsPlugin.h */; settings = {ATTRIBUTES = (Public, ); }; };
50ADFFA42020D75100D50D53 /* Capacitor.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 50ADFFA52020D75100D50D53 /* Capacitor.framework */; };
50ADFFA82020EE4F00D50D53 /* AppShortcutsPlugin.m in Sources */ = {isa = PBXBuildFile; fileRef = 50ADFFA72020EE4F00D50D53 /* AppShortcutsPlugin.m */; };
50E1A94820377CB70090CE1A /* AppShortcutsPlugin.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50E1A94720377CB70090CE1A /* AppShortcutsPlugin.swift */; };
7C23F4112D1434F80062E466 /* ClickEvent.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C23F4102D1434F00062E466 /* ClickEvent.swift */; };
7CC437E92D0CCF94007934A8 /* GetResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7CC437E82D0CCF7A007934A8 /* GetResult.swift */; };
Expand All @@ -37,13 +35,11 @@
2F98D68124C9AAE400613A4C /* AppShortcuts.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppShortcuts.swift; sourceTree = "<group>"; };
3B2A61DA5A1F2DD4F959604D /* Pods_Plugin.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_Plugin.framework; sourceTree = BUILT_PRODUCTS_DIR; };
50ADFF88201F53D600D50D53 /* Plugin.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Plugin.framework; sourceTree = BUILT_PRODUCTS_DIR; };
50ADFF8B201F53D600D50D53 /* AppShortcutsPlugin.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppShortcutsPlugin.h; sourceTree = "<group>"; };
50ADFF8C201F53D600D50D53 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
50ADFF91201F53D600D50D53 /* PluginTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = PluginTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
50ADFF96201F53D600D50D53 /* AppShortcutsTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppShortcutsTests.swift; sourceTree = "<group>"; };
50ADFF98201F53D600D50D53 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
50ADFFA52020D75100D50D53 /* Capacitor.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; path = Capacitor.framework; sourceTree = BUILT_PRODUCTS_DIR; };
50ADFFA72020EE4F00D50D53 /* AppShortcutsPlugin.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppShortcutsPlugin.m; sourceTree = "<group>"; };
50E1A94720377CB70090CE1A /* AppShortcutsPlugin.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AppShortcutsPlugin.swift; sourceTree = "<group>"; };
5E23F77F099397094342571A /* Pods-Plugin.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-Plugin.debug.xcconfig"; path = "Pods/Target Support Files/Pods-Plugin/Pods-Plugin.debug.xcconfig"; sourceTree = "<group>"; };
7C23F4102D1434F00062E466 /* ClickEvent.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ClickEvent.swift; sourceTree = "<group>"; };
Expand Down Expand Up @@ -107,8 +103,6 @@
7CC437E62D0CCF63007934A8 /* Classes */,
50E1A94720377CB70090CE1A /* AppShortcutsPlugin.swift */,
2F98D68124C9AAE400613A4C /* AppShortcuts.swift */,
50ADFF8B201F53D600D50D53 /* AppShortcutsPlugin.h */,
50ADFFA72020EE4F00D50D53 /* AppShortcutsPlugin.m */,
50ADFF8C201F53D600D50D53 /* Info.plist */,
);
path = Plugin;
Expand Down Expand Up @@ -201,7 +195,6 @@
isa = PBXHeadersBuildPhase;
buildActionMask = 2147483647;
files = (
50ADFF99201F53D600D50D53 /* AppShortcutsPlugin.h in Headers */,
);
runOnlyForDeploymentPostprocessing = 0;
};
Expand Down Expand Up @@ -375,7 +368,6 @@
7CC437E92D0CCF94007934A8 /* GetResult.swift in Sources */,
2F98D68224C9AAE500613A4C /* AppShortcuts.swift in Sources */,
7CC437F82D0E30A0007934A8 /* Result.swift in Sources */,
50ADFFA82020EE4F00D50D53 /* AppShortcutsPlugin.m in Sources */,
7C23F4112D1434F80062E466 /* ClickEvent.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
Expand Down
10 changes: 0 additions & 10 deletions packages/app-shortcuts/ios/Plugin/AppShortcutsPlugin.h

This file was deleted.

10 changes: 0 additions & 10 deletions packages/app-shortcuts/ios/Plugin/AppShortcutsPlugin.m

This file was deleted.

Loading

0 comments on commit fdbcd81

Please sign in to comment.