From e6e533aedadefa7e04450a22542da736ac0b23bf Mon Sep 17 00:00:00 2001 From: Oliver Gugger Date: Fri, 6 Nov 2020 10:43:01 +0100 Subject: [PATCH] version: allow specifying the normalization alphabet --- version.go | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/version.go b/version.go index 2b30a50..f2be363 100644 --- a/version.go +++ b/version.go @@ -15,7 +15,9 @@ import ( // using the -ldflags during compilation. var Commit string -// semanticAlphabet +// semanticAlphabet is the allowed characters from the semantic versioning +// guidelines for pre-release version and build metadata strings. In particular +// they MUST only contain characters in semanticAlphabet. const semanticAlphabet = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-" // These constants define the application version and follow the semantic @@ -63,11 +65,11 @@ func semanticVersion() string { // Start with the major, minor, and patch versions. version := fmt.Sprintf("%d.%d.%d", appMajor, appMinor, appPatch) - // Append pre-release version if there is one. The hyphen called for + // Append pre-release version if there is one. The hyphen called for // by the semantic versioning spec is automatically appended and should - // not be contained in the pre-release string. The pre-release version + // not be contained in the pre-release string. The pre-release version // is not appended if it contains invalid characters. - preRelease := normalizeVerString(appPreRelease) + preRelease := normalizeVerString(appPreRelease, semanticAlphabet) if preRelease != "" { version = fmt.Sprintf("%s-%s", version, preRelease) } @@ -76,13 +78,11 @@ func semanticVersion() string { } // normalizeVerString returns the passed string stripped of all characters -// which are not valid according to the semantic versioning guidelines for -// pre-release version and build metadata strings. In particular they MUST -// only contain characters in semanticAlphabet. -func normalizeVerString(str string) string { +// which are not valid according to the given alphabet. +func normalizeVerString(str, alphabet string) string { var result bytes.Buffer for _, r := range str { - if strings.ContainsRune(semanticAlphabet, r) { + if strings.ContainsRune(alphabet, r) { result.WriteRune(r) } }