Skip to content

[clang-doc] add option to delete JSON residuals #150656

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 1 commit into
base: users/evelez7/clang-doc-json-html-dirs
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions clang-tools-extra/clang-doc/HTMLMustacheGenerator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -196,6 +196,9 @@ Error MustacheHTMLGenerator::generateDocs(
}
}

if (!CDCtx.KeepJSON)
sys::fs::remove_directories(JSONPath);

return Error::success();
}

Expand Down
4 changes: 2 additions & 2 deletions clang-tools-extra/clang-doc/Representation.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -481,9 +481,9 @@ ClangDocContext::ClangDocContext(tooling::ExecutionContext *ECtx,
StringRef RepositoryUrl,
StringRef RepositoryLinePrefix, StringRef Base,
std::vector<std::string> UserStylesheets,
bool FTimeTrace)
bool KeepJSON, bool FTimeTrace)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

does this actually need to be in the context? you have a cl::opt, right? it doesn't have to be a static variable, and then you could use it from other TUs. This is pretty common in LLVM.

Alternatively, the cl::opt could just be in the mustache generator, since its the only generator that uses it.

: ECtx(ECtx), ProjectName(ProjectName), PublicOnly(PublicOnly),
FTimeTrace(FTimeTrace), OutDirectory(OutDirectory),
FTimeTrace(FTimeTrace), KeepJSON(KeepJSON), OutDirectory(OutDirectory),
UserStylesheets(UserStylesheets), Base(Base) {
llvm::SmallString<128> SourceRootDir(SourceRoot);
if (SourceRoot.empty())
Expand Down
3 changes: 2 additions & 1 deletion clang-tools-extra/clang-doc/Representation.h
Original file line number Diff line number Diff line change
Expand Up @@ -610,11 +610,12 @@ struct ClangDocContext {
bool PublicOnly, StringRef OutDirectory, StringRef SourceRoot,
StringRef RepositoryUrl, StringRef RepositoryCodeLinePrefix,
StringRef Base, std::vector<std::string> UserStylesheets,
bool FTimeTrace = false);
bool KeepJSON, bool FTimeTrace = false);
tooling::ExecutionContext *ECtx;
std::string ProjectName; // Name of project clang-doc is documenting.
bool PublicOnly; // Indicates if only public declarations are documented.
bool FTimeTrace; // Indicates if ftime trace is turned on
bool KeepJSON; // Indicates if JSON files should be kept after HTML generation
int Granularity; // Granularity of ftime trace
std::string OutDirectory; // Directory for outputting generated files.
std::string SourceRoot; // Directory where processed files are stored. Links
Expand Down
6 changes: 6 additions & 0 deletions clang-tools-extra/clang-doc/tool/ClangDocMain.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,11 @@ Turn on time profiler. Generates clang-doc-tracing.json)"),
llvm::cl::init(false),
llvm::cl::cat(ClangDocCategory));

static llvm::cl::opt<bool>
KeepJSON("keep-json",
llvm::cl::desc("Keep JSON residuals after processing."),
llvm::cl::init(false), llvm::cl::cat(ClangDocCategory));

enum OutputFormatTy { md, yaml, html, mustache, json };

static llvm::cl::opt<OutputFormatTy> FormatEnum(
Expand Down Expand Up @@ -325,6 +330,7 @@ Example usage for a project using a compile commands database:
RepositoryCodeLinePrefix,
BaseDirectory,
{UserStylesheets.begin(), UserStylesheets.end()},
KeepJSON,
FTimeTrace};

if (Format == "html") {
Expand Down
4 changes: 2 additions & 2 deletions clang-tools-extra/unittests/clang-doc/HTMLGeneratorTest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -30,8 +30,8 @@ getClangDocContext(std::vector<std::string> UserStylesheets = {},
StringRef RepositoryUrl = "",
StringRef RepositoryLinePrefix = "", StringRef Base = "") {
ClangDocContext CDCtx{
{}, "test-project", {}, {}, {}, RepositoryUrl, RepositoryLinePrefix,
Base, UserStylesheets};
{}, "test-project", {}, {}, {}, RepositoryUrl, RepositoryLinePrefix,
Base, UserStylesheets, {}};
CDCtx.UserStylesheets.insert(
CDCtx.UserStylesheets.begin(),
"../share/clang/clang-doc-default-stylesheet.css");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,8 +41,8 @@ getClangDocContext(std::vector<std::string> UserStylesheets = {},
StringRef RepositoryUrl = "",
StringRef RepositoryLinePrefix = "", StringRef Base = "") {
ClangDocContext CDCtx{
{}, "test-project", {}, {}, {}, RepositoryUrl, RepositoryLinePrefix,
Base, UserStylesheets};
{}, "test-project", {}, {}, {}, RepositoryUrl, RepositoryLinePrefix,
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
{}, "test-project", {}, {}, {}, RepositoryUrl, RepositoryLinePrefix,
{}, "test-project", {}, {}, {}, RepositoryUrl, RepositoryLinePrefix,

Seems like an extra space slipped in.

Base, UserStylesheets, {}};
CDCtx.UserStylesheets.insert(CDCtx.UserStylesheets.begin(), "");
CDCtx.JsScripts.emplace_back("");
return CDCtx;
Expand Down