A flexible and easy-to-use command-line parser for Scala programs.
This project provides a powerful way to parse command-line arguments into Scala case classes, supporting various data types such as String, Int, List[_], and even JSON-encoded strings.
To include this library in your project, clone this repository and install it locally.
For Maven users, add the following dependency to your pom.xml:
<dependency>
<groupId>github.avinoamn</groupId>
<artifactId>clp_${scala.major.version}</artifactId>
<version>1.0.0</version>
<scope>compile</scope>
</dependency>case class Args(a: String, b: Int, c: List[String])
val args: Array = Array("--a", "asd", "--b", "123", "--c", "a,s,d")
CommandLineParser.parse[Args](args)
import github.avinoamn.clp.types.JsonString
import io.circe.generic.JsonCodec
@JsonCodec case class Arg(a: String) extends JsonString
case class Args(a: Arg)
val args: Array = Array("--a", "{\"a\": \"asd\"}")
CommandLineParser.parse[Args](args)
import github.avinoamn.clp.types.Base64EncodedJsonString
import io.circe.generic.JsonCodec
@JsonCodec case class Arg(a: String) extends Base64EncodedJsonString
case class Args(a: Arg)
val args: Array = Array("--a", "eyJhIjogImFzZCJ9")
CommandLineParser.parse[Args](args)
StringBooleanIntLongFloatDoubleList[_]:_can be of any supported typecase class: must have the@JsonCodecannotation and extend eitherJsonStringorBase64EncodedJsonStringtraits for the decoding to succeed