Giter Site home page Giter Site logo

scala-autoconf's Introduction

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

scala-autoconf's People

Contributors

meysampg avatar

Stargazers

 avatar  avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.