/Carte

🍴 Open source license notice view generator for Swift

Primary LanguageRubyMIT LicenseMIT

La Carte

Swift CocoaPods Build Status Codecov

An open source license notice view generator for Swift.

Screenshot

carte

⬆ Those view controllers are automatically generated ✨

Features

  • 🚗 Automatic: Carte automatically generates OSS notice from CocoaPods.
  • ☕️ Easy Integration: Install Carte and push CarteViewController. It's all done.
  • 🎨 Customizable: Adding custom items, customizing CarteViewController. See Customizing section.

Installation

Carte only supports CocoaPods at this time.

pod 'Carte'

⚠️ IMPORTANT: Don't forget to add the post install hook to your Podfile. Add this script to the end of your Podfile:

post_install do |installer|
  pods_dir = File.dirname(installer.pods_project.path)
  at_exit { `ruby #{pods_dir}/Carte/Sources/Carte/carte.rb configure` }
end

Usage

Carte provides CarteViewController. You can use it as a normal view controller. Push, present or do whatever you want.

let carteViewController = CarteViewController()

If you want to create your own UI, use Carte.items to get CarteItems.

class Carte {
  static var items: [CarteItem]
}

Customizing

Custom Items

CarteViewController has a property named items which is an array of CarteItem. All of the licenses are stored in the items. You can add new items, remove existings, or sort items by manipulating items array.

This is an example of adding a new CarteItem and sorting items.

var item = CarteItem(name: "Carte")
item.licenseText = "The MIT License (MIT) ...Very long text..."

let carteViewController = CarteViewController()
carteViewController.items.append(item)
carteViewController.items.sort { $0.name < $1.name }

Customizing View Controllers

CarteDetailViewController is presented when user selects a table view cell. CarteViewController provides a handler for customizing it.

Definition:

var configureDetailViewController: (CarteDetailViewController -> Void)?

Example:

let carteViewController = CarteViewController()
carteViewController.configureDetailViewController = { detailViewController in
  detailViewController.navigationItem.leftBarButtonItem = ...
  print(detailViewController.carteItem.name)
}

License

Carte is under MIT license. See the LICENSE file for more info.