Skip to content

Commit dfc91c7

Browse files
committed
feat: allow dynamic version info
1 parent 403c427 commit dfc91c7

File tree

3 files changed

+35
-4
lines changed

3 files changed

+35
-4
lines changed

cli/build.gradle

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,11 @@ dependencies {
3838
}
3939

4040
compileJava {
41+
// options for picocli codegen
42+
// https://github.com/remkop/picocli/tree/main/picocli-codegen#222-other-options
4143
options.compilerArgs += [
42-
"-Aproject=${project.group}/${project.name}"
44+
"-Aproject=${project.group}/${project.name}",
45+
"-Aother.resource.bundles=application"
4346
]
4447
}
4548

@@ -50,6 +53,29 @@ tasks.withType(org.graalvm.buildtools.gradle.tasks.BuildNativeImageTask).configu
5053
notCompatibleWithConfigurationCache('https://github.com/britter/maven-plugin-development/issues/8')
5154
}
5255

56+
tasks.withType(ProcessResources).configureEach(new ApplicationPropertiesProcessResourcesAction(project.version))
57+
58+
class ApplicationPropertiesProcessResourcesAction implements Action<ProcessResources> {
59+
60+
private final String cliVersion
61+
62+
ApplicationPropertiesProcessResourcesAction(String cliVersion) {
63+
this.cliVersion = cliVersion
64+
}
65+
66+
@Override
67+
void execute(ProcessResources processResources) {
68+
processResources.filesMatching("application.properties") {
69+
filter(
70+
org.apache.tools.ant.filters.ReplaceTokens,
71+
tokens: [
72+
'cli.version': cliVersion
73+
]
74+
)
75+
}
76+
}
77+
}
78+
5379
application {
5480
mainClass = 'com.diffplug.spotless.cli.SpotlessCLI'
5581
applicationName = 'spotless'
@@ -63,8 +89,6 @@ graalvmNative {
6389
imageName = 'spotless'
6490
mainClass = 'com.diffplug.spotless.cli.SpotlessCLI'
6591
sharedLibrary = false
66-
67-
runtimeArgs.add('--user=ABC')
6892
}
6993
}
7094
}

cli/src/main/java/com/diffplug/spotless/cli/version/SpotlessCLIVersionProvider.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,18 @@
1515
*/
1616
package com.diffplug.spotless.cli.version;
1717

18+
import java.util.Properties;
19+
1820
import picocli.CommandLine;
1921

2022
public class SpotlessCLIVersionProvider implements CommandLine.IVersionProvider {
2123

2224
@Override
2325
public String[] getVersion() throws Exception {
24-
return new String[]{"Spotless CLI 1.0.0", "TODO"};
26+
// load application.properties
27+
Properties properties = new Properties();
28+
properties.load(getClass().getResourceAsStream("/application.properties"));
29+
String version = properties.getProperty("cli.version");
30+
return new String[]{"Spotless CLI version " + version};
2531
}
2632
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
cli.version[email protected]@

0 commit comments

Comments
 (0)