diff options
| author | Julie Hockett <juliehockett@google.com> | 2018-08-16 21:54:34 +0000 |
|---|---|---|
| committer | Julie Hockett <juliehockett@google.com> | 2018-08-16 21:54:34 +0000 |
| commit | 1bcd1b03243e887437a165e25e12888f9c7a6e0f (patch) | |
| tree | 541ceb6963811f194b2f68c7363de916406ef3fd /clang-tools-extra/clang-doc/tool | |
| parent | d4b3f19ba6617c7aef8f538fa657bb6de7fc31f6 (diff) | |
| download | bcm5719-llvm-1bcd1b03243e887437a165e25e12888f9c7a6e0f.tar.gz bcm5719-llvm-1bcd1b03243e887437a165e25e12888f9c7a6e0f.zip | |
Implement a (simple) Markdown generator
Implementing a simple Markdown generator from the emitted bitcode
summary of declarations. Very primitive at this point, but will be
expanded. Currently emits an .md file for each class and namespace,
listing its contents.
For a more detailed overview of the tool, see the design document
on the mailing list:
http://lists.llvm.org/pipermail/cfe-dev/2017-December/056203.html
Differential Revision: https://reviews.llvm.org/D43424
llvm-svn: 339948
Diffstat (limited to 'clang-tools-extra/clang-doc/tool')
| -rw-r--r-- | clang-tools-extra/clang-doc/tool/ClangDocMain.cpp | 43 |
1 files changed, 26 insertions, 17 deletions
diff --git a/clang-tools-extra/clang-doc/tool/ClangDocMain.cpp b/clang-tools-extra/clang-doc/tool/ClangDocMain.cpp index 6e4a92d7b06..6b50f6ca838 100644 --- a/clang-tools-extra/clang-doc/tool/ClangDocMain.cpp +++ b/clang-tools-extra/clang-doc/tool/ClangDocMain.cpp @@ -34,6 +34,7 @@ #include "clang/Tooling/StandaloneExecution.h" #include "clang/Tooling/Tooling.h" #include "llvm/ADT/APFloat.h" +#include "llvm/Support/CommandLine.h" #include "llvm/Support/Error.h" #include "llvm/Support/FileSystem.h" #include "llvm/Support/Path.h" @@ -69,13 +70,18 @@ static llvm::cl::opt<bool> llvm::cl::init(false), llvm::cl::cat(ClangDocCategory)); enum OutputFormatTy { + md, yaml, }; -static llvm::cl::opt<OutputFormatTy> FormatEnum( - "format", llvm::cl::desc("Format for outputted docs."), - llvm::cl::values(clEnumVal(yaml, "Documentation in YAML format.")), - llvm::cl::init(yaml), llvm::cl::cat(ClangDocCategory)); +static llvm::cl::opt<OutputFormatTy> + FormatEnum("format", llvm::cl::desc("Format for outputted docs."), + llvm::cl::values(clEnumValN(OutputFormatTy::yaml, "yaml", + "Documentation in YAML format."), + clEnumValN(OutputFormatTy::md, "md", + "Documentation in MD format.")), + llvm::cl::init(OutputFormatTy::yaml), + llvm::cl::cat(ClangDocCategory)); static llvm::cl::opt<bool> DoxygenOnly( "doxygen", @@ -155,10 +161,12 @@ getInfoOutputFile(StringRef Root, return Path; } -std::string getFormatString(OutputFormatTy Ty) { - switch (Ty) { - case yaml: +std::string getFormatString() { + switch (FormatEnum) { + case OutputFormatTy::yaml: return "yaml"; + case OutputFormatTy::md: + return "md"; } llvm_unreachable("Unknown OutputFormatTy"); } @@ -191,14 +199,6 @@ int main(int argc, const char **argv) { llvm::sys::PrintStackTraceOnErrorSignal(argv[0]); std::error_code OK; - // Fail early if an invalid format was provided. - std::string Format = getFormatString(FormatEnum); - auto G = doc::findGeneratorByName(Format); - if (!G) { - llvm::errs() << toString(G.takeError()) << "\n"; - return 1; - } - auto Exec = clang::tooling::createExecutorFromCommandLineArgs( argc, argv, ClangDocCategory); @@ -207,6 +207,15 @@ int main(int argc, const char **argv) { return 1; } + // Fail early if an invalid format was provided. + std::string Format = getFormatString(); + llvm::outs() << "Emiting docs in " << Format << " format.\n"; + auto G = doc::findGeneratorByName(Format); + if (!G) { + llvm::errs() << toString(G.takeError()) << "\n"; + return 1; + } + ArgumentsAdjuster ArgAdjuster; if (!DoxygenOnly) ArgAdjuster = combineAdjusters( @@ -277,8 +286,8 @@ int main(int argc, const char **argv) { continue; } - if (G->get()->generateDocForInfo(I, InfoOS)) - llvm::errs() << "Unable to generate docs for info.\n"; + if (auto Err = G->get()->generateDocForInfo(I, InfoOS)) + llvm::errs() << toString(std::move(Err)) << "\n"; } return 0; |

