From 72e16cb2851785f847b494afc8206265cdb9d9e4 Mon Sep 17 00:00:00 2001 From: Gary Talent Date: Sun, 17 May 2026 14:53:42 -0500 Subject: [PATCH] [studio] Change output of Claw OC files to make them recognizable as test files --- .../subcommands/change-format/change-format.cpp | 17 +++++++++++++---- .../studio/modlib/include/studio/project.hpp | 2 +- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/olympic/studio/applib/src/subcommands/change-format/change-format.cpp b/src/olympic/studio/applib/src/subcommands/change-format/change-format.cpp index 84d459f3..ba2c9d2e 100644 --- a/src/olympic/studio/applib/src/subcommands/change-format/change-format.cpp +++ b/src/olympic/studio/applib/src/subcommands/change-format/change-format.cpp @@ -18,9 +18,18 @@ static ox::Error convertFile( ox::ClawFormat const fmt) noexcept { ox::Buffer buff; ox::ModelObject obj; + ox::UUID uuid; OX_RETURN_ERROR(fs.read(path).moveTo(buff).reoriginate(1, "unable to read file")); + OX_RETURN_ERROR(keel::readUuidHeader(buff).moveTo(uuid)); OX_RETURN_ERROR(keel::readAsset(ts, buff).moveTo(obj).reoriginate(1, "unable to parse file")); - OX_RETURN_ERROR(ox::writeClaw(obj, fmt).moveTo(buff)); + buff.clear(); + ox::BufferWriter wrtr{&buff}; + OX_RETURN_ERROR(keel::writeUuidHeader(wrtr, uuid)); + OX_RETURN_ERROR(ox::writeClaw(obj, wrtr, fmt)); + if (fmt == ox::ClawFormat::Organic) { + *buff.back().value = '\n'; + } + OX_RETURN_ERROR(wrtr.write(buff.data(), buff.size())); OX_RETURN_ERROR(fs.write(path, buff).reoriginate(1, "unable to write file")); return {}; } @@ -31,12 +40,12 @@ static void printUsage() noexcept { [[nodiscard]] static constexpr ox::Result getFmt(ox::StringViewCR fmtStr) noexcept { - if (fmtStr == "mc") { + if (caseInsensitiveEquals(fmtStr, "mc") == 0) { return ox::ClawFormat::Metal; - } else if (fmtStr == "oc") { + } else if (caseInsensitiveEquals(fmtStr, "oc") == 0) { return ox::ClawFormat::Organic; } - return ox::Error(1, "invalid format"); + return ox::Error{1, "invalid format"}; } ox::Error cmdChangeFormat(Project &project, ox::SpanView const args) noexcept { diff --git a/src/olympic/studio/modlib/include/studio/project.hpp b/src/olympic/studio/modlib/include/studio/project.hpp index d43dd70b..a9b8d085 100644 --- a/src/olympic/studio/modlib/include/studio/project.hpp +++ b/src/olympic/studio/modlib/include/studio/project.hpp @@ -165,7 +165,7 @@ template ox::Error Project::writeObj(ox::StringViewCR path, T const &obj, ox::ClawFormat fmt) noexcept { OX_REQUIRE_M(buff, ox::writeClaw(obj, fmt)); if (fmt == ox::ClawFormat::Organic) { - buff.pop_back(); + *buff.back().value = '\n'; } // write to FS OX_RETURN_ERROR(mkdir(parentDir(path)));