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