Vuo  2.4.0
VuoFileUtilities.hh
Go to the documentation of this file.
1
10#pragma once
11
12#pragma clang diagnostic push
13#pragma clang diagnostic ignored "-Wunreachable-code"
14#include "miniz.h"
15#pragma clang diagnostic pop
16
17#import <string>
18#import <set>
19using namespace std;
20
21#include "VuoHeap.h"
22
27{
28public:
32 class Archive
33 {
34 public:
35 mz_zip_archive *zipArchive;
37 string path;
38 Archive(string path);
39 ~Archive(void);
40 };
41
45 class File
46 {
47 private:
48 string filePath;
49 string dirPath;
50 Archive *archive;
51 int fileDescriptor;
52
53 friend class VuoFileUtilities;
54
55 public:
56 File();
57 File(string dirPath, string filePath);
58 File(Archive *archive, string filePath);
59 ~File(void);
60
62
63 bool isInArchive(void);
64 string getArchivePath(void);
65 string getRelativePath(void);
66 string path();
67 string dir();
68 string basename();
69 string extension();
70
71 bool exists();
72 char * getContentsAsRawData(size_t &numBytes);
73 string getContentsAsString(void);
74
75 bool lockForReading(bool nonBlocking=false) VuoWarnUnusedResult;
76 bool lockForWriting(bool nonBlocking=false) VuoWarnUnusedResult;
77 void unlock(void);
78 };
79
80 static void splitPath(string path, string &dir, string &file, string &extension);
81 static void canonicalizePath(string &path);
82 static bool arePathsEqual(string path1, string path2);
83 static string getAbsolutePath(const string &path);
84 static string makeTmpFile(string file, string extension, string directory="");
85 static string makeTmpDir(string prefix);
86 static string makeTmpDirOnSameVolumeAsPath(string path);
87 static string getTmpDir(void);
88 static void makeDir(string path);
89 static string getVuoFrameworkPath(void);
90 static string getVuoRunnerFrameworkPath(void);
91 static string getCompositionLocalModulesPath(const string &compositionPath);
92 static string getUserModulesPath(void);
93 static string getSystemModulesPath(void);
94 static string getCachePath(void);
95 static bool isInstalledAsModule(const string &path);
96 static void preserveOriginalFileName(string &fileContents, string originalFileName);
97 static size_t getFirstInsertionIndex(string s);
98 static string readStdinToString(void);
99 static string readFileToString(string path);
100 static void writeRawDataToFile(const char *data, size_t numBytes, string file);
101 static void writeStringToFile(string s, string file);
102 static void writeStringToFileSafely(string s, string path);
103 static bool fileExists(string path);
104 static bool dirExists(string path);
105 static bool isSymlink(string path);
106 static bool fileIsReadable(string path);
107 static bool fileContainsReadableData(string path);
108 static void createFile(string path);
109 static void deleteFile(string path);
110 static void deleteDir(string path);
111 static void moveFile(string fromPath, string toPath);
112 static void moveFileToTrash(string filePath);
113 static void copyFile(string fromPath, string toPath, bool preserveMetadata = false);
114 static void copyDirectory(string fromPath, string toPath);
115 static string calculateFileSHA256(const string &path);
116 static unsigned long getFileLastModifiedInSeconds(string path);
117 static unsigned long getSecondsSinceFileLastAccessed(string path);
118 static set<File *> findAllFilesInDirectory(string dirPath, set<string> archiveExtensions = set<string>(), bool shouldSearchRecursively = false);
119 static set<File *> findFilesInDirectory(string dirPath, set<string> extensions, set<string> archiveExtensions = set<string>());
120 static set<File *> findAllFilesInArchive(string archivePath);
121 static set<File *> findFilesInArchive(string archivePath, string dirPath, set<string> extensions);
122 static string getArchiveFileContentsAsString(string archivePath, string filePath);
123 static size_t getAvailableSpaceOnVolumeContainingPath(string path);
124 static void adHocCodeSign(string path, vector<string> environment, string entitlementsPath="");
125
126 static void focusProcess(pid_t pid, bool force=false);
127 static void executeProcess(vector<string> processAndArgs, vector<string> environment = {});
128
129 static bool isCompositionExtension(string extension);
130 static set<string> getCSourceExtensions(void);
131 static bool isCSourceExtension(string extension);
132 static bool isIsfSourceExtension(string extension);
133
134 static string buildModuleCacheDescription(const string &moduleCachePath, bool generated);
135 static string buildModuleCacheIndexPath(const string &moduleCachePath, bool builtIn, bool generated);
136 static string buildModuleCacheDylibPath(const string &moduleCachePath, bool builtIn, bool generated);
137 static string findLatestRevisionOfModuleCacheDylib(const string &moduleCachePath, bool builtIn, bool generated, unsigned long &lastModified);
138 static void deleteOtherRevisionsOfModuleCacheDylib(const string &dylibPath);
139 static bool areDifferentRevisionsOfSameModuleCacheDylib(const string &dylibPath1, const string &dylibPath2);
140};