0

「sbt-releases」を使用していて、タスク内から「release」を実行する必要がありますが、「release」が task ではなくコマンドであるという問題あります

sbt のタスク内からコマンドを実行することは可能ですか?

タスク内からリリースを実行する必要があるのはなぜですか?

何らかの条件が満たされた場合にリリースを実行し、そうでない場合は通常のビルドをトリガーするタスクを作成したいと考えています。sbt で releaseProcess を変更することでそれを達成しようとしましたが、問題はそれが taskKey ではなく SettingKey であり、設定がプロジェクトの読み込みで一度初期化されるため、設定内でタスクを使用できないことです。

4

1 に答える 1

1

最終的にコマンドを作成しました。ありがとう@Seth Tisue

lazy val myproject = (project in file("myproject").
settings(
  commands += Command.command("releaseIfRequired") { state =>
    val (stateAfterTask, condition) = Project.extract(state).runTask(conditionTask, state)

    if (condition) {
      Parser.parse(" with-defaults", ReleaseKeys.releaseCommand.parser(stateAfterTask)) match {
        case Right(cmd) => cmd()
        case Left(msg) => throw sys.error(s"Error triggering release command:\n$msg")
      }
    }
    else {
      Project.extract(stateAfterTask).runTask(build, stateAfterTask)._1
    }
  }
)
于 2016-01-02T07:52:49.547 に答える