From a826828d7649d7a49ad2f4edeaaa83f996b5adab Mon Sep 17 00:00:00 2001 From: Lennard Schwarz Date: Thu, 1 Jan 2026 13:49:19 +0100 Subject: [PATCH] Support "BackupFilenameExpand" option --- cmd/backup/show_config.go | 15 +++++++++++++++ test/show-config/docker-compose.yml | 3 +++ test/show-config/run.sh | 5 +++++ 3 files changed, 23 insertions(+) diff --git a/cmd/backup/show_config.go b/cmd/backup/show_config.go index eb7e614..51720f1 100644 --- a/cmd/backup/show_config.go +++ b/cmd/backup/show_config.go @@ -5,6 +5,7 @@ package main import ( "fmt" + "os" "regexp" "github.com/offen/docker-volume-backup/internal/errwrap" @@ -22,6 +23,20 @@ func runShowConfig() error { fmt.Println("source=\n") continue } + if config.BackupFilenameExpand { + unset, err := config.applyEnv() + if err != nil { + fmt.Printf("error applying env: %v\n", err) // print error to stdout for debugging + return errwrap.Wrap(err, "error applying env") + } + config.BackupFilename = os.ExpandEnv(config.BackupFilename) + config.BackupLatestSymlink = os.ExpandEnv(config.BackupLatestSymlink) + config.BackupPruningPrefix = os.ExpandEnv(config.BackupPruningPrefix) + if err := unset(); err != nil { + fmt.Printf("error unsetting env: %v\n", err) // print error to stdout for debugging + return errwrap.Wrap(err, "error unsetting environment variables") + } + } // insert line breaks before each field name, assuming field names start with uppercase letters formatted := regexp.MustCompile(`\s([A-Z])`).ReplaceAllString(fmt.Sprintf("%+v", *config), "\n$1") fmt.Printf("source=%s\n%s\n", config.source, formatted) diff --git a/test/show-config/docker-compose.yml b/test/show-config/docker-compose.yml index 1b28c96..6ceadca 100644 --- a/test/show-config/docker-compose.yml +++ b/test/show-config/docker-compose.yml @@ -2,6 +2,9 @@ services: backup: image: offen/docker-volume-backup:${TEST_VERSION:-canary} environment: + BACKUP_FILENAME: "backup-$${BACKUP_TAG}.tar" + BACKUP_FILENAME_EXPAND: true + BACKUP_TAG: expanded BACKUP_SOURCES: /backup NOTIFICATION_URLS: "stdout://" AWS_S3_BUCKET_NAME: example-bucket diff --git a/test/show-config/run.sh b/test/show-config/run.sh index 3e0586e..5979f7b 100755 --- a/test/show-config/run.sh +++ b/test/show-config/run.sh @@ -22,6 +22,11 @@ if ! echo "$logs" | grep -q "BackupSources:/backup"; then fi pass "BACKUP_SOURCES present." +if ! echo "$logs" | grep -q "BackupFilename:backup-expanded.tar"; then + fail "Missing expanded BACKUP_FILENAME in output." +fi +pass "Expanded BACKUP_FILENAME present." + if ! echo "$logs" | grep -q "NotificationURLs:\[stdout://\]"; then fail "Missing NOTIFICATION_URLS in output." fi