Add PromiseKit dependency
- Added PromiseKit dependency
This commit is contained in:
193
Carthage/Checkouts/PromiseKit/Documentation/Installation.md
vendored
Normal file
193
Carthage/Checkouts/PromiseKit/Documentation/Installation.md
vendored
Normal file
@@ -0,0 +1,193 @@
|
||||
# Xcode 8.3, 9.x or 10.x / Swift 3 or 4
|
||||
|
||||
We recommend Carthage over CocoaPods, but both installation methods are supported.
|
||||
|
||||
## CocoaPods
|
||||
|
||||
```ruby
|
||||
use_frameworks!
|
||||
|
||||
target "Change Me!" do
|
||||
pod "PromiseKit", "~> 6.0"
|
||||
end
|
||||
```
|
||||
|
||||
If the generated Xcode project gives you a warning that PromiseKit needs to be upgraded to
|
||||
Swift 4.0 or Swift 4.2, then add the following:
|
||||
|
||||
```ruby
|
||||
post_install do |installer|
|
||||
installer.pods_project.targets.each do |target|
|
||||
if target.name == 'PromiseKit'
|
||||
target.build_configurations.each do |config|
|
||||
config.build_settings['SWIFT_VERSION'] = '4.2'
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
```
|
||||
|
||||
Adjust the value for `SWIFT_VERSION` as needed.
|
||||
|
||||
CocoaPods are aware of this [issue](https://github.com/CocoaPods/CocoaPods/issues/7134).
|
||||
|
||||
## Carthage
|
||||
|
||||
```ruby
|
||||
github "mxcl/PromiseKit" ~> 6.0
|
||||
```
|
||||
|
||||
## SwiftPM
|
||||
|
||||
```ruby
|
||||
package.dependencies.append(
|
||||
.Package(url: "https://github.com/mxcl/PromiseKit", majorVersion: 6)
|
||||
)
|
||||
```
|
||||
|
||||
## Manually
|
||||
|
||||
You can just drop `PromiseKit.xcodeproj` into your project and then add
|
||||
`PromiseKit.framework` to your app’s embedded frameworks.
|
||||
|
||||
|
||||
# PromiseKit vs. Xcode
|
||||
|
||||
PromiseKit contains Swift, so there have been rev-lock issues with Xcode:
|
||||
|
||||
| PromiseKit | Swift | Xcode | CI Status | Release Notes |
|
||||
| ---------- | ----------------------- | -------- | ------------ | ----------------- |
|
||||
| 6 | 3.1, 3.2, 3.3, 4.x | 8.3, 9.x, 10.x | ![ci-master] | [2018/02][news-6] |
|
||||
| 5 | 3.1, 3.2, 3.3, 4.x | 8.3, 9.x | *Deprecated* | *n/a* |
|
||||
| 4† | 3.0, 3.1, 3.2, 3.3, 4.x | 8.x, 9.x | ![ci-master] | [2016/09][news-4] |
|
||||
| 3 | 2.x | 7.x, 8.0 | ![ci-swift2] | [2015/10][news-3] |
|
||||
| 2 | 1.x | 7.x | *Deprecated* | [2015/10][news-3] |
|
||||
| 1‡ | *N/A* | * | ![ci-legacy] | – |
|
||||
|
||||
† Probably supports Xcode 10 and Swift 4.2, if not, PR welcome.
|
||||
|
||||
‡ PromiseKit 1 is pure Objective-C and thus can be used with any Xcode, it is
|
||||
also your only choice if you need to support iOS 7 or below.
|
||||
|
||||
---
|
||||
|
||||
We also maintain a series of branches to aid migration for PromiseKit 2:
|
||||
|
||||
| Xcode | Swift | PromiseKit | Branch | CI Status |
|
||||
| ----- | ----- | -----------| --------------------------- | --------- |
|
||||
| 8.0 | 2.3 | 2 | [swift-2.3-minimal-changes] | ![ci-23] |
|
||||
| 7.3 | 2.2 | 2 | [swift-2.2-minimal-changes] | ![ci-22] |
|
||||
| 7.2 | 2.2 | 2 | [swift-2.2-minimal-changes] | ![ci-22] |
|
||||
| 7.1 | 2.1 | 2 | [swift-2.0-minimal-changes] | ![ci-20] |
|
||||
| 7.0 | 2.0 | 2 | [swift-2.0-minimal-changes] | ![ci-20] |
|
||||
|
||||
We do **not** usually backport fixes to these branches, but pull requests are welcome.
|
||||
|
||||
|
||||
## Xcode 8 / Swift 2.3 or Xcode 7
|
||||
|
||||
```ruby
|
||||
# CocoaPods
|
||||
swift_version = "2.3"
|
||||
pod "PromiseKit", "~> 3.5"
|
||||
|
||||
# Carthage
|
||||
github "mxcl/PromiseKit" ~> 3.5
|
||||
```
|
||||
|
||||
|
||||
[travis]: https://travis-ci.org/mxcl/PromiseKit
|
||||
[ci-master]: https://travis-ci.org/mxcl/PromiseKit.svg?branch=master
|
||||
[ci-legacy]: https://travis-ci.org/mxcl/PromiseKit.svg?branch=legacy-1.x
|
||||
[ci-swift2]: https://travis-ci.org/mxcl/PromiseKit.svg?branch=swift-2.x
|
||||
[ci-23]: https://travis-ci.org/mxcl/PromiseKit.svg?branch=swift-2.3-minimal-changes
|
||||
[ci-22]: https://travis-ci.org/mxcl/PromiseKit.svg?branch=swift-2.2-minimal-changes
|
||||
[ci-20]: https://travis-ci.org/mxcl/PromiseKit.svg?branch=swift-2.0-minimal-changes
|
||||
[news-2]: http://promisekit.org/news/2015/05/PromiseKit-2.0-Released/
|
||||
[news-3]: https://github.com/mxcl/PromiseKit/blob/master/CHANGELOG.markdown#300-oct-1st-2015
|
||||
[news-4]: http://promisekit.org/news/2016/09/PromiseKit-4.0-Released/
|
||||
[news-6]: http://promisekit.org/news/2018/02/PromiseKit-6.0-Released/
|
||||
[swift-2.3-minimal-changes]: https://github.com/mxcl/PromiseKit/tree/swift-2.3-minimal-changes
|
||||
[swift-2.2-minimal-changes]: https://github.com/mxcl/PromiseKit/tree/swift-2.2-minimal-changes
|
||||
[swift-2.0-minimal-changes]: https://github.com/mxcl/PromiseKit/tree/swift-2.0-minimal-changes
|
||||
|
||||
|
||||
# Using Git Submodules for PromiseKit’s Extensions
|
||||
|
||||
> *Note*: This is a more advanced technique.
|
||||
|
||||
If you use CocoaPods and a few PromiseKit extensions, then importing PromiseKit
|
||||
causes that module to import all the extension frameworks. Thus, if you have an
|
||||
app and a few app extensions (e.g., iOS app, iOS watch extension, iOS Today
|
||||
extension) then all your final products that use PromiseKit will have forced
|
||||
dependencies on all the Apple frameworks that PromiseKit provides extensions
|
||||
for.
|
||||
|
||||
This isn’t that bad, but every framework that loads entails overhead and
|
||||
lengthens startup time.
|
||||
|
||||
It’s both better and worse with Carthage. We build individual micro-frameworks
|
||||
for each PromiseKit extension, so your final products link
|
||||
against only the Apple frameworks that they actually need. However, Apple has
|
||||
advised that apps link only against “about 12” frameworks for performance
|
||||
reasons. So with Carthage, we are worse off on this metric.
|
||||
|
||||
The solution is to instead import only CorePromise:
|
||||
|
||||
```ruby
|
||||
# CocoaPods
|
||||
pod "PromiseKit/CorePromise"
|
||||
|
||||
# Carthage
|
||||
github "mxcl/PromiseKit"
|
||||
# ^^ for Carthage *only* have this
|
||||
```
|
||||
|
||||
And to use the extensions you need via `git submodules`:
|
||||
|
||||
```
|
||||
git submodule init
|
||||
git submodule add https://github.com/PromiseKit/UIKit Submodules/PMKUIKit
|
||||
```
|
||||
|
||||
Then in Xcode you can add these sources to your targets on a per-target basis.
|
||||
|
||||
Then when you `pod update`, ensure that you also update your submodules:
|
||||
|
||||
pod update && git submodule update --recursive --remote
|
||||
|
||||
|
||||
|
||||
# Release History
|
||||
|
||||
## [6.0](https://github.com/mxcl/PromiseKit/releases/tag/6.0.0) Feb 13th, 2018
|
||||
|
||||
* [PromiseKit 6 announcement post][news-6].
|
||||
|
||||
## [4.0](https://github.com/mxcl/PromiseKit/releases/tag/4.0.0)
|
||||
|
||||
* [PromiseKit 4 announcement post][news-4].
|
||||
|
||||
## [3.0](https://github.com/mxcl/PromiseKit/releases/tag/3.0.0) Oct 1st, 2015
|
||||
|
||||
In Swift 2.0 `catch` and `defer` became reserved keywords mandating we rename
|
||||
our functions with these names. This forced a major semantic version change on
|
||||
PromiseKit and thus we took the opportunity to make other minor (source
|
||||
compatibility breaking) improvements.
|
||||
|
||||
Thus if you cannot afford to adapt to PromiseKit 3 but still want to use
|
||||
Xcode-7.0/Swift-2.0 we provide a [minimal changes branch] where `catch` and
|
||||
`defer` are renamed `catch_` and `defer_` and all other changes are the bare
|
||||
minimum to make PromiseKit 2 compile against Swift 2.
|
||||
|
||||
If you still are using Xcode 6 and Swift 1.2 then use PromiseKit 2.
|
||||
|
||||
[minimal changes branch]: https://github.com/mxcl/PromiseKit/tree/swift-2.0-minimal-changes
|
||||
|
||||
## [2.0](https://github.com/mxcl/PromiseKit/releases/tag/2.0.0) May 14th, 2015
|
||||
|
||||
[PromiseKit 2 announcement post](http://promisekit.org/news/2015/05/PromiseKit-2.0-Released/).
|
||||
|
||||
## [1.5](https://github.com/mxcl/PromiseKit/releases/tag/1.5.0)
|
||||
|
||||
Swift 1.2 support. Xcode 6.3 required.
|
Reference in New Issue
Block a user