package config import ( "errors" "go.wit.com/lib/protobuf/filepb" "google.golang.org/protobuf/proto" ) // verify 'version' for .pb files // application should die if they don't match // returns (newVersion, oldVersion, error) func VersionCheck(pb proto.Message) (string, string, error) { fullname, err := GetFilename(pb) if err != nil { return "", "", err } return VersionCheckFile(pb, fullname) } // verify 'version' for .pb files // application should die if they don't match // returns (newVersion, oldVersion, error) func VersionCheckFile(pb proto.Message, filename string) (string, string, error) { var newVersion string var newUuid string var err error newVersion, err = GetString(pb, "version") if err != nil { return newVersion, "", err } newUuid, err = GetString(pb, "uuid") if err != nil { return newVersion, newUuid, err } oldVersion, oldUuid, err := filepb.IdentifyPB(filename) if err != nil { return newVersion, newUuid, err } if newVersion != oldVersion { return newVersion, oldVersion, errors.New("version mismatch") } if newUuid != oldUuid { return newVersion, oldVersion, errors.New("UUID mismatch") } return newVersion, oldVersion, nil }