github.com/dschalla/mattermost-server@v4.8.1-rc1+incompatible/model/version.go (about) 1 // Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. 2 // See License.txt for license information. 3 4 package model 5 6 import ( 7 "fmt" 8 "strconv" 9 "strings" 10 ) 11 12 // This is a list of all the current versions including any patches. 13 // It should be maintained in chronological order with most current 14 // release at the front of the list. 15 var versions = []string{ 16 "4.8.1", 17 "4.8.0", 18 "4.7.2", 19 "4.7.1", 20 "4.7.0", 21 "4.6.0", 22 "4.5.0", 23 "4.4.0", 24 "4.3.0", 25 "4.2.0", 26 "4.1.0", 27 "4.0.0", 28 "3.10.0", 29 "3.9.0", 30 "3.8.0", 31 "3.7.0", 32 "3.6.0", 33 "3.5.0", 34 "3.4.0", 35 "3.3.0", 36 "3.2.0", 37 "3.1.0", 38 "3.0.0", 39 "2.2.0", 40 "2.1.0", 41 "2.0.0", 42 "1.4.0", 43 "1.3.0", 44 "1.2.1", 45 "1.2.0", 46 "1.1.0", 47 "1.0.0", 48 "0.7.1", 49 "0.7.0", 50 "0.6.0", 51 "0.5.0", 52 } 53 54 var CurrentVersion string = versions[0] 55 var BuildNumber string 56 var BuildDate string 57 var BuildHash string 58 var BuildHashEnterprise string 59 var BuildEnterpriseReady string 60 var versionsWithoutHotFixes []string 61 62 func init() { 63 versionsWithoutHotFixes = make([]string, 0, len(versions)) 64 seen := make(map[string]string) 65 66 for _, version := range versions { 67 maj, min, _ := SplitVersion(version) 68 verStr := fmt.Sprintf("%v.%v.0", maj, min) 69 70 if seen[verStr] == "" { 71 versionsWithoutHotFixes = append(versionsWithoutHotFixes, verStr) 72 seen[verStr] = verStr 73 } 74 } 75 } 76 77 func SplitVersion(version string) (int64, int64, int64) { 78 parts := strings.Split(version, ".") 79 80 major := int64(0) 81 minor := int64(0) 82 patch := int64(0) 83 84 if len(parts) > 0 { 85 major, _ = strconv.ParseInt(parts[0], 10, 64) 86 } 87 88 if len(parts) > 1 { 89 minor, _ = strconv.ParseInt(parts[1], 10, 64) 90 } 91 92 if len(parts) > 2 { 93 patch, _ = strconv.ParseInt(parts[2], 10, 64) 94 } 95 96 return major, minor, patch 97 } 98 99 func GetPreviousVersion(version string) string { 100 verMajor, verMinor, _ := SplitVersion(version) 101 verStr := fmt.Sprintf("%v.%v.0", verMajor, verMinor) 102 103 for index, v := range versionsWithoutHotFixes { 104 if v == verStr && len(versionsWithoutHotFixes) > index+1 { 105 return versionsWithoutHotFixes[index+1] 106 } 107 } 108 109 return "" 110 } 111 112 func IsOfficalBuild() bool { 113 return BuildNumber != "_BUILD_NUMBER_" 114 } 115 116 func IsCurrentVersion(versionToCheck string) bool { 117 currentMajor, currentMinor, _ := SplitVersion(CurrentVersion) 118 toCheckMajor, toCheckMinor, _ := SplitVersion(versionToCheck) 119 120 if toCheckMajor == currentMajor && toCheckMinor == currentMinor { 121 return true 122 } else { 123 return false 124 } 125 } 126 127 func IsPreviousVersionsSupported(versionToCheck string) bool { 128 toCheckMajor, toCheckMinor, _ := SplitVersion(versionToCheck) 129 versionToCheckStr := fmt.Sprintf("%v.%v.0", toCheckMajor, toCheckMinor) 130 131 // Current Supported 132 if versionsWithoutHotFixes[0] == versionToCheckStr { 133 return true 134 } 135 136 // Current - 1 Supported 137 if versionsWithoutHotFixes[1] == versionToCheckStr { 138 return true 139 } 140 141 // Current - 2 Supported 142 if versionsWithoutHotFixes[2] == versionToCheckStr { 143 return true 144 } 145 146 // Current - 3 Supported 147 if versionsWithoutHotFixes[3] == versionToCheckStr { 148 return true 149 } 150 151 return false 152 }