efcfa1cf87 | ||
---|---|---|
Examples | ||
Sources | ||
SwiftScriptRunner.xcodeproj | ||
Tests | ||
.gitignore | ||
.rubocop.yml | ||
.rubocop_general.yml | ||
.swift-version | ||
.travis.yml | ||
Gemfile | ||
Gemfile.lock | ||
LICENSE | ||
Package.swift | ||
README.md | ||
SwiftScriptRunner.podspec |
README.md
SwiftScriptRunner
A simple utility for writing Swift scripts with async callbacks to 3rd party frameworks.
See this blog post for more details.
Requirements
- Xcode 9.2
- cocoapods gem version 1.4.0
- cocoapods-rome gem version 0.8.0
- carthage version 0.28.0
Installation
SwiftScriptRunner is available through CocoaPods Rome and Carthage.
CocoaPods Rome
Make sure you have cocoapods-rome Ruby gem installed.
Add the following line to your Podfile
:
platform :osx, "10.10"
use_frameworks!
plugin "cocoapods-rome"
pod "SwiftScriptRunner", "~> 1.0.1"
And run
pod install
Carthage
Add the following line to your Cartfile
:
github "mgrebenets/SwiftScriptRunner", ~> 1.0.1
And run
carthage update --platform mac
Swift Package Manager
TODO:
Usage
Example of asynchronous network request using Alamofire.
// Shebangs for using with different dependency managers.
//
// - Carthage:
// #!/usr/bin/env xcrun swift -F Carthage/Build/Mac
// - CocoaPods Rome:
// #!/usr/bin/env xcrun swift -F Rome
// - Swift Package Manager:
// Example.swift
import Alamofire
import SwiftScriptRunner
var runner = SwiftScriptRunner()
runner.lock() // Lock
Alamofire.request("http://httpbin.org/get")
.responseJSON { response in
print("Successful response:")
print(response) // Result of response serialization
runner.unlock() // Unlock
}
runner.wait() // Wait
Now you can run it.
# When using CocoaPods
swift -F Rome Example.swift
# When using Carthage
swift -F Carthage/Build/Mac Example.swift
# When -F option is part of shebang and Example.swift is executable
./Example.swift
See Examples
folder for details.
Author
Maksym Grebenets, mgrebenets@gmail.com, @mgrebenets
License
SwiftScriptRunner is available under the MIT license. See the LICENSE file for more info.