little.cli
Type members
Classlikes
Encapsulates components for providing command line interface.
Encapsulates components for providing command line interface.
- See also
Provides factory methods and other utilities.
Provides factory methods and other utilities.
import little.cli.{ *, given }
import Cli.{ application, option }
// Create application with supplied usage and options
val app = application("grep [ options ... ] <pattern> [ <fileName> ... ]",
option("i", "ignore-case", false, "Perform case insensitive matching"),
option("l", "files-with-matches", false, "Print file name only"),
option("m", "max-count", true, "Stop reading file after 'num' matches").argName("num"),
option("n", "line-number", false, "Include line number of match"),
option("r", "recursive", false, "Recursively search subdirectories"),
option("x", "exclude", true, "Exclude filename pattern from search").argName("pattern")
)
val args = Array("-ilr", "--exclude", "*.swp", "exception", "src/main/scala")
// Parse arguments
val cmd = app.parse(args)
cmd.hasOption("help") match
case true =>
// Print help to System.out
app.printHelp()
case false =>
// Get command arguments and pretend to do something
val pattern = cmd.getArg(0)
val fileName = cmd.getArg(1)
println(s"Searching for files with '$pattern' in $fileName directory...")
Adds extension methods to org.apache.commons.cli.CommandLine
.
Adds extension methods to org.apache.commons.cli.CommandLine
.
Adds extension methods to org.apache.commons.cli.Option
.
Adds extension methods to org.apache.commons.cli.Option
.
Adds extension methods to org.apache.commons.cli.OptionGroup
.
Adds extension methods to org.apache.commons.cli.OptionGroup
.
Adds extension methods to org.apache.commons.cli.Options
.
Adds extension methods to org.apache.commons.cli.Options
.
Provides utility for mapping option values and arguments.
Provides utility for mapping option values and arguments.
import little.cli.{ *, given }
import Cli.{ application, option }
case class KeepAlive(idleTimeout: Int, maxRequests: Int)
// Define how to map value to KeepAlive
given ValueMapper[KeepAlive] =
_.split(":") match
case Array(timeout, max) => KeepAlive(timeout.toInt, max.toInt)
val app = application("start-server [ options ... ] port",
option("d", "directory", true, "Location of public files directory"),
option("k", "keep-alive", true, "Allow persistent connections").argName("timeout:max")
)
val cmd = app.parse("-d ./public_html --keep-alive 5:10 8080".split("\\s+"))
// Map keep-alive option
val keepAlive = cmd.mapOptionValue[KeepAlive]("keep-alive")
// Map directory option File
val directory = cmd.mapOptionValue[java.io.File]("directory")
// Map port argument via Int
val port = cmd.mapArg[Int](0)