diff options
| -rw-r--r-- | .gitignore | 1 | ||||
| -rw-r--r-- | src/Companion.cpp | 14 | ||||
| -rw-r--r-- | src/Companion.h | 2 | ||||
| -rw-r--r-- | src/main.cpp | 3 |
4 files changed, 20 insertions, 0 deletions
@@ -15,6 +15,7 @@ code/ .vscode/ tools/ modding/* +.cache # Doxygen output docs/html diff --git a/src/Companion.cpp b/src/Companion.cpp index c4d2979..471d6b8 100644 --- a/src/Companion.cpp +++ b/src/Companion.cpp @@ -1313,6 +1313,20 @@ void Companion::Process() { } if(wrapper != nullptr) { + // Add additional files specified by the user + for (const auto& filePath : this->gAdditionalFiles) { + std::ifstream input(filePath, std::ios::binary); + if (input.is_open()) { + std::vector<char> data((std::istreambuf_iterator<char>(input)), std::istreambuf_iterator<char>()); + input.close(); + std::string filename = fs::path(filePath).filename().string(); + wrapper->AddFile(filename, data); + SPDLOG_INFO("Added additional file: {}", filename); + } else { + SPDLOG_WARN("Could not open additional file: {}", filePath); + } + } + SPDLOG_CRITICAL("Writing version file"); wrapper->AddFile("version", vWriter.ToVector()); vWriter.Close(); diff --git a/src/Companion.h b/src/Companion.h index 2b6fc09..40a664e 100644 --- a/src/Companion.h +++ b/src/Companion.h @@ -185,6 +185,7 @@ public: std::string RelativePathToSrcDir(const std::string& path) const; std::string RelativePathToDestDir(const std::string& path) const; void RegisterCompanionFile(const std::string path, std::vector<char> data); + void SetAdditionalFiles(const std::vector<std::string>& files) { this->gAdditionalFiles = files; } TorchConfig& GetConfig() { return this->gConfig; } BinaryWrapper* GetCurrentWrapper() { return this->gCurrentWrapper; } @@ -226,6 +227,7 @@ private: std::unordered_map<std::string, std::vector<char>> gCompanionFiles; std::unordered_map<std::string, std::vector<ParseResultData>> gParseResults; + std::vector<std::string> gAdditionalFiles; std::unordered_map<std::string, std::string> gModdedAssetPaths; std::variant<std::vector<std::string>, std::string> gWriteOrder; diff --git a/src/main.cpp b/src/main.cpp index c5de09b..4dba674 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -20,6 +20,7 @@ int main(int argc, char *argv[]) { bool debug = false; std::string srcdir; std::string destdir; + std::vector<std::string> additionalFiles; app.require_subcommand(); @@ -43,9 +44,11 @@ int main(int argc, char *argv[]) { o2r->add_flag("-v,--verbose", debug, "Verbose Debug Mode"); o2r->add_option("-s,--srcdir", srcdir, "Set source directory to locate config.yml and asset metadata for processing")->check(CLI::ExistingDirectory); o2r->add_option("-d,--destdir", destdir, "Set destination directory for export"); + o2r->add_option("-a,--additional-files", additionalFiles, "Additional files to include in the o2r archive (e.g., mods.toml)")->check(CLI::ExistingFile); o2r->parse_complete_callback([&] { const auto instance = Companion::Instance = new Companion(filename, ArchiveType::O2R, debug, srcdir, destdir); + instance->SetAdditionalFiles(additionalFiles); instance->Init(ExportType::Binary); }); |
