22 void FileSystemMethods::registerConstants(
MinitScript* minitScript) {
25 void FileSystemMethods::registerMethods(
MinitScript* minitScript) {
33 ScriptFileSystemComposeFileName(
MinitScript* minitScript):
36 { .type = MinitScript::TYPE_STRING, .name =
"pathName", .optional =
false, .reference =
false, .nullable =
false },
37 { .type = MinitScript::TYPE_STRING, .name =
"fileName", .optional =
false, .reference =
false, .nullable =
false }
39 MinitScript::TYPE_STRING
41 minitScript(minitScript) {
44 const string getMethodName()
override {
45 return "filesystem.composeURI";
50 if (arguments.size() == 2 &&
51 MinitScript::getStringValue(arguments, 0, pathName) ==
true &&
52 MinitScript::getStringValue(arguments, 1, fileName) ==
true) {
59 minitScript->
registerMethod(
new ScriptFileSystemComposeFileName(minitScript));
67 ScriptFileSystemGetFileSize(
MinitScript* minitScript):
70 { .type = MinitScript::TYPE_STRING, .name =
"pathName", .optional =
false, .reference =
false, .nullable =
false },
71 { .type = MinitScript::TYPE_STRING, .name =
"fileName", .optional =
false, .reference =
false, .nullable =
false }
73 MinitScript::TYPE_INTEGER,
76 minitScript(minitScript) {
79 const string getMethodName()
override {
80 return "filesystem.getFileSize";
85 if (arguments.size() == 2 &&
86 MinitScript::getStringValue(arguments, 0, pathName) ==
true &&
87 MinitScript::getStringValue(arguments, 1, fileName) ==
true) {
98 minitScript->
registerMethod(
new ScriptFileSystemGetFileSize(minitScript));
106 ScriptFileSystemGetContentAsString(
MinitScript* minitScript):
109 { .type = MinitScript::TYPE_STRING, .name =
"pathName", .optional =
false, .reference =
false, .nullable =
false },
110 { .type = MinitScript::TYPE_STRING, .name =
"fileName", .optional =
false, .reference =
false, .nullable =
false }
112 MinitScript::TYPE_STRING,
115 minitScript(minitScript) {
118 const string getMethodName()
override {
119 return "filesystem.getContentAsString";
124 if (arguments.size() == 2 &&
125 MinitScript::getStringValue(arguments, 0, pathName) ==
true &&
126 MinitScript::getStringValue(arguments, 1, fileName) ==
true) {
137 minitScript->
registerMethod(
new ScriptFileSystemGetContentAsString(minitScript));
145 ScriptFileSystemSetContentFromString(
MinitScript* minitScript):
148 { .type = MinitScript::TYPE_STRING, .name =
"pathName", .optional =
false, .reference =
false, .nullable =
false },
149 { .type = MinitScript::TYPE_STRING, .name =
"fileName", .optional =
false, .reference =
false, .nullable =
false },
150 { .type = MinitScript::TYPE_STRING, .name =
"content", .optional =
false, .reference =
false, .nullable =
false },
152 MinitScript::TYPE_BOOLEAN
154 minitScript(minitScript) {
157 const string getMethodName()
override {
158 return "filesystem.setContentFromString";
164 if (arguments.size() == 3 &&
165 MinitScript::getStringValue(arguments, 0, pathName) ==
true &&
166 MinitScript::getStringValue(arguments, 1, fileName) ==
true &&
167 MinitScript::getStringValue(arguments, 2, content) ==
true) {
180 minitScript->
registerMethod(
new ScriptFileSystemSetContentFromString(minitScript));
188 ScriptFileSystemGetContent(
MinitScript* minitScript):
191 { .type = MinitScript::TYPE_STRING, .name =
"pathName", .optional =
false, .reference =
false, .nullable =
false },
192 { .type = MinitScript::TYPE_STRING, .name =
"fileName", .optional =
false, .reference =
false, .nullable =
false }
194 MinitScript::TYPE_BYTEARRAY,
197 minitScript(minitScript) {
200 const string getMethodName()
override {
201 return "filesystem.getContent";
206 if (arguments.size() == 2 &&
207 MinitScript::getStringValue(arguments, 0, pathName) ==
true &&
208 MinitScript::getStringValue(arguments, 1, fileName) ==
true) {
210 vector<uint8_t> content;
221 minitScript->
registerMethod(
new ScriptFileSystemGetContent(minitScript));
229 ScriptFileSystemSetContent(
MinitScript* minitScript):
232 { .type = MinitScript::TYPE_STRING, .name =
"pathName", .optional =
false, .reference =
false, .nullable =
false },
233 { .type = MinitScript::TYPE_STRING, .name =
"fileName", .optional =
false, .reference =
false, .nullable =
false },
234 { .type = MinitScript::TYPE_BYTEARRAY, .name =
"content", .optional =
false, .reference =
false, .nullable =
false },
236 MinitScript::TYPE_BOOLEAN
238 minitScript(minitScript) {
241 const string getMethodName()
override {
242 return "filesystem.setContent";
247 if (arguments.size() == 3 &&
248 MinitScript::getStringValue(arguments, 0, pathName,
false) ==
true &&
249 MinitScript::getStringValue(arguments, 1, fileName,
false) ==
true) {
251 auto contentPtr = arguments[2].getByteArrayPointer();
252 if (contentPtr ==
nullptr)
throw _ExceptionBase(
"Empty content byte array provided");
264 minitScript->
registerMethod(
new ScriptFileSystemSetContent(minitScript));
272 ScriptFileSystemGetContentAsStringArray(
MinitScript* minitScript):
275 { .type = MinitScript::TYPE_STRING, .name =
"pathName", .optional =
false, .reference =
false, .nullable =
false },
276 { .type = MinitScript::TYPE_STRING, .name =
"fileName", .optional =
false, .reference =
false, .nullable =
false },
278 MinitScript::TYPE_ARRAY,
281 minitScript(minitScript) {
284 const string getMethodName()
override {
285 return "filesystem.getContentAsStringArray";
290 if (arguments.size() == 2 &&
291 MinitScript::getStringValue(arguments, 0, pathName) ==
true &&
292 MinitScript::getStringValue(arguments, 1, fileName) ==
true) {
293 vector<string> contentAsStringArray;
297 returnValue.
setType(MinitScript::TYPE_ARRAY);
298 for (
const auto& contentAsStringArrayEntry: contentAsStringArray) {
309 minitScript->
registerMethod(
new ScriptFileSystemGetContentAsStringArray(minitScript));
317 ScriptFileSystemSetContentFromStringArray(
MinitScript* minitScript):
320 { .type = MinitScript::TYPE_STRING, .name =
"pathName", .optional =
false, .reference =
false, .nullable =
false },
321 { .type = MinitScript::TYPE_STRING, .name =
"fileName", .optional =
false, .reference =
false, .nullable =
false },
322 { .type = MinitScript::TYPE_ARRAY, .name =
"content", .optional =
false, .reference =
false, .nullable =
false },
324 MinitScript::TYPE_BOOLEAN
326 minitScript(minitScript) {
329 const string getMethodName()
override {
330 return "filesystem.setContentFromStringArray";
335 if (arguments.size() == 3 &&
336 MinitScript::getStringValue(arguments, 0, pathName) ==
true &&
337 MinitScript::getStringValue(arguments, 1, fileName) ==
true &&
338 arguments[2].getType() == MinitScript::TYPE_ARRAY) {
339 vector<string> contentAsStringArray;
340 auto arrayPointer = arguments[2].getArrayPointer();
341 if (arrayPointer !=
nullptr)
for (
const auto arrayEntry: *arrayPointer) contentAsStringArray.push_back(arrayEntry->getValueAsString());
354 minitScript->
registerMethod(
new ScriptFileSystemSetContentFromStringArray(minitScript));
365 { .type = MinitScript::TYPE_STRING, .name =
"uri", .optional =
false, .reference =
false, .nullable =
false },
367 MinitScript::TYPE_BOOLEAN,
370 minitScript(minitScript) {
373 const string getMethodName()
override {
374 return "filesystem.isPath";
378 if (arguments.size() == 1 &&
379 MinitScript::getStringValue(arguments, 0, uri,
false) ==
true) {
390 minitScript->
registerMethod(
new ScriptFileSystemIsPath(minitScript));
401 { .type = MinitScript::TYPE_STRING, .name =
"uri", .optional =
false, .reference =
false, .nullable =
false },
403 MinitScript::TYPE_BOOLEAN
405 minitScript(minitScript) {
408 const string getMethodName()
override {
409 return "filesystem.isDrive";
413 if (arguments.size() == 1 &&
414 MinitScript::getStringValue(arguments, 0, uri) ==
true) {
421 minitScript->
registerMethod(
new ScriptFileSystemIsDrive(minitScript));
428 ScriptFileSystemFileExists(
MinitScript* minitScript):
431 { .type = MinitScript::TYPE_STRING, .name =
"uri", .optional =
false, .reference =
false, .nullable =
false },
433 MinitScript::TYPE_BOOLEAN,
436 minitScript(minitScript) {
439 const string getMethodName()
override {
440 return "filesystem.exists";
444 if (arguments.size() == 1 &&
445 MinitScript::getStringValue(arguments, 0, uri) ==
true) {
456 minitScript->
registerMethod(
new ScriptFileSystemFileExists(minitScript));
464 ScriptFileSystemGetCanonicalPath(
MinitScript* minitScript):
467 { .type = MinitScript::TYPE_STRING, .name =
"pathName", .optional =
false, .reference =
false, .nullable =
false },
468 { .type = MinitScript::TYPE_STRING, .name =
"fileName", .optional =
false, .reference =
false, .nullable =
false }
470 MinitScript::TYPE_STRING,
473 minitScript(minitScript) {
476 const string getMethodName()
override {
477 return "filesystem.getCanonicalURI";
482 if (arguments.size() == 2 &&
483 MinitScript::getStringValue(arguments, 0, pathName) ==
true &&
484 MinitScript::getStringValue(arguments, 1, fileName) ==
true) {
495 minitScript->
registerMethod(
new ScriptFileSystemGetCanonicalPath(minitScript));
503 ScriptFileSystemGetCurrentWorkingPathName(
MinitScript* minitScript):
506 MinitScript::TYPE_STRING,
509 minitScript(minitScript) {
512 const string getMethodName()
override {
513 return "filesystem.getCurrentWorkingPathName";
516 if (arguments.size() == 0) {
527 minitScript->
registerMethod(
new ScriptFileSystemGetCurrentWorkingPathName(minitScript));
535 ScriptFileSystemChangePath(
MinitScript* minitScript):
538 { .type = MinitScript::TYPE_STRING, .name =
"pathName", .optional =
false, .reference =
false, .nullable =
false },
540 MinitScript::TYPE_BOOLEAN
542 minitScript(minitScript) {
545 const string getMethodName()
override {
546 return "filesystem.changePath";
550 if (arguments.size() == 1 &&
551 MinitScript::getStringValue(arguments, 0, pathName) ==
true) {
564 minitScript->
registerMethod(
new ScriptFileSystemChangePath(minitScript));
572 ScriptFileSystemGetFileName(
MinitScript* minitScript):
575 { .type = MinitScript::TYPE_STRING, .name =
"uri", .optional =
false, .reference =
false, .nullable =
false }
577 MinitScript::TYPE_STRING
579 minitScript(minitScript) {
582 const string getMethodName()
override {
583 return "filesystem.getFileName";
587 if (arguments.size() == 1 &&
588 MinitScript::getStringValue(arguments, 0, uri) ==
true) {
595 minitScript->
registerMethod(
new ScriptFileSystemGetFileName(minitScript));
603 ScriptFileSystemGetPathName(
MinitScript* minitScript):
606 { .type = MinitScript::TYPE_STRING, .name =
"uri", .optional =
false, .reference =
false, .nullable =
false }
608 MinitScript::TYPE_STRING
610 minitScript(minitScript) {
613 const string getMethodName()
override {
614 return "filesystem.getPathName";
618 if (arguments.size() == 1 &&
619 MinitScript::getStringValue(arguments, 0, uri) ==
true) {
626 minitScript->
registerMethod(
new ScriptFileSystemGetPathName(minitScript));
634 ScriptFileSystemRemoveFileExtension(
MinitScript* minitScript):
637 { .type = MinitScript::TYPE_STRING, .name =
"fileName", .optional =
false, .reference =
false, .nullable =
false }
639 MinitScript::TYPE_STRING
641 minitScript(minitScript) {
644 const string getMethodName()
override {
645 return "filesystem.removeFileExtension";
649 if (arguments.size() == 1 &&
650 MinitScript::getStringValue(arguments, 0, fileName) ==
true) {
657 minitScript->
registerMethod(
new ScriptFileSystemRemoveFileExtension(minitScript));
665 ScriptFileSystemRemoveFile(
MinitScript* minitScript):
668 { .type = MinitScript::TYPE_STRING, .name =
"pathName", .optional =
false, .reference =
false, .nullable =
false },
669 { .type = MinitScript::TYPE_STRING, .name =
"fileName", .optional =
false, .reference =
false, .nullable =
false },
671 MinitScript::TYPE_BOOLEAN
673 minitScript(minitScript) {
676 const string getMethodName()
override {
677 return "filesystem.removeFile";
682 if (arguments.size() == 2 &&
683 MinitScript::getStringValue(arguments, 0, pathName) ==
true &&
684 MinitScript::getStringValue(arguments, 1, fileName) ==
true) {
697 minitScript->
registerMethod(
new ScriptFileSystemRemoveFile(minitScript));
705 ScriptFileSystemCreatePath(
MinitScript* minitScript):
708 { .type = MinitScript::TYPE_STRING, .name =
"pathName", .optional =
false, .reference =
false, .nullable =
false },
710 MinitScript::TYPE_BOOLEAN
712 minitScript(minitScript) {
715 const string getMethodName()
override {
716 return "filesystem.createPath";
720 if (arguments.size() == 1 &&
721 MinitScript::getStringValue(arguments, 0, pathName) ==
true) {
734 minitScript->
registerMethod(
new ScriptFileSystemCreatePath(minitScript));
742 ScriptFileSystemRemovePath(
MinitScript* minitScript):
745 { .type = MinitScript::TYPE_STRING, .name =
"pathName", .optional =
false, .reference =
false, .nullable =
false },
746 { .type = MinitScript::TYPE_STRING, .name =
"recursive", .optional =
false, .reference =
false, .nullable =
false },
748 MinitScript::TYPE_BOOLEAN
750 minitScript(minitScript) {
753 const string getMethodName()
override {
754 return "filesystem.removePath";
759 if (arguments.size() == 2 &&
760 MinitScript::getStringValue(arguments, 0, pathName) ==
true &&
761 MinitScript::getBooleanValue(arguments, 1, recursive) ==
true) {
774 minitScript->
registerMethod(
new ScriptFileSystemRemovePath(minitScript));
785 { .type = MinitScript::TYPE_STRING, .name =
"fileNameFrom", .optional =
false, .reference =
false, .nullable =
false },
786 { .type = MinitScript::TYPE_STRING, .name =
"fileNameTo", .optional =
false, .reference =
false, .nullable =
false },
788 MinitScript::TYPE_BOOLEAN
790 minitScript(minitScript) {
793 const string getMethodName()
override {
794 return "filesystem.rename";
799 if (arguments.size() == 2 &&
800 MinitScript::getStringValue(arguments, 0, fileNameFrom) ==
true &&
801 MinitScript::getStringValue(arguments, 1, fileNameTo) ==
true) {
814 minitScript->
registerMethod(
new ScriptFileSystemRename(minitScript));
825 { .type = MinitScript::TYPE_STRING, .name =
"uriFrom", .optional =
false, .reference =
false, .nullable =
false },
826 { .type = MinitScript::TYPE_STRING, .name =
"uriTo", .optional =
false, .reference =
false, .nullable =
false },
828 MinitScript::TYPE_BOOLEAN
830 minitScript(minitScript) {
833 const string getMethodName()
override {
834 return "filesystem.move";
839 if (arguments.size() == 2 &&
840 MinitScript::getStringValue(arguments, 0, fileNameFrom) ==
true &&
841 MinitScript::getStringValue(arguments, 1, fileNameTo) ==
true) {
854 minitScript->
registerMethod(
new ScriptFileSystemMove(minitScript));
865 { .type = MinitScript::TYPE_STRING, .name =
"pathName", .optional =
false, .reference =
false, .nullable =
false },
867 MinitScript::TYPE_ARRAY,
870 minitScript(minitScript) {
873 const string getMethodName()
override {
874 return "filesystem.list";
878 if (arguments.size() == 1 &&
879 MinitScript::getStringValue(arguments, 0, pathName,
false) ==
true) {
881 vector<string> files;
884 returnValue.
setType(MinitScript::TYPE_ARRAY);
885 for (
const auto& file: files) {
896 minitScript->
registerMethod(
new ScriptFileSystemList(minitScript));
minitscript::utilities::ExceptionBase _ExceptionBase
minitscript::utilities::Exception _Exception
#define MINITSCRIPT_METHODUSAGE_COMPLAIN(methodName)
MinitScript script file system methods.
void pushArrayEntry(const Variable &value)
Push entry to array.
void setType(VariableType newType)
Set type.
void setValue(const Variable &variable)
Set value from given variable into variable.
void registerMethod(Method *method)
Register method.
static const string removeFileExtension(const string &fileName)
Remove file extension, e.g.
static bool isDrive(const string &uri)
Check if file is a drive (applies to Microsoft Windows only)
static void setContentFromString(const string &pathName, const string &fileName, const string &content)
Set content from string.
static const string composeURI(const string &pathName, const string &fileName)
Compose URI from path name and file name.
static const string getPathName(const string &uri)
Get path name.
static const string getCanonicalURI(const string &pathName, const string &fileName)
Get canonical URI from given path name and file name.
static void createPath(const string &pathName)
Create path.
static void list(const string &pathName, vector< string > &files, FileNameFilter *filter=nullptr, bool addDrives=false)
List files for given path and filter by a file name filter if not null.
static void changePath(const string &pathName)
Change path.
static void removePath(const string &pathName, bool recursive)
Remove path.
static void setContent(const string &pathName, const string &fileName, const vector< uint8_t > &content)
Set file content.
static void getContent(const string &pathName, const string &fileName, vector< uint8_t > &content)
Get file content.
static void setContentFromStringArray(const string &pathName, const string &fileName, const vector< string > &content)
Set file content as string array.
static void removeFile(const string &pathName, const string &fileName)
Remove file.
static uint64_t getFileSize(const string &pathName, const string &fileName)
Return file size of given file.
static void getContentAsStringArray(const string &pathName, const string &fileName, vector< string > &content)
Get file content as string array.
static const string getFileName(const string &uri)
Get file name.
static bool isPath(const string &uri)
Check if file is a path.
static bool exists(const string &uri)
Check if file exists.
static const string getCurrentWorkingPathName()
Get current working path name.
static const string getContentAsString(const string &pathName, const string &fileName)
Get content as string.
static void rename(const string &fileNameFrom, const string &fileNameTo)
Rename file.
static void printLine()
Print newline to console.
std::exception Exception
Exception base class.