Запуск 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.!
}

У меня тут несколько проблем

  1. вместо использования Process объект, который я хочу использовать ammnoite % запустить процесс. Но тогда как мне установить рабочий каталог для запускаемого процесса?

  2. Из командной строки я запускаю свой код как sbt "runmain com.test.Foo 1 2 3", При вызове процесса из % как я могу правильно вызвать runMain со всеми параметрами?

1 ответ

Сделай это:

%.sbt('runmain,"com.test.foo",arg1,arg2,arg3)(path)

Где путь - это каталог, в котором вы хотите, чтобы он выполнялся, а аргументы имеют явное имя, а не аргумент *. Это Scala, так что вы можете задавать значения для искусств и использовать именованные аргументы, добавляя префикс имени w/--'

Другой альтернативой является написание сценария оболочки для первого компакт-диска в каталог, а затем запуск сценария аммонита с параметрами.

Другие вопросы по тегам