{"repo":"kapetan-io/tackle","free":true,"listed":false,"github":"https://github.com/kapetan-io/tackle","clone":"git clone https://github.com/kapetan-io/tackle.git","description":"A collection of small but useful packages with no external dependencies","language":"Go","stars":21,"topics":["golang","library","testing-tools","time","tools","config","certificates","color","logging","tls"],"license":null,"category":"dev-tools","readme_excerpt":"A tackle box of libraries for golang. All packages have ZERO external dependencies outside the standard golang library. The only exception is for tests which depend upon github.com/stretchr/testify . Tackle is intended as a place for small, but useful packages which any golang developer may find useful, without a needing a dependency review. Libraries - Set - Avoid the if/else spaghetti of configuration defaults - Random - Functions to generate random data for testing - Clock - Freeze, Set and Advance time during testing - Color - Add colorized output to slog messages - AutoTLS - Generate TLS certificates automatically - Wait - Simple go routine management with fan out and go routine cancellation - Retry - Retry functions with exponential backoff and retry budgets SET config values Simplify setting default values during configuration. Random Is a collection of functions which are useful in testing Clock Is intended as a drop in replacement for the golang standard time package. It allows any package using clock to freeze, set and advance time during testing. Thread Safety Freezing time presents a race condition when time is frozen. This is because clock.Freeze() replaces a standard time singleton private to the clock package with a frozen time singleton. If clock.Freeze() is called at the same time as it's being accessed in another go routine, a race condition occurs. Provided you only use clock.Freeze() in tests -- which is how it is intended to be used -- you can provide a b","default_branch":null,"files":null,"tree":[],"storefront":"/r/kapetan-io","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/kapetan-io/tackle/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}