Swift Package Index

swift-package-info

https://github.com/marinofelipe/swift-package-info.git

Swift CLI tool that provides information about a Swift Package


Compatibility

  • 1.0.6 and main
    5.3
    5.2
    5.1
    5.0
    4.2
  • 1.0.6 and main
    iOS
    macOS(Intel)
    macOS(ARM)
    Linux
    tvOS
    watchOS

CI Swift Package Manager Twitter

Swift Package Info

CLI tool that provides information about a given Swift Package product, such as a measurament of its binary size impact. It's built on top of Swift Argument Parser.

Usage

OVERVIEW: A tool for analyzing Swift Packages

Provides valuable information about a given Swift Package,
that can be used in your favor when deciding whether to
adopt or not a Swift Package as a dependency on your app.

USAGE: swift-package-info <subcommand>

OPTIONS:
  --version               Show the version.
  -h, --help              Show help information.

SUBCOMMANDS:
  binary-size             Estimated binary size of a Swift Package product.
  platforms               Shows platforms supported b a Package product.
  dependencies            List dependencies of a Package product.
  full-analyzes (default) All available information about a Swift Package product.

  See 'swift-package-info help <subcommand>' for detailed help.

Example

  • To run a full analyzes
swift-package-info --for https://github.com/ReactiveX/RxSwift -v 6.0.0 --product RxSwift
+------------------------------------------------+
|               Swift Package Info               |
|                                                |
|                 RxSwift, 6.0.0                 |
+--------------+---------------------------------+
| Provider     | Results                         |
+--------------+---------------------------------+
| Binary Size  | Binary size increases by 963 KB |
| Platforms    | System default                  |
| Dependencies | No third-party dependencies :)  |
+--------------+---------------------------------+
> Total of 3 providers used.
  • To check supported platforms (sub command)
swift-package-info platforms --for https://github.com/krzyzanowskim/CryptoSwift -v 1.3.8 --product CryptoSwift
+----------------------------------------------------------------------+
|                          Swift Package Info                          |
|                                                                      |
|                          CryptoSwift, 1.3.8                          |
+-----------+----------------------------------------------------------+
| Provider  | Results                                                  |
+-----------+----------------------------------------------------------+
| Platforms | macos from v. 10.12 | ios from v. 9.0 | tvos from v. 9.0 |
+-----------+----------------------------------------------------------+
> Total of 1 provider used.

Installation

  • Install mint.
  • Run: mint install marinofelipe/swift-package-info

Building

Build from Swift Package Manager

  • swift build in the top level directory
  • The built utility can be found in .build/debug/swift-package-info
  • Run with swift run

Running tests

Run from Xcode

  • Add the project directory to swift-package-info scheme customWorkingDirectory
  • Run the tests

Run from command line

  • swift test --build-path PROJECT_DIR

Dependencies

Binary size report

Its methodology is inspired by cocoapods-size, and thus works by comparing archives with no bitcode and ARM64 arch. Such strategy has proven to be consistent with the size added to iOS apps downloaded and installed via TestFlight.

Thanks

Special thanks to @unnamedd for sharing his experience with swift-tools-support-core and on how to build a pretty 👌 report.

Contributions

Swift Package Info is fully open and your contributions are more than welcome.