SwiftGen

SwiftGen, projelerinizin kaynakları için otomatik olarak Swift kodu oluşturup onları kullanım açısından güvenli hale getiren bir araçtır. Colors, coredata, files, fonts, ib, json, plist, strings, xcassets, yaml dosya tiplerinin tamamını otomatik olarak kod tarafında oluşturabiliyor.

Öncelikle dosyamızın olduğu konumda terminal ekranı açıp pod init yazarak podfile’ımızı oluşturalım.

Cocopods’a aşina değilseniz, buraya bir göz atmanızı öneririm: https://www.raywenderlich.com/7076593-cocoapods-tutorial-for-swift-getting-started

SwiftGeni projemize entegre edelim ben bunun için en güvenli yol olan cocoapods’u kullanıyorum.Podfile dosyamızın ilgili kısmına aşağıdaki satırı ekleyelim.

pod 'SwiftGen'

sonrasında Podfile dosyamızın olduğu konumda terminal ekranı açalım ve aşağıdaki komut ile kütüphanenin projemize entegre olmasını sağlayalım.

pod install

Pods/SwiftGen’i oluşturduğumuzda klasör boş olacaktır. SwiftGen gerçek bir pod değildir.

SwiftGen swiftgen.yml dosyayasına ihtiyaç duyar. Aşağıdaki terminal komutu ile dosyayı oluşturalım.

touch swiftgen.yml

Bu komut bize swiftgen adında yml uzantılı bir dosya oluşturacak. Şimdi bu dosyayı Xcode ile açıp düzenleyelim.
Bu dosya içerisinde kodu oluşturulacak içeriğin tipi ve bu tip altında dosya konumu ve oluşturulacak içerik için bir dosya yolu belirtmemiz gerekmektedir.

// swiftgen.yml
xcassets:
  inputs: 
    - YourProjectName/Assets.xcassets // 1
  outputs:
    templateName: swift5 // 2
    output: ProjectName/Assets.swift // 3

Bir sonra ki aşamada Xcode’da bir Run Script’e ihtiyacımız var. Build Phases kısmından yeni bir Run Script ekleyip içeriğine aşağıdaki komutu yapıştırmamız gerekiyor.

if which swiftgen >/dev/null; then
  swiftgen
else
  echo "warning: SwiftGen not installed, download it from https://github.com/SwiftGen/SwiftGen"
fi

Run Script’in ne olduğu ve nasıl çalıştığı hakkında bilginiz yoksa, lütfen buraya bir göz atın: https://help.apple.com/xcode/mac/10.0/index.html?localePath=en.lproj#/devc8c930575

Bir sonra ki yazımda SwiftGen kullanımıyla ilgili örnekler olacak 🙂