Compare commits
No commits in common. "1c48b1861fcb40bdb974975ccf16ea854b86fbf9" and "fe50b6b85a8f4dfff2a6a7a48673f073368af096" have entirely different histories.
1c48b1861f
...
fe50b6b85a
4 changed files with 50 additions and 85 deletions
|
@ -13,7 +13,7 @@ repositories {
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
implementation(group="commons-cli", name="commons-cli", version="1.5.0")
|
implementation(group="org.apache", name="commons-cli", version="1.5.0")
|
||||||
}
|
}
|
||||||
|
|
||||||
fun versionBanner(): String {
|
fun versionBanner(): String {
|
||||||
|
@ -40,8 +40,8 @@ tasks.jar {
|
||||||
attributes(
|
attributes(
|
||||||
"Implementation-Title" to project.name,
|
"Implementation-Title" to project.name,
|
||||||
"Implementation-Version" to project.version,
|
"Implementation-Version" to project.version,
|
||||||
"Main-Class" to "de.jotoho.waituntil.Main"
|
"Main-Class" to "de.jotoho.waituntil.Main",
|
||||||
//"Main-Module" to "de.jotoho.waituntil.main"
|
"Main-Module" to "de.jotoho.waituntil.main"
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -49,5 +49,5 @@ tasks.jar {
|
||||||
application {
|
application {
|
||||||
// Define the main class for the application.
|
// Define the main class for the application.
|
||||||
mainClass.set("de.jotoho.waituntil.Main")
|
mainClass.set("de.jotoho.waituntil.Main")
|
||||||
//mainModule.set("de.jotoho.waituntil.main")
|
mainModule.set("de.jotoho.waituntil.main")
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,23 +0,0 @@
|
||||||
package de.jotoho.waituntil;
|
|
||||||
|
|
||||||
import org.apache.commons.cli.Option;
|
|
||||||
import org.apache.commons.cli.Options;
|
|
||||||
|
|
||||||
final class AppOptions {
|
|
||||||
// Disable Instance Creation
|
|
||||||
private AppOptions() {}
|
|
||||||
|
|
||||||
public final static Option help =
|
|
||||||
Option.builder().argName("h").longOpt("help").desc("Shows this help " +
|
|
||||||
"message and exits").build();
|
|
||||||
public final static Option version =
|
|
||||||
Option.builder().argName("v").longOpt("version").desc("Shows version information and exits").build();
|
|
||||||
|
|
||||||
private final static Options options = new Options()
|
|
||||||
.addOption(help)
|
|
||||||
.addOption(version);
|
|
||||||
|
|
||||||
public static Options getOptions() {
|
|
||||||
return options;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -18,8 +18,8 @@ package de.jotoho.waituntil;
|
||||||
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import org.apache.commons.cli.DefaultParser;
|
import java.util.HashSet;
|
||||||
import org.apache.commons.cli.ParseException;
|
import java.util.Map;
|
||||||
|
|
||||||
import static de.jotoho.waituntil.GlobalConf.applicationOutputLanguage;
|
import static de.jotoho.waituntil.GlobalConf.applicationOutputLanguage;
|
||||||
|
|
||||||
|
@ -28,10 +28,35 @@ import static de.jotoho.waituntil.GlobalConf.applicationOutputLanguage;
|
||||||
// Author: Jonas Tobias Hopusch (@jotoho)
|
// Author: Jonas Tobias Hopusch (@jotoho)
|
||||||
|
|
||||||
public final class Main {
|
public final class Main {
|
||||||
|
public static void main(final String[] args) {
|
||||||
|
final var optionDictionary = Map.of("-h", "--help", "-v", "--version");
|
||||||
|
|
||||||
private static void printVersionInformation() {
|
final var options = new HashSet<String>();
|
||||||
|
final var words = new HashSet<String>();
|
||||||
|
|
||||||
|
for (final String arg : args) {
|
||||||
|
if (arg.startsWith("--")) {
|
||||||
|
options.add(arg.substring(2));
|
||||||
|
} else if (arg.startsWith("-")) {
|
||||||
|
if (optionDictionary.containsKey(arg))
|
||||||
|
options.add(optionDictionary.get(arg).substring(2));
|
||||||
|
else
|
||||||
|
System.err.println("Short-hand '$arg' does not exist. Ignoring!");
|
||||||
|
} else {
|
||||||
|
words.add(arg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (options.contains("help")) {
|
||||||
|
switch (applicationOutputLanguage) {
|
||||||
|
case GlobalConf.langGerman -> System.out.println("Hilfe kommt noch. (Nicht implementiert)");
|
||||||
|
default -> System.out.println("Help is yet to come. (Not implemented)");
|
||||||
|
}
|
||||||
|
} else if (options.contains("version")) {
|
||||||
final var thisPackage = Main.class.getPackage();
|
final var thisPackage = Main.class.getPackage();
|
||||||
final var appVersion = thisPackage.getImplementationVersion() != null ? thisPackage.getImplementationVersion() : "version unknown";
|
final var appVersion = thisPackage.getImplementationVersion() != null
|
||||||
|
? thisPackage.getImplementationVersion()
|
||||||
|
: "version unknown";
|
||||||
System.out.println("waituntil " + appVersion);
|
System.out.println("waituntil " + appVersion);
|
||||||
System.out.println("""
|
System.out.println("""
|
||||||
|
|
||||||
|
@ -42,53 +67,14 @@ public final class Main {
|
||||||
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
|
||||||
without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||||
See the GNU General Public License for more details.""");
|
See the GNU General Public License for more details.""");
|
||||||
}
|
} else if (words.size() == 1) {
|
||||||
|
final var target = TimeCalculator.calculateAndAnnounceTargetTime(words.iterator().next());
|
||||||
private static void printHelpInformation() {
|
|
||||||
switch (applicationOutputLanguage) {
|
|
||||||
case GlobalConf.langGerman -> System.out.println("Hilfe kommt noch. (Nicht implementiert)");
|
|
||||||
default -> System.out.println("Help is yet to come. (Not implemented)");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void main(final String[] args) {
|
|
||||||
try {
|
|
||||||
final var parsedArguments =
|
|
||||||
DefaultParser.builder()
|
|
||||||
.setStripLeadingAndTrailingQuotes(true)
|
|
||||||
.build()
|
|
||||||
.parse(AppOptions.getOptions(), args);
|
|
||||||
|
|
||||||
final var userData = parsedArguments.getArgs();
|
|
||||||
|
|
||||||
if (parsedArguments.hasOption(AppOptions.help)) {
|
|
||||||
printHelpInformation();
|
|
||||||
} else if (parsedArguments.hasOption(AppOptions.version)) {
|
|
||||||
printVersionInformation();
|
|
||||||
} else if (userData.length == 0) {
|
|
||||||
switch (applicationOutputLanguage) {
|
|
||||||
case GlobalConf.langGerman -> System.err.println("FATAL: " +
|
|
||||||
"Es wurde keine Uhrzeit angegeben.");
|
|
||||||
default -> System.err.println("FATAL: No target time was " +
|
|
||||||
"provided.");
|
|
||||||
}
|
|
||||||
System.exit(1);
|
|
||||||
} else if (userData.length > 1) {
|
|
||||||
switch (applicationOutputLanguage) {
|
|
||||||
case GlobalConf.langGerman -> System.err.println("FATAL: " +
|
|
||||||
"Zu viele Argumente wurden angegeben.");
|
|
||||||
default -> System.err.println("FATAL: Too many arguments " +
|
|
||||||
"provided.");
|
|
||||||
}
|
|
||||||
System.exit(1);
|
|
||||||
} else {
|
|
||||||
final var target =
|
|
||||||
TimeCalculator.calculateAndAnnounceTargetTime(userData[0]);
|
|
||||||
Sleep.waitUntilTimeStamp(target);
|
Sleep.waitUntilTimeStamp(target);
|
||||||
|
} else {
|
||||||
|
switch (applicationOutputLanguage) {
|
||||||
|
case GlobalConf.langGerman -> System.err.println("FATAL: Es wurde exact ein nicht-flag Argument erwartet. (" + words.size() + " erhalten)");
|
||||||
|
default -> System.err.println("FATAL: Expected one non-flag argument. (Got " + words.size() + ")");
|
||||||
}
|
}
|
||||||
} catch (final ParseException e) {
|
|
||||||
System.getLogger("main").log(System.Logger.Level.ERROR, "Parsing " +
|
|
||||||
"of arguments failed and the program cannot continue.", e);
|
|
||||||
System.exit(1);
|
System.exit(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
2
src/main/java/module-info.java
Normal file
2
src/main/java/module-info.java
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
module de.jotoho.waituntil.main {
|
||||||
|
}
|
Loading…
Reference in a new issue