@@ -11,6 +11,7 @@ import (
1111)
1212
1313func main () {
14+ utils .SendUsageRecord ("" , "log" , "initialize" )
1415 args := os .Args [1 :]
1516 if len (args ) > 0 && args [0 ] == "version" {
1617 fmt .Println (utils .GetVersion ())
@@ -21,39 +22,34 @@ func main() {
2122 os .Exit (0 )
2223 }
2324
24- diggerConfig , err := digger .NewDiggerConfig ("" )
25- if err != nil {
26- fmt .Printf ("Failed to read digger config. %s\n " , err )
27- os .Exit (1 )
28- }
29- println ("Digger config read successfully" )
30-
31- lock , err := utils .GetLock ()
32- if err != nil {
33- fmt .Printf ("Failed to create lock provider. %s\n " , err )
34- os .Exit (2 )
35- }
36- println ("Lock provider has been created successfully" )
37-
3825 ghToken := os .Getenv ("GITHUB_TOKEN" )
3926 if ghToken == "" {
40- println ("GITHUB_TOKEN is not defined" )
41- os .Exit (3 )
27+ reportErrorAndExit ("" , "GITHUB_TOKEN is not defined" , 1 )
4228 }
4329
4430 ghContext := os .Getenv ("GITHUB_CONTEXT" )
4531 if ghContext == "" {
46- fmt .Printf ("GITHUB_CONTEXT is not defined. %s\n " , err )
47- os .Exit (4 )
32+ reportErrorAndExit ("" , "GITHUB_CONTEXT is not defined" , 2 )
4833 }
4934
5035 parsedGhContext , err := models .GetGitHubContext (ghContext )
5136 if err != nil {
52- fmt .Printf ("failed to parse GitHub context. %s\n " , err .Error ())
53- os .Exit (5 )
37+ reportErrorAndExit ("" , fmt .Sprintf ("Failed to parse GitHub context. %s" , err ), 3 )
5438 }
5539 println ("GitHub context parsed successfully" )
5640
41+ diggerConfig , err := digger .NewDiggerConfig ("" )
42+ if err != nil {
43+ reportErrorAndExit (parsedGhContext .RepositoryOwner , fmt .Sprintf ("Failed to read Digger config. %s" , err ), 4 )
44+ }
45+ println ("Digger config read successfully" )
46+
47+ lock , err := utils .GetLock ()
48+ if err != nil {
49+ reportErrorAndExit (parsedGhContext .RepositoryOwner , fmt .Sprintf ("Failed to create lock provider. %s" , err ), 5 )
50+ }
51+ println ("Lock provider has been created successfully" )
52+
5753 ghEvent := parsedGhContext .Event
5854 eventName := parsedGhContext .EventName
5955 splitRepositoryName := strings .Split (parsedGhContext .Repository , "/" )
@@ -62,8 +58,7 @@ func main() {
6258
6359 impactedProjects , prNumber , err := digger .ProcessGitHubEvent (ghEvent , diggerConfig , githubPrService )
6460 if err != nil {
65- fmt .Printf ("failed to process GitHub event, %v" , err )
66- os .Exit (6 )
61+ reportErrorAndExit (repoOwner , fmt .Sprintf ("Failed to process GitHub event. %s" , err ), 6 )
6762 }
6863 println ("GitHub event processed successfully" )
6964
@@ -74,15 +69,31 @@ func main() {
7469
7570 commandsToRunPerProject , err := digger .ConvertGithubEventToCommands (ghEvent , impactedProjects )
7671 if err != nil {
77- fmt .Printf ("failed to convert event to command, %v" , err )
78- os .Exit (7 )
72+ reportErrorAndExit (repoOwner , fmt .Sprintf ("Failed to convert GitHub event to commands. %s" , err ), 7 )
7973 }
8074 println ("GitHub event converted to commands successfully" )
8175
8276 err = digger .RunCommandsPerProject (commandsToRunPerProject , repoOwner , repositoryName , eventName , prNumber , diggerConfig , githubPrService , lock , "" )
8377 if err != nil {
84- fmt .Printf ("failed to execute command, %v" , err )
85- os .Exit (8 )
78+ reportErrorAndExit (repoOwner , fmt .Sprintf ("Failed to run commands. %s" , err ), 8 )
8679 }
8780 println ("Commands executed successfully" )
81+
82+ reportErrorAndExit (repoOwner , "Digger finished successfully" , 0 )
83+
84+ defer func () {
85+ if r := recover (); r != nil {
86+ reportErrorAndExit (repoOwner , fmt .Sprintf ("Panic occurred. %s" , r ), 1 )
87+ }
88+ }()
89+
90+ }
91+
92+ func reportErrorAndExit (repoOwner string , message string , exitCode int ) {
93+ fmt .Printf (message )
94+ err := utils .SendLogRecord (repoOwner , message )
95+ if err != nil {
96+ fmt .Printf ("Failed to send log record. %s\n " , err )
97+ }
98+ os .Exit (exitCode )
8899}
0 commit comments