summaryrefslogblamecommitdiff
path: root/main/src/mill/main/MainScopts.scala
blob: 718a30e6a5fcf9f6374c5e6826c36333cc923ce4 (plain) (tree)
1
2
3
4
5
6
7
8
9
                 
                          




                                                         

                                                 

                      
                             
                               



                                       

                                                                


       


                         
                                          
               
                    
                                                                    

   
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]
  }
}