# Go Extension Library This library contains extensions to the Go standard library that are occasionally useful and shared across multiple projects. ## Versioning This project and the contained modules use semantic versioning. No effort is made to keep sub-module versions in sync. ## Dependency Philosophy The root library is meant to be an extension of the Go standard library and therefore does not depend on anything but the standard library itself and golang.org/x repositories. Other modules within the repository may pull in other dependencies outside of the core standard library. For those cases go modules are used to isolate the dependency to the sub-module. Wherever possible the sub-modules are designed to reduce the dependency graph of that module to just the scope of dependencies needed for its proper function. ## Modules - **core (no prefix)** provides some extensions to standard library and golang.org/x functionality - **cli** provides some wrapper functionality for creating command line interfaces with [cobra](https://github.com/spf13/cobra). - **db/mongodb** provides a wrapper around the lower level [mongodb driver libraries](https://pkg.go.dev/go.mongodb.org/mongo-driver) to make it easier to use them. - **echo** is a grab-bag of extensions around the [labstack echo web framework](https://echo.labstack.com/guide/) designed to make it easier to use. These extensions are starting to look like a fully fledged web framework in their own right with echo as the foundation. The opinions in this module are pretty heavy handed, use at your own risk. - **vault** provides some wrappers around the [Hashicorp Vault](https://pkg.go.dev/github.com/hashicorp/vault/api) API. ## Contributing If you find anything here useful and would like to submit patches please email the patch (in git format-patch format) or a repository location and branch name that the maintainers can pull and merge. We reserve the right to request changes to patches or reject them outright but are most likely to willing and thankfully merge them if they fit into the general theme here. ## Contributors - [Mike Crute](https://mike.crute.us) email: mike-at-crute-dot-us