Skip to content

Commit 805378b

Browse files
committed
up-to-date check
1 parent 5732bd3 commit 805378b

2 files changed

Lines changed: 55 additions & 2 deletions

File tree

pom.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,11 @@
4848
<version>3.5</version>
4949
<scope>provided</scope>
5050
</dependency>
51+
<dependency>
52+
<groupId>org.apache.maven.shared</groupId>
53+
<artifactId>maven-shared-utils</artifactId>
54+
<version>3.2.1</version>
55+
</dependency>
5156
<dependency>
5257
<groupId>io.openapiprocessor</groupId>
5358
<artifactId>openapi-processor-api</artifactId>

src/main/java/io/openapiprocessor/maven/ProcessMojo.java

Lines changed: 50 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import org.apache.maven.plugin.*;
2020
import org.apache.maven.plugins.annotations.*;
2121
import org.apache.maven.plugins.annotations.Mojo;
22+
import org.apache.maven.shared.utils.io.DirectoryScanner;
2223

2324
import java.io.File;
2425
import java.util.*;
@@ -49,8 +50,55 @@ public void execute () throws MojoExecutionException, MojoFailureException {
4950
System.out.println (id);
5051

5152
try {
52-
new ProcessorRunner (id, createProperties ())
53-
.run ();
53+
Map<String, Object> properties = createProperties ();
54+
55+
DirectoryScanner sourceScanner = new DirectoryScanner ();
56+
File sourceRoot = apiPath.getParentFile ();
57+
sourceScanner.setBasedir (sourceRoot);
58+
sourceScanner.setIncludes ("**/*.yaml", "**/*.yml");
59+
sourceScanner.scan ();
60+
String[] sourceFiles = sourceScanner.getIncludedFiles ();
61+
62+
long lastModified = 0;
63+
for (String source : sourceFiles) {
64+
File current = new File (sourceRoot, source);
65+
66+
if (current.exists () && current.lastModified () > lastModified) {
67+
lastModified = current.lastModified ();
68+
}
69+
}
70+
71+
72+
DirectoryScanner targetScanner = new DirectoryScanner ();
73+
File targetDir = new File((String) properties.get (TARGET_DIR));
74+
targetScanner.setBasedir (targetDir);
75+
targetScanner.setIncludes ("**/*", "**/*");
76+
targetScanner.scan ();
77+
String[] targetFiles = targetScanner.getIncludedFiles ();
78+
79+
boolean outdated = false;
80+
if (targetFiles.length == 0) {
81+
outdated = true;
82+
}
83+
84+
for (String target : targetFiles) {
85+
File current = new File (targetDir, target);
86+
87+
if (current.exists () && current.lastModified () < lastModified) {
88+
outdated = true;
89+
break;
90+
}
91+
}
92+
93+
if (outdated) {
94+
getLog().info( "Changes detected - generating target files!" );
95+
96+
new ProcessorRunner (id, properties)
97+
.run ();
98+
99+
} else {
100+
getLog().info( "Nothing to process - all generated target files are up to date." );
101+
}
54102

55103
} catch (Exception e) {
56104
throw new MojoExecutionException ("openapi-processor-" + id + " execution failed!");

0 commit comments

Comments
 (0)