Skip to content

Commit 90d476b

Browse files
authored
Merge pull request #230 from diggerhq/rename-pull-request-manager
make DiggerExecutor exportable
2 parents d6d2dda + fdf30eb commit 90d476b

File tree

2 files changed

+60
-60
lines changed

2 files changed

+60
-60
lines changed

pkg/digger/digger.go

Lines changed: 46 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -341,19 +341,19 @@ func parseProjectName(comment string) string {
341341
}
342342

343343
type DiggerExecutor struct {
344-
repoOwner string
345-
repoName string
346-
projectName string
347-
projectPath string
348-
stateEnvVars map[string]string
349-
commandEnvVars map[string]string
350-
applyStage *configuration.Stage
351-
planStage *configuration.Stage
352-
commandRunner CommandRun
353-
terraformExecutor terraform.TerraformExecutor
354-
prManager ci.CIService
355-
lock utils.ProjectLock
356-
planStorage utils.PlanStorage
344+
RepoOwner string
345+
RepoName string
346+
ProjectName string
347+
ProjectPath string
348+
StateEnvVars map[string]string
349+
CommandEnvVars map[string]string
350+
ApplyStage *configuration.Stage
351+
PlanStage *configuration.Stage
352+
CommandRunner CommandRun
353+
TerraformExecutor terraform.TerraformExecutor
354+
ciService ci.CIService
355+
ProjectLock utils.ProjectLock
356+
PlanStorage utils.PlanStorage
357357
}
358358

359359
type CommandRun interface {
@@ -384,28 +384,28 @@ func (c CommandRunner) Run(command string) (string, string, error) {
384384
}
385385

386386
func (d DiggerExecutor) planFileName() string {
387-
return d.repoName + "#" + d.projectName + ".tfplan"
387+
return d.RepoName + "#" + d.ProjectName + ".tfplan"
388388
}
389389

390390
func (d DiggerExecutor) localPlanFilePath() string {
391-
return path.Join(d.projectPath, d.planFileName())
391+
return path.Join(d.ProjectPath, d.planFileName())
392392
}
393393

394394
func (d DiggerExecutor) storedPlanFilePath() string {
395-
return path.Join(d.repoOwner, d.planFileName())
395+
return path.Join(d.RepoOwner, d.planFileName())
396396
}
397397

398398
func (d DiggerExecutor) Plan(prNumber int) error {
399-
res, err := d.lock.Lock(prNumber)
399+
res, err := d.ProjectLock.Lock(prNumber)
400400
if err != nil {
401401
return fmt.Errorf("error locking project: %v", err)
402402
}
403403
log.Printf("Lock result: %t\n", res)
404404
if res {
405405
var planSteps []configuration.Step
406406

407-
if d.planStage != nil {
408-
planSteps = d.planStage.Steps
407+
if d.PlanStage != nil {
408+
planSteps = d.PlanStage.Steps
409409
} else {
410410
planSteps = []configuration.Step{
411411
{
@@ -418,31 +418,31 @@ func (d DiggerExecutor) Plan(prNumber int) error {
418418
}
419419
for _, step := range planSteps {
420420
if step.Action == "init" {
421-
_, _, err := d.terraformExecutor.Init(step.ExtraArgs, d.stateEnvVars)
421+
_, _, err := d.TerraformExecutor.Init(step.ExtraArgs, d.StateEnvVars)
422422
if err != nil {
423423
return fmt.Errorf("error running init: %v", err)
424424
}
425425
}
426426
if step.Action == "plan" {
427427
planArgs := []string{"-out", d.planFileName()}
428428
planArgs = append(planArgs, step.ExtraArgs...)
429-
isNonEmptyPlan, stdout, stderr, err := d.terraformExecutor.Plan(planArgs, d.commandEnvVars)
429+
isNonEmptyPlan, stdout, stderr, err := d.TerraformExecutor.Plan(planArgs, d.CommandEnvVars)
430430
if err != nil {
431431
return fmt.Errorf("error executing plan: %v", err)
432432
}
433-
if d.planStorage != nil {
434-
err = d.planStorage.StorePlan(d.localPlanFilePath(), d.storedPlanFilePath())
433+
if d.PlanStorage != nil {
434+
err = d.PlanStorage.StorePlan(d.localPlanFilePath(), d.storedPlanFilePath())
435435
if err != nil {
436436
return fmt.Errorf("error storing plan: %v", err)
437437
}
438438
}
439439
plan := cleanupTerraformPlan(isNonEmptyPlan, err, stdout, stderr)
440-
comment := utils.GetTerraformOutputAsCollapsibleComment("Plan for **"+d.lock.LockId()+"**", plan)
441-
d.prManager.PublishComment(prNumber, comment)
440+
comment := utils.GetTerraformOutputAsCollapsibleComment("Plan for **"+d.ProjectLock.LockId()+"**", plan)
441+
d.ciService.PublishComment(prNumber, comment)
442442
}
443443
if step.Action == "run" {
444-
stdout, stderr, err := d.commandRunner.Run(step.Value)
445-
log.Printf("Running %v for **%v**\n%v%v", step.Value, d.lock.LockId(), stdout, stderr)
444+
stdout, stderr, err := d.CommandRunner.Run(step.Value)
445+
log.Printf("Running %v for **%v**\n%v%v", step.Value, d.ProjectLock.LockId(), stdout, stderr)
446446
if err != nil {
447447
return fmt.Errorf("error running command: %v", err)
448448
}
@@ -454,29 +454,29 @@ func (d DiggerExecutor) Plan(prNumber int) error {
454454

455455
func (d DiggerExecutor) Apply(prNumber int) error {
456456
var plansFilename *string
457-
if d.planStorage != nil {
457+
if d.PlanStorage != nil {
458458
var err error
459-
plansFilename, err = d.planStorage.RetrievePlan(d.localPlanFilePath(), d.storedPlanFilePath())
459+
plansFilename, err = d.PlanStorage.RetrievePlan(d.localPlanFilePath(), d.storedPlanFilePath())
460460
if err != nil {
461461
return fmt.Errorf("error retrieving plan: %v", err)
462462
}
463463
}
464464

465-
isMergeable, _, err := d.prManager.IsMergeable(prNumber)
465+
isMergeable, _, err := d.ciService.IsMergeable(prNumber)
466466
if err != nil {
467467
return fmt.Errorf("error validating is PR is mergeable: %v", err)
468468
}
469469

470470
if !isMergeable {
471471
comment := "Cannot perform Apply since the PR is not currently mergeable."
472-
d.prManager.PublishComment(prNumber, comment)
472+
d.ciService.PublishComment(prNumber, comment)
473473
} else {
474474

475-
if res, _ := d.lock.Lock(prNumber); res {
475+
if res, _ := d.ProjectLock.Lock(prNumber); res {
476476
var applySteps []configuration.Step
477477

478-
if d.applyStage != nil {
479-
applySteps = d.applyStage.Steps
478+
if d.ApplyStage != nil {
479+
applySteps = d.ApplyStage.Steps
480480
} else {
481481
applySteps = []configuration.Step{
482482
{
@@ -490,24 +490,24 @@ func (d DiggerExecutor) Apply(prNumber int) error {
490490

491491
for _, step := range applySteps {
492492
if step.Action == "init" {
493-
_, _, err := d.terraformExecutor.Init(step.ExtraArgs, d.stateEnvVars)
493+
_, _, err := d.TerraformExecutor.Init(step.ExtraArgs, d.StateEnvVars)
494494
if err != nil {
495495
return fmt.Errorf("error running init: %v", err)
496496
}
497497
}
498498
if step.Action == "apply" {
499-
stdout, stderr, err := d.terraformExecutor.Apply(step.ExtraArgs, plansFilename, d.commandEnvVars)
499+
stdout, stderr, err := d.TerraformExecutor.Apply(step.ExtraArgs, plansFilename, d.CommandEnvVars)
500500
applyOutput := cleanupTerraformApply(true, err, stdout, stderr)
501-
comment := utils.GetTerraformOutputAsCollapsibleComment("Apply for **"+d.lock.LockId()+"**", applyOutput)
502-
d.prManager.PublishComment(prNumber, comment)
501+
comment := utils.GetTerraformOutputAsCollapsibleComment("Apply for **"+d.ProjectLock.LockId()+"**", applyOutput)
502+
d.ciService.PublishComment(prNumber, comment)
503503
if err != nil {
504-
d.prManager.PublishComment(prNumber, "Error during applying.")
504+
d.ciService.PublishComment(prNumber, "Error during applying.")
505505
return fmt.Errorf("error executing apply: %v", err)
506506
}
507507
}
508508
if step.Action == "run" {
509-
stdout, stderr, err := d.commandRunner.Run(step.Value)
510-
log.Printf("Running %v for **%v**\n%v%v", step.Value, d.lock.LockId(), stdout, stderr)
509+
stdout, stderr, err := d.CommandRunner.Run(step.Value)
510+
log.Printf("Running %v for **%v**\n%v%v", step.Value, d.ProjectLock.LockId(), stdout, stderr)
511511
if err != nil {
512512
return fmt.Errorf("error running command: %v", err)
513513
}
@@ -519,21 +519,21 @@ func (d DiggerExecutor) Apply(prNumber int) error {
519519
}
520520

521521
func (d DiggerExecutor) Unlock(prNumber int) error {
522-
err := d.lock.ForceUnlock(prNumber)
522+
err := d.ProjectLock.ForceUnlock(prNumber)
523523
if err != nil {
524-
return fmt.Errorf("failed to aquire lock: %s, %v", d.lock.LockId(), err)
524+
return fmt.Errorf("failed to aquire lock: %s, %v", d.ProjectLock.LockId(), err)
525525
}
526-
err = d.planStorage.DeleteStoredPlan(d.storedPlanFilePath())
526+
err = d.PlanStorage.DeleteStoredPlan(d.storedPlanFilePath())
527527
if err != nil {
528528
return fmt.Errorf("failed to delete stored plan file '%v': %v", d.storedPlanFilePath(), err)
529529
}
530530
return nil
531531
}
532532

533533
func (d DiggerExecutor) Lock(prNumber int) error {
534-
_, err := d.lock.Lock(prNumber)
534+
_, err := d.ProjectLock.Lock(prNumber)
535535
if err != nil {
536-
return fmt.Errorf("failed to aquire lock: %s, %v", d.lock.LockId(), err)
536+
return fmt.Errorf("failed to aquire lock: %s, %v", d.ProjectLock.LockId(), err)
537537
}
538538
return nil
539539
}

pkg/digger/digger_test.go

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -151,7 +151,7 @@ func TestCorrectCommandExecutionWhenApplying(t *testing.T) {
151151
lock := &MockProjectLock{}
152152
planStorage := &MockPlanStorage{}
153153
executor := DiggerExecutor{
154-
applyStage: &configuration.Stage{
154+
ApplyStage: &configuration.Stage{
155155
Steps: []configuration.Step{
156156
{
157157
Action: "init",
@@ -170,12 +170,12 @@ func TestCorrectCommandExecutionWhenApplying(t *testing.T) {
170170
},
171171
},
172172
},
173-
planStage: &configuration.Stage{},
174-
commandRunner: commandRunner,
175-
terraformExecutor: terraformExecutor,
176-
prManager: prManager,
177-
lock: lock,
178-
planStorage: planStorage,
173+
PlanStage: &configuration.Stage{},
174+
CommandRunner: commandRunner,
175+
TerraformExecutor: terraformExecutor,
176+
ciService: prManager,
177+
ProjectLock: lock,
178+
PlanStorage: planStorage,
179179
}
180180

181181
executor.Apply(1)
@@ -193,8 +193,8 @@ func TestCorrectCommandExecutionWhenPlanning(t *testing.T) {
193193
planStorage := &MockPlanStorage{}
194194

195195
executor := DiggerExecutor{
196-
applyStage: &configuration.Stage{},
197-
planStage: &configuration.Stage{
196+
ApplyStage: &configuration.Stage{},
197+
PlanStage: &configuration.Stage{
198198
Steps: []configuration.Step{
199199
{
200200
Action: "init",
@@ -213,11 +213,11 @@ func TestCorrectCommandExecutionWhenPlanning(t *testing.T) {
213213
},
214214
},
215215
},
216-
commandRunner: commandRunner,
217-
terraformExecutor: terraformExecutor,
218-
prManager: prManager,
219-
lock: lock,
220-
planStorage: planStorage,
216+
CommandRunner: commandRunner,
217+
TerraformExecutor: terraformExecutor,
218+
ciService: prManager,
219+
ProjectLock: lock,
220+
PlanStorage: planStorage,
221221
}
222222

223223
executor.Plan(1)

0 commit comments

Comments
 (0)