Introducing quickly: a package manager for Swift!

I've tried to make a package manager, say something like brew/bun but for swift!

you can install it via:

curl -fsSL https://github.com/atpugvaraa/quickly/releases/latest/download/install.sh | bash
  • quickly supports brew.sh packages ootb and takes help from swift package index to install and cache your most commonly used packages.
  • [WIP] quickly can also generate modulemaps for c-libraries to allow for smoother interop

it is completely open source under MIT and Apache-2.0.
I'd love to have some feedback to improve the Dev experience.

a video showcasing usage
repo: GitHub - atpugvaraa/quickly: a fast package manager written in Swift

2 Likes

Other than auto-generating C module.modulemap files (which is a neat feature), how does this differ from the (under-advertised) swift package add-dependency and swift package add-target-dependency commands, like:

swift package add-dependency https://github.com/vapor/jwt-kit.git --from 5.0.0
swift package add-target-dependency JWTKit MyTarget --package jwt-kit

Can you show some useful example commands for some popular projects?

2 Likes

Hi Marc!
Thanks for your reply, I'm not that deep into the rabbit hole of completely figuring out how to take this the best way possible.. I just think that the following are some points that could differentiate this from the above would be:

  • should work with any xcodeproject, xcworkspace, package.swift project.
  • Global caching of different versions of Packages (just like bun.sh).
  • Automatically adding selected packages and symlinking them to the respective checkouts/ in DerivedData.

This would look like:
~/project> ql install kingfisher --spm // no need to find git repo yourself (i need to add specific version capability)
~/project> ql add // automatically add and manages dependencies (even if project already has an indexed package, it will replace with the globally cached version)

It honestly felt like a missing piece because Swift Package Manager doesn't really feel like one.
I was unaware of swift package add-dependency due to being kind of new to the tooling..