From 7994c1b89a143b9f47481458e8cfa04309bb0831 Mon Sep 17 00:00:00 2001 From: Justin Brooks Date: Sat, 5 Oct 2024 08:44:11 -0400 Subject: [PATCH] Fix test compile issues --- vgo-cli/build.gradle.kts | 2 +- vgo-cli/optimize.pro | 2 +- .../com/jzbrooks/vgo/cli/Application.kt | 41 ------------ .../jzbrooks/vgo/cli/CommandLineInterface.kt | 65 +++++++++++++++++++ .../vgo/cli/CommandLineInterfaceTests.kt | 25 ++++--- .../vgo/plugin/ShrinkVectorArtwork.kt | 1 - vgo/src/main/kotlin/com/jzbrooks/vgo/Vgo.kt | 20 ------ 7 files changed, 79 insertions(+), 77 deletions(-) delete mode 100644 vgo-cli/src/main/kotlin/com/jzbrooks/vgo/cli/Application.kt create mode 100644 vgo-cli/src/main/kotlin/com/jzbrooks/vgo/cli/CommandLineInterface.kt diff --git a/vgo-cli/build.gradle.kts b/vgo-cli/build.gradle.kts index 8af65365..cf18aa19 100644 --- a/vgo-cli/build.gradle.kts +++ b/vgo-cli/build.gradle.kts @@ -7,7 +7,7 @@ tasks { jar { dependsOn(configurations.runtimeClasspath) manifest { - attributes["Main-Class"] = "com.jzbrooks.vgo.cli.ApplicationKt" + attributes["Main-Class"] = "com.jzbrooks.vgo.cli.CommandLineInterface" attributes["Bundle-Version"] = project.properties["VERSION_NAME"] } diff --git a/vgo-cli/optimize.pro b/vgo-cli/optimize.pro index f4b76d54..a94c33bd 100644 --- a/vgo-cli/optimize.pro +++ b/vgo-cli/optimize.pro @@ -5,6 +5,6 @@ -mergeinterfacesaggressively -verbose --keep class com.jzbrooks.vgo.cli.ApplicationKt { +-keep class com.jzbrooks.vgo.cli.CommandLineInterface { public static void main(java.lang.String[]); } \ No newline at end of file diff --git a/vgo-cli/src/main/kotlin/com/jzbrooks/vgo/cli/Application.kt b/vgo-cli/src/main/kotlin/com/jzbrooks/vgo/cli/Application.kt deleted file mode 100644 index 3d617c1d..00000000 --- a/vgo-cli/src/main/kotlin/com/jzbrooks/vgo/cli/Application.kt +++ /dev/null @@ -1,41 +0,0 @@ -package com.jzbrooks.vgo.cli - -import com.jzbrooks.vgo.Vgo -import kotlin.system.exitProcess - -fun main(args: Array) { - val argReader = ArgReader(args.toMutableList()) - - val printHelp = argReader.readFlag("help|h") - val printVersion = argReader.readFlag("version|v") - val printStats = argReader.readFlag("stats|s") - val indent = argReader.readOption("indent")?.toIntOrNull() - - val outputs = - run { - val outputPaths = mutableListOf() - var output = argReader.readOption("output|o") - while (output != null) { - outputPaths.add(output) - output = argReader.readOption("output|o") - } - outputPaths.toList() - } - - var format = argReader.readOption("format") - - var inputs = argReader.readArguments() - - val options = - Vgo.Options( - printHelp = printHelp, - printVersion = printVersion, - printStats = printStats, - indent = indent, - output = outputs, - format = format, - input = inputs, - ) - - exitProcess(Vgo(options).run()) -} diff --git a/vgo-cli/src/main/kotlin/com/jzbrooks/vgo/cli/CommandLineInterface.kt b/vgo-cli/src/main/kotlin/com/jzbrooks/vgo/cli/CommandLineInterface.kt new file mode 100644 index 00000000..a10d3003 --- /dev/null +++ b/vgo-cli/src/main/kotlin/com/jzbrooks/vgo/cli/CommandLineInterface.kt @@ -0,0 +1,65 @@ +package com.jzbrooks.vgo.cli + +import com.jzbrooks.vgo.Vgo +import kotlin.system.exitProcess + +class CommandLineInterface { + fun run(args: Array): Int { + val argReader = ArgReader(args.toMutableList()) + + val printHelp = argReader.readFlag("help|h") + if (printHelp) { + println(HELP_MESSAGE) + return 0 + } + + val printVersion = argReader.readFlag("version|v") + val printStats = argReader.readFlag("stats|s") + val indent = argReader.readOption("indent")?.toIntOrNull() + + val outputs = + run { + val outputPaths = mutableListOf() + var output = argReader.readOption("output|o") + while (output != null) { + outputPaths.add(output) + output = argReader.readOption("output|o") + } + outputPaths.toList() + } + + var format = argReader.readOption("format") + + var inputs = argReader.readArguments() + + val options = + Vgo.Options( + printVersion = printVersion, + printStats = printStats, + indent = indent, + output = outputs, + format = format, + input = inputs, + ) + + return Vgo(options).run() + } + + companion object { + private val HELP_MESSAGE = + """ +> vgo [options] [file/directory] + +Options: + -h --help print this message + -o --output file or directory, if not provided the input will be overwritten + -s --stats print statistics on processed files to standard out + -v --version print the version number + --indent value write files with value columns of indentation + --format value output format (svg, vd, etc) + """.trimIndent() + + @JvmStatic + fun main(args: Array): Unit = exitProcess(CommandLineInterface().run(args)) + } +} diff --git a/vgo-cli/src/test/kotlin/com/jzbrooks/vgo/cli/CommandLineInterfaceTests.kt b/vgo-cli/src/test/kotlin/com/jzbrooks/vgo/cli/CommandLineInterfaceTests.kt index 84a3382b..a304348a 100644 --- a/vgo-cli/src/test/kotlin/com/jzbrooks/vgo/cli/CommandLineInterfaceTests.kt +++ b/vgo-cli/src/test/kotlin/com/jzbrooks/vgo/cli/CommandLineInterfaceTests.kt @@ -6,7 +6,6 @@ import assertk.assertions.doesNotContain import assertk.assertions.isEqualTo import assertk.assertions.matches import assertk.assertions.startsWith -import com.jzbrooks.vgo.Vgo import org.junit.jupiter.api.AfterEach import org.junit.jupiter.api.BeforeAll import org.junit.jupiter.api.BeforeEach @@ -36,7 +35,7 @@ class CommandLineInterfaceTests { fun testLongVersionFlag() { val arguments = arrayOf("--version") - val exitCode = Vgo().run(arguments) + val exitCode = CommandLineInterface().run(arguments) assertThat(exitCode).isEqualTo(0) assertThat(systemOutput.toString()).matches(Regex("\\d+.\\d+.\\d+\r?\n")) @@ -46,7 +45,7 @@ class CommandLineInterfaceTests { fun testShortVersionFlag() { val arguments = arrayOf("-v") - val exitCode = Vgo().run(arguments) + val exitCode = CommandLineInterface().run(arguments) assertThat(exitCode).isEqualTo(0) assertThat(systemOutput.toString()).matches(Regex("\\d+.\\d+.\\d+\r?\n")) @@ -56,7 +55,7 @@ class CommandLineInterfaceTests { fun testLongHelpFlag() { val arguments = arrayOf("--help") - val exitCode = Vgo().run(arguments) + val exitCode = CommandLineInterface().run(arguments) assertThat(exitCode).isEqualTo(0) val output = systemOutput.toString() @@ -68,7 +67,7 @@ class CommandLineInterfaceTests { fun testShortHelpFlag() { val arguments = arrayOf("-h") - val exitCode = Vgo().run(arguments) + val exitCode = CommandLineInterface().run(arguments) assertThat(exitCode).isEqualTo(0) val output = systemOutput.toString() @@ -79,7 +78,7 @@ class CommandLineInterfaceTests { @Test fun testLongStatsFlag() { val arguments = arrayOf(avocadoExampleRelativePath, "-o", "build/integrationTest/stats-test.xml", "--stats") - val exitCode = Vgo().run(arguments) + val exitCode = CommandLineInterface().run(arguments) assertThat(exitCode).isEqualTo(0) assertThat(systemOutput.toString()).contains("Percent saved:") } @@ -94,7 +93,7 @@ class CommandLineInterfaceTests { "build/integrationTest/unmodified-stats-omitted.xml", "--stats", ) - val exitCode = Vgo().run(arguments) + val exitCode = CommandLineInterface().run(arguments) assertThat(exitCode).isEqualTo(0) val report = systemOutput.toString() assertThat(report).doesNotContain(input) @@ -109,7 +108,7 @@ class CommandLineInterfaceTests { "build/integrationTest/multi-stats-test-directory", "--stats", ) - val exitCode = Vgo().run(arguments) + val exitCode = CommandLineInterface().run(arguments) assertThat(exitCode).isEqualTo(0) val report = systemOutput.toString() assertThat(report).contains(Paths.get("src/test/resources/in-place-modify/avocado_example.xml").toString()) @@ -127,7 +126,7 @@ class CommandLineInterfaceTests { "build/integrationTest/multi-stats-test-two.xml", "--stats", ) - val exitCode = Vgo().run(arguments) + val exitCode = CommandLineInterface().run(arguments) assertThat(exitCode).isEqualTo(0) val report = systemOutput.toString() assertThat(report).contains(avocadoExampleRelativePath) @@ -137,7 +136,7 @@ class CommandLineInterfaceTests { @Test fun testShortStatsFlag() { val arguments = arrayOf(avocadoExampleRelativePath, "-o", "build/integrationTest/stats-test.xml", "-s") - val exitCode = Vgo().run(arguments) + val exitCode = CommandLineInterface().run(arguments) assertThat(exitCode).isEqualTo(0) assertThat(systemOutput.toString()).contains("Percent saved:") } @@ -148,7 +147,7 @@ class CommandLineInterfaceTests { File(avocadoExampleRelativePath).copyTo(overwritePath.toFile(), overwrite = true) val arguments = arrayOf(overwritePath.toString(), "-s") - val exitCode = Vgo().run(arguments) + val exitCode = CommandLineInterface().run(arguments) assertThat(exitCode).isEqualTo(0) assertThat(systemOutput.toString()).contains("Percent saved:") @@ -158,7 +157,7 @@ class CommandLineInterfaceTests { @Test fun testIndentOption() { val arguments = arrayOf(avocadoExampleRelativePath, "-o", "build/integrationTest/indent-test.xml", "--indent", "4") - val exitCode = Vgo().run(arguments) + val exitCode = CommandLineInterface().run(arguments) assertThat(exitCode).isEqualTo(0) val output = File("build/integrationTest/indent-test.xml").readText() assertThat(output).contains(" 0 }?.toInt(), diff --git a/vgo/src/main/kotlin/com/jzbrooks/vgo/Vgo.kt b/vgo/src/main/kotlin/com/jzbrooks/vgo/Vgo.kt index a1bbe30e..764ed68a 100644 --- a/vgo/src/main/kotlin/com/jzbrooks/vgo/Vgo.kt +++ b/vgo/src/main/kotlin/com/jzbrooks/vgo/Vgo.kt @@ -28,11 +28,6 @@ class Vgo( private var totalBytesAfter = 0.0 fun run(): Int { - if (options.printHelp) { - println(HELP_MESSAGE) - return 0 - } - if (options.printVersion) { println(BuildConstants.VERSION_NAME) return 0 @@ -278,7 +273,6 @@ class Vgo( get() = key.isDirectory && (value.isDirectory || !value.exists()) data class Options( - val printHelp: Boolean = false, val printVersion: Boolean = false, val printStats: Boolean = false, val output: List = emptyList(), @@ -286,18 +280,4 @@ class Vgo( val indent: Int? = null, val format: String? = null, ) - - companion object { - private const val HELP_MESSAGE = """ -> vgo [options] [file/directory] - -Options: - -h --help print this message - -o --output file or directory, if not provided the input will be overwritten - -s --stats print statistics on processed files to standard out - -v --version print the version number - --indent value write files with value columns of indentation - --format value output format (svg, vd, etc) - """ - } }