https://github.com/tigerinus/good
Install and uninstall Go package in isolated path, to keep your `GOPATH/pkg` clean. Like `pipx`, but for Go.
https://github.com/tigerinus/good
cli cli-app commandline go golang golang-application package pipx
Last synced: 6 months ago
JSON representation
Install and uninstall Go package in isolated path, to keep your `GOPATH/pkg` clean. Like `pipx`, but for Go.
- Host: GitHub
- URL: https://github.com/tigerinus/good
- Owner: tigerinus
- License: mit
- Created: 2022-08-05T21:18:56.000Z (almost 4 years ago)
- Default Branch: main
- Last Pushed: 2024-06-17T19:27:49.000Z (about 2 years ago)
- Last Synced: 2024-06-19T17:50:54.439Z (about 2 years ago)
- Topics: cli, cli-app, commandline, go, golang, golang-application, package, pipx
- Language: Go
- Homepage:
- Size: 1.35 MB
- Stars: 11
- Watchers: 2
- Forks: 0
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
# 👍 good
[](https://pkg.go.dev/github.com/tigerinus/good) [](https://goreportcard.com/report/github.com/tigerinus/good) [](https://github.com/tigerinus/good/actions/workflows/release.yml)
[](https://codecov.io/gh/tigerinus/good)
A tool for installing a Go package to an isolated path, to keep the global `$GOPATH/pkg`
clean. Because of isolated path, uninstalling is also possible.
This tool is greatly inspired by [`pipx`](https://github.com/pypa/pipx).

> Thanks [DALL-e](https://openai.com/dall-e-2/) for the logo.
## Motivations
- Command `go clean -i -r ...` [does not really clean everything](https://www.reddit.com/r/golang/comments/pzeunz/proper_package_management_commands_in_go_117/).
- Sometime people just want to use `go install` to install a CLI for non-development purpose, but doing it under a Go project, it changes your `go.mod` and `go.sum` files.
- People could do `ls $GOPATH/bin` to see all the binaries but have to go thru extra steps to figure out the package name before uninstalling it.
- Simply removing the binary under `$GOPATH/bin` leaves a bunch of dependencies in `$GOPATH/pkg/mod`.
## Features
- Install CLI Go apps in an isolated path, without changing anything under `$GOPATH` or `go.mod`/`go.sum` files (if under a Go project).
- Clean up related mod cache after installation to free up space.
- Uninstall the app in one command without leaving any files behind.
- List all CLI go apps installed
- *(UPCOMING)* Check for outdated CLI go apps among the installed.
- *(UPCOMING)* Strip the binary after as part of installation.
- *(UPCOMING)* Show information about a CLI go app.
- *(UPCOMING)* Run a CLI app once and uninstall.
- *(UPCOMING)* Search for CLI go apps from sources like [awesome-go](https://awesome-go.com/).
## Usage
```text
A tool for installing a Go package to an isolated path, to keep the global GOPATH
clean. Because of isolated path, uninstalling is also possible.
Usage:
good [command]
Available Commands:
completion Generate the autocompletion script for the specified shell
help Help about any command
install Install a package named by its import path
list List all installed packages
uninstall Uninstall a package named by its import path
version Show version
Flags:
-d, --debug debug mode
-h, --help help for good
Use "good [command] --help" for more information about a command.
```
## Installation
```bash
go install github.com/tigerinus/good
```
## Contributing
This tool is still at its very early stage. Issues and Pull Requests are definitely welcome!