All Projects â†’ swiftbrew â†’ Swiftbrew

swiftbrew / Swiftbrew

Licence: mit
Homebrew for Swift packages

Programming Languages

swift
15916 projects

Projects that are alternatives of or similar to Swiftbrew

Dotnet Unpkg
Pure .NET front-end HTML package management using unpkg.com as a source
Stars: ✭ 103 (-20.16%)
Mutual labels:  package-manager
Pkgverse
đŸ“Ļ🔭🌠 Create your own universe of packages à la tidyverse
Stars: ✭ 108 (-16.28%)
Mutual labels:  package-manager
Baget
A lightweight NuGet and symbol server
Stars: ✭ 1,861 (+1342.64%)
Mutual labels:  package-manager
Ruckzuck
software package manager for windows
Stars: ✭ 103 (-20.16%)
Mutual labels:  package-manager
Yarn
The 1.x line is frozen - features and bugfixes now happen on https://github.com/yarnpkg/berry
Stars: ✭ 40,325 (+31159.69%)
Mutual labels:  package-manager
Bpkg
Lightweight bash package manager
Stars: ✭ 1,601 (+1141.09%)
Mutual labels:  package-manager
Apk Tools
[MIRROR] Alpine package manager
Stars: ✭ 92 (-28.68%)
Mutual labels:  package-manager
Gitdependencyresolverforunity
This plugin resolves git url dependencies in the package for Unity Package Manager. You can use a git url as a package dependency!
Stars: ✭ 126 (-2.33%)
Mutual labels:  package-manager
Scarf
An experimental prototype of a package manager and packaging ecosystem. Currently being rebuilt.
Stars: ✭ 108 (-16.28%)
Mutual labels:  package-manager
Mint
A package manager that installs and runs executable Swift packages
Stars: ✭ 1,750 (+1256.59%)
Mutual labels:  package-manager
Pacui
Bash script providing advanced Pacman and Yay/Pikaur/Aurman/Pakku/Trizen/Pacaur/Pamac-cli functionality in a simple UI
Stars: ✭ 103 (-20.16%)
Mutual labels:  package-manager
Raven
Raven is a Package Manager for Chez Scheme
Stars: ✭ 107 (-17.05%)
Mutual labels:  package-manager
Npackd
Package manager for Microsoft Windows: Wiki, bug tracker, mirror of the default repositories
Stars: ✭ 118 (-8.53%)
Mutual labels:  package-manager
Apt Offline
Offline APT Package Manager
Stars: ✭ 102 (-20.93%)
Mutual labels:  package-manager
Pnpm
Fast, disk space efficient package manager -- åŋĢ速įš„īŧŒčŠ‚įœįŖį›˜įŠē间įš„包įŽĄį†åˇĨå…ˇ
Stars: ✭ 14,219 (+10922.48%)
Mutual labels:  package-manager
Instawow
World of Warcraft add-on manager CLI and GUI
Stars: ✭ 98 (-24.03%)
Mutual labels:  package-manager
Alire
Command-line tool from the Alire project and supporting library
Stars: ✭ 108 (-16.28%)
Mutual labels:  package-manager
Integration
HACS gives you a powerful UI to handle downloads of all your custom needs.
Stars: ✭ 2,114 (+1538.76%)
Mutual labels:  package-manager
Gyro
A zig package manager with an index, build runner, and build dependencies
Stars: ✭ 126 (-2.33%)
Mutual labels:  package-manager
Haxelib
The Haxe library manager
Stars: ✭ 119 (-7.75%)
Mutual labels:  package-manager

Swiftbrew

A package manager that installs prebuilt Swift command line tool packages, or Homebrew for Swift packages.

Installation

Homebrew

brew install swiftbrew/tap/swiftbrew

Mint

mint install swiftbrew/Swiftbrew

Swiftbrew

swift brew install swiftbrew/Swiftbrew

Usage

swift brew install <package-reference>

Package reference can be a shorthand for a GitHub repository (Carthage/Carthage) or a full git URL (https://github.com/Carthage/Carthage.git), optionally followed by a tagged version (@x.y.z). Swiftbrew currently only supports public repositories.

Examples

Install the latest version of Carthage:

swift brew install Carthage/Carthage

or

swift brew install https://github.com/Carthage/Carthage

Install Carthage version 0.33.0:

swift brew install Carthage/[email protected]

Why create another package manager?

Homebrew is a popular method of distributing command line tools on macOS. Some popular Swift command line tools are already distributed via Homebrew. But there are some limitations:

  • Distributing via Homebrew requires you to create a formula and then maintain that formula.
  • If your package is not popular enough to be accepted into Homebrew's core formulae, you would have to create and maintain your own tap.
  • As a package maintainer, a usual release process would be: build the executable, archive it into a tarball/zipball, upload it to GitHub releases, bump formula version. This is a cumbersome process.
  • It can be tricky to install a specific version of a tool with Homebrew.

Mint is a package manager that builds and installs Swift command line tool packages. Mint is more flexible than Homebrew as it allows installing a specific version of a package. The downside of Mint is that it requires you to build all packages from source. This can be very time-consuming as you start replacing most of your Ruby tools in your iOS project with Swift packages, since bumping a tool version would require rebuilding it from all your developers' machines.

Introducing Swiftbrew

Swiftbrew saves Swift packages maintainers and users' time by caching prebuilt Swift command line tool packages, while flexible enough to let users install multiple versions of a package. Swiftbrew builds and caches Swift packages on CDN servers so that they are fast to download from anywhere. Swiftbrew bottles (prebuilt packages) are hosted on Bintray, the same service that hosts Homebrew bottles. If any package is not available as a bottle, it will be built by Swiftbrew build workers and cached after the first installation request, so that it will available for everyone later on. Here is what an installation output looks like:

$ swift brew install Carthage/Carthage

==> Finding latest version of Carthage
Resolved latest version of Carthage to 0.33.0
==> Installing Carthage 0.33.0
==> Downloading https://dl.bintray.com/swiftbrew/bottles/github.com_Carthage_Carthage-0.33.0.mojave.tar.xz
Bottle not yet available. Sent a build request to build workers.
==> Waiting for bottle to be available...
==> Pouring github.com_Carthage_Carthage-0.33.0.mojave.tar.xz
đŸē  /usr/local/lib/swiftbrew/cellar/github.com_Carthage_Carthage/build/0.33.0

FAQ

What kind of packages can Swiftbrew install?

Swiftbrew can install any public Swift command line tool package. If your package can be built with swift build command, then it can be installed via Swiftbrew.

Can I add my own package?

Yes, if your package's Git URL is public. Just install your package with Swiftbrew, a built request will be sent to Swiftbrew's build workers, then the bottle will be available after a few minutes.

What platforms does Swiftbrew support?

We only have build workers that run macOS Mojave in the meantime. Other macOS versions and Linux may be added in the future upon community requests.

License

MIT

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].