@@ -54,28 +54,37 @@ Error copyProjectFiles(const fs::path &root, const fs::path &docsRoot, const fs:
5454}
5555
5656namespace service {
57- void validatePageFile (const FileTreeEntry &entry, const ResolvedProject &resolved, ProjectIssueCallback &issues) {
57+ void validatePageFile (const FileTreeEntry &entry, const ResolvedProject &resolved, ProjectIssueCallback &issues,
58+ const std::vector<std::string> &requiredAttributes) {
5859 const auto path = entry.path + DOCS_FILE_EXT ;
5960 if (const auto title = resolved.getPageTitle (path); !title) {
6061 issues.addIssueAsync (ProjectIssueLevel::WARNING , ProjectIssueType::FILE , ProjectError::NO_PAGE_TITLE , " " , path);
6162 }
63+
64+ for (const auto &attr: requiredAttributes) {
65+ if (const auto val = resolved.getPageAttribute (path, attr); !val) {
66+ issues.addIssueAsync (ProjectIssueLevel::WARNING , ProjectIssueType::FILE , ProjectError::MISSING_REQUIRED_ATTRIBUTE , attr,
67+ path);
68+ }
69+ }
6270 }
6371
64- void validatePagesTree (const FileTree &tree, const ResolvedProject &resolved, ProjectIssueCallback &issues) {
65- for (const auto &entry : tree) {
72+ void validatePagesTree (const FileTree &tree, const ResolvedProject &resolved, ProjectIssueCallback &issues,
73+ const std::vector<std::string> &requiredAttributes) {
74+ for (const auto &entry: tree) {
6675 if (entry.type == FileType::FILE ) {
67- validatePageFile (entry, resolved, issues);
76+ validatePageFile (entry, resolved, issues, requiredAttributes );
6877 } else if (entry.type == FileType::DIR ) {
69- validatePagesTree (entry.children , resolved, issues);
78+ validatePagesTree (entry.children , resolved, issues, requiredAttributes );
7079 }
7180 }
7281 }
7382
7483 void validatePages (const ResolvedProject &resolved, ProjectIssueCallback &issues) {
7584 const auto [tree, tErr](resolved.getDirectoryTree ());
76- validatePagesTree (tree, resolved, issues);
85+ validatePagesTree (tree, resolved, issues, {} );
7786 const auto [contentTree, cErr](resolved.getContentDirectoryTree ());
78- validatePagesTree (contentTree, resolved, issues);
87+ validatePagesTree (contentTree, resolved, issues, { " id " } );
7988 }
8089
8190 std::unordered_map<std::string, std::string> readVersionsFromMetadata (const nlohmann::json &metadata,
0 commit comments