New File tools

This commit is contained in:
2023-02-08 20:05:41 -08:00
parent c3dbacde76
commit bbe30d9253
13 changed files with 210 additions and 73 deletions

View File

@ -11,7 +11,6 @@ target_sources(languagegen
${DAWN_SHARED_SOURCES}
LanguageGen.cpp
../../util/DawnTool.cpp
../../util/XmlNew.cpp
../../util/file.cpp
../../util/csv.cpp
../../util/xml.cpp
@ -24,6 +23,11 @@ target_include_directories(languagegen
${CMAKE_CURRENT_LIST_DIR}
)
target_compile_definitions(languagegen
PUBLIC
DAWN_TOOL_INSTANCE=LanguageGen
DAWN_TOOL_HEADER="LanguageGen.hpp"
)
target_link_libraries(languagegen
PUBLIC

View File

@ -9,36 +9,19 @@
using namespace Dawn;
LanguageGen::LanguageGen(const int argc, const char *argv[]) :
DawnTool(argc, argv)
{
}
int32_t LanguageGen::start() {
if(this->args.size() != 3) {
std::cout << "Invalid number of arguments provided to language gen!" << std::endl;
return 1;
}
auto fileInName = fileNormalizeSlashesNew(this->args[1]);
FILE *fileIn = fopen(fileInName.c_str(), "rb");
if(fileIn == NULL) {
std::cout << "Failed to open input file " << fileInName << std::endl;
auto fileIn = File(this->args[1]);
std::string buffer;
if(!fileIn.readString(&buffer)) {
std::cout << "Failed to open/read input file " << fileIn.filename << std::endl;
return 1;
}
auto size = assetReadString(fileIn, NULL);
char *buffer = (char *)malloc(sizeof(char) * size);
if(buffer == NULL) {
std::cout << "Failed to allocate memory for locale string XML" << std::endl;
fclose(fileIn);
return 1;
}
assetReadString(fileIn, buffer);
fclose(fileIn);
auto xml = Xml::load(std::string(buffer));
free(buffer);
auto xml = Xml::load(buffer);
// Begin parsing. Start by looking for the <language> tags
std::vector<std::string> languages;
@ -102,21 +85,15 @@ int32_t LanguageGen::start() {
it2++;
}
std::string filenameOut = this->args[2];
filenameOut += "/language_" + it->first + ".language";
filenameOut = fileNormalizeSlashesNew(filenameOut);
fileMkdirp((char *)filenameOut.c_str());
FILE *fileOut = fopen(filenameOut.c_str(), "wb");
if(fileOut == NULL) {
std::cout << "Failed to create output file " << filenameOut << std::endl;
File fileOut(this->args[2] + "/language_" + it->first + ".language");
if(!fileOut.mkdirp()) {
std::cout << "Failed to create output folder" << std::endl;
}
if(!fileOut.writeString(bufferOut)) {
std::cout << "Failed to write to output file " << fileOut.filename << std::endl;
return 1;
}
const char_t *strOut = bufferOut.c_str();
fwrite(strOut, sizeof(char_t), strlen(strOut), fileOut);
fclose(fileOut);
auto it3 = keys.begin();
while(it3 != keys.end()) {
auto key = *it3;
@ -190,8 +167,4 @@ int32_t LanguageGen::parseGroup(
}
return 0;
}
int main(const int argc, const char *argv[]) {
return (LanguageGen(argc, argv)).start();
}

View File

@ -5,7 +5,8 @@
#pragma once
#include "util/DawnTool.hpp"
#include "util/XmlNew.hpp"
#include "util/Xml.hpp"
#include "util/File.hpp"
namespace Dawn {
struct LanguageString {
@ -28,8 +29,6 @@ namespace Dawn {
);
public:
LanguageGen(const int argc, const char *argv[]);
int32_t start() override;
};
}