@@ -13,6 +13,12 @@ import (
1313 "github.com/google/go-github/v67/github"
1414)
1515
16+ const (
17+ exitOk int = 0
18+ exitError int = 1
19+ exitNoNewFiles int = 10
20+ )
21+
1622func getGitPorcelain (dirPath string ) (git.Status , error ) {
1723 repo , err := git .PlainOpen (dirPath )
1824 if err != nil {
@@ -183,19 +189,19 @@ func UploadToRepo(
183189 message string ,
184190 createEmpty * bool ,
185191 allowEmpty * bool ,
186- ) (* github.Reference , * github.Response , error ) {
192+ ) (* github.Reference , * github.Response , error , int ) {
187193
188194 // Get the current currentCommit
189195 currentCommit , err := getCurrentCommit (ctx , client , repo , baseBranch )
190196 if err != nil {
191- return nil , nil , err
197+ return nil , nil , err , exitError
192198 }
193199
194200 fileStatuses , err := getGitPorcelain (path )
195201
196202 addedFiles , updatedFiles , deletedFiles , err := getGroupedFiles (fileStatuses )
197203 if err != nil {
198- return nil , nil , err
204+ return nil , nil , err , exitError
199205 }
200206 addedAndUpdatedFiles := append (updatedFiles , addedFiles ... )
201207
@@ -207,13 +213,13 @@ func UploadToRepo(
207213 ))
208214 dummy , err := os .Create (fileName )
209215 if err != nil {
210- return nil , nil , err
216+ return nil , nil , err , exitError
211217 }
212218 defer dummy .Close ()
213219
214220 blob , _ , err := createBlobForFile (ctx , client , repo , fileName )
215221 if err != nil {
216- return nil , nil , err
222+ return nil , nil , err , exitError
217223 }
218224 tree , _ , err := createNewTree (
219225 ctx ,
@@ -224,15 +230,15 @@ func UploadToRepo(
224230 currentCommit .GetSHA (),
225231 )
226232 if err != nil {
227- return nil , nil , err
233+ return nil , nil , err , exitError
228234 }
229235
230236 commit , _ , err := createNewCommit (
231237 ctx , client , repo , tree ,
232238 currentCommit , message ,
233239 )
234240 if err != nil {
235- return nil , nil , err
241+ return nil , nil , err , exitError
236242 }
237243
238244 // Then we delete it and set that commit as the new head commit
@@ -247,25 +253,25 @@ func UploadToRepo(
247253 commit .GetSHA (),
248254 )
249255 if err != nil {
250- return nil , nil , err
256+ return nil , nil , err , exitError
251257 }
252258
253259 emptyCommit , _ , err := createNewCommit (
254260 ctx , client , repo , emptyTree ,
255261 currentCommit , message ,
256262 )
257263 if err != nil {
258- return nil , nil , err
264+ return nil , nil , err , exitError
259265 }
260266
261267 ref , resp , respErr := setBranchToCommit (ctx , client , repo , branch , emptyCommit )
262268
263269 err = os .Remove (fileName )
264270 if err != nil {
265- return nil , nil , err
271+ return nil , nil , err , exitError
266272 }
267273
268- return ref , resp , respErr
274+ return ref , resp , respErr , exitOk
269275 } else {
270276 if len (addedAndUpdatedFiles ) > 0 || len (deletedFiles ) > 0 {
271277 // Create a blob for each file
@@ -297,25 +303,30 @@ func UploadToRepo(
297303 blobs = append (blobs , blob )
298304
299305 if err != nil {
300- return nil , nil , err
306+ return nil , nil , err , exitError
301307 }
302308
303309 filePaths = append (filePaths , file )
304310 }
305311
306312 tree , _ , err := createNewTree (ctx , client , repo , blobs , filePaths , currentCommit .GetSHA ())
307313 if err != nil {
308- return nil , nil , err
314+ return nil , nil , err , exitError
309315 }
310316
311317 commit , _ , err := createNewCommit (ctx , client , repo , tree , currentCommit , message )
312318 if err != nil {
313- return nil , nil , err
319+ return nil , nil , err , exitError
320+ }
321+
322+ ref , resp , err := setBranchToCommit (ctx , client , repo , branch , commit )
323+ if err != nil {
324+ return nil , nil , err , exitError
314325 }
315326
316- return setBranchToCommit ( ctx , client , repo , branch , commit )
327+ return ref , resp , err , exitOk
317328 } else {
318- return nil , nil , errors .New ("no new files to commit" )
329+ return nil , nil , errors .New ("no new files to commit" ), exitNoNewFiles
319330 }
320331 }
321332}
0 commit comments