Reputation: 527
If I have a DUB-based project with an optional dependency, how to I make it so that some code (be it modules or a version(...){...} block) only gets compiled if the dependency is chosen? Is there a way I can make a version identifier defined based on whether the dependency is present or absent?
I have already read about the "optional" and "default" attributes of the "dependency" tag as documented here. This allows me to define a dependency as optional, but it lacks teeth if I can't version my code to reflect the dependencies chosen.
Upvotes: 1
Views: 193
Reputation: 1228
Besides using a version(foo)
block and asking people to use versions: "foo"
in their dub.sdl, you have one other option. It's cruddy, but it would work.
If your code is a template, you can wrap the relevant stuff in:
template HasVibe()
{
enum HasVibe =
is(typeof(() { import vibe.d; } ));
}
template Foo(T) if (HasVibe!())
{
// your code here
}
If it's not a template, you can turn it into a template:
template log() if (HasVibe!())
{
import vibe.core.log : logDebug;
alias log = logDebug;
}
Untested, but it might help in a pinch.
Upvotes: 0