mirror of
https://git.vectorsigma.ru/public/atlantis.git
synced 2026-07-30 05:18:48 +00:00
* Moved CommandContext and CommandResult to models (#193) * Moved CommandContext and CommandResult to models * move from models to command rename CommandContext -> Context rename CommandResult -> Result * moved command related helpers into command package * move ProjectCommandContext and ProjectResult to command/project package * move project command context and project result * revert unrelated code * move tests * fix left over * fix linting * fix tests * remove unused import * fix project context dependencies * fix depenedecies * fix typo
44 lines
1.6 KiB
Go
44 lines
1.6 KiB
Go
package events
|
|
|
|
import (
|
|
"github.com/runatlantis/atlantis/server/core/config/raw"
|
|
"github.com/runatlantis/atlantis/server/core/config/valid"
|
|
"github.com/runatlantis/atlantis/server/events/command"
|
|
"github.com/runatlantis/atlantis/server/events/models"
|
|
)
|
|
|
|
//go:generate pegomock generate -m --package mocks -o mocks/mock_apply_handler.go ApplyRequirement
|
|
type ApplyRequirement interface {
|
|
ValidateProject(repoDir string, ctx command.ProjectContext) (string, error)
|
|
}
|
|
|
|
type AggregateApplyRequirements struct {
|
|
WorkingDir WorkingDir
|
|
}
|
|
|
|
func (a *AggregateApplyRequirements) ValidateProject(repoDir string, ctx command.ProjectContext) (failure string, err error) {
|
|
for _, req := range ctx.ApplyRequirements {
|
|
switch req {
|
|
case raw.ApprovedApplyRequirement:
|
|
if !ctx.PullReqStatus.ApprovalStatus.IsApproved {
|
|
return "Pull request must be approved by at least one person other than the author before running apply.", nil
|
|
}
|
|
// this should come before mergeability check since mergeability is a superset of this check.
|
|
case valid.PoliciesPassedApplyReq:
|
|
if ctx.ProjectPlanStatus == models.ErroredPolicyCheckStatus {
|
|
return "All policies must pass for project before running apply", nil
|
|
}
|
|
case raw.MergeableApplyRequirement:
|
|
if !ctx.PullReqStatus.Mergeable {
|
|
return "Pull request must be mergeable before running apply.", nil
|
|
}
|
|
case raw.UnDivergedApplyRequirement:
|
|
if a.WorkingDir.HasDiverged(ctx.Log, repoDir) {
|
|
return "Default branch must be rebased onto pull request before running apply.", nil
|
|
}
|
|
}
|
|
}
|
|
// Passed all apply requirements configured.
|
|
return "", nil
|
|
}
|