summaryrefslogtreecommitdiff
path: root/main/src/mill/main/MainScopts.scala
blob: 718a30e6a5fcf9f6374c5e6826c36333cc923ce4 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
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]
  }
}