Make `isEnvVariableSet()` public API

This commit is contained in:
Martchus 2022-10-08 22:29:32 +02:00
parent faaa40100c
commit 0cf59b654b
4 changed files with 23 additions and 25 deletions

View File

@ -32,27 +32,6 @@ using namespace CppUtilities::EscapeCodes;
*/
namespace CppUtilities {
/*!
* \brief Returns whether the specified env variable is set to a non-zero and non-white-space-only value.
*/
std::optional<bool> isEnvVariableSet(const char *variableName)
{
const char *envValue = std::getenv(variableName);
if (!envValue) {
return std::nullopt;
}
for (; *envValue; ++envValue) {
switch (*envValue) {
case '0':
case ' ':
break;
default:
return true;
}
}
return false;
}
/*!
* \brief The ArgumentDenotationType enum specifies the type of a given argument denotation.
*/

View File

@ -4,8 +4,6 @@
#include "./argumentparser.h"
#include "./commandlineutils.h"
#include <optional>
namespace CppUtilities {
class CPP_UTILITIES_EXPORT ArgumentReader {
@ -58,8 +56,6 @@ inline Wrapper::Wrapper(const char *str, Indentation currentIndentation)
{
}
std::optional<bool> isEnvVariableSet(const char *variableName);
} // namespace CppUtilities
#endif // APPLICATION_UTILITIES_ARGUMENTPARSER_PRIVATE_H

View File

@ -43,6 +43,27 @@ bool confirmPrompt(const char *message, Response defaultResponse)
}
}
/*!
* \brief Returns whether the specified env variable is set to a non-zero and non-white-space-only value.
*/
std::optional<bool> isEnvVariableSet(const char *variableName)
{
const char *envValue = std::getenv(variableName);
if (!envValue) {
return std::nullopt;
}
for (; *envValue; ++envValue) {
switch (*envValue) {
case '0':
case ' ':
break;
default:
return true;
}
}
return false;
}
/*!
* \brief Returns the current size of the terminal.
* \remarks Unknown members of the returned TerminalSize are set to zero.

View File

@ -3,6 +3,7 @@
#include "../global.h"
#include <optional>
#include <ostream>
#ifdef PLATFORM_WINDOWS
@ -18,6 +19,7 @@ namespace CppUtilities {
enum class Response { None, Yes, No };
CPP_UTILITIES_EXPORT bool confirmPrompt(const char *message, Response defaultResponse = Response::None);
CPP_UTILITIES_EXPORT std::optional<bool> isEnvVariableSet(const char *variableName);
#ifdef PLATFORM_WINDOWS
CPP_UTILITIES_EXPORT bool handleVirtualTerminalProcessing();