$30 off During Our Annual Pro Sale. View Details »

Managing your dependencies using Carthage

Managing your dependencies using Carthage

Using a dependency manager is cool, but you know what is cooler? ANOTHER DEPENDENCY MANAGER!

Romain Pouclet

February 10, 2015
Tweet

More Decks by Romain Pouclet

Other Decks in Programming

Transcript

  1. Managing&your&dependencies&using& CocoaPods&Carthage Cocoaheads)Montréal)02/2015

  2. Why$do$we$need$a$new$dependency$ manager$for$iOS$/$OSX?

  3. We#don't.

  4. Thanks!

  5. Dependency(management? Automa'ng*the*process*of*installing,* upgrading,*configuring,*and*removing*libraries

  6. Cocoapods(VS(Carthage

  7. Cocoapods!VS!Carthage • Ruby&based,&Centralized&repository,&kinda&intrusive • List&dependencies&in&a&“Podfile”,&share&your&libs&using&a&JSON& “podspec”&file • Framework&support&since&0.36 • AutomaKc&doc&generaKon&at&cocoadocs.org

    • PLUGINS&(ex:&github.com/orta/cocoapodsPkeys)!
  8. Cocoapods!VS!Carthage h"ps:/ /github.com/search?u48=✓&q=filename%3APodfile

  9. Cocoapods(is(s*ll(a(great(tool(and( you((probably)(don't(need(to(switch

  10. Carthage • S#ll%really%fresh • Another%nice%tool%from%Github • (Painfully?)%wri<en%in%Swi=

  11. Cocoapods(VS(Carthage h"ps:/ /github.com/search?u48=✓&q=filename%3ACartfile

  12. Ge#ng&started&with&Carthage • Visit&github.com/Carthage/Carthage • Go&to&releases&and&download&latest • Open&*.pkg&blahblahblah or ! ~

    $ brew install carthage
  13. Ge#ng&started&with&Carthage ! ~ $ carthage

  14. Carthage(leverages(the(power(of(Frameworks • Available)on)OSX)since)~1977)(*reference)required) • Available)on)iOS)since)Facebook)and)Dropbox)figured)a)way)to) cheat • Available)on)iOS)since)iOS)8 • Frameworks)can)contain)a)lot:)Views,)Controls,)Resources)(cf)

    WWDC)#416)
  15. A"basic"Cartfile Add#your#dependencies#(github#repo,#URL#to#git#repository)#into#a# Cartfile github "realm/realm-cocoa" == 0.90.3 github "Palleas/ReactiveCSVParser" "master"

  16. Installing)/)Upda.ng)dependencies $ `carthage update` • Carthage)will)fetch)all)the)dependencies)in)the)Carthage/ Checkouts)folder)and)build)the)shared)schemes • A)Cartfile.resolved)that)you/have/to/commit)will)be)generated •

    Frameworks)will)be)generated)in)Carthage/Build,)simply)drag) them)in)your)project
  17. Submodules*are*cool*again! $"carthage"update"!!use!submodules (Don't'worry,'Carthage'handle'the'hard'part'automagically)

  18. I"have"been"using"Carthage"for"a"few"weeks" now

  19. I"tested"it"with"a"CSV"parser"I"wrote github.com/Palleas/Reac2veCSVParser

  20. Sharing(my(framework:(share(the(scheme

  21. Sharing(my(framework:(tag(and(push! $ git tag 0.0.1 $ git push origin master

    --tags (Note&that&you&can&use&a&branch,&a&commit,&anything&git rev- parse&will&understand)
  22. Adding&my&framework (Because(I(like(my(framework) $ echo 'Palleas/ReactiveCSVParser "~> 0.0.1"' >> Cartfile $

    carthage update
  23. Or#if#I#want#to#contribute... $ git clone git@github.com:Palleas/Catalog.git $ cd Catalog $ carthage

    bootstrap
  24. Some%issues%I%got Adding&a&framework&with&no&shared&schemes *** Fetching realm-cocoa *** Checking out realm-cocoa at

    "b30" *** xcodebuild output can be found in /var/folders/qt/nys5f4b154x88ysnv0bccdbm0000gn/T/carthage-xcodebuild.uEWmAC.log Project "TightDbObjcDyn.xcodeproj" has no shared schemes
  25. Project "TightDbObjcDyn.xcodeproj" has no shared schemes (Wat?)

  26. Some%issues%I%got Using&Carthage&(well&actually,&it's&Frameworks)& in&a&command&line&tool (TL;DR:(It's(a(pain)

  27. Con$nuous'Integra$on (Yes,&again.)

  28. Se#ng&up&travis/ci Carthage(is(not(included(in(Travis3ci((yet?) #!/usr/bin/env bash echo "*********** Installing Carthage ***********" brew

    update brew install carthage --HEAD
  29. Se#ng&up&travis/ci Carthage(will(build(all(your(schemes,(even(the(one(you( don't(need echo "*********** Installing dependencies with Carthage ***********"

    carthage bootstrap --no-build find Carthage/Checkouts -type f -name "*iOS*.xcscheme" -delete carthage build
  30. Conclusion Carthage(is(great.(It(provides(less(features( than(Cocoapods(but(is(easier(to(use

  31. Thanks! (Want&a&book?) (Photos'©'Camille'Furno'!)