From b7db050a5cd857848d900ef3eca9ada0f705e948 Mon Sep 17 00:00:00 2001 From: Dominic Masters Date: Tue, 14 Feb 2023 23:03:08 -0800 Subject: [PATCH] Making progress on tools still --- .../generatedlanguages/GeneratedLanguages.cpp | 59 +++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 src/dawntools/tools/generatedlanguages/GeneratedLanguages.cpp diff --git a/src/dawntools/tools/generatedlanguages/GeneratedLanguages.cpp b/src/dawntools/tools/generatedlanguages/GeneratedLanguages.cpp new file mode 100644 index 00000000..d9c55bea --- /dev/null +++ b/src/dawntools/tools/generatedlanguages/GeneratedLanguages.cpp @@ -0,0 +1,59 @@ +/** + * Copyright (c) 2021 Dominic Masters + * + * This software is released under the MIT License. + * https://opensource.org/licenses/MIT + */ + +#include "GeneratedLanguages.hpp" + +using namespace Dawn; + +std::vector GeneratedLanguages::getRequiredFlags() { + return std::vector{ "input", "output" }; +} + +int32_t GeneratedLanguages::start() { + // Generate list of languages + std::string inNormal = File::normalizeSlashes(flags["input"]); + std::string error; + std::vector files; + int32_t ret = this->scanDir(inNormal, &error, &files); + if(ret != 0) { + std::cout << error << std::endl; + return ret; + } + + // Now process each language file + + + return 0; +} + +int32_t GeneratedLanguages::scanDir( + std::string dir, + std::string *error, + std::vector *files +) { + DIR* handle = opendir(dir.c_str()); + if(ENOENT == errno || !handle) { + *error = "Input directory \"" + dir + "\" does not exist"; + return 1; + } + + struct dirent *entry; + while((entry=readdir(handle))) { + std::string name(entry->d_name); + if(name.size() == 0 || name[0] == '.') continue; + auto path = dir + FILE_PATH_SEP + entry->d_name; + if(entry->d_type == DT_DIR) { + auto ret = this->scanDir(dir, error, files); + if(ret != 0) return ret; + } else if(entry->d_type == DT_REG) { + files->push_back(path); + } + } + + closedir(handle); + return 0; +} \ No newline at end of file