Skip to content

Just Another Command Line Arguments Parser for Scala

License

Notifications You must be signed in to change notification settings

meysampg/scala-autoconf

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Scala CLI AutoConf

package com.github.meysampg.sample

import com.github.meysampg.autoconf.Parser
import com.github.meysampg.autoconf.{Argument, Config}

@Config
class SampleConfig
(
  @Argument("name", "name to show")
  val name: String,
  @Argument("iteration", "count of iteration")
  val iteration: Int,
  @Argument("only-even-numbers", "print name only for even numbers")
  val onlyEvenNumbers: Option[Boolean], // make optional argument with Option type
  @Argument("pre-line-char", "characters to print before each line")
  val preLine: String = ">>> ", // make optional with default value
  @Argument("post-line-seq", "show characters after the line")
  val postLine: Seq[String],
)

object Main {
	def print(pr: String, i: Int, name: String, po: Seq[String]): Unit =
		println(s"${pr}$i ${name} ${po.mkString(" ")}")

	def main(args: Array[String]): Unit = {
		val config: SampleConfig = Parser(args).as[SampleConfig]
		if (config.onlyEvenNumbers.isDefined)
			Range(0, config.iteration).withFilter(_ % 2 == 0)
			  .foreach(i => print(config.preLine, i, config.name, config.postLine))
		else
			Range(0, config.iteration)
			  .foreach(i => print(config.preLine, i, config.name, config.postLine))
	}
}
$ java target/autoconf.jar com.github.meysampg.sample.Main --name Meysam --iteration 5 --only-even-numbers --pre-line-char !!!
!!!0 Meysam
!!!2 Meysam
!!!4 Meysam

About

Just Another Command Line Arguments Parser for Scala

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Languages