package merry var hooks []Wrapper var onceHooks []Wrapper // AddHooks installs a global set of Wrappers which are applied to every error processed // by this package. They are applied before any other Wrappers or stack capturing are // applied. Hooks can add additional wrappers to errors, or translate annotations added // by other error libraries into merry annotations. // // Note that these hooks will be applied each time an err is passed to Wrap/Apply. If you // only want your hook to run once per error, see AddOnceHooks. // // This function is not thread safe, and should only be called very early in program // initialization. func AddHooks(hook ...Wrapper) { hooks = append(hooks, hook...) } // AddOnceHooks is like AddHooks, but these hooks will only be applied once per error. // Once hooks are applied to an error, the error is marked, and future Wrap/Apply calls // on the error will not apply these hooks again. // // This function is not thread safe, and should only be called very early in program // initialization. func AddOnceHooks(hook ...Wrapper) { onceHooks = append(onceHooks, hook...) } // ClearHooks removes all installed hooks. // // This function is not thread safe, and should only be called very early in program // initialization. func ClearHooks() { hooks = nil onceHooks = nil }