summaryrefslogtreecommitdiff
path: root/main/src/main/MainScopts.scala
diff options
context:
space:
mode:
Diffstat (limited to 'main/src/main/MainScopts.scala')
-rw-r--r--main/src/main/MainScopts.scala31
1 files changed, 31 insertions, 0 deletions
diff --git a/main/src/main/MainScopts.scala b/main/src/main/MainScopts.scala
new file mode 100644
index 00000000..718a30e6
--- /dev/null
+++ b/main/src/main/MainScopts.scala
@@ -0,0 +1,31 @@
+package mill.main
+import mill.eval.Evaluator
+
+case class Tasks[T](value: Seq[mill.define.NamedTask[T]])
+
+object Tasks{
+
+ class Scopt[T]() extends scopt.Read[Tasks[T]] {
+ def arity = 1
+
+ def reads = s => {
+ RunScript.resolveTasks(
+ mill.main.ResolveTasks,
+ Evaluator.currentEvaluator.get,
+ Seq(s),
+ multiSelect = false
+ ) match{
+ case Left(err) => throw new Exception(err)
+ case Right(tasks) => Tasks(tasks).asInstanceOf[Tasks[T]]
+ }
+ }
+ }
+}
+
+class EvaluatorScopt[T]()
+ extends scopt.Read[mill.eval.Evaluator]{
+ def arity = 0
+ def reads = s => {
+ Evaluator.currentEvaluator.get.asInstanceOf[mill.eval.Evaluator]
+ }
+}