Allow to use env vars to override module configs

This commit is contained in:
Lynix 2023-12-01 20:59:35 +01:00
parent 5472514f4b
commit dc9c1e14c4
3 changed files with 21 additions and 20 deletions

View File

@ -3,11 +3,7 @@
// For conditions of distribution and use, see copyright notice in Config.hpp
#include <Nazara/Audio/Audio.hpp>
#include <Nazara/Audio/AudioBuffer.hpp>
#include <Nazara/Audio/AudioSource.hpp>
#include <Nazara/Audio/Config.hpp>
#include <Nazara/Audio/DummyAudioDevice.hpp>
#include <Nazara/Audio/Enums.hpp>
#include <Nazara/Audio/OpenALDevice.hpp>
#include <Nazara/Audio/OpenALLibrary.hpp>
#include <Nazara/Audio/Formats/drwavLoader.hpp>
@ -15,10 +11,8 @@
#include <Nazara/Audio/Formats/libvorbisLoader.hpp>
#include <Nazara/Audio/Formats/minimp3Loader.hpp>
#include <Nazara/Core/CommandLineParameters.hpp>
#include <Nazara/Core/Core.hpp>
#include <Nazara/Core/EnvironmentVariables.hpp>
#include <Nazara/Core/Error.hpp>
#include <Nazara/Core/Log.hpp>
#include <NazaraUtils/CallOnExit.hpp>
#include <stdexcept>
#include <Nazara/Audio/Debug.hpp>
@ -159,7 +153,7 @@ namespace Nz
void Audio::Config::Override(const CommandLineParameters& parameters)
{
if (parameters.HasFlag("no-audio"))
if (parameters.HasFlag("no-audio") || TestEnvironmentVariable("NAZARA_NO_AUDIO"))
noAudio = true;
}
}

View File

@ -5,6 +5,7 @@
#include <Nazara/Graphics/Graphics.hpp>
#include <Nazara/Core/AppFilesystemComponent.hpp>
#include <Nazara/Core/CommandLineParameters.hpp>
#include <Nazara/Core/EnvironmentVariables.hpp>
#include <Nazara/Graphics/DebugDrawPipelinePass.hpp>
#include <Nazara/Graphics/DepthPipelinePass.hpp>
#include <Nazara/Graphics/ForwardPipelinePass.hpp>
@ -14,7 +15,6 @@
#include <Nazara/Graphics/PipelinePassList.hpp>
#include <Nazara/Graphics/PostProcessPipelinePass.hpp>
#include <Nazara/Graphics/PredefinedMaterials.hpp>
#include <Nazara/Graphics/PredefinedShaderStructs.hpp>
#include <Nazara/Graphics/Formats/PipelinePassListLoader.hpp>
#include <Nazara/Graphics/Formats/TextureLoader.hpp>
#include <Nazara/Utility/Font.hpp>
@ -542,10 +542,10 @@ namespace Nz
void Graphics::Config::Override(const CommandLineParameters& parameters)
{
if (parameters.HasFlag("use-dedicated-gpu"))
if (parameters.HasFlag("use-dedicated-gpu") || TestEnvironmentVariable("NAZARA_USE_DEDICATED_GPU"))
useDedicatedRenderDevice = true;
if (parameters.HasFlag("use-integrated-gpu"))
if (parameters.HasFlag("use-integrated-gpu") || TestEnvironmentVariable("NAZARA_USE_INTEGRATED_GPU"))
useDedicatedRenderDevice = false;
}
}

View File

@ -5,15 +5,9 @@
#include <Nazara/Renderer/Renderer.hpp>
#include <Nazara/Core/CommandLineParameters.hpp>
#include <Nazara/Core/DynLib.hpp>
#include <Nazara/Core/EnvironmentVariables.hpp>
#include <Nazara/Core/Log.hpp>
#include <Nazara/Core/StringExt.hpp>
#include <Nazara/Platform/Platform.hpp>
#include <Nazara/Renderer/RenderBuffer.hpp>
#include <Nazara/Renderer/RendererImpl.hpp>
#include <Nazara/Utility/Buffer.hpp>
#include <Nazara/Utility/Image.hpp>
#include <Nazara/Utility/Utility.hpp>
#include <NazaraUtils/CallOnExit.hpp>
#include <NazaraUtils/EnumArray.hpp>
#include <frozen/string.h>
#include <frozen/unordered_map.h>
@ -217,8 +211,21 @@ namespace Nz
void Renderer::Config::Override(const CommandLineParameters& parameters)
{
std::string_view value;
auto GetParameter = [&](const std::string& paramName, const char* envName, std::string_view* var)
{
if (parameters.GetParameter(paramName, var))
return true;
if (parameters.GetParameter("render-api", &value))
if (const char* envValue = GetEnvironmentVariable(envName); envValue && *envValue != '\0')
{
*var = envValue;
return true;
}
return false;
};
if (GetParameter("render-api", "NAZARA_RENDER_API", &value))
{
constexpr auto renderAPIStr = frozen::make_unordered_map<frozen::string, RenderAPI>({
{ "auto", RenderAPI::Unknown },
@ -236,7 +243,7 @@ namespace Nz
NazaraErrorFmt("unknown render API \"{0}\"", value);
}
if (parameters.GetParameter("render-api-validation", &value))
if (GetParameter("render-api-validation", "NAZARA_RENDER_API_VALDATION", &value))
{
constexpr auto validationStr = frozen::make_unordered_map<frozen::string, RenderAPIValidationLevel>({
{ "debug", RenderAPIValidationLevel::Debug },