#!/bin/bash # tested with traefik v2.4.8 ACME_FILE="acme.json" # get jq from https://stedolan.github.io/jq/ SELECTED_DOMAINS=$(jq -r '.letsencrypt.Certificates[].domain.main' "$ACME_FILE" | fzf -m --height '40%' --reverse --border) if [[ -z "$SELECTED_DOMAINS" ]]; then echo "Nothing changed." exit fi cp --force -p --backup=numbered "$ACME_FILE" "$ACME_FILE" cp -p "$ACME_FILE" "${ACME_FILE}.new" for domain in $SELECTED_DOMAINS; do echo "Deleting certificate for '$domain'" # get sponge by installing the moreutils package jq "del(.letsencrypt.Certificates[] | select(.domain.main == \"$domain\"))" "${ACME_FILE}.new" | sponge "${ACME_FILE}.new" done cp --attributes-only --preserve=mode,ownership "$ACME_FILE" "${ACME_FILE}.new" mv "${ACME_FILE}.new" "$ACME_FILE"