zcfg

March 3, 2026 ยท View on GitHub

Zero Dependency Configuration Utility

A one-class configuration loader for Java applications that reads standard Java properties files from global user directory, local project directory, and system properties with defined precedence rules. No external dependencies required.

Duke Configurator

Usage

// Initialize once at application startup
ZCfg.load("myapp");

// Access configuration values with defaults
var port = ZCfg.integer("server.port", 8080);
var debug = ZCfg.bool("debug.enabled", false);
var dbUrl = ZCfg.string("db.url", "localhost:5432");

// Comma-separated values as list
var hosts = ZCfg.strings("cluster.hosts");
// e.g. "a,b,c" -> ["a", "b", "c"]

Configuration Loading Order

ZCfg.load("myapp") merges properties from three sources, each overwriting the previous:

  1. $HOME/.myapp/app.properties - Global user configuration (user.home system property)
  2. ./app.properties - Local project configuration (current working directory)
  3. System properties via -D flags, e.g., -Dserver.port=9090

Scaffolding

zcfgCreate creates empty configuration files for an application:

zcfgCreate myapp
# Created /Users/you/.myapp/app.properties
# Created ./app.properties

Install: cp zcfgCreate /usr/local/bin/

Properties Format

Uses standard Java properties format:

# Database configuration
db.url=localhost:5432
db.username=admin
db.timeout=30

# Server settings
server.port=8080
debug.enabled=true

# List values (comma-separated)
cluster.hosts=host1,host2,host3