Simplify working with .env files
MIT License
dottie
(dot
⚫ tie
👔 or dotty
) is a tool for working with dot-env (.env
) files more enjoyable and safe.
.env
file from an upstream/external source for easy upgrades/migrations..env
file..env
file for templating or external consumption.[!WARNING] Run these example commands in a directory without an existing
.env
file
# Crate a new env file
touch .env
# Create a key/pair value
dottie set my_key=value
# Create another key (PORT) with value "3306"
# * One comment
# * One validation rule that the value must be a number
# * "none" quote style from the default "double"
dottie set \
--comment 'A port for some service' \
--comment '@dottie/validate number' \
--quote-style none \
PORT=3306
# Check validation (success)
dottie validate
# Print the file
dottie print
# Print the file (but pretty)
dottie print --pretty
# Change the "PORT" value to a "test" (a non-number).
# NOTE: the comments are kept in the file, even if they are omitted here
dottie set PORT=test
# Test validation again (it now fails)
dottie validate
# Fix the port value
dottie set PORT=3306
# Create a new key/value pair in a group named "database"
# NOTE: the group will be created on-demand if it does not exists
dottie set \
--group database \
--comment 'the hostname to the database' \
DB_HOST="db"
# Create a "DB_PORT" key pair in the same "database" group as before
# NOTE: this value refer to the 'PORT' key we set above via interpolation
dottie set \
--group database \
--comment 'the port for the database' \
--comment '@dottie/validate number' \
DB_PORT='${PORT}'
# Print the file again
dottie print --pretty
# Disable the DB_PORT key
dottie disable DB_PORT
# Print the file again
# NOTE: the DB_PORT key/value is now gone
dottie print --pretty
# Print the file again, but include commented disabled keys
# NOTE: the DB_PORT key/value is printed (but still disabled)
dottie print --pretty --with-disabled
# Enable the DB_PORT key again
dottie enable DB_PORT
brew install jippi/tap/dottie
echo 'deb [trusted=yes] https://pkg.jippi.dev/apt/ * *' | sudo tee /etc/apt/sources.list.d/dottie.list
sudo apt update
sudo apt install dottie
echo '[dottie]
name=dottie
baseurl=https://pkg.jippi.dev/yum/
enabled=1
gpgcheck=0' | sudo tee /etc/yum.repos.d/dottie.repo
sudo yum install dottie
sudo snap install dottie
scoop bucket add dottie https://github.com/jippi/scoop-bucket.git
scoop install dottie
yay -S dottie-bin
Download the .deb
, .rpm
or .apk
packages from the releases page and install them with the appropriate tools.
go install github.com/jippi/dottie@latest
All artifacts are checksummed, and the checksum file is signed with cosign.
Download the files you want, and the checksums.txt
, checksum.txt.pem
and checksums.txt.sig
files from the releases page:
Verify the signature:
cosign verify-blob \
--certificate-identity 'https://github.com/jippi/dottie/.github/workflows/release.yml@refs/tags/v1.0.0' \
--certificate-oidc-issuer 'https://token.actions.githubusercontent.com' \
--cert 'https://github.com/jippi/dottie/releases/download/v1.0.0/checksums.txt.pem' \
--signature 'https://github.com/jippi/dottie/releases/download/v1.0.0/checksums.txt.sig' \
./checksums.txt
If the signature is valid, you can then verify the SHA256 sums match with the downloaded binary:
sha256sum --ignore-missing -c checksums.txt
Our Docker images are signed with cosign.
Verify the signatures:
cosign verify \
--certificate-identity 'https://github.com/jippi/dottie/.github/workflows/release.yml@refs/tags/v1.0.0' \
--certificate-oidc-issuer 'https://token.actions.githubusercontent.com' \
jippi/dottie
[!NOTE] The
.pem
and.sig
files are the imagename:tag
, replacing/
and:
with-
.