Запуск SBT из сценария аммонита
Я пытаюсь написать сценарий аммонита, который запускает задачу SBT.
Пока это то, что я написал.
test.sh
#!/usr/bin/env amm
import sys.process._
import java.io.File
import ammonite.ops._, ImplicitWd._
@main
def ini(args: String*) = {
val server = args.headOption.getOrElse("devserver")
val path = /'Users/'Foo/'IdeaProjects/'my-project
val process = Process(Seq("sbt", "clean"), path)
process.!
}
У меня тут несколько проблем
вместо использования
Process
объект, который я хочу использовать ammnoite%
запустить процесс. Но тогда как мне установить рабочий каталог для запускаемого процесса?Из командной строки я запускаю свой код как
sbt "runmain com.test.Foo 1 2 3"
, При вызове процесса из%
как я могу правильно вызвать runMain со всеми параметрами?
1 ответ
Сделай это:
%.sbt('runmain,"com.test.foo",arg1,arg2,arg3)(path)
Где путь - это каталог, в котором вы хотите, чтобы он выполнялся, а аргументы имеют явное имя, а не аргумент *. Это Scala, так что вы можете задавать значения для искусств и использовать именованные аргументы, добавляя префикс имени w/--'
Другой альтернативой является написание сценария оболочки для первого компакт-диска в каталог, а затем запуск сценария аммонита с параметрами.