xcbeautify
is a little beautifier tool for xcodebuild
.
Similar to xcpretty
, but faster.
- 2x faster than
xcpretty
. - Human-friendly and colored output.
- Supports the new build system's output.
- Supports Xcode's parallel testing output.
- Supports formatting Swift Package Manager output.
- Supports formatting Bazel output.
- Supports generating JUnit reports.
- Supports macOS & Linux.
- Written in Swift:
xcbeautify
compiles to a static binary which you can bring anywhere. This also means less Ruby-dependant in your development environment and CI.
xcbeautify
uses itself to format its CI build logs.
If you use macOS 10.14.3 or earlier, install Swift 5 Runtime Support for Command Line Tools first:
brew cask install thii/swift-runtime/swift-runtime
brew install xcbeautify
mint install tuist/xcbeautify
pod 'xcbeautify'
The xcbeautify
binary will be installed at Pods/xcbeautify/xcbeautify
Create a directory in the same location as the xcodeproj
file, for example BuildTools
.
In that directory, create a Package.swift
file with the following contents.
In addition, add an empty file named Empty.swift
to the same location.
// swift-tools-version: 5.6
import PackageDescription
let package = Package(
name: "BuildTools",
platforms: [.macOS(.v10_11)],
dependencies: [
.package(url: "https://github.com/tuist/xcbeautify", from: "0.13.0"),
],
targets: [
.target(name: "BuildTools", path: "")
]
)
Enter this command to execute.
swift run -c release --package-path ./BuildTools xcbeautify
git clone https://github.com/tuist/xcbeautify.git
cd xcbeautify
make install
xcodebuild [flags] | xcbeautify
If you want xcbeautify
to exit with the same status code as xcodebuild
(e.g. on a CI):
set -o pipefail && xcodebuild [flags] | xcbeautify
For parallel and concurrent destination testing, it helps to use unbuffered I/O for stdout and to redirect stderr to stdout.
NSUnbufferedIO=YES xcodebuild [flags] 2>&1 | xcbeautify
swift test [flags] 2>&1 | xcbeautify
Parse Bazel's building and testing output:
set -o pipefail && bazel build //path/to/package:target 2>&1 | xcbeautify
set -o pipefail && bazel test //path/to/package:target 2>&1 | xcbeautify
- Write more tests
Generate Xcode project:
make xcode
Build with Bazel:
bazel build //Sources/xcbeautify
Release a new version, e.g. x.y.z
:
make release version=x.y.z
Please send a PR!
MIT