2021-07-29 11:44:53 +00:00
|
|
|
package common
|
|
|
|
|
2021-11-09 10:55:21 +00:00
|
|
|
import "github.com/nspcc-dev/neo-go/pkg/interop/native/std"
|
|
|
|
|
2021-07-29 11:44:53 +00:00
|
|
|
const (
|
|
|
|
major = 0
|
2022-03-22 08:58:23 +00:00
|
|
|
minor = 15
|
2022-07-27 08:15:35 +00:00
|
|
|
patch = 4
|
2021-11-09 10:55:21 +00:00
|
|
|
|
|
|
|
// Versions from which an update should be performed.
|
|
|
|
// These should be used in a group (so prevMinor can be equal to minor if there are
|
|
|
|
// any migration routines.
|
|
|
|
prevMajor = 0
|
2022-04-13 09:39:01 +00:00
|
|
|
prevMinor = 15
|
2022-06-07 07:37:22 +00:00
|
|
|
prevPatch = 1
|
2021-07-29 11:44:53 +00:00
|
|
|
|
|
|
|
Version = major*1_000_000 + minor*1_000 + patch
|
2021-11-09 10:55:21 +00:00
|
|
|
|
|
|
|
PrevVersion = prevMajor*1_000_000 + prevMinor*1_000 + prevPatch
|
|
|
|
|
|
|
|
// ErrVersionMismatch is thrown by CheckVersion in case of error.
|
|
|
|
ErrVersionMismatch = "previous version mismatch"
|
|
|
|
|
|
|
|
// ErrAlreadyUpdated is thrown by CheckVersion if current version equals to version contract
|
|
|
|
// is being updated from.
|
|
|
|
ErrAlreadyUpdated = "contract is already of the latest version"
|
2021-07-29 11:44:53 +00:00
|
|
|
)
|
2021-11-09 10:55:21 +00:00
|
|
|
|
|
|
|
// CheckVersion checks that previous version is more than PrevVersion to ensure migrating contract data
|
|
|
|
// was done successfully.
|
|
|
|
func CheckVersion(from int) {
|
|
|
|
if from < PrevVersion {
|
|
|
|
panic(ErrVersionMismatch + ": expected >=" + std.Itoa(PrevVersion, 10))
|
|
|
|
}
|
|
|
|
if from == Version {
|
|
|
|
panic(ErrAlreadyUpdated + ": " + std.Itoa(Version, 10))
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
// AppendVersion appends current contract version to the list of deploy arguments.
|
|
|
|
func AppendVersion(data interface{}) []interface{} {
|
|
|
|
if data == nil {
|
|
|
|
return []interface{}{Version}
|
|
|
|
}
|
|
|
|
return append(data.([]interface{}), Version)
|
|
|
|
}
|