#pragma once #include "Directory.h" #include "ContentFile.h" #include #include #include #include class GeneratorConfig { }; class WebsiteGenerator { public: void findProject(const std::string& searchPath) { const auto config_path = std::filesystem::path(searchPath) / "config.toml"; if (std::filesystem::exists(config_path)) { mProjectPath = searchPath; std::cout << "Found config.toml in " << searchPath << std::endl; } } void readConfig() { } void parseContentFiles() { findContentFiles(); for (auto& page : mPages) { page.load(); } } void parseTemplateFiles() { } void doSubstitutions() { } void write() { // Setup output dir const auto output_dir = mProjectPath / "output_custom"; std::filesystem::create_directory(output_dir); // Write each page } private: void findContentFiles() { const auto pages_files = Directory::getFilesWithExtension(getPagesPath(), ".md"); for (const auto& path : pages_files) { mPages.push_back(ContentPage(path)); } const auto article_files = Directory::getFilesWithExtension(getArticlesPath(), ".md"); for (const auto& path : article_files) { mArticles.push_back(ContentArticle(path)); } } Path getContentPath() const { return mProjectPath / "content"; } Path getPagesPath() const { return getContentPath() / "pages"; } Path getArticlesPath() const { return getContentPath() / "articles"; } std::filesystem::path mProjectPath; GeneratorConfig mConfig; std::vector mPages; std::vector mArticles; };