LicensePlist alternatives and similar libraries
Based on the "Tools" category.
Alternatively, view LicensePlist alternatives based on common mentions on social networks and blogs.
-
SwiftGen
The Swift code generator for your assets, storyboards, Localizable.strings, … — Get rid of all String-based APIs! -
Xcodes.app
The easiest way to install and switch between multiple versions of Xcode - with a mouse click. -
Lona
A tool for defining design systems and using them to generate cross-platform UI code, Sketch files, and other artifacts. -
FBSimulatorControl
idb is a flexible command line interface for automating iOS simulators and devices -
GDPerformanceView-Swift
Shows FPS, CPU and memory usage, device model, app and iOS versions above the status bar and report FPS, CPU and memory usage via delegate. -
AppDevKit
AppDevKit is an iOS development library that provides developers with useful features to fulfill their everyday iOS app development needs. -
iSimulator
iSimulator is a GUI utility to control the Simulator, and manage the app installed on the simulator. -
Blade
Better asset workflow for iOS developers. Generate Xcode image catalogs for iOS / OSX app icons, universal images, and more. -
Realm Browser
DISCONTINUED. DEPRECATED - Realm Browser for Mac OS X has been replaced by realm-studio which is cross platform. -
Cookiecutter
DISCONTINUED. A template for new Swift iOS / macOS / tvOS / watchOS Framework project ready with travis-ci, cocoapods, Carthage, SwiftPM and a Readme file -
SuperDelegate
DISCONTINUED. SuperDelegate provides a clean application delegate interface and protects you from bugs in the application lifecycle -
abandoned-strings
Command line program that detects unused resource strings in an iOS or OS X application. -
AVXCAssets-Generator
AVXCAssets Generator takes path for your assets images and creates appiconset and imageset for you in just one click
CodeRabbit: AI Code Reviews for Developers

* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of LicensePlist or a related project?
README
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.
[Flow](Screenshots/flow.png)
App Setting Root | License List | License Detail |
---|---|---|
[](Screenshots/root.png) | [](Screenshots/list.png) | [](Screenshots/detail.png) |
Installation
Warning
SPM(Swift Package Manager) are not supported.
CocoaPods (Recommended)
pod 'LicensePlist'
# Installation path: `${PODS_ROOT}/LicensePlist/license-plist`
Homebrew (Also Recommended)
brew install licenseplist
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
Cartfile
orPods
, simply executelicense-plist
. com.mono0926.LicensePlist.Output
directory will be generated.- Move the files in the output directory into your app's
Settings.bundle
.- [Settings.bundle's sample is here](Settings.bundle.zip)
- The point is to specify
com.mono0926.LicensePlist
as license list file on yourRoot.plist
.
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
LicensePlist
tries to findYourProjectName.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved
andYourProjectName.xcworkspace/xcshareddata/swiftpm/Package.resolved
, then uses new one.
--package-paths
- Support for multiple
Package.swift
- Example:
license-plist --package-paths /path/to/package1/Package.swift /path/to/package2/Package.swift
--xcodeproj-path
- Default:
"*.xcodeproj"
- By specifiying the path to the
.xcodeproj
LicensePlist
will attempt to load thePackage.resolved
from that Xcode project. If you specifysomedir/*.xcodeproj
thenLicensePlist
will load from the firstxcodeproj
it finds insomedir
.
--xcworkspace-path
- Default:
"*.xcworkspace"
- By specifying the path to the
.xcworkspace
LicensePlist
will load thePackage.resolved
from that Xcode workspace. If you specifysomedir/*.xcworkspace
thenLicensePlist
will load from the firstxcworkspace
it finds insomedir
. --xcworkspace-path
supersedes any provided--xcodeproj-path
.
--output-path
- Default:
com.mono0926.LicensePlist.Output
- Recommended:
--output-path YOUR_PRODUCT_DIR/Settings.bundle
--github-token
- Default: None.
- LicensePlist uses GitHub API, so sometimes API limit errors occur. You can avoid those errors by specifying a GitHub token.
- You can generate a token here
repo
scope is needed.
- You can also pass the GitHub token via the
LICENSE_PLIST_GITHUB_TOKEN
environment variable.
--config-path
- Default:
license_plist.yml
- You can specify GitHub libraries(introduced by hand) and excluded libraries
- Example is here
- See Configuration for more information
--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
LicensePlist
saves 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
LicensePlist
atRun Script Phase
every 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
--force
flag.
--add-version-numbers
- Default: false
- When the library name is
SomeLibrary
, by adding--add-version-numbers
flag, the name will be changed toSomeLibrary (X.Y.Z)
.X.Y.Z
is parsed from CocoaPods and Cartfile information, and GitHub libraries specified at Config YAML also support this flag.
--add-sources
- Default: false
- Adds the source of the library to the output if there is one. The source for GitHub and CocoaPods libraries is generated. Manual libraries use the optional source field.
--suppress-opening-directory
- Default: false
- Only when the files are created or updated, the terminal or the finder opens. By adding
--suppress-opening-directory
flag, 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.
--silence-mode
/ --verbose
- By adding the
--silence-mode
flag, the logger's output will not print. - The logger's output will be more detailed than the average log level by adding the
--verbose
flag. - LicencePlist uses the latter option if you simultaneously set the
--silence-mode
option and the--verbose
option. - Default: average log level
--no-color
/ --color
- The logger's output is printed in monochrome by adding the
--no-color
flag. If any escape characters in CI/CD log bother you, the--no-color
option will help. - By adding the
--color
flag, LicensePlist will always print the logger's output in color. - LicencePlist uses the latter option if you simultaneously set the
--no-color
option and the--color
option. - If neither option is specified, LicensePlist will look for the
NO_COLOR
environment variable. If you set theNO_COLOR
environment variable to"1"
, LicensePlist runs without colors. - Default: auto - LicensePlist decides its color mode depending on the terminal type.
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
[Run Script Phase](Screenshots/run_script_phase.png)
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
Configuration
Manual GitHub source
A GitHub source can be explicitly defined to include the license in the scenario where it can't be inferred from your dependency files.
Examples
github:
- owner: mono0926
name: LicensePlist
version: 1.2.0
Manual License Body
If you need to include a license that isn't available on GitHub, you can place the license text in the config file to be included in the output. The license text can also be read from a local file, to keep the config file clean.
Examples
License body directly in the config file:
manual:
- source: https://webrtc.googlesource.com/src
name: WebRTC
version: M61
body: |-
Copyright (c) 2011, The WebRTC project authors. All rights reserved.
...
...
...
License body in local file:
manual:
- name: "Dummy License File"
file: "dummy_license.txt"
Excludes
Excludes can be defined to exclude matching libraries from the final output.
An exclude is a dictionary containing any combination of name
, source
, owner
, or licenseType
.
When using the dictionary format:
- The exclusion rule is only applied if all properties match for a dependency. eg,
(name: LicensePlist) AND (owner: mono0926)
- Any property can be either a string or a regular expression.
Examples
Exclude a package by name:
exclude:
- name: LicensePlist
Exclude packages using a specific license:
exclude:
- licenseType: "Apache 2.0"
Exclude packages using any matching licenses:
exclude:
- licenseType: /BSD/
Exclude packages from a specific github owner:
exclude:
- owner: mycompany
Exclude packages from a specific github owner containing matching licenses:
exclude:
- owner: mycompany
licenseType: /^(?!.*MIT).*$/ # this regex excludes packages that do NOT use the MIT license
Exclude a package from a specific github owner and repo:
exclude:
- owner: mycompany
name: private-repo
Rename
If a library name is unsuitable for the output bundle, you can explicitly rename it. This can be used when a library name is too vague, or if more human-readable names are needed.
Examples
rename:
LicensePlist: License Plist # Rename LicensePlist to "License Plist"
WebRTC: Web RTC # Rename WebRTC to "Web RTC" (which is faulty, but used for test)
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]
- ほしい物リスト
Send Money by ウォレットアプリ Kyash
[Kyash](Screenshots/kyash.jpeg)
*Note that all licence references and agreements mentioned in the LicensePlist README section above
are relevant to that project's source code only.