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.