package filepb import ( "errors" "fmt" "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 { fmt.Printf("VersionCheckFile() filename (%s)\n", filename) fmt.Printf("VersionCheckFile() err (%v)\n", err) return newVersion, "", err } newUuid, err = GetString(pb, "uuid") if err != nil { fmt.Printf("VersionCheckFile() filename (%s)\n", filename) fmt.Printf("VersionCheckFile() err (%v)\n", err) return newUuid, "", err } oldVersion, oldUuid, err := IdentifyPB(filename) if err != nil { fmt.Printf("VersionCheckFile() filename (%s)\n", filename) fmt.Printf("VersionCheckFile() err (%v)\n", err) return newVersion, oldVersion, err } if newVersion != oldVersion { fmt.Printf("VersionCheckFile() filename (%s)\n", filename) fmt.Printf("VersionCheckFile() Version (%s) ne (%s)\n", newVersion, oldVersion) return newVersion, oldVersion, errors.New("version mismatch") } if newUuid != oldUuid { fmt.Printf("VersionCheckFile() filename (%s)\n", filename) fmt.Printf("VersionCheckFile() UUID (%s) ne (%s)\n", newUuid, oldUuid) return newUuid, oldUuid, errors.New("UUID mismatch") } return newVersion, oldVersion, nil }