lib

package module
v0.0.0-...-0253919 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 26, 2023 License: AGPL-3.0 Imports: 0 Imported by: 0

README

myago

My collection of Golang (Go) utilities for building distributed systems. Over the last few months, I've started to consolidate some common code across my repositories into this single collection. It's allowed me to delete some smaller repositories I have in favor of a single one with more of the common code I like to work with.

This isn't really intended to be used by others, but feel free explore, try things out, or submit issues if you find them.

  • auth contains common authentication code.
  • authors contains code for parsing AUTHORS file contents.
  • browser contains code for interacting with browsers across platforms.
  • clocks contains code for working with clocks on contexts.
  • cluster contains code for forming pools of nodes into clusters.
  • config contains code for working with a variety of configuration file formats.
  • dirset contains code for obtaining platform based, application state directories to cache, store, or log data to.
  • encoding contains common encoding schemes used by configuration and for transport.
  • flagset contains opinionated code for parsing Go structs into urfave/cli flags.
  • headers provides logic for handling headers in a semi-agnostic way.
  • lazy provides code for lazy loading values until success.
  • leaderless forms a farm128 consistent hash ring to coordinate work within a cluster without the need for election.
  • libctx is a collection of common context utilities.
  • lifecycle provides hooks into the lifecycle of an application.
  • livetls provides a tls.Config that periodically reloads the underlying configuration.
  • logger is a collection of logging utilities for zap.
  • paxos provides a paxos implementation.
  • plugin provides code for writing command-line based plugins.
  • ulid provides code for generating variable length unique, lexigraphic identifiers (ULID) with programmable fills.
  • vfs provides code for working with file systems on contexts using afero.
  • vue contains helpers for VueJS applications.
  • wal provides a minimal write-ahead log.
  • yarpc is yet another RPC framework, built on top of Hashicorp Yamux with the simplicity of http.

Tooling

  • (required) go. See go.mod for required version information.
  • (required) openssl is used to generate certificates for tests in the livetls package.
  • (optional) addlicense prepends files with appropriate license information.

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
Package auth provides common code for handling user authentication in a rather implementation agnostic way.
Package auth provides common code for handling user authentication in a rather implementation agnostic way.
Package clocks provides code for setting up and managing clocks on contexts.
Package clocks provides code for setting up and managing clocks on contexts.
Package cluster provides code to manage cluster Membership.
Package cluster provides code to manage cluster Membership.
Package dirset provides discovery of common application directories for things like caching, locks, and logs.
Package dirset provides discovery of common application directories for things like caching, locks, and logs.
Package encoding provides common Encoding and associated interfaces for Encoder and Decoder logic.
Package encoding provides common Encoding and associated interfaces for Encoder and Decoder logic.
Package flagset provides an opinionated approach to constructing an applications' configuration using Golang structs and tags.
Package flagset provides an opinionated approach to constructing an applications' configuration using Golang structs and tags.
Package headers provides utility code for operating on header values that come from different sources.
Package headers provides utility code for operating on header values that come from different sources.
Package leaderless implements leader election without the need for coordination.
Package leaderless implements leader election without the need for coordination.
Package libctx provides common code for working with contexts and may eventually write its own.
Package libctx provides common code for working with contexts and may eventually write its own.
Package lifecycle provides common code for hooking into a golang application lifecycle such as setting up a shutdown hook and deferring functions until application shutdown.
Package lifecycle provides common code for hooking into a golang application lifecycle such as setting up a shutdown hook and deferring functions until application shutdown.
Package logger contains common code for passing a zap logger around.
Package logger contains common code for passing a zap logger around.
Package pass provides password derivation functions backing solutions like Spectre.
Package pass provides password derivation functions backing solutions like Spectre.
Package plugin provides a simple plugin interface by forking processes and using their stdout/stdin to enable communication between the parent process (main-component) and the child (plugin).
Package plugin provides a simple plugin interface by forking processes and using their stdout/stdin to enable communication between the parent process (main-component) and the child (plugin).
Package ulid provides code for generating variable length unique, lexigraphic identifiers (ULID) with programmable fills.
Package ulid provides code for generating variable length unique, lexigraphic identifiers (ULID) with programmable fills.
Package vfs provides utilities for managing virtual file systems on contexts to avoid direct calls to the built-in `os` interface.
Package vfs provides utilities for managing virtual file systems on contexts to avoid direct calls to the built-in `os` interface.
Package vue contains some helper code for VueJS frontends.
Package vue contains some helper code for VueJS frontends.
Package wal provides a simple write-ahead log implementation inspired by Indeed's BasicRecordFile implementation.
Package wal provides a simple write-ahead log implementation inspired by Indeed's BasicRecordFile implementation.
Package yarpc implements "yet another RPC framework" on top of HashiCorp's yamux library.
Package yarpc implements "yet another RPC framework" on top of HashiCorp's yamux library.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL