diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3c8c4b68b..de1c04585 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -158,15 +158,6 @@ jobs: - name: Send codecov run: bash <(curl https://codecov.io/bash) - cocoapods: - runs-on: macos-latest - steps: - - uses: actions/checkout@v2 - - name: CocoaPods - run: set -o pipefail && env NSUnbufferedIO=YES pod lib lint --allow-warnings --verbose --skip-import-validation - env: - DEVELOPER_DIR: ${{ env.CI_XCODE_13 }} - assets: runs-on: macos-11 env: diff --git a/.github/workflows/release-automated.yml b/.github/workflows/release-automated.yml index 1a8a8f1ac..1a34fb20d 100644 --- a/.github/workflows/release-automated.yml +++ b/.github/workflows/release-automated.yml @@ -43,23 +43,6 @@ jobs: id: tag run: echo "::set-output name=current_tag::$(git describe --tags --abbrev=0 --exact-match || echo '')" - cocoapods: - needs: release - if: needs.release.outputs.current_tag != '' - runs-on: macos-11 - steps: - - name: Checkout repository - uses: actions/checkout@v2 - with: - ref: ${{ needs.release.outputs.current_tag }} - - name: CocoaPods - run: set -o pipefail && env NSUnbufferedIO=YES pod lib lint --allow-warnings --verbose - - name: Deploy CocoaPods - run: set -o pipefail && env NSUnbufferedIO=YES pod trunk push Parse.podspec --allow-warnings --verbose - env: - COCOAPODS_TRUNK_TOKEN: ${{ secrets.COCOAPODS_TRUNK_TOKEN }} - DEVELOPER_DIR: ${{ env.CI_XCODE_13 }} - assets: needs: release if: needs.release.outputs.current_tag != '' diff --git a/.github/workflows/release-manual-cocoapods.yml b/.github/workflows/release-manual-cocoapods.yml deleted file mode 100644 index ff555e86c..000000000 --- a/.github/workflows/release-manual-cocoapods.yml +++ /dev/null @@ -1,28 +0,0 @@ -# Trigger this workflow only to manually publish a Cocoapods release; this should only be used -# in extraordinary circumstances, as releases are normally published automatically as part of -# the automated release workflow. - -name: release-manual-cocoapods -on: - workflow_dispatch: - inputs: - ref: - default: '' - description: 'Reference (tag / SHA):' -env: - CI_XCODE_13: '/Applications/Xcode_13.4.1.app/Contents/Developer' -jobs: - cocoapods: - runs-on: macos-11 - steps: - - name: Checkout repository - uses: actions/checkout@v2 - with: - ref: ${{ github.event.inputs.ref }} - - name: CocoaPods - run: set -o pipefail && env NSUnbufferedIO=YES pod lib lint --allow-warnings --verbose - - name: Deploy CocoaPods - run: set -o pipefail && env NSUnbufferedIO=YES pod trunk push Parse.podspec --allow-warnings --verbose - env: - COCOAPODS_TRUNK_TOKEN: ${{ secrets.COCOAPODS_TRUNK_TOKEN }} - DEVELOPER_DIR: ${{ env.CI_XCODE_13 }} diff --git a/Parse.podspec b/Parse.podspec deleted file mode 100644 index c905e502c..000000000 --- a/Parse.podspec +++ /dev/null @@ -1,256 +0,0 @@ -Pod::Spec.new do |s| - s.name = 'Parse' - s.version = '2.0.2' - s.license = { :type => 'BSD', :file => 'LICENSE' } - s.homepage = 'http://parseplatform.org/' - s.summary = 'A library that gives you access to the powerful Parse cloud platform from your iOS/OS X/watchOS/tvOS app.' - s.authors = 'Parse Community' - s.social_media_url = 'https://twitter.com/ParsePlatform' - - s.source = { :git => 'https://github.com/parse-community/Parse-SDK-iOS-OSX.git', :tag => s.version.to_s } - - s.platform = :ios, :osx, :tvos, :watchos - s.ios.deployment_target = '9.0' - s.osx.deployment_target = '10.9' - s.tvos.deployment_target = '10.0' - s.watchos.deployment_target = '2.0' - - s.default_subspec = 'Core' - - s.subspec 'Core' do |s| - s.requires_arc = true - - s.source_files = 'Parse/Parse/Source/*.{h,m}', - 'Parse/Parse/Internal/**/*.{h,m}' - s.public_header_files = 'Parse/Parse/Source/*.h' - s.private_header_files = 'Parse/Parse/Internal/**/*.h' - - s.ios.exclude_files = 'Parse/Parse/Internal/PFMemoryEventuallyQueue.{h,m}' - s.osx.exclude_files = 'Parse/Parse/Source/PFNetworkActivityIndicatorManager.{h,m}', - 'Parse/Parse/Source/PFProduct.{h,m}', - 'Parse/Parse/Source/PFPurchase.{h,m}', - 'Parse/Parse/Internal/PFAlertView.{h,m}', - 'Parse/Parse/Internal/Product/**/*.{h,m}', - 'Parse/Parse/Internal/Purchase/**/*.{h,m}', - 'Parse/Parse/Internal/PFMemoryEventuallyQueue.{h,m}' - s.tvos.exclude_files = 'Parse/Parse/Source/PFNetworkActivityIndicatorManager.{h,m}', - 'Parse/Parse/Internal/PFAlertView.{h,m}' - s.watchos.exclude_files = 'Parse/Parse/Source/PFNetworkActivityIndicatorManager.{h,m}', - 'Parse/Parse/Source/PFProduct.{h,m}', - 'Parse/Parse/Source/PFPurchase.{h,m}', - 'Parse/Parse/Source/PFPush.{h,m}', - 'Parse/Parse/Source/PFPush+Synchronous.{h,m}', - 'Parse/Parse/Source/PFPush+Deprecated.{h,m}', - 'Parse/Parse/Source/PFInstallation.{h,m}', - 'Parse/Parse/Internal/PFAlertView.{h,m}', - 'Parse/Parse/Internal/PFReachability.{h,m}', - 'Parse/Parse/Internal/Product/**/*.{h,m}', - 'Parse/Parse/Internal/Purchase/**/*.{h,m}', - 'Parse/Parse/Internal/Push/**/*.{h,m}', - 'Parse/Parse/Internal/Installation/Controller/*.{h,m}', - 'Parse/Parse/Internal/Installation/Constants/*.{h,m}', - 'Parse/Parse/Internal/Installation/CurrentInstallationController/*.{h,m}', - 'Parse/Parse/Internal/Installation/PFInstallationPrivate.h', - 'Parse/Parse/Internal/Commands/PFRESTPushCommand.{h,m}', - 'Parse/Parse/Internal/PFMemoryEventuallyQueue.{h,m}' - - s.resource_bundle = { 'Parse' => 'Parse/Parse/Resources/en.lproj' } - - s.ios.frameworks = 'AudioToolbox', - 'CFNetwork', - 'CoreGraphics', - 'CoreLocation', - 'QuartzCore', - 'Security', - 'StoreKit', - 'SystemConfiguration' - s.ios.weak_frameworks = 'Accounts', - 'Social' - s.osx.frameworks = 'ApplicationServices', - 'CFNetwork', - 'CoreGraphics', - 'CoreLocation', - 'QuartzCore', - 'Security', - 'SystemConfiguration' - s.tvos.frameworks = 'CoreLocation', - 'StoreKit', - 'SystemConfiguration', - 'Security' - - s.libraries = 'z', 'sqlite3' - - s.dependency 'Bolts/Tasks', '1.9.1' - s.user_target_xcconfig = { - 'GENERATE_INFOPLIST_FILE' => 'YES' - } - - s.pod_target_xcconfig = { - 'GENERATE_INFOPLIST_FILE' => 'YES' - } - end - - s.subspec 'FacebookUtils' do |s| - s.platform = :ios, :tvos - s.ios.deployment_target = '12.0' - s.tvos.deployment_target = '12.0' - s.public_header_files = 'ParseFacebookUtils/ParseFacebookUtils/Source/*.h' - s.source_files = 'ParseFacebookUtils/ParseFacebookUtils/Source/*.{h,m}' - - s.frameworks = 'AudioToolbox', - 'CFNetwork', - 'CoreGraphics', - 'CoreLocation', - 'QuartzCore', - 'Security', - 'SystemConfiguration' - s.ios.weak_frameworks = 'Accounts', - 'Social' - - s.libraries = 'z', 'sqlite3' - - s.dependency 'Parse/Core' - s.dependency 'Bolts/Tasks', '1.9.1' - s.dependency 'FBSDKCoreKit', '= 15.1.0' - s.dependency 'FBSDKLoginKit', '= 15.1.0' - s.dependency 'FBSDKCoreKit_Basics', '= 15.1.0' - s.user_target_xcconfig = { - 'GENERATE_INFOPLIST_FILE' => 'YES' - } - - s.pod_target_xcconfig = { - 'GENERATE_INFOPLIST_FILE' => 'YES' - } - s.pod_target_xcconfig = { 'EXCLUDED_ARCHS[sdk=*simulator*]' => 'x86_64 armv7 arm64' } - end - - s.subspec 'FacebookUtils-iOS' do |s| - s.platform = :ios - s.ios.deployment_target = '12.0' - s.public_header_files = 'ParseFacebookUtilsiOS/ParseFacebookUtilsiOS/Source/*.h' - s.private_header_files = 'ParseFacebookUtilsiOS/ParseFacebookUtilsiOS/Internal/**/*.h' - s.source_files = 'ParseFacebookUtilsiOS/ParseFacebookUtilsiOS/Source/*.{h,m}', - 'ParseFacebookUtilsiOS/ParseFacebookUtilsiOS/Internal/**/*.{h,m}' - - s.frameworks = 'AudioToolbox', - 'CFNetwork', - 'CoreGraphics', - 'CoreLocation', - 'QuartzCore', - 'Security', - 'SystemConfiguration' - s.ios.weak_frameworks = 'Accounts', - 'Social' - - s.libraries = 'z', 'sqlite3' - - s.dependency 'Parse/Core' - s.dependency 'Parse/FacebookUtils' - s.dependency 'Bolts/Tasks', '1.9.1' - s.dependency 'FBSDKCoreKit', '= 15.1.0' - s.dependency 'FBSDKLoginKit', '= 15.1.0' - s.dependency 'FBSDKCoreKit_Basics', '= 15.1.0' - s.user_target_xcconfig = { - 'GENERATE_INFOPLIST_FILE' => 'YES' - } - - s.pod_target_xcconfig = { - 'GENERATE_INFOPLIST_FILE' => 'YES' - } - s.pod_target_xcconfig = { 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'x86_64 armv7 arm64' } - end - - s.subspec 'FacebookUtils-tvOS' do |s| - s.platform = :tvos - s.tvos.deployment_target = '12.0' - s.public_header_files = 'ParseFacebookUtilsTvOS/ParseFacebookUtilsTvOS/Source/*.h' - s.private_header_files = 'ParseFacebookUtilsTvOS/ParseFacebookUtilsTvOS/Internal/**/*.h' - s.source_files = 'ParseFacebookUtilsTvOS/ParseFacebookUtilsTvOS/Source/*.{h,m}', - 'ParseFacebookUtilsTvOS/ParseFacebookUtilsTvOS/Internal/**/*.{h,m}' - - s.frameworks = 'AudioToolbox', - 'CFNetwork', - 'CoreGraphics', - 'CoreLocation', - 'QuartzCore', - 'Security', - 'SystemConfiguration' - s.libraries = 'z', 'sqlite3' - - s.dependency 'Parse/Core' - s.dependency 'Parse/FacebookUtils' - s.dependency 'Bolts/Tasks', '1.9.1' - s.dependency 'FBSDKTVOSKit', '= 15.1.0' - s.dependency 'FBSDKShareKit', '= 15.1.0' - s.user_target_xcconfig = { - 'GENERATE_INFOPLIST_FILE' => 'YES' - } - - s.pod_target_xcconfig = { - 'GENERATE_INFOPLIST_FILE' => 'YES' - } - s.pod_target_xcconfig = { 'EXCLUDED_ARCHS[sdk=*simulator*]' => 'x86_64 armv7 arm64' } - end - - s.subspec 'TwitterUtils' do |s| - s.platform = :ios - s.public_header_files = 'ParseTwitterUtils/ParseTwitterUtils/Source/*.h' - s.source_files = 'ParseTwitterUtils/ParseTwitterUtils/Source/*.{h,m}', - 'ParseTwitterUtils/ParseTwitterUtils/Internal/**/*.{h,m}' - s.private_header_files = 'ParseTwitterUtils/ParseTwitterUtils/Internal/**/*.h' - s.resource_bundle = { 'TwitterUtils' => 'ParseTwitterUtils/ParseTwitterUtils/Resources/en.lproj' } - s.frameworks = 'AudioToolbox', - 'CFNetwork', - 'CoreGraphics', - 'CoreLocation', - 'QuartzCore', - 'Security', - 'StoreKit', - 'SystemConfiguration' - s.weak_frameworks = 'Accounts', - 'Social' - s.libraries = 'z', 'sqlite3' - s.dependency 'Parse/Core' - s.user_target_xcconfig = { - 'GENERATE_INFOPLIST_FILE' => 'YES' - } - - s.pod_target_xcconfig = { - 'GENERATE_INFOPLIST_FILE' => 'YES' - } - - s.pod_target_xcconfig = { 'ONLY_ACTIVE_ARCH' => 'YES' } - end - - s.subspec 'UI' do |s| - s.platform = :ios - s.requires_arc = true - s.ios.deployment_target = '9.0' - s.source_files = 'ParseUI/ParseUI/Internal/**/*.{h,m}', - 'ParseUI/ParseUI/Source/*.{h,m}' - s.exclude_files = 'ParseUI/ParseUIDemo/**/*', 'ParseUI/SignInWithAppleTests/' - s.public_header_files = 'ParseUI/ParseUI/Source/*.h' - s.private_header_files = 'ParseUI/ParseUI/Internal/**/*.h' - s.resource_bundles = { 'ParseUI' => ['ParseUI/ParseUI/Resources/Localization/*.lproj'] } - s.frameworks = 'Foundation', - 'UIKit', - 'CoreGraphics', - 'QuartzCore' - s.dependency 'Parse/Core' - s.user_target_xcconfig = { - 'GENERATE_INFOPLIST_FILE' => 'YES' - } - - s.pod_target_xcconfig = { - 'GENERATE_INFOPLIST_FILE' => 'YES' - } - end - - # prepare command for parseUI - s.prepare_command = <<-CMD - ruby ParseUI/Scripts/convert_images.rb \ - ParseUI/ParseUI/Resources/Images/ \ - ParseUI/Source/PFResources - CMD -end - diff --git a/README.md b/README.md index e3efe671d..acdef8977 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,6 @@ [![Coverage](https://img.shields.io/codecov/c/github/parse-community/Parse-SDK-iOS-OSX/master.svg)](https://codecov.io/github/parse-community/Parse-SDK-iOS-OSX?branch=master) [![auto-release](https://img.shields.io/badge/%F0%9F%9A%80-auto--release-9e34eb.svg)](https://github.com/parse-community/Parse-SDK-iOS-OSX/releases) -![Platforms](http://img.shields.io/cocoapods/p/Parse.svg?style=flat) ![SPM](https://img.shields.io/badge/Swift_Package_Manager-compatible-green?style=flat) [![Backers on Open Collective](https://opencollective.com/parse-server/backers/badge.svg)][open-collective-link] @@ -35,7 +34,7 @@ A library that gives you access to the powerful Parse Server backend from your i ## Getting Started -#### Swift Package Manager +The easiest way to install the SDK is via Swift Package Manager. 1. Open Xcode > File > Add packages... 2. Add the following package URL: diff --git a/Rakefile b/Rakefile index ff0a2279a..649ca0e52 100644 --- a/Rakefile +++ b/Rakefile @@ -24,7 +24,6 @@ module Constants script_folder = File.expand_path(File.dirname(__FILE__)) PARSE_CONSTANTS_HEADER = File.join(script_folder, 'Parse', 'Parse', 'Source/PFConstants.h') - PARSE_PODSPEC = File.join(script_folder, 'Parse.podspec') PLISTS = [ File.join(script_folder, 'Parse', 'Parse', 'Resources', 'Parse-iOS.Info.plist'), @@ -62,12 +61,6 @@ module Constants PLISTS.each do |plist| update_info_plist_version(plist, version) end - - podspec_file = File.open(PARSE_PODSPEC, 'r+') - podspec = podspec_file.read - podspec.gsub!(/(.*s.version\s*=\s*')(.*)(')/, "\\1#{version}\\3") - podspec_file.seek(0) - podspec_file.write(podspec) end def self.update_info_plist_version(plist_path, version) @@ -704,21 +697,4 @@ namespace :test do end end end - - desc 'Run Podspec Lint' - task :cocoapods do |_| - podspecs = ['Parse.podspec'] - results = [] - system("pod repo update --silent") - podspecs.each do |podspec| - results << system("pod lib lint #{podspec} --allow-warnings") - results << system("pod lib lint #{podspec} --allow-warnings --use-libraries --use-modular-headers") - end - results.each do |result| - unless result - puts 'Podspec Tests Failed!' - exit(1) - end - end - end end diff --git a/release.config.js b/release.config.js index c33bccd16..8b195edab 100644 --- a/release.config.js +++ b/release.config.js @@ -85,7 +85,7 @@ async function config() { 'npmPublish': false, }], ['@semantic-release/git', { - assets: [changelogFile, 'package.json', 'package-lock.json', 'Parse.podspec', ['Parse*/**/*.{h,plist}', '!**/xcuserdata/**'] ], + assets: [changelogFile, 'package.json', 'package-lock.json', ['Parse*/**/*.{h,plist}', '!**/xcuserdata/**'] ], }], ['@semantic-release/github', { successComment: getReleaseComment(),