summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Companion.cpp14
-rw-r--r--src/Companion.h2
-rw-r--r--src/main.cpp3
3 files changed, 19 insertions, 0 deletions
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);
});