aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/definitions.scala
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/scala/definitions.scala')
-rw-r--r--src/main/scala/definitions.scala66
1 files changed, 0 insertions, 66 deletions
diff --git a/src/main/scala/definitions.scala b/src/main/scala/definitions.scala
deleted file mode 100644
index 8de9e3a..0000000
--- a/src/main/scala/definitions.scala
+++ /dev/null
@@ -1,66 +0,0 @@
-package commando
-
-import commando.completion.Bash
-
-sealed trait Parameter {
- def usage: String
-}
-
-case class Optional(long: String,
- short: Option[Char] = None,
- argumentAllowed: Boolean = false,
- argumentRequired: Boolean = false,
- parameterName: String = "param")
- extends Parameter {
-
- def usage: String = {
- val shortString = short.map(c => s"-$c|").getOrElse("")
- val paramString = if (argumentRequired) {
- s"=<$parameterName>"
- } else if (argumentAllowed) {
- s"[=<$parameterName>]"
- } else {
- ""
- }
- s"[$shortString--$long$paramString]"
- }
-}
-
-case class Positional(name: String, required: Boolean = true)
- extends Parameter {
- def usage: String = if (required) s"<$name>" else s"[<$name>]"
-}
-
-case class Command(
- name: String,
- optionals: Set[Optional],
- positionals: Seq[Positional],
- commands: Set[Command] = Set.empty,
- action: Option[Command.Arguments => Unit] = None
-) {
-
- private def subusage(level: Int): String = {
- val optStrings = optionals.map { opt =>
- opt.usage
- }
- val posStrings = positionals map { pos =>
- pos.usage
- }
- val cmdStrings = Seq(commands.map(cmd => cmd.name).mkString("|"))
-
- val headline =
- (Seq(name) ++ optStrings ++ posStrings ++ cmdStrings).mkString(" ")
- val lines = commands
- .map(_.subusage(level + 1))
- .map(line => " " * (level + 1) + line)
- headline + lines.mkString("\n", "", "")
- }
-
- def usage: String = subusage(0)
-
- def completion: String = Bash.completion(this)
-}
-
-object Command {
- type Arguments = Map[String, Seq[String]]
-}