typedenv

package module
v0.2.0 Latest Latest
Warning

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

Go to latest
Published: May 17, 2026 License: MIT Imports: 7 Imported by: 0

README

TypedEnv CI Go Report Card

Strongly typed environment variable management for Go.

Configure your requirements using a Go struct. TypedEnv validates required environment variables and returns explicit errors for missing or invalid values. .env files are intentionally unsupported to reduce accidental secret exposure, and to keep configuration sourcing explicit.

Features

  • Errors for missing environment variables
  • Errors for type mismatches and parsing failures
  • No variable values in errors or logs
  • No iteration of OS variables; look only at what's necessary
  • No unsafe usage
  • No panics

Installation

go get github.com/saas-craft/typedenv

Usage

package main

import (
    "fmt"
    "log"
    "net/url"
    "time"

    "github.com/saas-craft/typedenv"
)

func main() {
    type config struct {
        AppHost    string        `env:"HOST"`
        AppPort    int           `env:"PORT"`
        Timeout    time.Duration `env:"TIMEOUT"`
        ServiceURL url.URL       `env:"SERVICE_URL"`
    }

    cfg, err := typedenv.Load[config]()
    if err != nil {
        log.Fatalf("load config: %v", err)
    }

    fmt.Println(cfg)
}

Supported Types

Go Type Example value
string hello
bool true, false, 1, 0
int, int8, int16, int32, int64 -42
uint, uint8, uint16, uint32, uint64 42
float32, float64 3.14
time.Duration 1h30m, 500ms, 2s
url.URL https://saascraft.com/v1

License

SaaS Craft TypedEnv is licensed under the MIT License - see LICENSE for details.

Documentation

Overview

Package typedenv decodes OS environment variables into a struct

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func Load

func Load[S any]() (S, error)

Load reads operating system environment variables into a new instance of S, which must be a struct. Exported fields tagged with `env:"KEY"` are populated by looking up KEY in the environment; untagged fields are left at their zero value.

Supported field types: string, bool, the int and uint families, the float family, time.Duration, and url.URL.

Load returns an error if a tagged variable is missing from the environment, fails to parse, or targets an unexported field. Errors from multiple fields are joined.

Types

This section is empty.

Jump to

Keyboard shortcuts

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