This commit is contained in:
2025-03-26 21:46:29 +03:00
parent 2d3d4b4de4
commit 011e46ec0f
8 changed files with 321 additions and 50 deletions

View File

@@ -10,6 +10,20 @@ import java.util.stream.Collectors;
public class Build {
static final String program = "jtags";
static void printUsage() {
System.err.println(
"""
Usage: java Build <subcommand> [args...]
Subcommands:
build Build %1$s
run [args...] Run %1$s with arguments
package Package %1$s to a JAR file
[file] Output JAR filename [Default: Jtags.jar]
test Run %1$s tests
"""
.formatted(program));
}
public static void main(String[] args) {
rebuildSelf(Build.class, args);
@@ -47,6 +61,11 @@ public class Build {
packageJar(Optional.ofNullable(arguments.poll()));
break;
case "test":
buildJtags(mainClass, sourcePaths, classPaths);
runTests();
break;
default:
logger.severe("Unknown subcommand: " + subcommand);
printUsage();
@@ -77,16 +96,17 @@ public class Build {
".");
}
static void printUsage() {
System.err.println(
"""
Usage: java Build <subcommand> [args...]
Subcommands:
build Build %1$s
run [args...] Run %1$s with arguments
package Package %1$s to a JAR file
[file] Output JAR filename [Default: Jtags.jar]
"""
.formatted(program));
static void runTests() {
String mainClass = "TestJtags";
String[] sourcePaths = glob("src/test/java/**.java");
if (classNeedsRebuild(mainClass, sourcePaths)) {
logger.info("Compiling %s...".formatted(mainClass));
if (!compileJava(sourcePaths)) {
System.exit(1);
}
}
System.exit(runJava(new String[0], new String[] {"-enableassertions"}, mainClass));
}
}