scala - SBT: Override sbt run task in multi project build.sb -
i want override default behaviour of run task in order preprocess arguments passed sbt command , call run task on specific subproject different arguments (depending on custom logic). that's sample of build.sbt file:
lazy val core = (project in file("core")) lazy val bar = (project in file("bar")) lazy val foo = (project in file("foo")) run := runner.buildruntask(bar, foo).value.evaluated
the buildruntask override task new implementation. here code:
def buildruntask(runnableprojects:project*) : initialize[inputtask[unit]] = def.inputtask { val args: seq[string] = spacedelimited("<arg>").parsed val availableprojects = runnableprojects.map(_.id).mkstring(",") if (args.length == 0) throw new illegalstateexception(s"you need specify valid command. available commands are: '$availableprojects'") val command = args head val project = runnableprojects.find(_.id == command) .getorelse(throw new illegalstateexception(s"invalid command '$command'. available command are: $availableprojects")) val newargs = transformargs(args.rest) //todo: how can compile , execute run task project passed argument? want project.runtask(newargs) ? }
do have suggestion?
thanks!
regards
gianluca
Comments
Post a Comment