From 215e195370054149ddf0c8f8f2fc8ee18229e3bf Mon Sep 17 00:00:00 2001 From: Filipp Pavlov Date: Thu, 24 Sep 2026 13:20:03 +0000 Subject: [PATCH 1/2] Add versioninfo command to the cmfprocessor It prints out file format and cmfprocessor versions in JSON format to be consumed by pipeline tools --- src/processor/CMakeLists.txt | 1 + src/processor/main.cpp | 2 +- src/processor/versioninfo.cpp | 25 +++++++++++++++++++++++++ 3 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 src/processor/versioninfo.cpp diff --git a/src/processor/CMakeLists.txt b/src/processor/CMakeLists.txt index 9294819..468bdc1 100644 --- a/src/processor/CMakeLists.txt +++ b/src/processor/CMakeLists.txt @@ -14,6 +14,7 @@ set(PROCESSOR_SOURCES main.cpp metadata.cpp validate.cpp + versioninfo.cpp gltfconverter.cpp ) diff --git a/src/processor/main.cpp b/src/processor/main.cpp index 11978a2..8b95047 100644 --- a/src/processor/main.cpp +++ b/src/processor/main.cpp @@ -5,7 +5,7 @@ #include #include "cmffile.h" -const char* CMF_PROCESSOR_VERSION = "1.0.0"; +const char* CMF_PROCESSOR_VERSION = "1.1.0"; int main( int argc, char** argv ) diff --git a/src/processor/versioninfo.cpp b/src/processor/versioninfo.cpp new file mode 100644 index 0000000..ffe6e0f --- /dev/null +++ b/src/processor/versioninfo.cpp @@ -0,0 +1,25 @@ +// Copyright © 2026 CCP ehf. + +#include "commands.h" +#include "cmffile.h" + +#include + +extern const char* CMF_PROCESSOR_VERSION; + +namespace +{ +struct NoOptions +{ +}; + +void VersionInfo( CLI::App& app, NoOptions& noOptions ) +{ + app.final_callback( []() { + auto j = nlohmann::json{ { "format", cmf::FILE_VERSION }, { "cmfprocessor", CMF_PROCESSOR_VERSION } }; + printf( "%s\n", j.dump( 4 ).c_str() ); // NOLINT(cppcoreguidelines-pro-type-vararg) + } ); +} +} + +REGISTER_COMMAND( "versioninfo", "Print out CMF version information (file format version and cmfprocessor version) as a JSON object", &VersionInfo ); From 1a7146abdbd6e14d361f0dde9b04cffcbd869db6 Mon Sep 17 00:00:00 2001 From: Filipp Pavlov Date: Thu, 24 Sep 2026 13:34:43 +0000 Subject: [PATCH 2/2] Add documentation --- doc/source/cmfprocessor/cmfprocessor.rst | 3 ++ doc/source/cmfprocessor/versioninfo.rst | 56 ++++++++++++++++++++++++ 2 files changed, 59 insertions(+) create mode 100644 doc/source/cmfprocessor/versioninfo.rst diff --git a/doc/source/cmfprocessor/cmfprocessor.rst b/doc/source/cmfprocessor/cmfprocessor.rst index 462e0d0..80c617b 100644 --- a/doc/source/cmfprocessor/cmfprocessor.rst +++ b/doc/source/cmfprocessor/cmfprocessor.rst @@ -47,6 +47,7 @@ Inspection and Debugging dumpjson validate hash + versioninfo Metadata Management ^^^^^^^^^^^^^^^^^^^ @@ -89,6 +90,8 @@ Command Summary - Validates a CMF file to ensure structural integrity and format compliance * - :doc:`hash ` - Computes and prints the MD5 hash of any file for integrity verification + * - :doc:`versioninfo ` + - Prints current version information for the CMF Processor tool and CMF file format version * - :doc:`metadata ` - Adds, modifies, or removes metadata key-value pairs in CMF files * - :doc:`gltfconverter ` diff --git a/doc/source/cmfprocessor/versioninfo.rst b/doc/source/cmfprocessor/versioninfo.rst new file mode 100644 index 0000000..921c350 --- /dev/null +++ b/doc/source/cmfprocessor/versioninfo.rst @@ -0,0 +1,56 @@ +versioninfo +=========== + +Description +----------- + +Prints current version information for the CMF Processor tool and CMF file format version. + +The version information is printed to stdout as a JSON object. + +Syntax +------ + +.. code-block:: bash + + cmfprocessor versioninfo + + +Output Format +------------- + +The output is a string representation of a JSON object: + +.. code-block:: text + + { + "cmfprocessor": cmprocessor_version, + "format": cmf_format_version + } + +Note that `cmprocessor_version` is a string, but `cmf_format_version` is a number. + +Examples +-------- + +Compute hash of an FBX file: + +.. code-block:: bash + + cmfprocessor versioninfo + + +Compute hash in a script (PowerShell): + +.. code-block:: powershell + + $versioninfo = cmfprocessor versioninfo + Write-Host "Version Info: $versioninfo" + +Compute hash in a script (Bash): + +.. code-block:: bash + + versioninfo=$(cmfprocessor versioninfo) + echo "Version Info: $versioninfo" +