summaryrefslogtreecommitdiff
path: root/Source/cmSystemTools.h
diff options
context:
space:
mode:
authorAlex Reinking <alex.reinking@gmail.com>2022-08-14 04:42:11 -0400
committerAlex Reinking <alex.reinking@gmail.com>2022-08-17 12:54:39 -0400
commitc9d70a7cc32bd023c92fd9eac19cb907b86ada8f (patch)
tree551a9588a3f1daaefc62134d892fa30ca4c1560e /Source/cmSystemTools.h
parent5b949bbb9114379120c29134b5effd77e39dd134 (diff)
downloadcmake-c9d70a7cc32bd023c92fd9eac19cb907b86ada8f.tar.gz
cmake -E env: Add --modify flag
When `cmake -E env` is given the `--modify` flag, try to parse the following argument as an `ENVIRONMENT_MODIFICATION` operation and apply it to the environment. This generalizes `--unset=`: 1. When implementing `ENVIRONMENT_MODIFICATION` features for other CMake commands, the `MYVAR=OP:VALUE` strings do not need to be translated to OP-specific flags. 2. This provides a natural and consistent extension point to introduce new operations without introducing very many flags. 3. Users need to learn only one syntax to access the same functionality. There is one difference between the behavior here as compared to CTest's interpretation of the `ENVIRONMENT_MODIFICATION` test property. The `MYVAR=reset:` command when run in `cmake -E env` will reset `MYVAR` to whatever its value was when `cmake -E env` launched, rather than try to checkpoint after plain `MYVAR=VALUE` options. This makes `MYVAR=VALUE` and `--modify MYVAR=set:VALUE` semantically equivalent.
Diffstat (limited to 'Source/cmSystemTools.h')
-rw-r--r--Source/cmSystemTools.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/Source/cmSystemTools.h b/Source/cmSystemTools.h
index e8c04b1a0e..48bbe238b1 100644
--- a/Source/cmSystemTools.h
+++ b/Source/cmSystemTools.h
@@ -397,6 +397,9 @@ public:
*/
void PutEnv(const std::string& env);
+ /** Remove a single variable from the current environment diff. */
+ void UnPutEnv(const std::string& env);
+
/**
* Apply an ENVIRONMENT_MODIFICATION operation to this diff. Returns
* false and issues an error on parse failure.