Shorten the output of `clang-format --version`, include revision number.

Before:
  $ clang-format  --version
  LLVM (http://llvm.org/):
    LLVM version 3.5svn
    Optimized build with assertions.
    Built Jan  3 2014 (14:28:46).
    Default target: x86_64-apple-darwin13.0.0
    Host CPU: core-avx-i

Now:
  $ bin/clang-format --version
  clang-format version 3.5 (198452)

llvm-svn: 198694
This commit is contained in:
Nico Weber 2014-01-07 16:27:35 +00:00
parent e0756452a3
commit b00d66e6ac
3 changed files with 15 additions and 1 deletions

View File

@ -70,6 +70,9 @@ namespace clang {
/// and the vendor tag.
std::string getClangFullVersion();
/// \brief Like getClangFullVersion(), but with a custom tool name.
std::string getClangToolFullVersion(llvm::StringRef ToolName);
/// \brief Retrieves a string representing the complete clang version suitable
/// for use in the CPP __VERSION__ macro, which includes the clang version
/// number, the repository version, and the vendor tag.

View File

@ -116,12 +116,16 @@ std::string getClangFullRepositoryVersion() {
}
std::string getClangFullVersion() {
return getClangToolFullVersion("clang");
}
std::string getClangToolFullVersion(StringRef ToolName) {
std::string buf;
llvm::raw_string_ostream OS(buf);
#ifdef CLANG_VENDOR
OS << CLANG_VENDOR;
#endif
OS << "clang version " CLANG_VERSION_STRING " "
OS << ToolName << " version " CLANG_VERSION_STRING " "
<< getClangFullRepositoryVersion();
// If vendor supplied, include the base LLVM version as well.

View File

@ -17,6 +17,7 @@
#include "clang/Basic/DiagnosticOptions.h"
#include "clang/Basic/FileManager.h"
#include "clang/Basic/SourceManager.h"
#include "clang/Basic/Version.h"
#include "clang/Format/Format.h"
#include "clang/Lex/Lexer.h"
#include "clang/Rewrite/Core/Rewriter.h"
@ -255,6 +256,11 @@ static bool format(StringRef FileName) {
} // namespace format
} // namespace clang
static void PrintVersion() {
raw_ostream &OS = outs();
OS << clang::getClangToolFullVersion("clang-format") << '\n';
}
int main(int argc, const char **argv) {
llvm::sys::PrintStackTraceOnErrorSignal();
@ -268,6 +274,7 @@ int main(int argc, const char **argv) {
I->second->setHiddenFlag(cl::ReallyHidden);
}
cl::SetVersionPrinter(PrintVersion);
cl::ParseCommandLineOptions(
argc, argv,
"A tool to format C/C++/Obj-C code.\n\n"