From 2725d26d5624e02295c787acb4947f5f626ec201 Mon Sep 17 00:00:00 2001 From: Price Hiller Date: Mon, 5 Jun 2023 15:35:16 -0500 Subject: [PATCH] feat(version): add build field to vim.version() This exposes the full git hash of the build to the lua table, generated by CMake. Closes #23863 --- cmake/GenerateVersion.cmake | 13 ++++++++++++- src/nvim/version.c | 1 + 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/cmake/GenerateVersion.cmake b/cmake/GenerateVersion.cmake index ab046e93ba1a41..acbe23aa107406 100644 --- a/cmake/GenerateVersion.cmake +++ b/cmake/GenerateVersion.cmake @@ -8,6 +8,17 @@ execute_process( ERROR_QUIET RESULT_VARIABLE RES) +execute_process( + COMMAND git --git-dir=${NVIM_SOURCE_DIR}/.git --work-tree=${NVIM_SOURCE_DIR} rev-parse HEAD + OUTPUT_VARIABLE GIT_HASH + OUTPUT_STRIP_TRAILING_WHITESPACE + ERROR_QUIET + RESULT_VARIABLE RES) + +set(NVIM_VERSION_BUILD "#define NVIM_VERSION_BUILD \"${GIT_HASH}\"\n") +file(WRITE "${OUTPUT}" "${NVIM_VERSION_BUILD}") + + if(RES) message(STATUS "Using NVIM_VERSION: ${NVIM_VERSION}") file(WRITE "${OUTPUT}" "") @@ -33,7 +44,7 @@ endif() if(NOT "${NVIM_VERSION_HASH}" STREQUAL "${CURRENT_VERSION_HASH}") message(STATUS "Using NVIM_VERSION: ${NVIM_VERSION}") - file(WRITE "${OUTPUT}" "${NVIM_VERSION_STRING}") + file(APPEND "${OUTPUT}" "${NVIM_VERSION_STRING}") if(WIN32) configure_file("${OUTPUT}" "${OUTPUT}" NEWLINE_STYLE UNIX) endif() diff --git a/src/nvim/version.c b/src/nvim/version.c index c0e0ceef55f262..4303479026b818 100644 --- a/src/nvim/version.c +++ b/src/nvim/version.c @@ -2560,6 +2560,7 @@ Dictionary version_dict(void) PUT(d, "major", INTEGER_OBJ(NVIM_VERSION_MAJOR)); PUT(d, "minor", INTEGER_OBJ(NVIM_VERSION_MINOR)); PUT(d, "patch", INTEGER_OBJ(NVIM_VERSION_PATCH)); + PUT(d, "build", CSTR_AS_OBJ(NVIM_VERSION_BUILD)); PUT(d, "prerelease", BOOLEAN_OBJ(NVIM_VERSION_PRERELEASE[0] != '\0')); PUT(d, "api_level", INTEGER_OBJ(NVIM_API_LEVEL)); PUT(d, "api_compatible", INTEGER_OBJ(NVIM_API_LEVEL_COMPAT));