Open source license notice view generator for Cocoa.
These are the screenshots of demo project which is located in CarteDemo directory.
- ๐ Automatic: Carte automatically generates OSS notice from CocoaPods and CocoaSeeds.
- โ Easy Integration: Install Carte, add run scripts, then push CarteViewController. It's done.
- โจ Customizable: Adding custom items, customizing CarteViewController. See Customizing section.
-
For iOS 8+ projects: Use CocoaPods with Podfile:
pod 'Carte', '~> 1.0'
-
For iOS 7 projects: I recommend you to try CocoaSeeds, which uses source code instead of dynamic frameworks. Sample Seedfile:
github 'devxoul/Carte', '1.0.0', :files => 'Carte/*.{swift,rb}'
Carte has a simple ruby script named carte.rb that reads third-party libraries from CocoaPods and CocoaSeeds directory. You have to add 2 run script phases before and after 'Copy Bundle Resources' phase.
-
Carte Pre
ruby /path/to/carte.rb pre
-
Carte Post
ruby /path/to/carte.rb post
-
/path/to/carte.rb: carte.rb file is located in Carte directory.
If you installed Carte via:
- CocoaPods, then path would be:
${SRCROOT}/Pods/Carte/Carte/carte.rb
- CocoaSeeds, then path would be:
${SRCROOT}/Seeds/Carte/Carte/carte.rb
- CocoaPods, then path would be:
-
For example (CocoaPods):
Almost done! What you need to do now is using CarteViewController
. Use it just like using a UIViewController
: push, present, or whatever you want to do.
let carteViewController = CarteViewController()
CarteViewController
has a property named items
which is an array of CarteItem
. All of licenses are stored in 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.
let item = CarteItem()
item.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 }
CarteDetailViewController
is appeared when select a cell of table view. 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)
}
Carte is under MIT license. See the LICENSE file for more info.