Upgrade to Pro — share decks privately, control downloads, hide ads and more …

CLI apps. For fun and profit

CLI apps. For fun and profit

Talk given at Cocoa Kucha on #inspect conference, May 2014

Marin Usalj

May 29, 2014
Tweet

More Decks by Marin Usalj

Other Decks in Programming

Transcript

  1. CLI APPS. FOR
    FUN AND PROFIT
    @SUPERMARIN

    View Slide

  2. WHEN
    FUNCTIONALITY NOT SUPPORTED BY GUI
    IT'S HARD TO AUTOMATE TASKS
    ENDLESS POSSIBILITIES

    View Slide

  3. HOW DO I
    RUBY, GO, PYTHON, EVEN OBJECTIVE-C

    View Slide

  4. PIPELINE
    CAT BUILD.LOG | GREP ERROR | WC -L

    View Slide

  5. STATUS CODES
    $ XCODEBUILD | TEE XCODEBUILD.LOG | XCPRETTY

    View Slide

  6. XCODEBUILD FAILS, STATUS 0

    View Slide

  7. PIPESTATUS []
    $ xcodebuild | tee output.log | xcpretty
    $? => 0
    ${PIPESTATUS[0]} => 65
    ${PIPESTATUS[2]} => 0
    $ xcodebuild | tee output.log | xcpretty; exit ${PIPESTATUS[0]}

    View Slide

  8. SET -O PIPEFAIL
    $ xcodebuild | tee output.log | xcpretty
    $ echo $? => 65

    View Slide

  9. 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 |

    View Slide

  10. #!
    #!/USR/BIN/ENV RUBY

    View Slide

  11. POSIX FLAGS
    $ COMMAND --VERBOSE --COLOR
    =
    $ COMMAND -VC
    (ONLY IN SILICON VALLEY)

    View Slide

  12. CLI FRAMEWORKS
    DON'T DIY

    View Slide

  13. XCPRETTY
    GITHUB.COM/SUPERMARIN/XCPRETTY

    View Slide

  14. SUCH HTML

    View Slide

  15. WHY IN THE
    WORLD?
    THERE'S XCTOOL

    View Slide

  16. XCTOOL(XCODEBUILD) -FLAG -FLAG
    WRAPPING XCODEBUILD, RECREATING FLAGS

    View Slide

  17. XCODEBUILD -FLAG -FLAG | XCPRETTY
    USING VANILLA XCODEBUILD

    View Slide

  18. XCTOOL - TESTS
    maintaining separate settings
    XCODEBUILD - BETA
    XCODEBUILD - APPSTORE
    maintaining separate settings

    View Slide

  19. USED BY
    RUBYMOTION
    FACEBOOK (POP)
    AFNETWORKING
    KIWI
    YAMMER
    THOUGHTBOT
    MANY OTHERS

    View Slide

  20. <3
    HIPBYTE
    YAMMER
    @KATTRALI

    View Slide