diff options
author | Nils Gladitz <gladitz@scivis.de> | 2012-10-05 19:55:07 (GMT) |
---|---|---|
committer | David Cole <david.cole@kitware.com> | 2012-12-05 15:39:10 (GMT) |
commit | 711e2b3b5c674d4f754b5b214d511be6ce7e8f4d (patch) | |
tree | eac34a0d730f835f60e4fb28cc0e039c30298d3d /Source/cmStringCommand.cxx | |
parent | 2bb2745fa8c260d12aca33d2e1fd26a92d3bfa6b (diff) | |
download | CMake-711e2b3b5c674d4f754b5b214d511be6ce7e8f4d.zip CMake-711e2b3b5c674d4f754b5b214d511be6ce7e8f4d.tar.gz CMake-711e2b3b5c674d4f754b5b214d511be6ce7e8f4d.tar.bz2 |
CMake: Add TIMESTAMP subcommand to string and file commands
Diffstat (limited to 'Source/cmStringCommand.cxx')
-rw-r--r-- | Source/cmStringCommand.cxx | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/Source/cmStringCommand.cxx b/Source/cmStringCommand.cxx index 0193dc9..c402738 100644 --- a/Source/cmStringCommand.cxx +++ b/Source/cmStringCommand.cxx @@ -19,6 +19,8 @@ #include <ctype.h> #include <time.h> +#include <cmTimestamp.h> + //---------------------------------------------------------------------------- bool cmStringCommand ::InitialPass(std::vector<std::string> const& args, cmExecutionStatus &) @@ -87,6 +89,10 @@ bool cmStringCommand { return this->HandleFindCommand(args); } + else if(subCommand == "TIMESTAMP") + { + return this->HandleTimestampCommand(args); + } std::string e = "does not recognize sub-command "+subCommand; this->SetError(e.c_str()); @@ -879,3 +885,51 @@ bool cmStringCommand this->Makefile->AddDefinition(variableName.c_str(), &*result.begin()); return true; } + +//---------------------------------------------------------------------------- +bool cmStringCommand +::HandleTimestampCommand(std::vector<std::string> const& args) +{ + if(args.size() < 2) + { + this->SetError("sub-command TIMESTAMP requires at least one argument."); + return false; + } + else if(args.size() > 4) + { + this->SetError("sub-command TIMESTAMP takes at most three arguments."); + return false; + } + + int argsIndex = 1; + + const std::string &outputVariable = args[argsIndex++]; + + std::string formatString; + if(args.size() > argsIndex && args[argsIndex] != "UTC") + { + formatString = args[argsIndex++]; + } + + bool utcFlag = false; + if(args.size() > argsIndex) + { + if(args[argsIndex] == "UTC") + { + utcFlag = true; + } + else + { + std::string e = " TIMESTAMP sub-command does not recognize option " + + args[argsIndex] + "."; + this->SetError(e.c_str()); + return false; + } + } + + cmTimestamp timestamp; + std::string result = timestamp.CurrentTime(formatString, utcFlag); + this->Makefile->AddDefinition(outputVariable.c_str(), result.c_str()); + + return true; +} |