GitHub - raystack/salt: Salt is a collection of libraries and tools used in the Raystack ecosystem to improve the experience of developing projects with Go.
Salt is a Golang utility library offering a variety of packages to simplify and enhance application development. It provides modular and reusable components for common tasks, including configuration management, CLI utilities, authentication, logging, and more.
Installation
To use, run the following command:
go get github.com/raystack/salt
Packages
Configuration
configUtilities for managing application configurations using environment variables, files, or defaults.
CLI Utilities
-
cli/commanderCommand execution, completion, help topics, and management tools. -
cli/printerUtilities for formatting and printing output to the terminal. -
cli/prompterInteractive CLI prompts for user input. -
cli/terminatorTerminal utilities for browser, pager, and brew helpers. -
cli/releaserUtilities for displaying and managing CLI tool versions.
Authentication and Security
-
auth/oidcHelpers for integrating OpenID Connect authentication flows. -
auth/auditAuditing tools for tracking security events and compliance.
Server and Infrastructure
-
server/muxgRPC-gateway multiplexer for serving gRPC and HTTP on a single port. -
server/spaSingle-page application static file handler. -
dbHelpers for database connections, migrations, and query execution.
Observability
-
observabilityOpenTelemetry initialization, metrics, and tracing setup. -
observability/loggerStructured logging with Zap and Logrus adapters. -
observability/otelgrpcOpenTelemetry gRPC client interceptors for metrics. -
observability/otelhttpclientOpenTelemetry HTTP client transport for metrics.
Data Utilities
-
data/rqlREST query language parser for filters, pagination, sorting, and search. -
data/jsondiffJSON document diffing and reconstruction.
Development and Testing
testing/dockertestxDocker-based test environment helpers for Postgres, Minio, SpiceDB, and more.