set dotenv-load := true

export PATH := source_dir() + "/bin:" + source_dir() + "/scripts:" + env("PATH")
export AGEBOX_DEBUG := "0"
export AGEBOX_PUBLIC_KEYS := source_dir() + "/public_keys.txt"

# Install agebox from the latest github realse
install-agebox:
  curl -sSL "https://github.com/slok/agebox/releases/latest/download/agebox-linux-amd64" -o .devfiles/bin/agebox
  chmod + x .devfiles/bin/agebox

[no-cd]
install-hooks:
  cog install-hook --all

# Easy and simple file repository encryption tool based on Age.
agebox +ARGS="--help":
  @.devfiles/bin/agebox  {{ ARGS }}

# Encrypt the provided files, relative to project root.
encrypt +FILES: (agebox "encrypt " + FILES)

# Encrypt all the tracked files.
encrypt-all: (agebox "encrypt --all")

# Decrypt the provided files, relative to project root.
decrypt +FILES: (agebox "decrypt " + FILES)

# Decrypt all the tracked files.
decrypt-all: (agebox "decrypt --all --force")

# Reencrypt all the tracked files with the new public keys.
reencrypt: (agebox "reencrypt")

# Show the content of an encrypted file to stdout.
crypt-peek +FILES: (agebox "cat " + FILES)

# Validate that all tracked files are encrypted.
crypt-check:(agebox "validate --no-decrypt ")

# Validate no credentials are pushed to git
leaks:
  @gitleaks git --verbose --redact
