2
0
mirror of https://github.com/lightninglabs/loop synced 2024-11-16 00:12:52 +00:00

version: allow specifying the normalization alphabet

This commit is contained in:
Oliver Gugger 2020-11-06 10:43:01 +01:00
parent 58c1c25a8b
commit e6e533aeda
No known key found for this signature in database
GPG Key ID: 8E4256593F177720

View File

@ -15,7 +15,9 @@ import (
// using the -ldflags during compilation. // using the -ldflags during compilation.
var Commit string 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-" const semanticAlphabet = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-"
// These constants define the application version and follow the semantic // These constants define the application version and follow the semantic
@ -67,7 +69,7 @@ func semanticVersion() string {
// by the semantic versioning spec is automatically appended and should // 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. // is not appended if it contains invalid characters.
preRelease := normalizeVerString(appPreRelease) preRelease := normalizeVerString(appPreRelease, semanticAlphabet)
if preRelease != "" { if preRelease != "" {
version = fmt.Sprintf("%s-%s", version, preRelease) version = fmt.Sprintf("%s-%s", version, preRelease)
} }
@ -76,13 +78,11 @@ func semanticVersion() string {
} }
// normalizeVerString returns the passed string stripped of all characters // normalizeVerString returns the passed string stripped of all characters
// which are not valid according to the semantic versioning guidelines for // which are not valid according to the given alphabet.
// pre-release version and build metadata strings. In particular they MUST func normalizeVerString(str, alphabet string) string {
// only contain characters in semanticAlphabet.
func normalizeVerString(str string) string {
var result bytes.Buffer var result bytes.Buffer
for _, r := range str { for _, r := range str {
if strings.ContainsRune(semanticAlphabet, r) { if strings.ContainsRune(alphabet, r) {
result.WriteRune(r) result.WriteRune(r)
} }
} }