@@ -38,36 +38,63 @@ func NewJob(file string, cmdFactory ICmdFactory, buildService IBuildService, mav
3838}
3939
4040func (j * Job ) Run () {
41+ if err := j .parseBuildFile (); err != nil {
42+ return
43+ }
44+
45+ if err := j .generatePomFile (); err != nil {
46+ return
47+ }
48+
49+ pomFile , err := j .locatePomFile ()
50+ if err != nil {
51+ return
52+ }
53+
54+ pomXml , err := j .convertToPomXml (pomFile )
55+ if err != nil {
56+ return
57+ }
58+
59+ if err := j .parseAndProcessWithMaven (pomXml ); err != nil {
60+ return
61+ }
62+ }
63+
64+ func (j * Job ) parseBuildFile () error {
4165 status := "parsing SBT build file"
4266 j .SendStatus (status )
4367
4468 file := j .GetFile ()
4569 _ , err := j .buildService .ParseBuildModules (file )
4670 if err != nil {
4771 doc := err .Error ()
48-
4972 if doc == "EOF" {
5073 doc = "This file doesn't contain valid SBT build content"
5174 }
5275
5376 parsingError := util .NewPMJobError (err .Error ())
5477 parsingError .SetStatus (status )
5578 parsingError .SetDocumentation (doc )
56-
5779 j .Errors ().Critical (parsingError )
5880
59- return
81+ return err
6082 }
6183
84+ return nil
85+ }
86+
87+ func (j * Job ) generatePomFile () error {
88+ file := j .GetFile ()
6289 workingDirectory := filepath .Dir (filepath .Clean (file ))
6390 cmd , err := j .cmdFactory .MakePomCmd (workingDirectory )
6491 if err != nil {
6592 j .handleError (util .NewPMJobError (err .Error ()))
6693
67- return
94+ return err
6895 }
6996
70- status = "generating Maven POM file"
97+ status : = "generating Maven POM file"
7198 j .SendStatus (status )
7299
73100 output , err := cmd .CombinedOutput ()
@@ -79,11 +106,18 @@ func (j *Job) Run() {
79106
80107 cmdErr := util .NewPMJobError (errContent )
81108 cmdErr .SetStatus (status )
82-
83109 j .handleError (cmdErr )
110+
111+ return err
84112 }
85113
86- status = "locating generated POM file"
114+ return nil
115+ }
116+
117+ func (j * Job ) locatePomFile () (string , error ) {
118+ file := j .GetFile ()
119+ workingDirectory := filepath .Dir (filepath .Clean (file ))
120+ status := "locating generated POM file"
87121 j .SendStatus (status )
88122
89123 pomFile , err := j .buildService .FindPomFile (workingDirectory )
@@ -95,56 +129,86 @@ func (j *Job) Run() {
95129
96130 cmdErr := util .NewPMJobError (errorMsg )
97131 cmdErr .SetStatus (status )
98-
99132 j .handleError (cmdErr )
100133
101- return
134+ return "" , err
102135 }
103136
104- status = "converting POM file to pom.xml"
137+ return pomFile , nil
138+ }
139+
140+ func (j * Job ) convertToPomXml (pomFile string ) (string , error ) {
141+ file := j .GetFile ()
142+ workingDirectory := filepath .Dir (filepath .Clean (file ))
143+ status := "converting POM file to pom.xml"
105144 j .SendStatus (status )
106145
107146 pomXml , err := j .buildService .RenamePomToXml (pomFile , workingDirectory )
108147 if err != nil {
109148 cmdErr := util .NewPMJobError (err .Error ())
110149 cmdErr .SetStatus (status )
111-
112150 j .handleError (cmdErr )
113151
114- return
152+ return "" , err
153+ }
154+
155+ return pomXml , nil
156+ }
157+
158+ func (j * Job ) parseAndProcessWithMaven (pomXml string ) error {
159+ status := "parsing Maven POM file"
160+ j .SendStatus (status )
161+
162+ if err := j .parseMavenPom (pomXml ); err != nil {
163+ return err
164+ }
165+
166+ file := j .GetFile ()
167+ workingDirectory := filepath .Dir (filepath .Clean (file ))
168+ if err := j .createMavenDependencyGraph (workingDirectory , pomXml ); err != nil {
169+ return err
115170 }
116171
117- status = "parsing Maven POM file"
172+ status = fmt .Sprintf ("processing dependencies with Maven resolver using %s" , pomXml )
173+ j .SendStatus (status )
174+
175+ return nil
176+ }
177+
178+ func (j * Job ) parseMavenPom (pomXml string ) error {
179+ status := "parsing Maven POM file"
118180 j .SendStatus (status )
119181
120- _ , err = j .mavenPomService .ParsePomModules (pomXml )
182+ _ , err : = j .mavenPomService .ParsePomModules (pomXml )
121183 if err != nil {
122184 doc := err .Error ()
123-
124185 if doc == "EOF" {
125186 doc = "This file doesn't contain valid XML"
126187 }
127188
128189 parsingError := util .NewPMJobError (err .Error ())
129190 parsingError .SetStatus (status )
130191 parsingError .SetDocumentation (doc )
131-
132192 j .Errors ().Critical (parsingError )
133193
134- return
194+ return err
135195 }
136196
137- status = "creating Maven dependency graph"
197+ return nil
198+ }
199+
200+ func (j * Job ) createMavenDependencyGraph (workingDirectory string , pomXml string ) error {
201+ status := "creating Maven dependency graph"
138202 j .SendStatus (status )
139203
140- cmd , err = j .mavenCmdFactory .MakeDependencyTreeCmd (workingDirectory )
204+ cmd , err : = j .mavenCmdFactory .MakeDependencyTreeCmd (workingDirectory )
141205 if err != nil {
142206 j .handleError (util .NewPMJobError (err .Error ()))
143207
144- return
208+ return err
145209 }
146210
147- output , err = cmd .Output ()
211+ output , err : = cmd .Output ()
148212 if err != nil {
149213 errContent := err .Error ()
150214 if output != nil {
@@ -153,14 +217,12 @@ func (j *Job) Run() {
153217
154218 cmdErr := util .NewPMJobError (errContent )
155219 cmdErr .SetStatus (status )
156-
157220 j .handleError (cmdErr )
158221
159- return
222+ return err
160223 }
161224
162- status = fmt .Sprintf ("processing dependencies with Maven resolver using %s" , pomXml )
163- j .SendStatus (status )
225+ return nil
164226}
165227
166228func (j * Job ) handleError (cmdError job.IError ) {
0 commit comments