20 #ifndef BUILDCACHE_FILE_UTILS_HPP_
21 #define BUILDCACHE_FILE_UTILS_HPP_
27 #include <base/time_utils.hpp>
40 tmp_file_t(
const std::string& dir,
const std::string& extension);
45 const std::string& path()
const {
67 std::string m_old_work_dir;
86 const std::string&
path()
const {
144 return m_virtual_path;
153 std::string m_real_path;
154 std::string m_virtual_path;
155 std::string m_invoked_as;
185 std::string
change_extension(
const std::string& path,
const std::string& new_ext);
192 std::string
get_file_part(
const std::string& path,
const bool include_ext =
true);
216 void set_cwd(
const std::string& path);
231 exe_path_t
find_executable(
const std::string& program,
const std::string& exclude = std::string());
267 void remove_file(
const std::string& path,
const bool ignore_errors =
false);
273 void remove_dir(
const std::string& path,
const bool ignore_errors =
false);
289 void move(
const std::string& from_path,
const std::string& to_path);
295 void copy(
const std::string& from_path,
const std::string& to_path);
303 void link_or_copy(
const std::string& from_path,
const std::string& to_path);
308 void touch(
const std::string& path);
314 std::string
read(
const std::string& path);
320 void write(
const std::string& data,
const std::string& path);
328 void write_atomic(
const std::string& data,
const std::string& path);
335 void append(
const std::string& data,
const std::string& path);
344 #endif // BUILDCACHE_FILE_UTILS_HPP_
const std::string & path() const
Definition: file_utils.hpp:86
time::seconds_t access_time() const
Definition: file_utils.hpp:98
bool dir_exists(const std::string &path)
Check if a directory exists.
Definition: file_utils.cpp:630
Information about a file.
Definition: file_utils.hpp:71
std::string append_path(const std::string &path, const std::string &append)
Append two paths.
Definition: file_utils.cpp:250
Path to an executable file.
Definition: file_utils.hpp:127
int64_t seconds_t
Time in seconds since the Unix epoch.
Definition: time_utils.hpp:31
std::string canonicalize_path(const std::string &path)
Get the canonical form of a path.
Definition: file_utils.cpp:261
A helper class for handling temporary files and directories.
Definition: file_utils.hpp:35
std::string human_readable_size(const int64_t byte_size)
Convert a size to a human readable string.
Definition: file_utils.cpp:971
void create_dir_with_parents(const std::string &path)
Create a directory and its parent directories.
Definition: file_utils.cpp:594
void write_atomic(const std::string &data, const std::string &path)
Write a string to a file in an atomic fashion.
Definition: file_utils.cpp:849
void touch(const std::string &path)
Touch the file to update the modification time.
Definition: file_utils.cpp:751
int64_t size() const
Definition: file_utils.hpp:104
void set_cwd(const std::string &path)
Set the current working directory.
Definition: file_utils.cpp:459
The top level namespace.
Definition: compressor.cpp:34
void append(const std::string &data, const std::string &path)
Append a string to a file.
Definition: file_utils.cpp:862
~tmp_file_t()
Remove the temporary file or directory (if any).
Definition: file_utils.cpp:225
const std::string & invoked_as() const
Definition: file_utils.hpp:148
const std::string & virtual_path() const
Definition: file_utils.hpp:143
std::string resolve_path(const std::string &path)
Resolve a path.
Definition: file_utils.cpp:470
std::string get_extension(const std::string &path)
Get the file extension of a path.
Definition: file_utils.cpp:322
bool is_dir() const
Definition: file_utils.hpp:109
void move(const std::string &from_path, const std::string &to_path)
Move a file from an old location to a new location.
Definition: file_utils.cpp:660
tmp_file_t(const std::string &dir, const std::string &extension)
Construct a temporary file name.
Definition: file_utils.cpp:217
void remove_file(const std::string &path, const bool ignore_errors)
Remove an existing file.
Definition: file_utils.cpp:607
void write(const std::string &data, const std::string &path)
Write a string to a file.
Definition: file_utils.cpp:816
std::string get_unique_id()
Create a unique ID string.
Definition: file_utils.cpp:1083
void copy(const std::string &from_path, const std::string &to_path)
Make a full copy of a file.
Definition: file_utils.cpp:679
void create_dir(const std::string &path)
Create a directory.
Definition: file_utils.cpp:583
std::string change_extension(const std::string &path, const std::string &new_ext)
Change the file extension of a path.
Definition: file_utils.cpp:334
std::string get_dir_part(const std::string &path)
Get the directory part of a path.
Definition: file_utils.cpp:355
void link_or_copy(const std::string &from_path, const std::string &to_path)
Make a hard link or a full copy of a file.
Definition: file_utils.cpp:728
std::string get_file_part(const std::string &path, const bool include_ext)
Get the file name part of a path.
Definition: file_utils.cpp:346
A helper class for temporarily changing the current working dir (CWD).
Definition: file_utils.hpp:61
exe_path_t find_executable(const std::string &program, const std::string &exclude)
Find the true path to an executable file.
Definition: file_utils.cpp:512
time::seconds_t modify_time() const
Definition: file_utils.hpp:92
std::string get_user_home_dir()
Get the user home directory.
Definition: file_utils.cpp:396
const std::string & real_path() const
Definition: file_utils.hpp:136
file_info_t get_file_info(const std::string &path)
Get file information about a single file or directory.
Definition: file_utils.cpp:924
bool file_exists(const std::string &path)
Check if a file exists.
Definition: file_utils.cpp:648
std::string get_cwd()
Get the current working directory.
Definition: file_utils.cpp:439
std::string get_temp_dir()
Get a temporary directory for this user and process.
Definition: file_utils.cpp:360
std::string read(const std::string &path)
Read a file into a string.
Definition: file_utils.cpp:775
std::vector< file_info_t > walk_directory(const std::string &path)
Walk a directory and its subdirectories.
Definition: file_utils.cpp:990
void remove_dir(const std::string &path, const bool ignore_errors)
Remove a directory and all its contents (recursively).
Definition: file_utils.cpp:618