Show HN: Monogo – Evolve your go workspace to a real monorepo
Monogo is a CLI tool for managing Go workspace monorepos, facilitating dependency management, code formatting, and testing. It offers various commands and flags to enhance functionality for developers.
Read original articleMonogo is a command-line interface (CLI) tool tailored for managing Go workspace monorepos, functioning as a configuration-free companion similar to Turborepo but specifically designed for the Go programming language. Users can install Monogo by cloning its GitHub repository and building the binary with the command `go install github.com/nicolasgere/monogo@latest`. The tool offers several commands to facilitate the management of Go modules, including installing dependencies, formatting modules, and running tests. Each command supports common flags such as `--target` to specify a module, `--dependency` to include all dependencies, `--branch` for comparing branches, and `--path` to define the working directory. Monogo is particularly beneficial for developers working with Go monorepos, as it streamlines the processes of dependency management, code formatting, and testing across multiple modules.
- Monogo is a CLI tool for managing Go workspace monorepos.
- Installation is done via cloning the repository and using a specific Go command.
- Key commands include installing dependencies, formatting modules, and running tests.
- Common flags enhance command functionality, allowing for targeted operations.
- The tool is designed to improve efficiency for developers working with multiple Go modules.
Related
Show HN: Vdm, a sane alternative to e.g. Git submodules
vdm is a versioned-dependency manager that simplifies external dependency management across programming languages. It requires Git, supports YAML/JSON spec files, and offers future enhancements for synchronization and remote types.
Commit Mono Font
Commit Mono is an anonymous programming typeface designed for readability and comfort in coding. Users can customize downloads, access the latest version on GitHub, and support the project.
GitOpper: GitOps Without Kubernetes
Gitopper is a system administration tool for managing Git operations without Kubernetes, featuring sparse checkouts, SSH authentication, metrics export, and support for canary deployments and rollbacks.
Go is my hammer, and everything is a nail
Markus, a solo developer, exclusively uses Go for software development, valuing its simplicity and versatility. He believes focusing on one language enhances productivity and deepens expertise without limiting career options.
Go automatically downloads a newer toolchain if needed
Go now automatically downloads newer toolchains from version 1.21, allowing users to manage toolchain versions via the GOTOOLCHAIN variable, with security measures in place to ensure safe downloads.
Like, go already has test caching (so "only test stuff that changed" shouldn't be necessary, that should just happen), and code formatting and such is already quite fast...
Overall, I feel like having another tool which parses my go source code is going to be slower than writing a Makefile to wrap:
go list -f '{{.Dir}}' -m | xargs -L1 go test ./...
which is all this tool doing really.Also, hilariously, the repo isn't go fmt'd [0], despite being a tool to go fmt your repo. That's really funny, but I don't think the go community is ready for that level of humor yet, maybe one day.
[0]: https://github.com/nicolasgere/monogo/blob/2fb0b4985893e3397...
Related
Show HN: Vdm, a sane alternative to e.g. Git submodules
vdm is a versioned-dependency manager that simplifies external dependency management across programming languages. It requires Git, supports YAML/JSON spec files, and offers future enhancements for synchronization and remote types.
Commit Mono Font
Commit Mono is an anonymous programming typeface designed for readability and comfort in coding. Users can customize downloads, access the latest version on GitHub, and support the project.
GitOpper: GitOps Without Kubernetes
Gitopper is a system administration tool for managing Git operations without Kubernetes, featuring sparse checkouts, SSH authentication, metrics export, and support for canary deployments and rollbacks.
Go is my hammer, and everything is a nail
Markus, a solo developer, exclusively uses Go for software development, valuing its simplicity and versatility. He believes focusing on one language enhances productivity and deepens expertise without limiting career options.
Go automatically downloads a newer toolchain if needed
Go now automatically downloads newer toolchains from version 1.21, allowing users to manage toolchain versions via the GOTOOLCHAIN variable, with security measures in place to ensure safe downloads.