From f6f6959374c005bf26bf702179e2b69a6eb295c8 Mon Sep 17 00:00:00 2001 From: KiritoDv Date: Mon, 26 Jan 2026 18:44:58 -0600 Subject: Added support for writing file versioning use for ports --- src/Companion.cpp | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) (limited to 'src/Companion.cpp') diff --git a/src/Companion.cpp b/src/Companion.cpp index 2ef7cf2..be80ee5 100644 --- a/src/Companion.cpp +++ b/src/Companion.cpp @@ -1335,6 +1335,11 @@ void Companion::Process() { } } + if(!this->gVersion.empty()) { + auto data = this->ParseVersionString(this->gVersion); + wrapper->AddFile("assetVersion", data); + } + SPDLOG_CRITICAL("Writing version file"); wrapper->AddFile("version", vWriter.ToVector()); vWriter.Close(); @@ -1359,8 +1364,7 @@ void Companion::Process() { Instance = nullptr; } -void Companion::Pack(const std::string& folder, const std::string& output, const ArchiveType otrMode) { - +void Companion::Pack(const std::string& folder, const std::string& output, const ArchiveType otrMode, const std::string& version) { spdlog::set_level(spdlog::level::debug); spdlog::set_pattern("[%Y-%m-%d %H:%M:%S.%e] [%l] %v"); @@ -1405,6 +1409,12 @@ void Companion::Pack(const std::string& folder, const std::string& output, const SPDLOG_CRITICAL("> Added {}", normalized); } + if(!version.empty()) { + SPDLOG_CRITICAL("Adding version file"); + auto data = this->ParseVersionString(version); + wrapper->AddFile("assetVersion", data); + } + auto end = duration_cast(system_clock::now().time_since_epoch()); SPDLOG_CRITICAL("Done! Took {}ms", end.count() - start.count()); SPDLOG_CRITICAL("Exported to {}", output); @@ -1766,3 +1776,20 @@ std::optional Companion::AddAsset(YAML::Node asset) { return std::nullopt; } + +std::vector Companion::ParseVersionString(const std::string& version) { + uint16_t major = 0; + uint16_t minor = 0; + uint16_t patch = 0; + + std::sscanf(version.c_str(), "%hu.%hu.%hu", &major, &minor, &patch); + + auto wv = LUS::BinaryWriter(); + wv.SetEndianness(Torch::Endianness::Big); + wv.Write(major); + wv.Write(minor); + wv.Write(patch); + wv.Close(); + + return wv.ToVector(); +} \ No newline at end of file -- cgit v1.2.3