antfu-collective / ni

💡 Use the right package manager
MIT License
6.42k stars 210 forks source link

feat: silent programmatic usage #151

Closed millsp closed 1 year ago

millsp commented 1 year ago

Description

At Prisma, we were looking for a robust and nice abstraction to handle multiple package manager installs/commands. We've found you :smile: ! We plan to use some of ni's internals in order to reliably run package manager commands via our own CLI. We are currently using getCommand for that. However, we don't want ni's output to leak warnings as we would like to handle that ourselves.

For this reason, I implemented a silent/programmatic mode which, right now, would be available for programmatic usages. Maybe later on it would be the base to bring a --silent for instance, but for now is limited to our own use-case. It prevents most console logging except for --help and debug, while also preventing prompts, and throwing errors instead of process.exit.

Linked Issues

Additional context

millsp commented 1 year ago

I fixed the linting errors and cleaned up some other things along the way while also adding two functional test suites to be able to test and snapshot what happens when a lockfile is found or when packageManager is set. I could not test all the commands, as it would need a small refactor, that is currently out of scope, but happy to contribute on that later :)