Talk given at Cocoa Kucha on #inspect conference, May 2014
CLI APPS. FORFUN AND PROFIT@SUPERMARIN
View Slide
WHENFUNCTIONALITY NOT SUPPORTED BY GUIIT'S HARD TO AUTOMATE TASKSENDLESS POSSIBILITIES
HOW DO IRUBY, GO, PYTHON, EVEN OBJECTIVE-C
PIPELINECAT BUILD.LOG | GREP ERROR | WC -L
STATUS CODES$ XCODEBUILD | TEE XCODEBUILD.LOG | XCPRETTY
XCODEBUILD FAILS, STATUS 0
PIPESTATUS []$ xcodebuild | tee output.log | xcpretty$? => 0${PIPESTATUS[0]} => 65${PIPESTATUS[2]} => 0$ xcodebuild | tee output.log | xcpretty; exit ${PIPESTATUS[0]}
SET -O PIPEFAIL$ xcodebuild | tee output.log | xcpretty$ echo $? => 65
BEWARE OF YOUR $SHELL| $SHELL | Exit status | Pipe status | Set a var ||--------|-------------|---------------|-------------|| bash | $? | $PIPESTATUS | export VAR= ||--------|-------------|---------------|-------------|| zsh | $status | $pipestatus | export VAR= ||--------|-------------|---------------|-------------|| fish | $status | / | set -x VAR |
#!#!/USR/BIN/ENV RUBY
POSIX FLAGS$ COMMAND --VERBOSE --COLOR=$ COMMAND -VC(ONLY IN SILICON VALLEY)
CLI FRAMEWORKSDON'T DIY
XCPRETTYGITHUB.COM/SUPERMARIN/XCPRETTY
SUCH HTML
WHY IN THEWORLD?THERE'S XCTOOL
XCTOOL(XCODEBUILD) -FLAG -FLAGWRAPPING XCODEBUILD, RECREATING FLAGS
XCODEBUILD -FLAG -FLAG | XCPRETTYUSING VANILLA XCODEBUILD
XCTOOL - TESTSmaintaining separate settingsXCODEBUILD - BETAXCODEBUILD - APPSTOREmaintaining separate settings
USED BYRUBYMOTIONFACEBOOK (POP)AFNETWORKINGKIWIYAMMERTHOUGHTBOTMANY OTHERS
<3HIPBYTEYAMMER@KATTRALI