github.com/ActiveState/cli@v0.0.0-20240508170324-6801f60cd051/cmd/state/internal/cmdtree/exechandlers/cmdcall/cmdcall.go (about) 1 package cmdcall 2 3 import ( 4 "github.com/ActiveState/cli/internal/captain" 5 "github.com/ActiveState/cli/internal/errs" 6 "github.com/ActiveState/cli/internal/events/cmdcall" 7 "github.com/ActiveState/cli/internal/primer" 8 "github.com/ActiveState/cli/pkg/project" 9 ) 10 11 // CmdCall manages the event handling flow triggered by command calls. 12 type CmdCall struct { 13 primer *primer.Values 14 } 15 16 // New returns a pointer to a prepared CmdCall instance. 17 func New(p *primer.Values) *CmdCall { 18 return &CmdCall{ 19 primer: p, 20 } 21 } 22 23 func (c *CmdCall) OnExecStart(cmd *captain.Command, _ []string) error { 24 cc := cmdcall.New(c.primer, cmd.JoinedSubCommandNames()) 25 if err := cc.Run(project.BeforeCmd); err != nil { 26 return errs.Wrap(err, "before-command event run failure") 27 } 28 return nil 29 30 } 31 32 func (c *CmdCall) OnExecStop(cmd *captain.Command, _ []string) error { 33 cc := cmdcall.New(c.primer, cmd.JoinedSubCommandNames()) 34 if err := cc.Run(project.AfterCmd); err != nil { 35 return errs.Wrap(err, "after-command event run failure") 36 } 37 return nil 38 }