Browse Source

lib/versioner: Replace multiple placeholders in a single token in external command (fixes #5849)

* lib/versioner: Add placeholder to provide the absolute file path to external commands

This commit adds support for a new placeholder, %FILE_PATH_FULL%, to the
command of the external versioner. The placeholder will be replaced by
the absolute path of the file that should be deleted.

* Revert "lib/versioner: Add placeholder to provide the absolute file path to external commands"

This reverts commit fb48962b947358e90a76e87a7794adb6057de476.

* lib/versioner: Replace all placeholders in external command (fixes #5849)

Before this commit, only these placeholders were replaced that span a
whole word, for example "%FOLDER_PATH%". Words that consisted of more
than one placeholder or additional characters, for example
"%FOLDER_PATH%/%FILE_PATH%", were left untouched.

* fixup! lib/versioner: Replace all placeholders in external command (fixes #5849)
xduugu 6 years ago
parent
commit
4b3f9b1af9
1 changed files with 4 additions and 2 deletions
  1. 4 2
      lib/versioner/external.go

+ 4 - 2
lib/versioner/external.go

@@ -77,9 +77,11 @@ func (v External) Archive(filePath string) error {
 	}
 	}
 
 
 	for i, word := range words {
 	for i, word := range words {
-		if replacement, ok := context[word]; ok {
-			words[i] = replacement
+		for key, val := range context {
+			word = strings.Replace(word, key, val, -1)
 		}
 		}
+
+		words[i] = word
 	}
 	}
 
 
 	cmd := exec.Command(words[0], words[1:]...)
 	cmd := exec.Command(words[0], words[1:]...)