// ------------------------------------------------------------------------ // Project atila // Active Thing (activething.com) git.activething.com/go // // File name err_info_ops.go // Created by DEV // Modified 17/01/2024 // // Copyright 2024 activething.com // ------------------------------------------------------------------------ // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // ------------------------------------------------------------------------ package errs import ( "activething.com/go/gogo/core/opts" "fmt" "time" ) func ErrInfoWithCause(cause error) opts.OptionFnc[ErrInfo] { return func(i *ErrInfo) { if cause == nil { return } i.error = NewErrCause(i.error, cause) } } func ErrInfoWithMessage(message string) opts.OptionFnc[ErrInfo] { return func(i *ErrInfo) { i.message = message } } func ErrInfoWithMessagef(format string, args ...any) opts.OptionFnc[ErrInfo] { return func(i *ErrInfo) { i.message = fmt.Sprintf(format, args...) } } func ErrInfoWithLink(link string) opts.OptionFnc[ErrInfo] { return func(i *ErrInfo) { i.link = link } } func ErrInfoWithHelp(help string) opts.OptionFnc[ErrInfo] { return func(i *ErrInfo) { i.help = help } } func ErrInfoWithDate() opts.OptionFnc[ErrInfo] { return func(i *ErrInfo) { i.date = time.Now() } } func ErrInfoWithStack(offset ...int) opts.OptionFnc[ErrInfo] { return func(i *ErrInfo) { if len(i.stack) > 0 { return } ox := 3 if len(offset) > 0 { ox = offset[0] } i.stack = *NewStackTrace(ox) } } func ErrInfoWithDetail(name string, value any) opts.OptionFnc[ErrInfo] { return func(i *ErrInfo) { if i.details == nil { i.details = make(map[string]any) } i.details[name] = value } }