LicensePlist
 
 
 
LicensePlist is a command-line tool that automatically generates a Plist of all your dependencies, including files added manually(specified by YAML config file) or using Carthage or CocoaPods. All these licenses then show up in the Settings app.
| App Setting Root | License List | License Detail | 
|---|---|---|
![]()  |  
   ![]()  |  
   ![]()  |  
  
Installation
CocoaPods (Recommended)
pod 'LicensePlist'
# Installation path: `${PODS_ROOT}/LicensePlist/license-plist`
 
Homebrew (Also Recommended)
$ brew install mono0926/license-plist/license-plist 
Or
$ brew tap mono0926/license-plist
$ brew install license-plist 
Mint (Also Recommended)
$ mint run mono0926/LicensePlist 
Download the executable binary from Releases
Download from Releases, then copy to /usr/local/bin/license-plist etc.
Or you can also download the latest binary and install it with a one-liner.
$ curl -fsSL https://raw.githubusercontent.com/mono0926/LicensePlist/master/install.sh | sh 
From Source
Clone the master branch of the repository, then run make install.
$ git clone https://github.com/mono0926/LicensePlist.git
$ make install 
Usage
- When you are in the directory that contains your 
CartfileorPods, simply executelicense-plist. com.mono0926.LicensePlist.Outputdirectory will be generated.- Move the files in the output directory into your app's 
Settings.bundle. 
Settings.bundle
├── Root.plist
├── com.mono0926.LicensePlist
│   ├── APIKit.plist
│   ├── Alamofire.plist
│   └── EditDistance.plist
├── com.mono0926.LicensePlist.plist
├── en.lproj
│   └── Root.strings
└── ja.lproj
    └── Root.strings
 
Options
You can see options by license-plist --help.
--cartfile-path
 
- Default: 
Cartfile 
--mintfile-path
 
- Default: 
Mintfile 
--pods-path
 
- Default: 
Pods 
--package-path
 
- Default: 
Package.swift LicensePlisttries to findYourProjectName.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolvedandYourProjectName.xcworkspace/xcshareddata/swiftpm/Package.resolved, then uses new one.
--xcodeproj-path
 
- Default: 
"*.xcodeproj" - By specifiying the path to the 
.xcodeprojLicensePlistwill attempt to load thePackage.resolvedfrom that Xcode project. If you specifysomedir/*.xcodeprojthenLicensePlistwill load from the firstxcodeprojit finds insomedir. 
--xcworkspace-path
 
- Default: 
"*.xcworkspace" - By specifying the path to the 
.xcworkspaceLicensePlistwill load thePackage.resolvedfrom that Xcode workspace. If you specifysomedir/*.xcworkspacethenLicensePlistwill load from the firstxcworkspaceit finds insomedir. --xcworkspace-pathsupersedes any provided--xcodeproj-path.
--output-path
 
- Default: 
com.mono0926.LicensePlist.Output - Recommended: 
--output-path YOUR_PRODUCT_DIR/Settings.bundle 
--github-token
 
- Default: None.
 LicensePlistuses GitHub API, so sometimes API limit error occures. You can avoid it by using github-token.- You can generate token here 
  
reposcope is needed.
 
--config-path
 
- Default: 
license_plist.yml - You can specify GitHub libraries(introduced by hand) and excluded libraries
 
--prefix
 
- Default: 
com.mono0926.LicensePlist - You can specify output file names instead of default one.
 
--html-path
 
- Default: None.
 - If this path is specified, a html acknowledgements file will be generated.
 
--markdown-path
 
- Default: None.
 - If this path is specified, a markdown acknowledgements file will be generated.
 
--force
 
- Default: false
 LicensePlistsaves latest result summary, so if there are no changes, the program interrupts.- In this case, execution time is less than 100ms for the most case, so you can run 
LicensePlistatRun Script Phaseevery time🎉  
- In this case, execution time is less than 100ms for the most case, so you can run 
 - You can run all the way anyway, by using 
--forceflag. 
--add-version-numbers
 
- Default: false
 - When the library name is 
SomeLibrary, by adding--add-version-numbersflag, the name will be changed toSomeLibrary (X.Y.Z).X.Y.Zis parsed from CocoaPods and Cartfile information, and GitHub libraries specified at Config YAML also support this flag.
 
--suppress-opening-directory
 
- Default: false
 - Only when the files are created or updated, the terminal or the finder opens. By adding 
--suppress-opening-directoryflag, this behavior is suppressed. 
--single-page
 
- Default: false
 - All licenses are listed on a single page, not separated pages.
 
--fail-if-missing-license
 
- Default: false
 - If there is even one package for which a license cannot be found, LicensePlist returns exit code 1.
 
Integrate into build
Add a Run Script Phase to Build Phases:
if [ $CONFIGURATION = "Debug" ]; then
/usr/local/bin/license-plist --output-path $PRODUCT_NAME/Settings.bundle --github-token YOUR_GITHUB_TOKEN
fi 
Alternatively, if you've installed LicensePlist via CocoaPods the script should look like this:
if [ $CONFIGURATION = "Debug" ]; then
${PODS_ROOT}/LicensePlist/license-plist --output-path $PRODUCT_NAME/Settings.bundle --github-token YOUR_GITHUB_TOKEN
fi 
Q&A
How to generate Xcode project?
Execute swift package generate-xcodeproj or make xcode.
Related Articles
- LicensePlist というiOSアプリ利用ライブラリのライセンス一覧生成するツールを作りました – Swift・iOSコラム – Medium
 - Swift Package Manager(SwiftPM)で作ったコマンドラインツールをHomebrewに登録する方法 - Qiita
 
Stargazers over time
寄付(Donation)
Donations are welcome if you like LicensePlist
- PayPal.Me 
  
- Transfer commission will be charged (40 yen + 3.6%)
 
 - mono is creating LicensePlist | Patreon
 - Amazonギフト券- Eメールタイプ 
  
- メールアドレス: [email protected]
 
 - ほしい物リスト
 







