sbt plugin - How to make sure my settingKey is resolve before everything else?
up vote
0
down vote
favorite
I have a settingKey[Level.Value]
which is for the level of logs. I would like to set this value prior to everything else so that my log level is applied to everything.
( I know there is a setLogLevel
but I would like to be able to set it, only for my Plugin )
If my setting is named myLogLevel
, I tried to call myLogLevel.value
inside each of my tasks and settings.
The issue seems to be that if I am not using the value yield by it, then the setting is not executed.
My setting is something like that :
myLogLevel := {
val theValueSetByTheUser = myLogLevel.value
MyLogLibrary.setLevel(theValueSetByTheUser)
theValueSetByTheUser
}
So what should I do ? Should I call println(myResultLevel)
everywhere so it is used. It seems silly.
Thank you.
scala sbt
add a comment |
up vote
0
down vote
favorite
I have a settingKey[Level.Value]
which is for the level of logs. I would like to set this value prior to everything else so that my log level is applied to everything.
( I know there is a setLogLevel
but I would like to be able to set it, only for my Plugin )
If my setting is named myLogLevel
, I tried to call myLogLevel.value
inside each of my tasks and settings.
The issue seems to be that if I am not using the value yield by it, then the setting is not executed.
My setting is something like that :
myLogLevel := {
val theValueSetByTheUser = myLogLevel.value
MyLogLibrary.setLevel(theValueSetByTheUser)
theValueSetByTheUser
}
So what should I do ? Should I call println(myResultLevel)
everywhere so it is used. It seems silly.
Thank you.
scala sbt
add a comment |
up vote
0
down vote
favorite
up vote
0
down vote
favorite
I have a settingKey[Level.Value]
which is for the level of logs. I would like to set this value prior to everything else so that my log level is applied to everything.
( I know there is a setLogLevel
but I would like to be able to set it, only for my Plugin )
If my setting is named myLogLevel
, I tried to call myLogLevel.value
inside each of my tasks and settings.
The issue seems to be that if I am not using the value yield by it, then the setting is not executed.
My setting is something like that :
myLogLevel := {
val theValueSetByTheUser = myLogLevel.value
MyLogLibrary.setLevel(theValueSetByTheUser)
theValueSetByTheUser
}
So what should I do ? Should I call println(myResultLevel)
everywhere so it is used. It seems silly.
Thank you.
scala sbt
I have a settingKey[Level.Value]
which is for the level of logs. I would like to set this value prior to everything else so that my log level is applied to everything.
( I know there is a setLogLevel
but I would like to be able to set it, only for my Plugin )
If my setting is named myLogLevel
, I tried to call myLogLevel.value
inside each of my tasks and settings.
The issue seems to be that if I am not using the value yield by it, then the setting is not executed.
My setting is something like that :
myLogLevel := {
val theValueSetByTheUser = myLogLevel.value
MyLogLibrary.setLevel(theValueSetByTheUser)
theValueSetByTheUser
}
So what should I do ? Should I call println(myResultLevel)
everywhere so it is used. It seems silly.
Thank you.
scala sbt
scala sbt
asked Nov 19 at 22:29
Wonay
18611
18611
add a comment |
add a comment |
1 Answer
1
active
oldest
votes
up vote
0
down vote
accepted
I found a solution :
You need two settingKey
.
The first one is : myLogLevel: settingKey[Level.Value]
.
And consumer of your plugin can set it to whatever in their build.sbt
and you can put a default value in your settings: myLogLevel := Level.Info
.
Then, you have a second setting: myLog: settingKey[Logger]
which is not exposed to the consumer and you define it like :
myLog := {
createLogOfLevel(myLogLevel.value)
}
And in your other task and setting, you can now call:
val log = myLog.value
log.info("message")
add a comment |
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53383575%2fsbt-plugin-how-to-make-sure-my-settingkey-is-resolve-before-everything-else%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
0
down vote
accepted
I found a solution :
You need two settingKey
.
The first one is : myLogLevel: settingKey[Level.Value]
.
And consumer of your plugin can set it to whatever in their build.sbt
and you can put a default value in your settings: myLogLevel := Level.Info
.
Then, you have a second setting: myLog: settingKey[Logger]
which is not exposed to the consumer and you define it like :
myLog := {
createLogOfLevel(myLogLevel.value)
}
And in your other task and setting, you can now call:
val log = myLog.value
log.info("message")
add a comment |
up vote
0
down vote
accepted
I found a solution :
You need two settingKey
.
The first one is : myLogLevel: settingKey[Level.Value]
.
And consumer of your plugin can set it to whatever in their build.sbt
and you can put a default value in your settings: myLogLevel := Level.Info
.
Then, you have a second setting: myLog: settingKey[Logger]
which is not exposed to the consumer and you define it like :
myLog := {
createLogOfLevel(myLogLevel.value)
}
And in your other task and setting, you can now call:
val log = myLog.value
log.info("message")
add a comment |
up vote
0
down vote
accepted
up vote
0
down vote
accepted
I found a solution :
You need two settingKey
.
The first one is : myLogLevel: settingKey[Level.Value]
.
And consumer of your plugin can set it to whatever in their build.sbt
and you can put a default value in your settings: myLogLevel := Level.Info
.
Then, you have a second setting: myLog: settingKey[Logger]
which is not exposed to the consumer and you define it like :
myLog := {
createLogOfLevel(myLogLevel.value)
}
And in your other task and setting, you can now call:
val log = myLog.value
log.info("message")
I found a solution :
You need two settingKey
.
The first one is : myLogLevel: settingKey[Level.Value]
.
And consumer of your plugin can set it to whatever in their build.sbt
and you can put a default value in your settings: myLogLevel := Level.Info
.
Then, you have a second setting: myLog: settingKey[Logger]
which is not exposed to the consumer and you define it like :
myLog := {
createLogOfLevel(myLogLevel.value)
}
And in your other task and setting, you can now call:
val log = myLog.value
log.info("message")
answered Nov 19 at 22:40
Wonay
18611
18611
add a comment |
add a comment |
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53383575%2fsbt-plugin-how-to-make-sure-my-settingkey-is-resolve-before-everything-else%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown