#pragma once /** * @file * * Utilities for working with the current process's environment * variables. */ #include #include "types.hh" namespace nix { /** * @return an environment variable. */ std::optional getEnv(const std::string & key); /** * @return a non empty environment variable. Returns nullopt if the env * variable is set to "" */ std::optional getEnvNonEmpty(const std::string & key); /** * Get the entire environment. */ std::map getEnv(); #ifdef _WIN32 /** * Implementation of missing POSIX function. */ int unsetenv(const char * name); #endif /** * Like POSIX `setenv`, but always overrides. * * We don't need the non-overriding version, and this is easier to * reimplement on Windows. */ int setEnv(const char * name, const char * value); /** * Clear the environment. */ void clearEnv(); /** * Replace the entire environment with the given one. */ void replaceEnv(const std::map & newEnv); }