@@ -4,10 +4,13 @@ import (
4
4
"fmt"
5
5
"github.com/diggerhq/digger/cli/pkg/digger"
6
6
"github.com/diggerhq/digger/cli/pkg/usage"
7
+ "github.com/diggerhq/digger/libs/ci"
8
+ "github.com/diggerhq/digger/libs/comment_utils/reporting"
7
9
comment_summary "github.com/diggerhq/digger/libs/comment_utils/summary"
8
10
"github.com/diggerhq/digger/libs/digger_config"
9
11
"github.com/diggerhq/digger/libs/scheduler"
10
12
"github.com/diggerhq/digger/libs/spec"
13
+ "github.com/diggerhq/digger/libs/storage"
11
14
"log"
12
15
"os"
13
16
"time"
@@ -113,3 +116,90 @@ func RunSpec(
113
116
114
117
return nil
115
118
}
119
+
120
+ func RunSpecManualCommand (
121
+ spec spec.Spec ,
122
+ vcsProvider spec.VCSProvider ,
123
+ jobProvider spec.JobSpecProvider ,
124
+ lockProvider spec.LockProvider ,
125
+ reporterProvider spec.ReporterProvider ,
126
+ backedProvider spec.BackendApiProvider ,
127
+ policyProvider spec.SpecPolicyProvider ,
128
+ PlanStorageProvider spec.PlanStorageProvider ,
129
+ commentUpdaterProvider comment_summary.CommentUpdaterProvider ,
130
+ ) error {
131
+
132
+ job , err := jobProvider .GetJob (spec .Job )
133
+ if err != nil {
134
+ usage .ReportErrorAndExit (spec .VCS .Actor , fmt .Sprintf ("could not get job: %v" , err ), 1 )
135
+ }
136
+
137
+ lock , err := lockProvider .GetLock (spec .Lock )
138
+ if err != nil {
139
+ usage .ReportErrorAndExit (spec .VCS .Actor , fmt .Sprintf ("could not get job: %v" , err ), 1 )
140
+
141
+ }
142
+
143
+ //prService, err := vcsProvider.GetPrService(spec.VCS)
144
+ //if err != nil {
145
+ // usage.ReportErrorAndExit(spec.VCS.Actor, fmt.Sprintf("could not get prservice: %v", err), 1)
146
+ //}
147
+
148
+ var prService ci.PullRequestService = ci.MockPullRequestManager {}
149
+ //orgService, err := vcsProvider.GetOrgService(spec.VCS)
150
+ //if err != nil {
151
+ // usage.ReportErrorAndExit(spec.VCS.Actor, fmt.Sprintf("could not get orgservice: %v", err), 1)
152
+ //}
153
+ var orgService ci.OrgService = ci.MockPullRequestManager {}
154
+
155
+ //reporter, err := reporterProvider.GetReporter(spec.Reporter, prService, *spec.Job.PullRequestNumber)
156
+ //if err != nil {
157
+ // usage.ReportErrorAndExit(spec.VCS.Actor, fmt.Sprintf("could not get reporter: %v", err), 1)
158
+ //}
159
+ reporter := reporting.StdOutReporter {}
160
+
161
+ backendApi , err := backedProvider .GetBackendApi (spec .Backend )
162
+ if err != nil {
163
+ usage .ReportErrorAndExit (spec .VCS .Actor , fmt .Sprintf ("could not get backend api: %v" , err ), 1 )
164
+ }
165
+
166
+ policyChecker , err := policyProvider .GetPolicyProvider (spec .Policy , spec .Backend .BackendHostname , spec .Backend .BackendOrganisationName , spec .Backend .BackendJobToken )
167
+ if err != nil {
168
+ usage .ReportErrorAndExit (spec .VCS .Actor , fmt .Sprintf ("could not get policy provider: %v" , err ), 1 )
169
+ }
170
+
171
+ //planStorage, err := PlanStorageProvider.GetPlanStorage(spec.VCS.RepoOwner, spec.VCS.RepoName, *spec.Job.PullRequestNumber)
172
+ //if err != nil {
173
+ // usage.ReportErrorAndExit(spec.VCS.Actor, fmt.Sprintf("could not get plan storage: %v", err), 8)
174
+ //}
175
+ planStorage := storage.MockPlanStorage {}
176
+
177
+ jobs := []scheduler.Job {job }
178
+
179
+ fullRepoName := fmt .Sprintf ("%v-%v" , spec .VCS .RepoOwner , spec .VCS .RepoName )
180
+ _ , err = backendApi .ReportProjectJobStatus (fullRepoName , spec .Job .ProjectName , spec .JobId , "started" , time .Now (), nil , "" , "" )
181
+ if err != nil {
182
+ usage .ReportErrorAndExit (spec .VCS .Actor , fmt .Sprintf ("Failed to report jobSpec status to backend. Exiting. %v" , err ), 4 )
183
+ }
184
+
185
+ commentId := spec .CommentId
186
+ if err != nil {
187
+ usage .ReportErrorAndExit (spec .VCS .Actor , fmt .Sprintf ("failed to get comment ID: %v" , err ), 4 )
188
+ }
189
+
190
+ currentDir , err := os .Getwd ()
191
+ if err != nil {
192
+ usage .ReportErrorAndExit (spec .VCS .Actor , fmt .Sprintf ("Failed to get current dir. %s" , err ), 4 )
193
+ }
194
+
195
+ commentUpdater := comment_summary.NoopCommentUpdater {}
196
+ // TODO: do not require conversion to gh service
197
+ allAppliesSuccess , _ , err := digger .RunJobs (jobs , prService , orgService , lock , reporter , planStorage , policyChecker , commentUpdater , backendApi , spec .JobId , false , false , commentId , currentDir )
198
+ if err != nil || allAppliesSuccess == false {
199
+ usage .ReportErrorAndExit (spec .VCS .RepoOwner , "Terraform execution failed" , 1 )
200
+ }
201
+
202
+ usage .ReportErrorAndExit (spec .VCS .RepoOwner , "Digger finished successfully" , 0 )
203
+
204
+ return nil
205
+ }
0 commit comments