From 98d4ab80ec4a397da56880408ae14fceaa73a6de Mon Sep 17 00:00:00 2001 From: Steven Sherry Date: Thu, 14 Apr 2022 10:40:34 -0500 Subject: [PATCH] Initial build script for creating a portals-dev build of Capacitor that is aligned with mainline Capacitor versions. Initial build is manual. --- .gitignore | 4 +++ Package.swift | 30 ++++++++++++++++ build-cap | 96 +++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 130 insertions(+) create mode 100644 .gitignore create mode 100644 Package.swift create mode 100755 build-cap diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6347f3b --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +capacitor-checkout +*.zip +.swiftpm + diff --git a/Package.swift b/Package.swift new file mode 100644 index 0000000..599d840 --- /dev/null +++ b/Package.swift @@ -0,0 +1,30 @@ +// swift-tools-version:5.3 + +import PackageDescription + +let package = Package( + name: "capacitor-swift-pm", + products: [ + .library( + name: "Capacitor", + targets: ["Capacitor"] + ), + .library( + name: "Cordova", + targets: ["Cordova"] + ), + ], + dependencies: [], + targets: [ + .binaryTarget( + name: "Capacitor", + url: "https://github.com/ionic-team/capacitor-swift-pm/releases/download/3.4.3/Capacitor.xcframework.zip", + checksum: "c54a0c7ddb7a887fdb741c933596bc6eb18741f1b17a404f2acc18e78a1094a1" + ), + .binaryTarget( + name: "Cordova", + url: "https://github.com/ionic-team/capacitor-swift-pm/releases/download/3.4.3/CapacitorCordova.xcframework.zip", + checksum: "903aae3aa3b36a6c294ab87732aa43ce76fe47dfa3c08b5c958749fa5c706032" + ) + ] +) diff --git a/build-cap b/build-cap new file mode 100755 index 0000000..7ed9ff4 --- /dev/null +++ b/build-cap @@ -0,0 +1,96 @@ +#!/bin/bash -eoux pipefail + +portals_dev_release_commit() { + git log --oneline | grep -B 1 "Release $1" | head -n1 | sed 's/ /\n/g' | head -n1 | xargs git checkout +} + + +build_capacitor_simulator() { + xcodebuild archive \ + -scheme Capacitor \ + -workspace Capacitor.xcworkspace \ + -destination "generic/platform=iOS Simulator" \ + -archivePath ./Build/iOS-Simulator \ + SKIP_INSTALL=NO \ + BUILD_LIBRARY_FOR_DISTRIBUTION=YES +} + +build_capacitor_ios() { + xcodebuild archive \ + -scheme Capacitor \ + -workspace Capacitor.xcworkspace \ + -destination "generic/platform=iOS" \ + -archivePath ./Build/iOS \ + SKIP_INSTALL=NO \ + BUILD_LIBRARY_FOR_DISTRIBUTION=YES +} + +create_xcframeworks() { + build_capacitor_simulator + build_capacitor_ios + + xcodebuild -create-xcframework \ + -framework ./Build/iOS-Simulator.xcarchive/Products/Library/Frameworks/Capacitor.framework \ + -framework ./Build/iOS.xcarchive/Products/Library/Frameworks/Capacitor.framework \ + -output Capacitor.xcframework + + xcodebuild -create-xcframework \ + -framework ./Build/iOS-Simulator.xcarchive/Products/Library/Frameworks/Cordova.framework \ + -framework ./Build/iOS.xcarchive/Products/Library/Frameworks/Cordova.framework \ + -output Cordova.xcframework + + zip -r Capacitor.xcframework.zip Capacitor.xcframework + zip -r Cordova.xcframework.zip Cordova.xcframework +} + +write_package_file() { + cat << EOF > Package.swift +// swift-tools-version:5.3 + +import PackageDescription + +let package = Package( + name: "capacitor-swift-pm", + products: [ + .library( + name: "Capacitor", + targets: ["Capacitor"] + ), + .library( + name: "Cordova", + targets: ["Cordova"] + ), + ], + dependencies: [], + targets: [ + .binaryTarget( + name: "Capacitor", + url: "$1", + checksum: "$2" + ), + .binaryTarget( + name: "Cordova", + url: "$3", + checksum: "$4" + ) + ] +) +EOF +} + +git clone https://github.com/ionic-team/capacitor capacitor-checkout +cd capacitor-checkout/ios/Capacitor +git checkout portals-dev +#portals_dev_release_commit $1 + +create_xcframeworks + +cap_url="https://github.com/ionic-team/capacitor-swift-pm/releases/download/$1/Capacitor.xcframework.zip" +cap_sha=$(sha256sum Capacitor.xcframework.zip | sed 's/ /\n/g' | head -n1 | xargs echo -n) +cap_cordova_url="https://github.com/ionic-team/capacitor-swift-pm/releases/download/$1/CapacitorCordova.xcframework.zip" +cap_cordova_sha=$(sha256sum Cordova.xcframework.zip | sed 's/ /\n/g' | head -n1 | xargs echo -n) + +cd ../../../ + +write_package_file $cap_url $cap_sha $cap_cordova_url $cap_cordova_sha +