github.com/ActiveState/cli@v0.0.0-20240508170324-6801f60cd051/pkg/platform/model/buildplanner/buildexpression.go (about)

     1  package buildplanner
     2  
     3  import (
     4  	"github.com/ActiveState/cli/internal/errs"
     5  	"github.com/ActiveState/cli/internal/logging"
     6  	"github.com/ActiveState/cli/pkg/platform/api/buildplanner/request"
     7  	bpResp "github.com/ActiveState/cli/pkg/platform/api/buildplanner/response"
     8  	"github.com/ActiveState/cli/pkg/platform/runtime/buildexpression"
     9  	"github.com/go-openapi/strfmt"
    10  )
    11  
    12  func (b *BuildPlanner) GetBuildExpression(commitID string) (*buildexpression.BuildExpression, error) {
    13  	logging.Debug("GetBuildExpression, commitID: %s", commitID)
    14  	resp := &bpResp.BuildExpressionResponse{}
    15  	err := b.client.Run(request.BuildExpression(commitID), resp)
    16  	if err != nil {
    17  		return nil, processBuildPlannerError(err, "failed to fetch build expression")
    18  	}
    19  
    20  	if resp.Commit == nil {
    21  		return nil, errs.New("Commit is nil")
    22  	}
    23  
    24  	if bpResp.IsErrorResponse(resp.Commit.Type) {
    25  		return nil, bpResp.ProcessCommitError(resp.Commit, "Could not get build expression from commit")
    26  	}
    27  
    28  	if resp.Commit.Expression == nil {
    29  		return nil, errs.New("Commit does not contain expression")
    30  	}
    31  
    32  	expression, err := buildexpression.New(resp.Commit.Expression)
    33  	if err != nil {
    34  		return nil, errs.Wrap(err, "failed to parse build expression")
    35  	}
    36  
    37  	return expression, nil
    38  }
    39  
    40  func (b *BuildPlanner) GetBuildExpressionAndTime(commitID string) (*buildexpression.BuildExpression, *strfmt.DateTime, error) {
    41  	logging.Debug("GetBuildExpressionAndTime, commitID: %s", commitID)
    42  	resp := &bpResp.BuildExpressionResponse{}
    43  	err := b.client.Run(request.BuildExpression(commitID), resp)
    44  	if err != nil {
    45  		return nil, nil, processBuildPlannerError(err, "failed to fetch build expression")
    46  	}
    47  
    48  	if resp.Commit == nil {
    49  		return nil, nil, errs.New("Commit is nil")
    50  	}
    51  
    52  	if bpResp.IsErrorResponse(resp.Commit.Type) {
    53  		return nil, nil, bpResp.ProcessCommitError(resp.Commit, "Could not get build expression from commit")
    54  	}
    55  
    56  	if resp.Commit.Expression == nil {
    57  		return nil, nil, errs.New("Commit does not contain expression")
    58  	}
    59  
    60  	expression, err := buildexpression.New(resp.Commit.Expression)
    61  	if err != nil {
    62  		return nil, nil, errs.Wrap(err, "failed to parse build expression")
    63  	}
    64  
    65  	return expression, &resp.Commit.AtTime, nil
    66  }