diff options
Diffstat (limited to 'src/main/scala/definitions.scala')
-rw-r--r-- | src/main/scala/definitions.scala | 66 |
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]] -} |