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!

B4f9306896b6eaa56a9a6b9048285f53?s=128

Romain Pouclet

February 10, 2015
Tweet

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'!)