Доступ к аргументам командной строки в проекте play sbt - PullRequest
0 голосов
/ 11 сентября 2018

Итак, вот ситуация;У меня есть игровое приложение, которое интегрировано с активатором.Чтобы запустить задачу Grunt, я добавил Grunt.scala в свой проект

import java.net.InetSocketAddress

import play.sbt.PlayRunHook
import sbt._

object Grunt {
  def apply(base: File): PlayRunHook = {

    object GruntProcess extends PlayRunHook {

      var process: Option[Process] = None

      def osCommand(command: String): String = {
        System.getProperty("os.name").toLowerCase().startsWith("win") match{
          case true => s"cmd.exe /c $command"
          case false => command
        }
      }

      override def beforeStarted(): Unit = {
        Process(osCommand("grunt dist"), base).run
      }

      override def afterStarted(addr: InetSocketAddress): Unit = {
        process = Some(Process(osCommand("grunt watch"), base).run)
      }

      override def afterStopped(): Unit = {
        process.map(p => p.destroy())
        process = None
      }
    }

    GruntProcess
  }
}

, а затем добавил следующую строку в свой build.sbt:

PlayKeys.playRunHooks += Grunt(baseDirectory.value)

в основном следовал документации Play.Итак, теперь для запуска моего проекта я использую следующую команду активатора:

activator -Dsbt.log.noformat=true clean dist universal:packageZipTarball

. Вопрос в том, как мне получить доступ к аргументу командной строки dist из класса scala.Я хотел бы использовать этот аргумент, чтобы определить, какую задачу Grunt (dist, test и т. Д.) Мне следует выполнить.

1 Ответ

0 голосов
/ 14 декабря 2018

Я нашел файл SBT в этом репо очень познавательно.Различные среды в основном обрабатываются из файла SBT (не хуков Scala), как вы можете видеть в нижней части этого файла:

....
// Execute frontend prod build task prior to play dist execution.
dist := (dist dependsOn `ui-prod-build`).value

// Execute frontend prod build task prior to play stage execution.
stage := (stage dependsOn `ui-prod-build`).value
....
...