10b57cec5SDimitry Andric //===- DirectoryScanner.h - Utility functions for DirectoryWatcher --------===// 20b57cec5SDimitry Andric // 30b57cec5SDimitry Andric // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. 40b57cec5SDimitry Andric // See https://llvm.org/LICENSE.txt for license information. 50b57cec5SDimitry Andric // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception 60b57cec5SDimitry Andric // 70b57cec5SDimitry Andric //===----------------------------------------------------------------------===// 80b57cec5SDimitry Andric 90b57cec5SDimitry Andric #include "clang/DirectoryWatcher/DirectoryWatcher.h" 100b57cec5SDimitry Andric #include "llvm/Support/FileSystem.h" 11*bdd1243dSDimitry Andric #include <optional> 120b57cec5SDimitry Andric #include <string> 130b57cec5SDimitry Andric #include <vector> 140b57cec5SDimitry Andric 150b57cec5SDimitry Andric namespace clang { 160b57cec5SDimitry Andric 170b57cec5SDimitry Andric /// Gets names (filenames) of items in directory at \p Path. 180b57cec5SDimitry Andric /// \returns empty vector if \p Path is not a directory, doesn't exist or can't 190b57cec5SDimitry Andric /// be read from. 200b57cec5SDimitry Andric std::vector<std::string> scanDirectory(llvm::StringRef Path); 210b57cec5SDimitry Andric 220b57cec5SDimitry Andric /// Create event with EventKind::Added for every element in \p Scan. 230b57cec5SDimitry Andric std::vector<DirectoryWatcher::Event> 240b57cec5SDimitry Andric getAsFileEvents(const std::vector<std::string> &Scan); 250b57cec5SDimitry Andric 260b57cec5SDimitry Andric /// Gets status of file (or directory) at \p Path. 27*bdd1243dSDimitry Andric /// \returns std::nullopt if \p Path doesn't exist or can't get the status. 28*bdd1243dSDimitry Andric std::optional<llvm::sys::fs::file_status> getFileStatus(llvm::StringRef Path); 290b57cec5SDimitry Andric 300b57cec5SDimitry Andric } // namespace clang 31