плагин sbt - Как убедиться, что мой settingKey - это решимость перед всем остальным? - PullRequest
0 голосов
/ 20 ноября 2018

У меня есть settingKey[Level.Value] для уровня журналов. Я хотел бы установить это значение до всего остального, чтобы мой уровень журнала применялся ко всему.

(я знаю, что есть setLogLevel, но я бы хотел установить его только для моего плагина)

Если мой параметр называется myLogLevel, я пытался вызвать myLogLevel.value внутри каждой из моих задач и настроек.

Кажется, проблема в том, что если я не использую значение yield по нему, то настройка не выполняется.

Моя настройка примерно такая:

myLogLevel := {
  val theValueSetByTheUser = myLogLevel.value
  MyLogLibrary.setLevel(theValueSetByTheUser)
  theValueSetByTheUser
}

Так что мне делать? Должен ли я звонить println(myResultLevel) везде, чтобы он использовался. Это кажется глупым.

Спасибо.

1 Ответ

0 голосов
/ 20 ноября 2018

Я нашел решение:

Вам нужно два settingKey.

Первый: myLogLevel: settingKey[Level.Value].

И потребитель вашего плагина может установить его на build.sbt, и вы можете установить значение по умолчанию в своих настройках: myLogLevel := Level.Info.

Затем у вас есть вторая настройка: myLog: settingKey[Logger]

, который не предоставляется потребителю, и вы определяете его следующим образом:

myLog := {
  createLogOfLevel(myLogLevel.value)
}

А в другой вашей задаче и настройке вы теперь можете позвонить:

val log = myLog.value
log.info("message")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...