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  }