func (h *Hub) CheckCompatibility(dir, newDir string, format format.Format, options ...Option) error {
opts := ParseOptions(options...)
// load new hub
loadErr := h.load(loadTypeNew, opts.ProtoPackage, newDir, format, opts.LoadOptions...)
if loadErr != nil && !opts.SkipLoadErrors {
return loadErr
}
newHub := tableau.NewHub()
newHub.SetMessagerMap(h.GetMessagerMap())
// load hub
loadErr1 := h.load(loadTypeOld, opts.ProtoPackage, dir, format, opts.LoadOptions...)
if loadErr1 != nil && !opts.SkipLoadErrors {
return loadErr1
}
checkErr := h.checkCompatibility(newHub, opts.ProtoPackage, opts.BreakFailedCount)
return errors.Join(loadErr, loadErr1, checkErr)
}
The generated golang code only parses one opts and applies it to both hub and new hub. However users may want to apply different options to different hubs.
The generated golang code only parses one
optsand applies it to both hub and new hub. However users may want to apply different options to different hubs.