@@ -144,17 +144,22 @@ Error MustacheHTMLGenerator::generateDocs(
144144 } else
145145 return JSONGenerator.takeError ();
146146 }
147+ SmallString<128 > JSONPath;
148+ sys::path::native (RootDir.str () + " /json" , JSONPath);
147149
148150 StringMap<json::Value> JSONFileMap;
149151 {
150152 llvm::TimeTraceScope TS (" Iterate JSON files" );
151153 std::error_code EC;
152- sys::fs::directory_iterator JSONIter (RootDir , EC);
154+ sys::fs::directory_iterator JSONIter (JSONPath , EC);
153155 std::vector<json::Value> JSONFiles;
154156 JSONFiles.reserve (Infos.size ());
155157 if (EC)
156158 return createStringError (" Failed to create directory iterator." );
157159
160+ SmallString<128 > HTMLDirPath (RootDir.str () + " /html/" );
161+ if (auto EC = sys::fs::create_directories (HTMLDirPath))
162+ return createFileError (HTMLDirPath, EC);
158163 while (JSONIter != sys::fs::directory_iterator ()) {
159164 if (EC)
160165 return createFileError (" Failed to iterate: " + JSONIter->path (), EC);
@@ -177,14 +182,15 @@ Error MustacheHTMLGenerator::generateDocs(
177182 return Parsed.takeError ();
178183
179184 std::error_code FileErr;
180- SmallString<16 > HTMLPath (Path.begin (), Path.end ());
181- sys::path::replace_extension (HTMLPath, " html" );
182- raw_fd_ostream InfoOS (HTMLPath, FileErr, sys::fs::OF_None);
185+ SmallString<128 > HTMLFilePath (HTMLDirPath);
186+ sys::path::append (HTMLFilePath, sys::path::filename (Path));
187+ sys::path::replace_extension (HTMLFilePath, " html" );
188+ raw_fd_ostream InfoOS (HTMLFilePath, FileErr, sys::fs::OF_None);
183189 if (FileErr)
184190 return createFileOpenError (Path, FileErr);
185191
186- if (Error Err = generateDocForJSON (*Parsed, sys::path::stem (HTMLPath ),
187- HTMLPath , InfoOS, CDCtx))
192+ if (Error Err = generateDocForJSON (*Parsed, sys::path::stem (HTMLFilePath ),
193+ HTMLFilePath , InfoOS, CDCtx))
188194 return Err;
189195 JSONIter.increment (EC);
190196 }
0 commit comments