Rainbow adds text color, background color and style for console and command
line output in Swift. It is born for cross platform software logging
in terminals, working in both Apple's platforms and Linux.
Nifty way, using the
String extension, and print the colorized string:
import Rainbow print("Red text".red) print("Blue background".onBlue) print("Light green text on white background".lightGreen.onWhite) print("Underline".underline) print("Cyan with bold and blinking".cyan.bold.blink) print("Plain text".red.onYellow.bold.clearColor.clearBackgroundColor.clearStyles)
It will give you something like this:
You can also use the more verbose way if you want:
import Rainbow let output = "The quick brown fox jumps over the lazy dog" .applyingCodes(Color.red, BackgroundColor.yellow, Style.bold) print(output) // Red text on yellow, bold of course :)
Motivation and Compatibility
Thanks to the open source of Swift, developers now could write cross platform programs with the same language. And I believe the command line software would be the next great platform for Swift. Colorful and well organized output always helps us to understand what happens. It is really a necessary utility to create wonderful software.
Rainbow should work well in both OS X and Linux terminals. It is smart enough
to check whether the output is connected to a valid text terminal or not, to
decide the log should be modified or not. This could be useful when you want to
send your log to a file instead to console.
Rainbow is first designed for console output in terminals, you could
use it in Xcode with XcodeColors
plugin installed too. It will enable color output for better debugging
experience in Xcode.
Please notice, after Xcode 8, third party plugins in bundle (like XcodeColors) is not supported anymore. See this.
Rainbow 3.x supports from Swift 4. If you need to use Rainbow in Swift 3, use Rainbow 2.1 instead.
Swift Package Manager
If you are developing a cross platform software in Swift,
Swift Package Manager might
be your choice for package management. Just add the url of this repo to your
Package.swift file as a dependency:
// swift-tools-version:4.0 import PackageDescription let package = Package( name: "YourAwesomeSoftware", dependencies: [ .package(url: "https://github.com/onevcat/Rainbow", from: "3.0.0") ] )
swift build whenever you get prepared.
You could know more information on how to use Swift Package Manager in Apple's official page.
RainbowSwift pod to your
source 'https://github.com/CocoaPods/Specs.git' platform :ios, '8.0' pod 'RainbowSwift', '~> 3.0'
And you need to import
RainbowSwift instead of
Rainbow if you install it from CocoaPods.
// import Rainbow import RainbowSwift print("Hello CocoaPods".red)
Carthage is a decentralized dependency manager for Cocoa application.
Rainbow with Carthage, add this to your
github "onevcat/Rainbow" ~> 3.0
carthage update to build the framework and drag the built
Rainbow.framework into your Xcode project (as well as embed it in your target
Rainbow is released under the MIT license. See LICENSE for details.
Help us keep the lights on
3.0.0 - Nov 26, 2017
Swift 4 support.
2.1.0 - Aug 3, 2017
Rainbow. extractModes as public.
2.0.1 - Sep 30, 2016
Support for Linux.
2.0.0 - Sep 25, 2016
Swift 3 compatibility.
1.1.0 - Mar 24, 2016
Support for Swift 2.2