diff --git a/addon/adapter.go b/addon/adapter.go index 816518f73..e15632434 100644 --- a/addon/adapter.go +++ b/addon/adapter.go @@ -5,6 +5,7 @@ Tackle hub/addon integration. package addon import ( + "fmt" "os" logapi "github.com/go-logr/logr" @@ -80,6 +81,8 @@ type Adapter struct { Task // Log API. Log logapi.Logger + // Wrap error API. + Wrap func(error, ...any) error // Settings API. Setting Setting // Schema API @@ -125,7 +128,7 @@ func (h *Adapter) Run(addon func() error) { if pErr, cast := r.(error); cast { err = pErr } else { - panic(r) + err = fmt.Errorf("%#v", r) } } if err != nil { @@ -164,6 +167,7 @@ func newAdapter() (adapter *Adapter) { richClient: richClient, }, Log: Log, + Wrap: Wrap, Setting: richClient.Setting, Schema: richClient.Schema, Application: richClient.Application, diff --git a/addon/task.go b/addon/task.go index 024c658fd..68db9f86d 100644 --- a/addon/task.go +++ b/addon/task.go @@ -33,17 +33,20 @@ func (h *Task) Load() { // Application returns the application associated with the task. func (h *Task) Application() (r *api.Application, err error) { - appRef := h.task.Application - if appRef == nil { - err = &NotFound{} + ref := h.task.Application + if ref == nil { + err = Wrap(&NotFound{ + RestError: ResetError{ + Reason: "application not specified."}, + }) return } - r, err = h.richClient.Application.Get(appRef.ID) + r, err = h.richClient.Application.Get(ref.ID) if err != nil { return } r.Identities = []api.Ref{} - identities, err := h.richClient.Application.Identity(appRef.ID).List() + identities, err := h.richClient.Application.Identity(ref.ID).List() if err != nil { return } @@ -60,12 +63,15 @@ func (h *Task) Application() (r *api.Application, err error) { // Platform returns the platform associated with the task. func (h *Task) Platform() (r *api.Platform, err error) { - appRef := h.task.Platform - if appRef == nil { - err = &NotFound{} + ref := h.task.Platform + if ref == nil { + err = Wrap(&NotFound{ + RestError: ResetError{ + Reason: "platform not specified."}, + }) return } - r, err = h.richClient.Platform.Get(appRef.ID) + r, err = h.richClient.Platform.Get(ref.ID) return } @@ -75,7 +81,10 @@ func (h *Task) Platform() (r *api.Platform, err error) { func (h *Task) Addon(inject bool) (r *api.Addon, err error) { name := h.task.Addon if name == "" { - err = &NotFound{} + err = Wrap(&NotFound{ + RestError: ResetError{ + Reason: "addon not specified."}, + }) return } r, err = h.richClient.Addon.Get(name)