Skip to content

Commit

Permalink
Adds support for macOS
Browse files Browse the repository at this point in the history
Also makes it possible to specify which cloud kit container you want to use.
  • Loading branch information
César Pinto Castillo authored May 1, 2017
1 parent 0e5e810 commit ec6a50a
Show file tree
Hide file tree
Showing 14 changed files with 500 additions and 147 deletions.
5 changes: 3 additions & 2 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ language: objective-c
osx_image: xcode8.1
xcode_sdk: 9.0
xcode_project: CloudKitCurrentUser.xcodeproj
xcode_scheme: CloudKitCurrentUser
script:
- fastlane test
- fastlane scan --scheme "CloudKitCurrentUser iOS" --sdk iphonesimulator10.1
- fastlane scan --scheme "CloudKitCurrentUser macOS" --sdk macosx10.12

453 changes: 339 additions & 114 deletions CloudKitCurrentUser.xcodeproj/project.pbxproj

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
BuildableIdentifier = "primary"
BlueprintIdentifier = "FC1D26A51DF21BAD005049CA"
BuildableName = "CloudKitCurrentUser.framework"
BlueprintName = "CloudKitCurrentUser"
BlueprintName = "CloudKitCurrentUser iOS"
ReferencedContainer = "container:CloudKitCurrentUser.xcodeproj">
</BuildableReference>
</BuildActionEntry>
Expand All @@ -32,9 +32,9 @@
skipped = "NO">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "FC1D26AE1DF21BAD005049CA"
BuildableName = "CloudKitCurrentUserTests.xctest"
BlueprintName = "CloudKitCurrentUserTests"
BlueprintIdentifier = "FC1B22A71EA56A8400A17879"
BuildableName = "CloudKitCurrentUser iOS Tests.xctest"
BlueprintName = "CloudKitCurrentUser iOS Tests"
ReferencedContainer = "container:CloudKitCurrentUser.xcodeproj">
</BuildableReference>
</TestableReference>
Expand All @@ -44,7 +44,7 @@
BuildableIdentifier = "primary"
BlueprintIdentifier = "FC1D26A51DF21BAD005049CA"
BuildableName = "CloudKitCurrentUser.framework"
BlueprintName = "CloudKitCurrentUser"
BlueprintName = "CloudKitCurrentUser iOS"
ReferencedContainer = "container:CloudKitCurrentUser.xcodeproj">
</BuildableReference>
</MacroExpansion>
Expand All @@ -66,7 +66,7 @@
BuildableIdentifier = "primary"
BlueprintIdentifier = "FC1D26A51DF21BAD005049CA"
BuildableName = "CloudKitCurrentUser.framework"
BlueprintName = "CloudKitCurrentUser"
BlueprintName = "CloudKitCurrentUser iOS"
ReferencedContainer = "container:CloudKitCurrentUser.xcodeproj">
</BuildableReference>
</MacroExpansion>
Expand All @@ -84,7 +84,7 @@
BuildableIdentifier = "primary"
BlueprintIdentifier = "FC1D26A51DF21BAD005049CA"
BuildableName = "CloudKitCurrentUser.framework"
BlueprintName = "CloudKitCurrentUser"
BlueprintName = "CloudKitCurrentUser iOS"
ReferencedContainer = "container:CloudKitCurrentUser.xcodeproj">
</BuildableReference>
</MacroExpansion>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,99 @@
<?xml version="1.0" encoding="UTF-8"?>
<Scheme
LastUpgradeVersion = "0820"
version = "1.3">
<BuildAction
parallelizeBuildables = "YES"
buildImplicitDependencies = "YES">
<BuildActionEntries>
<BuildActionEntry
buildForTesting = "YES"
buildForRunning = "YES"
buildForProfiling = "YES"
buildForArchiving = "YES"
buildForAnalyzing = "YES">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "FC1B228B1EA5658700A17879"
BuildableName = "CloudKitCurrentUser.framework"
BlueprintName = "CloudKitCurrentUser macOS"
ReferencedContainer = "container:CloudKitCurrentUser.xcodeproj">
</BuildableReference>
</BuildActionEntry>
</BuildActionEntries>
</BuildAction>
<TestAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
shouldUseLaunchSchemeArgsEnv = "YES">
<Testables>
<TestableReference
skipped = "NO">
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "FC1B22B61EA56AA900A17879"
BuildableName = "CloudKitCurrentUser macOS Tests.xctest"
BlueprintName = "CloudKitCurrentUser macOS Tests"
ReferencedContainer = "container:CloudKitCurrentUser.xcodeproj">
</BuildableReference>
</TestableReference>
</Testables>
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "FC1B228B1EA5658700A17879"
BuildableName = "CloudKitCurrentUser.framework"
BlueprintName = "CloudKitCurrentUser macOS"
ReferencedContainer = "container:CloudKitCurrentUser.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</TestAction>
<LaunchAction
buildConfiguration = "Debug"
selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
launchStyle = "0"
useCustomWorkingDirectory = "NO"
ignoresPersistentStateOnLaunch = "NO"
debugDocumentVersioning = "YES"
debugServiceExtension = "internal"
allowLocationSimulation = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "FC1B228B1EA5658700A17879"
BuildableName = "CloudKitCurrentUser.framework"
BlueprintName = "CloudKitCurrentUser macOS"
ReferencedContainer = "container:CloudKitCurrentUser.xcodeproj">
</BuildableReference>
</MacroExpansion>
<AdditionalOptions>
</AdditionalOptions>
</LaunchAction>
<ProfileAction
buildConfiguration = "Release"
shouldUseLaunchSchemeArgsEnv = "YES"
savedToolIdentifier = ""
useCustomWorkingDirectory = "NO"
debugDocumentVersioning = "YES">
<MacroExpansion>
<BuildableReference
BuildableIdentifier = "primary"
BlueprintIdentifier = "FC1B228B1EA5658700A17879"
BuildableName = "CloudKitCurrentUser.framework"
BlueprintName = "CloudKitCurrentUser macOS"
ReferencedContainer = "container:CloudKitCurrentUser.xcodeproj">
</BuildableReference>
</MacroExpansion>
</ProfileAction>
<AnalyzeAction
buildConfiguration = "Debug">
</AnalyzeAction>
<ArchiveAction
buildConfiguration = "Release"
revealArchiveInOrganizer = "YES">
</ArchiveAction>
</Scheme>
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

[![Build Status](https://travis-ci.org/JagCesar/CloudKitCurrentUser.svg?branch=master)](https://travis-ci.org/JagCesar/CloudKitCurrentUser)
[![Carthage compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage)
[![CloudKitCurrentUser](https://img.shields.io/badge/platform-iOS-lightgrey.svg?style=flat)](https://github.com/JagCesar/CloudKitCurrentUser)
[![CloudKitCurrentUser](https://img.shields.io/badge/platform-iOS%20%7C%20macOS-lightgrey.svg?style=flat)](https://github.com/JagCesar/CloudKitCurrentUser)
[![License](https://img.shields.io/badge/license-MIT-AA8DF8.svg?style=flat)](https://github.com/JagCesar/CloudKitCurrentUser/blob/master/LICENSE)
[![Language](https://img.shields.io/badge/language-Swift%203-E05C43.svg?style=flat)](https://swift.org)
[![Twitter](https://img.shields.io/badge/twitter-@JagCesar-00ACED.svg?style=flat)](http://twitter.com/JagCesar)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,4 @@
//
// CloudKitCurrentUser.h
// CloudKitCurrentUser
//
// Created by Cesar Pinto Castillo on 2016-12-02.
// Copyright © 2016 JagCesar. All rights reserved.
//

#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>

//! Project version number for CloudKitCurrentUser.
FOUNDATION_EXPORT double CloudKitCurrentUserVersionNumber;
Expand All @@ -15,5 +7,3 @@ FOUNDATION_EXPORT double CloudKitCurrentUserVersionNumber;
FOUNDATION_EXPORT const unsigned char CloudKitCurrentUserVersionString[];

// In this header, you should import all the public headers of your framework using statements like #import <CloudKitCurrentUser/PublicHeader.h>


Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,10 @@
import CloudKit

internal class CloudKitCurrentUserRequest: CurrentUserRequestProtocol {
var cloudKitContainerIdentifier: String?

func currentStatus(completionBlock: @escaping StatusCompletionBlock) {
CKContainer.default().accountStatus { accountStatus, error in
currentContainer().accountStatus { accountStatus, error in
switch accountStatus {
case .couldNotDetermine:
completionBlock(.NotDetermined, error)
Expand All @@ -25,12 +27,20 @@ internal class CloudKitCurrentUserRequest: CurrentUserRequestProtocol {
}

func userIdentifier(completionBlock: @escaping UserIdentifierCompletionBlock) {
CKContainer.default().fetchUserRecordID { recordID, error in
currentContainer().fetchUserRecordID { recordID, error in
completionBlock(recordID?.recordName, error)
}
}

func statusChangedNotification() -> NSNotification.Name {
return NSNotification.Name.CKAccountChanged
}

private func currentContainer() -> CKContainer {
if let cloudKitContainerIdentifier = cloudKitContainerIdentifier {
return CKContainer(identifier: cloudKitContainerIdentifier)
} else {
return CKContainer.default()
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,11 @@ public class CurrentUser {
private var isLoadingUserIdentifier: Bool = false
private var userIdentifierCompletionBlocks: [UserIdentifierCompletionBlock] = []
var userRequestObject: CurrentUserRequestProtocol = CloudKitCurrentUserRequest()
public var cloudKitContainerIdentifier: String? {
didSet {
userRequestObject.cloudKitContainerIdentifier = cloudKitContainerIdentifier
}
}

private init() {
NotificationCenter.default.addObserver(self,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,8 +19,9 @@ public typealias StatusCompletionBlock = (_ status: CurrentUserStatus, _ error:
public typealias UserIdentifierCompletionBlock = (_ userIdentifier: String?, _ error: Error?) -> Swift.Void

internal protocol CurrentUserRequestProtocol: class {
var cloudKitContainerIdentifier: String? { get set }

func currentStatus(completionBlock: @escaping StatusCompletionBlock)
func userIdentifier(completionBlock: @escaping UserIdentifierCompletionBlock)

func statusChangedNotification() -> NSNotification.Name
}
File renamed without changes.
26 changes: 26 additions & 0 deletions Sources/Info-macOS.plist
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>$(EXECUTABLE_NAME)</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundlePackageType</key>
<string>FMWK</string>
<key>CFBundleShortVersionString</key>
<string>1.3.0</string>
<key>CFBundleVersion</key>
<string>$(CURRENT_PROJECT_VERSION)</string>
<key>NSHumanReadableCopyright</key>
<string>Copyright © 2017 JagCesar. All rights reserved.</string>
<key>NSPrincipalClass</key>
<string></string>
</dict>
</plist>
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ struct TestError: Error {
}

class TestableCurrentUserRequest: CurrentUserRequestProtocol {
var cloudKitContainerIdentifier: String?
var status: CurrentUserStatus = .NotDetermined
var userIdentifier: String?
var error: Error?
Expand Down Expand Up @@ -108,10 +109,10 @@ class CloudKitCurrentUserTests: XCTestCase {
let testExpectation = expectation(description: "User changed notification")
var token: NSObjectProtocol?
token = NotificationCenter.default.addObserver(forName: CurrentUser.statusChangedNotification,
object: nil,
queue: nil) { notification in
NotificationCenter.default.removeObserver(token!)
testExpectation.fulfill()
object: nil,
queue: nil) { _ in
NotificationCenter.default.removeObserver(token!)
testExpectation.fulfill()
}
testableCurrentUser.statusChanged()
waitForExpectations(timeout: 5, handler: nil)
Expand Down
File renamed without changes.
5 changes: 0 additions & 5 deletions fastlane/Fastfile
Original file line number Diff line number Diff line change
Expand Up @@ -27,11 +27,6 @@ platform :ios do
increment_version_number(bump_type: options[:type])
end

desc "Runs all the tests"
lane :test do
scan
end

desc "Deploy a new version"
lane :deploy do
ensure_git_branch(branch: "master")
Expand Down

0 comments on commit ec6a50a

Please sign in to comment.