@@ -2,35 +2,71 @@ package io.codearte.accurest.maven
2
2
3
3
import groovy.transform.CompileStatic
4
4
import io.codearte.accurest.config.AccurestConfigProperties
5
+ import io.codearte.accurest.wiremock.DslToWireMockClientConverter
6
+ import io.codearte.accurest.wiremock.RecursiveFilesConverter
7
+ import org.apache.maven.execution.MavenSession
8
+ import org.apache.maven.model.path.PathTranslator
5
9
import org.apache.maven.plugin.AbstractMojo
6
10
import org.apache.maven.plugin.MojoExecutionException
7
11
import org.apache.maven.plugin.MojoFailureException
12
+ import org.apache.maven.plugins.annotations.Component
13
+ import org.apache.maven.plugins.annotations.LifecyclePhase
8
14
import org.apache.maven.plugins.annotations.Mojo
9
15
import org.apache.maven.plugins.annotations.Parameter
10
16
11
- import static io.codearte.accurest.maven.AccurestConverter.convertAccurestToStubs
17
+ import javax.inject.Inject
12
18
13
- @Mojo (name = ' convert' , requiresProject = false )
19
+ @Mojo (name = ' convert' , requiresProject = false , defaultPhase = LifecyclePhase . PROCESS_RESOURCES )
14
20
@CompileStatic
15
- public class ConvertMojo extends AbstractMojo {
21
+ class ConvertMojo extends AbstractMojo {
16
22
17
- @Parameter (property = ' contractsDir ' , defaultValue = ' ${basedir}' )
18
- private File contractsDir
23
+ @Parameter (defaultValue = ' ${basedir}' , readonly = true , required = true )
24
+ private File baseDir
19
25
20
- @Parameter (property = ' mappingsDir ' , defaultValue = ' ${basedir} ' )
21
- private File mappingsDir
26
+ @Parameter (defaultValue = ' ${project.build.directory} ' , readonly = true , required = true )
27
+ private File projectBuildDirectory
22
28
23
- public void execute () throws MojoExecutionException , MojoFailureException {
29
+ @Parameter (property = ' contractsDir' )
30
+ private String contractsDir
31
+
32
+ @Parameter (property = ' mappingsDir' )
33
+ private String mappingsDir
34
+
35
+ @Component
36
+ private MavenSession mavenSession
37
+
38
+ private final PathTranslator translator
39
+
40
+ @Inject
41
+ ConvertMojo (PathTranslator translator ) {
42
+ this . translator = translator
43
+ }
44
+
45
+ void execute () throws MojoExecutionException , MojoFailureException {
24
46
25
47
AccurestConfigProperties config = new AccurestConfigProperties ()
26
- config. contractsDslDir = contractsDir
27
- config. stubsOutputDir = mappingsDir
48
+
49
+ config. contractsDslDir = resolveFile(baseDir, contractsDir, isInsideProject() ? ' src/test/accurest' : ' ' )
50
+ config. stubsOutputDir = resolveFile(projectBuildDirectory, mappingsDir, isInsideProject() ? ' mappings' : ' ' )
28
51
29
52
log. info(' Converting from accurest contracts written in GroovyDSL to WireMock stubs mappings' )
30
- log. info(" Accurest contracts directory: ${ config.contractsDslDir.absolutePath} " )
31
- log. info(" WireMock stubs mappings directory: ${ config.stubsOutputDir.absolutePath} " )
53
+ log. info(" Accurest contracts directory: ${ config.contractsDslDir} " )
54
+ log. info(" WireMock stubs mappings directory: ${ config.stubsOutputDir} " )
55
+
56
+ RecursiveFilesConverter converter = new RecursiveFilesConverter (new DslToWireMockClientConverter (), config)
57
+ converter. processFiles()
58
+ }
59
+
60
+ private boolean isInsideProject () {
61
+ mavenSession. getRequest(). isProjectPresent()
62
+ }
63
+
64
+ private File resolveFile (File baseDir , String requestedPath , String defaultPath ) {
65
+ requestedPath ? alignToBaseDirectory(requestedPath, baseDir) : alignToBaseDirectory(defaultPath, baseDir)
66
+ }
32
67
33
- convertAccurestToStubs(config)
68
+ private File alignToBaseDirectory (String dir1 , File dir ) {
69
+ return new File (translator. alignToBaseDirectory(dir1, dir))
34
70
}
35
71
36
72
}
0 commit comments