Skip to content

Commit d09a134

Browse files
authored
refactoring ee cli to use providers (#1568)
* refactoring ee cli to use providers
1 parent c0d097e commit d09a134

File tree

22 files changed

+728
-1277
lines changed

22 files changed

+728
-1277
lines changed

action.yml

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,10 @@ description: Manage terraform collaboration
33
author: Digger
44

55
inputs:
6+
ee:
7+
description: use ee cli?
8+
required: false
9+
default: 'false'
610
setup-aws:
711
description: Setup AWS
812
required: false
@@ -317,7 +321,12 @@ runs:
317321
TERRAGRUNT_PROVIDER_CACHE: ${{ inputs.cache-dependencies == 'true' && 1 || 0 }}
318322
TERRAGRUNT_PROVIDER_CACHE_DIR: ${{ github.workspace }}/cache
319323
run: |
320-
cd $GITHUB_ACTION_PATH/cli
324+
if [[ ${{ inputs.ee }} == "true" ]]; then
325+
cd $GITHUB_ACTION_PATH/ee/cli
326+
else
327+
cd $GITHUB_ACTION_PATH/cli
328+
fi
329+
321330
go build -o digger ./cmd/digger
322331
chmod +x digger
323332
PATH=$PATH:$(pwd)
@@ -350,7 +359,11 @@ runs:
350359
id: digger
351360
shell: bash
352361
run: |
353-
curl -sL https://github.com/diggerhq/digger/releases/download/${actionref}/digger-cli-${{ runner.os }}-${{ runner.arch }} -o digger
362+
if [[ ${{ inputs.ee }} == "true" ]]; then
363+
curl -sL https://github.com/diggerhq/digger/releases/download/${actionref}/digger-ee-cli-${{ runner.os }}-${{ runner.arch }} -o digger
364+
else
365+
curl -sL https://github.com/diggerhq/digger/releases/download/${actionref}/digger-cli-${{ runner.os }}-${{ runner.arch }} -o digger
366+
fi
354367
chmod +x digger
355368
PATH=$PATH:$(pwd)
356369
cd $GITHUB_WORKSPACE

cli/cmd/digger/apply.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package main
33
import (
44
core_backend "github.com/diggerhq/digger/cli/pkg/core/backend"
55
core_policy "github.com/diggerhq/digger/cli/pkg/core/policy"
6+
"github.com/diggerhq/digger/cli/pkg/usage"
67
"github.com/diggerhq/digger/libs/comment_utils/reporting"
78
core_locking "github.com/diggerhq/digger/libs/locking"
89
"github.com/diggerhq/digger/libs/orchestrator"
@@ -28,7 +29,7 @@ var applyCmd = &cobra.Command{
2829

2930
prService, orgService, reporter, err := runConfig.GetServices()
3031
if err != nil {
31-
reportErrorAndExit(runConfig.Actor, "Unrecognised reporter: "+runConfig.Reporter, 1)
32+
usage.ReportErrorAndExit(runConfig.Actor, "Unrecognised reporter: "+runConfig.Reporter, 1)
3233
}
3334

3435
apply(runConfig.Actor, args[0], runConfig.RepoNamespace, runConfig.PRNumber, lock, PolicyChecker, *reporter, *prService, *orgService, BackendApi)

cli/cmd/digger/default.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,10 @@ import (
44
"fmt"
55
"github.com/diggerhq/digger/cli/pkg/azure"
66
"github.com/diggerhq/digger/cli/pkg/digger"
7+
"github.com/diggerhq/digger/cli/pkg/drift"
8+
"github.com/diggerhq/digger/cli/pkg/github"
79
"github.com/diggerhq/digger/cli/pkg/usage"
10+
comment_updater "github.com/diggerhq/digger/libs/comment_utils/summary"
811
"github.com/spf13/cobra"
912
"log"
1013
"os"
@@ -20,7 +23,7 @@ var defaultCmd = &cobra.Command{
2023
switch ci {
2124
case digger.GitHub:
2225
logLeader = os.Getenv("GITHUB_ACTOR")
23-
gitHubCI(lock, PolicyChecker, BackendApi, ReportStrategy)
26+
github.GitHubCI(lock, PolicyChecker, BackendApi, ReportStrategy, comment_updater.CommentUpdaterProviderBasic{}, drift.DriftNotificationProviderBasic{})
2427
case digger.GitLab:
2528
logLeader = os.Getenv("CI_PROJECT_NAME")
2629
gitLabCI(lock, PolicyChecker, BackendApi, ReportStrategy)

cli/cmd/digger/destroy.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package main
33
import (
44
core_backend "github.com/diggerhq/digger/cli/pkg/core/backend"
55
core_policy "github.com/diggerhq/digger/cli/pkg/core/policy"
6+
"github.com/diggerhq/digger/cli/pkg/usage"
67
"github.com/diggerhq/digger/libs/comment_utils/reporting"
78
core_locking "github.com/diggerhq/digger/libs/locking"
89
"github.com/diggerhq/digger/libs/orchestrator"
@@ -28,7 +29,7 @@ var destroyCmd = &cobra.Command{
2829

2930
prService, orgService, reporter, err := runConfig.GetServices()
3031
if err != nil {
31-
reportErrorAndExit(runConfig.Actor, "Unrecognised reporter: "+runConfig.Reporter, 1)
32+
usage.ReportErrorAndExit(runConfig.Actor, "Unrecognised reporter: "+runConfig.Reporter, 1)
3233
}
3334

3435
destroy(runConfig.Actor, args[0], runConfig.RepoNamespace, runConfig.PRNumber, lock, PolicyChecker, *reporter, *prService, *orgService, BackendApi)

cli/cmd/digger/main.go

Lines changed: 83 additions & 138 deletions
Large diffs are not rendered by default.

cli/cmd/digger/plan.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package main
33
import (
44
core_backend "github.com/diggerhq/digger/cli/pkg/core/backend"
55
core_policy "github.com/diggerhq/digger/cli/pkg/core/policy"
6+
"github.com/diggerhq/digger/cli/pkg/usage"
67
"github.com/diggerhq/digger/libs/comment_utils/reporting"
78
core_locking "github.com/diggerhq/digger/libs/locking"
89
"github.com/diggerhq/digger/libs/orchestrator"
@@ -28,7 +29,7 @@ var planCmd = &cobra.Command{
2829

2930
prService, orgService, reporter, err := runConfig.GetServices()
3031
if err != nil {
31-
reportErrorAndExit(runConfig.Actor, "Unrecognised reporter: "+runConfig.Reporter, 1)
32+
usage.ReportErrorAndExit(runConfig.Actor, "Unrecognised reporter: "+runConfig.Reporter, 1)
3233
}
3334

3435
plan(runConfig.Actor, args[0], runConfig.RepoNamespace, runConfig.PRNumber, lock, PolicyChecker, *reporter, *prService, *orgService, BackendApi)

cli/cmd/digger/root.go

Lines changed: 2 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -88,8 +88,8 @@ func PreRun(cmd *cobra.Command, args []string) {
8888
hostName := os.Getenv("DIGGER_HOSTNAME")
8989
token := os.Getenv("DIGGER_TOKEN")
9090
orgName := os.Getenv("DIGGER_ORGANISATION")
91-
BackendApi = NewBackendApi(hostName, token)
92-
PolicyChecker = NewPolicyChecker(hostName, orgName, token)
91+
BackendApi = backend.NewBackendApi(hostName, token)
92+
PolicyChecker = policy.NewPolicyChecker(hostName, orgName, token)
9393

9494
if os.Getenv("REPORTING_STRATEGY") == "comments_per_run" || os.Getenv("ACCUMULATE_PLANS") == "true" {
9595
ReportStrategy = &reporting.CommentPerRunStrategy{
@@ -118,38 +118,6 @@ func PreRun(cmd *cobra.Command, args []string) {
118118
log.Println("Lock provider has been created successfully")
119119
}
120120

121-
func NewBackendApi(hostName string, authToken string) core_backend.Api {
122-
var backendApi core_backend.Api
123-
if os.Getenv("NO_BACKEND") == "true" {
124-
log.Println("WARNING: running in 'backendless' mode. Features that require backend will not be available.")
125-
backendApi = backend.NoopApi{}
126-
} else {
127-
backendApi = backend.DiggerApi{
128-
DiggerHost: hostName,
129-
AuthToken: authToken,
130-
HttpClient: http.DefaultClient,
131-
}
132-
}
133-
return backendApi
134-
}
135-
136-
func NewPolicyChecker(hostname string, organisationName string, authToken string) core_policy.Checker {
137-
var policyChecker core_policy.Checker
138-
if os.Getenv("NO_BACKEND") == "true" {
139-
log.Println("WARNING: running in 'backendless' mode. Features that require backend will not be available.")
140-
policyChecker = policy.NoOpPolicyChecker{}
141-
} else {
142-
policyChecker = policy.DiggerPolicyChecker{
143-
PolicyProvider: &policy.DiggerHttpPolicyProvider{
144-
DiggerHost: hostname,
145-
DiggerOrganisation: organisationName,
146-
AuthToken: authToken,
147-
HttpClient: http.DefaultClient,
148-
}}
149-
}
150-
return policyChecker
151-
}
152-
153121
var rootCmd = &cobra.Command{
154122
Use: "digger",
155123
Short: "An open source IaC orchestration tool",

cli/pkg/backend/diggerapi.go

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,15 @@ import (
44
"bytes"
55
"encoding/json"
66
"fmt"
7+
"github.com/diggerhq/digger/cli/pkg/core/backend"
78
"github.com/diggerhq/digger/cli/pkg/core/execution"
89
"github.com/diggerhq/digger/libs/orchestrator/scheduler"
910
"github.com/diggerhq/digger/libs/terraform_utils"
1011
"io"
1112
"log"
1213
"net/http"
1314
"net/url"
15+
"os"
1416
"path/filepath"
1517
"time"
1618
)
@@ -185,3 +187,18 @@ func (d DiggerApi) ReportProjectJobStatus(repo string, projectName string, jobId
185187

186188
return &response, nil
187189
}
190+
191+
func NewBackendApi(hostName string, authToken string) backend.Api {
192+
var backendApi backend.Api
193+
if os.Getenv("NO_BACKEND") == "true" {
194+
log.Println("WARNING: running in 'backendless' mode. Features that require backend will not be available.")
195+
backendApi = NoopApi{}
196+
} else {
197+
backendApi = DiggerApi{
198+
DiggerHost: hostName,
199+
AuthToken: authToken,
200+
HttpClient: http.DefaultClient,
201+
}
202+
}
203+
return backendApi
204+
}

cli/pkg/drift/Provider.go

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package drift
2+
3+
import (
4+
"fmt"
5+
core_drift "github.com/diggerhq/digger/cli/pkg/core/drift"
6+
"github.com/diggerhq/digger/libs/orchestrator"
7+
"os"
8+
)
9+
10+
type DriftNotificationProvider interface {
11+
Get(prService orchestrator.PullRequestService) (core_drift.Notification, error)
12+
}
13+
14+
type DriftNotificationProviderBasic struct{}
15+
16+
func (d DriftNotificationProviderBasic) Get(prService orchestrator.PullRequestService) (core_drift.Notification, error) {
17+
slackNotificationUrl := os.Getenv("INPUT_DRIFT_DETECTION_SLACK_NOTIFICATION_URL")
18+
var notification core_drift.Notification
19+
if slackNotificationUrl != "" {
20+
notification = SlackNotification{slackNotificationUrl}
21+
} else {
22+
return nil, fmt.Errorf("could not identify drift mode, please specify slack or github")
23+
}
24+
return notification, nil
25+
}

0 commit comments

Comments
 (0)