2017-06-23 4 views
1

どのようにスコープキーをプログラムで参照できますか?私。たとえば、 scalafmt :: test?sbtプログラムでタスクスコープを解決する

コンテキスト:neo-sbt-scalafmtは、ソースをフォーマットするTaskKey scalafmtを定義しますが、ソースが期待されるフォーマットに一致するかどうかをチェックするtest(https://github.com/lucidsoftware/neo-sbt-scalafmt/blob/master/sbt-scalafmt/src/main/scala/com/lucidchart/sbt/scalafmt/ScalafmtCorePlugin.scala#L143)というスコープも定義します。

SettingKeyによっては、TaskKey scalaFmtがコンパイルされる前に呼び出されます。代わりにscalafmt :: testを呼び出す新しいSettingKeyを導入したいと思います。以下はコンパイルされますが、scalafmt :: testではなく、常にscalafmtが実行されます。

if (scalafmtOnCompile.value) scalafmt in resolvedScoped.value.scope 
else if (scalafmtTestOnCompile.value) (test in scalafmt) in resolvedScoped.value.scope 

https://github.com/lucidsoftware/neo-sbt-scalafmt/blob/master/sbt-scalafmt/src/main/scala/com/lucidchart/sbt/scalafmt/ScalafmtCorePlugin.scala#L170

私は、SBTのギッターチャネルでこの質問をしたし、ちょうど次の人のためにここでそれを文書化します。 「既存のスコープを取るが、scalafmtタスクスコープにそれを作る、それは私が使用するテストの範囲だ」答えを提供するためのデールWijnandに

賞賛を:基本的に意味

答えて

1

test in (resolvedScoped.value.scope in scalafmt.key)

もともとジッタに。

関連する問題