diff --git a/README.md b/README.md index 4ba643c..6f5630b 100644 --- a/README.md +++ b/README.md @@ -48,3 +48,44 @@ dependencies { Instructions for using with Maven, Ivy, etc. can be found on [Maven Central](https://maven-badges.herokuapp.com/maven-central/net.thauvin.erik/urlencoder). +## Standalone usage + +UrlEncoder can be used on the command line also, both for encoding and decoding. + +You have two options: +* run it with Gradle +* build the jar and launch it with Java + +The usage is as follows: + +``` +Encode and decode URL parameters. + -e encode (default) + -d decode +``` + +### Running with Gradle + +```shell +./gradlew run --args="-e 'a test &'" # -> a%20test%20%26 +./gradlew run --args="%#okékÉȢ" # -> %25%23ok%C3%A9k%C3%89%C8%A2 + +./gradlew run --args="-d 'a%20test%20%26'" # -> a test & +``` + +### Running with Java + +First build the jar file: + +```shell +./gradlew clean fatJar +``` + +Then run it: + +```shell +java -jar lib/build/libs/urlencoder-*all.jar -e "a test &" # -> a%20test%20%26 +java -jar lib/build/libs/urlencoder-*all.jar "%#okékÉȢ" # -> %25%23ok%C3%A9k%C3%89%C8%A2 + +java -jar lib/build/libs/urlencoder-*.all.jar -d "a%20test%20%26" # -> a test & +``` diff --git a/lib/build.gradle.kts b/lib/build.gradle.kts index c13aa61..e783c63 100644 --- a/lib/build.gradle.kts +++ b/lib/build.gradle.kts @@ -23,7 +23,7 @@ plugins { description = "A simple library to encode/decode URL parameters" group = "net.thauvin.erik" -version = "1.0.0" +version = "1.0.1-SNAPSHOT" val mavenName = "UrlEncoder" @@ -81,6 +81,22 @@ tasks { } } + val fatJar = register("fatJar") { + group = "build" + dependsOn.addAll(listOf("compileJava", "compileKotlin", "processResources")) + archiveClassifier.set("all") + duplicatesStrategy = DuplicatesStrategy.EXCLUDE + manifest { attributes(mapOf("Main-Class" to application.mainClass)) } + val sourcesMain = sourceSets.main.get() + val contents = configurations.runtimeClasspath.get() + .map { if (it.isDirectory) it else zipTree(it) } + sourcesMain.output + from(contents) + } + + build { + dependsOn(fatJar) + } + withType().configureEach { kotlinOptions.jvmTarget = java.targetCompatibility.toString() } diff --git a/lib/pom.xml b/lib/pom.xml index aa83f57..7e4dcc3 100644 --- a/lib/pom.xml +++ b/lib/pom.xml @@ -8,7 +8,7 @@ 4.0.0 net.thauvin.erik urlencoder - 1.0.0 + 1.0.1-SNAPSHOT UrlEncoder A simple library to encode/decode URL parameters https://github.com/ethauvin/urlencoder diff --git a/lib/src/main/kotlin/net/thauvin/erik/urlencoder/UrlEncoder.kt b/lib/src/main/kotlin/net/thauvin/erik/urlencoder/UrlEncoder.kt index 02c3763..4a28780 100644 --- a/lib/src/main/kotlin/net/thauvin/erik/urlencoder/UrlEncoder.kt +++ b/lib/src/main/kotlin/net/thauvin/erik/urlencoder/UrlEncoder.kt @@ -32,7 +32,7 @@ import kotlin.system.exitProcess object UrlEncoder { private val hexDigits = "0123456789ABCDEF".toCharArray() internal val usage = - "Usage : kotlin -cp urlencoder-*.jar ${UrlEncoder::class.java.name} [-ed] text" + System.lineSeparator() + + "Usage : java -jar urlencoder-*all.jar [-ed] text" + System.lineSeparator() + "Encode and decode URL parameters." + System.lineSeparator() + " -e encode (default) " + System.lineSeparator() + " -d decode"