aboutsummaryrefslogtreecommitdiff
path: root/commando/src/Main.scala
diff options
context:
space:
mode:
authorJakob Odersky <jakob@odersky.com>2019-09-21 00:38:30 -0400
committerJakob Odersky <jakob@odersky.com>2019-09-22 14:58:51 -0400
commita5a2118e4e0f31a4b8ae9921fa634058af526cdc (patch)
tree3a8912601637c78c8995fb8403302e2f3971d323 /commando/src/Main.scala
parent8a71d804a41ffbd80f881fae24c42637e246afc2 (diff)
downloadcommando-a5a2118e4e0f31a4b8ae9921fa634058af526cdc.tar.gz
commando-a5a2118e4e0f31a4b8ae9921fa634058af526cdc.tar.bz2
commando-a5a2118e4e0f31a4b8ae9921fa634058af526cdc.zip
Migrate build to mill; redesign command structure and parser
Diffstat (limited to 'commando/src/Main.scala')
-rw-r--r--commando/src/Main.scala32
1 files changed, 32 insertions, 0 deletions
diff --git a/commando/src/Main.scala b/commando/src/Main.scala
new file mode 100644
index 0000000..1e1b786
--- /dev/null
+++ b/commando/src/Main.scala
@@ -0,0 +1,32 @@
+package example
+
+object Main extends App {
+
+ val cmd = new commando.Command("xorc") {
+ val version = named("version")
+ .action(() => println("version 1"))
+ .repeat()
+
+ named("verbose")
+ .optionalArg("level")
+ .action(level => println(s"level $level"))
+
+ positional("FILES")
+ .action { s =>
+ val f = new java.io.File(s)
+ if (!f.exists()) error(s"File $s does not exit")
+ println(f)
+ }
+ .repeat()
+
+ val comp = named("completion")
+ .action(() => println(completion()))
+ }
+ cmd.parse(args) match {
+ case None =>
+ case Some(error) =>
+ println(error)
+ sys.exit(1)
+ }
+
+}