aboutsummaryrefslogtreecommitdiff
path: root/include/wanda/filesystem.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'include/wanda/filesystem.hpp')
-rw-r--r--include/wanda/filesystem.hpp39
1 files changed, 39 insertions, 0 deletions
diff --git a/include/wanda/filesystem.hpp b/include/wanda/filesystem.hpp
new file mode 100644
index 0000000..1975bc5
--- /dev/null
+++ b/include/wanda/filesystem.hpp
@@ -0,0 +1,39 @@
+/**
+ * @file filesystem.hpp
+ * @author Felix Morgner (felix.morgner@gmail.com)
+ * @since 1.0.0
+ */
+
+#ifndef WANDA_FILESYSTEM_HPP
+#define WANDA_FILESYSTEM_HPP
+
+#include <filesystem>
+#include <optional>
+#include <vector>
+
+namespace wanda
+{
+ /**
+ * @brief Covenience alias for path lists
+ */
+ using path_list = std::vector<std::filesystem::path>;
+
+ /**
+ * @brief The default scan filter, allowing only regular files to pass
+ */
+ constexpr inline auto default_filter = [](std::filesystem::path const & path) {
+ return is_regular_file(path);
+ };
+
+ /**
+ * @brief Scan the given folder for files
+ */
+ std::optional<path_list> scan(std::filesystem::path folder, bool(filter)(std::filesystem::path const &) = default_filter);
+
+ /**
+ * @brief Pick a random path from the given list
+ */
+ std::filesystem::path random_pick(path_list const & paths);
+} // namespace wanda
+
+#endif \ No newline at end of file