diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 70bdda4..a02a9ee 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,6 +1,7 @@ add_executable(kc main.cpp fs/fs.cpp + fs/FileEntry.cpp logging.cpp config.cpp ) diff --git a/src/fs/FileEntry.cpp b/src/fs/FileEntry.cpp new file mode 100644 index 0000000..85120b8 --- /dev/null +++ b/src/fs/FileEntry.cpp @@ -0,0 +1,32 @@ +#include "FileEntry.hpp" + +#include +#include + +namespace kc { + +bool FileEntry::content_loaded() +{ + return !file_content.empty(); +} + +std::string FileEntry::load_content() +{ + std::ifstream ifs(file_entry.path()); + file_content.assign( (std::istreambuf_iterator(ifs)), (std::istreambuf_iterator()) ); + + return file_content; +} + +std::string FileEntry::get_content() +{ + return file_content; +} + +void FileEntry::clear_content() +{ + file_content.clear(); + file_content.shrink_to_fit(); +} + +} \ No newline at end of file diff --git a/src/fs/FileEntry.hpp b/src/fs/FileEntry.hpp index 763072f..4d02197 100644 --- a/src/fs/FileEntry.hpp +++ b/src/fs/FileEntry.hpp @@ -12,7 +12,14 @@ class FileEntry { fs::directory_entry file_entry; fs::path relative_path; + bool content_loaded(); + std::string load_content(); + std::string get_content(); + void clear_content(); + private: + + std::string file_content; }; } \ No newline at end of file diff --git a/src/fs/fs.cpp b/src/fs/fs.cpp index d7aaa92..cf34143 100644 --- a/src/fs/fs.cpp +++ b/src/fs/fs.cpp @@ -12,6 +12,8 @@ std::vector kc::walk_dir(std::string dir) for (auto const& dir_entry : fs::recursive_directory_iterator(base_path)) { + if (dir_entry.is_directory()) continue; + auto excluded = false; auto dir_entry_path = dir_entry.path(); auto dir_entry_path_string = dir_entry_path.string(); diff --git a/src/fs/fs.hpp b/src/fs/fs.hpp index bc23cdb..95c1e28 100644 --- a/src/fs/fs.hpp +++ b/src/fs/fs.hpp @@ -2,6 +2,7 @@ #include #include +#include #include "FileEntry.hpp" diff --git a/src/main.cpp b/src/main.cpp index a1c36fc..4ab07fb 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -25,6 +25,6 @@ int main(int argc, const char *argv[]) { auto env_path = (*config)["path"].as(); BOOST_LOG_TRIVIAL(info) << "Loading knowledge base from " << env_path; - kc::walk_dir(env_path); + auto entries = kc::walk_dir(env_path); } } \ No newline at end of file