Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/tale/bruh
A much faster alternative to the brew CLI for macOS packaging.
https://github.com/tale/bruh
brew hacktoberfest homebrew macos nodejs packaging typescript
Last synced: 3 months ago
JSON representation
A much faster alternative to the brew CLI for macOS packaging.
- Host: GitHub
- URL: https://github.com/tale/bruh
- Owner: tale
- License: mit
- Created: 2021-12-31T23:11:07.000Z (about 3 years ago)
- Default Branch: main
- Last Pushed: 2024-02-14T17:12:49.000Z (11 months ago)
- Last Synced: 2024-10-25T04:21:57.780Z (3 months ago)
- Topics: brew, hacktoberfest, homebrew, macos, nodejs, packaging, typescript
- Language: TypeScript
- Homepage:
- Size: 372 KB
- Stars: 21
- Watchers: 1
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# bruh
*A drop-in replacement for `brew` on macOS.*This is a complete 1:1 feature-parity tool of `brew`, the popular package manager used on macOS devices. This project mostly exists for fun and shouldn't be used in any sort of official capacity. Personally, I use it over `brew` when running packaging commands on my system, but proceed with caution.
## Setup/Installation
Install the latest version via [nightly.link](https://nightly.link/tale/bruh/workflows/nightly.yaml/main) or from the [Actions](https://github.com/tale/bruh/actions/workflows/nightly.yaml) tab to view older nightlies if necessary.## Decisions
`bruh` is written purely in TypeScript and compiled into a binary using [Node.js Single Executable Applications](https://nodejs.org/api/single-executable-applications.html). This was mostly because I enjoy writing TypeScript and I wanted to prove that application design is just as important as the platform an application is built on.Using promises, `bruh` is very fast and outperforms brew by a massive margin and most likely can outperform APT because of how the event-loop in Node.js works and concurrent tasks that I've chosen to opt into as a reliability trade-off.
The project mostly serves for my own exploration of the limitations of Node.js, macOS, and how to solve some of the issues in unique ways (such as re-elevating a non-root process, or handling authentication via PAM). However, I also aimed to solve a few of the issues that come with `brew`:
- Significantly speed up commands by removing scripts
- Remove the dependency on a local git state to track updates
- Be significantly more self-contained than the current iteration of `brew`## Benchmarks
Coming soon-ish?> Copyright (c) 2024 Aarnav Tale.