github.com/keybase/client/go@v0.0.0-20240309051027-028f7c731f8b/release/version/version.go (about) 1 // Copyright 2015 Keybase, Inc. All rights reserved. Use of 2 // this source code is governed by the included BSD license. 3 4 package version 5 6 import ( 7 "fmt" 8 "regexp" 9 "time" 10 ) 11 12 // Parse parses version, time and commit info from string 13 func Parse(name string) (version string, versionShort string, t time.Time, commit string, err error) { 14 versionRegex := regexp.MustCompile(`(\d+\.\d+\.\d+)[-.](\d+)[+.]([[:alnum:]]+)`) 15 parts := versionRegex.FindAllStringSubmatch(name, -1) 16 if len(parts) == 0 || len(parts[0]) < 4 { 17 err = fmt.Errorf("Unable to parse: %s", name) 18 return 19 } 20 versionShort = parts[0][1] 21 date := parts[0][2] 22 commit = parts[0][3] 23 version = fmt.Sprintf("%s-%s+%s", versionShort, date, commit) 24 t, _ = time.Parse("20060102150405", date) 25 return 26 }