Support Windows default location for config file.

This commit is contained in:
Mark Nellemann 2022-03-29 13:31:43 +02:00
parent 1bbe713fc2
commit 2c84a2478e
5 changed files with 46 additions and 6 deletions

View file

@ -2,7 +2,12 @@
All notable changes to this project will be documented in this file. All notable changes to this project will be documented in this file.
## [1.3.0] - 2022-02-xx ## [1.3.1] - 2022-04-xx
### Added
- Default configuration location on Windows platform.
## [1.3.0] - 2022-02-04
### Changed ### Changed
- Correct use of InfluxDB batch writing. - Correct use of InfluxDB batch writing.
@ -16,6 +21,7 @@ All notable changes to this project will be documented in this file.
### Added ### Added
- Options to include/exclude Managed Systems and/or Logical Partitions. - Options to include/exclude Managed Systems and/or Logical Partitions.
[1.3.1]: https://bitbucket.org/mnellemann/hmci/branches/compare/v1.3.1%0Dv1.3.0
[1.3.0]: https://bitbucket.org/mnellemann/hmci/branches/compare/v1.3.0%0Dv1.2.8 [1.3.0]: https://bitbucket.org/mnellemann/hmci/branches/compare/v1.3.0%0Dv1.2.8
[1.2.8]: https://bitbucket.org/mnellemann/hmci/branches/compare/v1.2.8%0Dv1.2.7 [1.2.8]: https://bitbucket.org/mnellemann/hmci/branches/compare/v1.2.8%0Dv1.2.7
[1.2.7]: https://bitbucket.org/mnellemann/hmci/branches/compare/v1.2.7%0Dv1.2.6 [1.2.7]: https://bitbucket.org/mnellemann/hmci/branches/compare/v1.2.7%0Dv1.2.6

View file

@ -22,7 +22,7 @@ sourceCompatibility = projectJavaVersion
targetCompatibility = projectJavaVersion targetCompatibility = projectJavaVersion
dependencies { dependencies {
annotationProcessor 'info.picocli:picocli-codegen:4.6.2' annotationProcessor 'info.picocli:picocli-codegen:4.6.3'
implementation 'info.picocli:picocli:4.6.3' implementation 'info.picocli:picocli:4.6.3'
implementation 'org.jsoup:jsoup:1.14.3' implementation 'org.jsoup:jsoup:1.14.3'
implementation 'com.squareup.okhttp3:okhttp:4.9.3' implementation 'com.squareup.okhttp3:okhttp:4.9.3'

View file

@ -1,4 +1,4 @@
projectId = hmci projectId = hmci
projectGroup = biz.nellemann.hmci projectGroup = biz.nellemann.hmci
projectVersion = 1.3.0 projectVersion = 1.3.1
projectJavaVersion = 1.8 projectJavaVersion = 1.8

View file

@ -28,13 +28,14 @@ import java.util.concurrent.Callable;
@Command(name = "hmci", @Command(name = "hmci",
mixinStandardHelpOptions = true, mixinStandardHelpOptions = true,
versionProvider = biz.nellemann.hmci.VersionProvider.class) versionProvider = biz.nellemann.hmci.VersionProvider.class,
defaultValueProvider = biz.nellemann.hmci.DefaultProvider.class)
public class Application implements Callable<Integer> { public class Application implements Callable<Integer> {
@Option(names = { "-c", "--conf" }, description = "Configuration file [default: '/etc/hmci.toml'].", defaultValue = "/etc/hmci.toml", paramLabel = "<file>") @Option(names = { "-c", "--conf" }, description = "Configuration file [default: ${DEFAULT-VALUE}].", paramLabel = "<file>")
private File configurationFile; private File configurationFile;
@Option(names = { "-d", "--debug" }, description = "Enable debugging [default: 'false'].") @Option(names = { "-d", "--debug" }, description = "Enable debugging [default: false].")
private boolean[] enableDebug = new boolean[0]; private boolean[] enableDebug = new boolean[0];

View file

@ -0,0 +1,33 @@
package biz.nellemann.hmci;
import picocli.CommandLine;
public class DefaultProvider implements CommandLine.IDefaultValueProvider {
public String defaultValue(CommandLine.Model.ArgSpec argSpec) throws Exception {
if(argSpec.isOption()) {
switch (argSpec.paramLabel()) {
case "<file>":
return getDefaultConfigFileLocation();
default:
return null;
}
}
return null;
}
private boolean isWindowsOperatingSystem() {
String os = System.getProperty("os.name");
return os.toLowerCase().startsWith("windows");
}
private String getDefaultConfigFileLocation() {
String configFilePath;
if(isWindowsOperatingSystem()) {
configFilePath = System.getProperty("user.home") + "\\hmci.toml";
} else {
configFilePath = "/etc/hmci.toml";
}
return configFilePath;
}
}