This repository contains various helpers and utilities for Golang in order to do actions not available in the standard library. It was initially developed for numerous projects at Arm, including some running in production, in order to apply the DRY principle.
Few helpers may be themselves leveraging 3rd party libraries.
Maintainers: @ARM-software/golang-utils-admin
Each top-level consumable package under utils/ is now its own Go module.
Use the narrowest module that matches the package you import. For example:
go get github.com/ARM-software/golang-utils/utils/collection@latest
go get github.com/ARM-software/golang-utils/utils/http@latest
go get github.com/ARM-software/golang-utils/utils/serialisation@latest
go get github.com/ARM-software/golang-utils/utils/validation@latestCompatibility note: The
github.com/ARM-software/golang-utils/utilsmodule remains a lightweight umbrella for compatibility and tooling. New consumers should depend on an individual submodule. The first submodule tags will be published by the next CDS project release;v1.170.7and earlier contain only the original umbrella module.If a project still requires a pre-split umbrella version such as
github.com/ARM-software/golang-utils/utils v1.170.7, upgrade that requirement to the first split-aware umbrella release before adding an individual module such asgithub.com/ARM-software/golang-utils/utils/collection. Mixing a pre-split umbrella version with a split module causes Go to fail with anambiguous importerror because both modules appear to provide the same package path.
See the Go modules guide for consumer and developer guidance.
For release notes and a history of changes of all production releases, please see the following:
The following describes the major aspects of the project structure:
docs/- Code reference documentation.go.work- Repository-wide Go workspace definition.utils/- Umbrella module plus the repository's Go submodules.changes/- Collection of news files for unreleased changes.
- For interface definition and usage documentation, please see GitHub Pages.
- For a list of known issues and possible workarounds, please see Known Issues.
- To raise a defect or enhancement please use GitHub Issues or GitHub discussions.
- We are committed to fostering a welcoming community, please see our Code of Conduct for more information.
- For ways to contribute to the project, please see the Contributions Guidelines
- For a technical introduction into developing this package, please see the Development Guide