From eb40dfd52dadd17a5f4dd8ed9a2fb8c69f32eb94 Mon Sep 17 00:00:00 2001 From: Juan Cruz Viotti Date: Tue, 2 Jun 2026 18:02:11 -0400 Subject: [PATCH 1/3] Implement a convenience `release.sh` script Signed-off-by: Juan Cruz Viotti --- CMakeLists.txt | 10 +++++++-- VERSION | 1 + release.sh | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 68 insertions(+), 2 deletions(-) create mode 100644 VERSION create mode 100755 release.sh diff --git a/CMakeLists.txt b/CMakeLists.txt index 3a0abbb6..d63ec8f1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,5 +1,7 @@ cmake_minimum_required(VERSION 3.16) -project(one VERSION 6.3.0 LANGUAGES C CXX) +file(READ "${CMAKE_CURRENT_LIST_DIR}/VERSION" ONE_PROJECT_VERSION) +string(STRIP "${ONE_PROJECT_VERSION}" ONE_PROJECT_VERSION) +project(one VERSION "${ONE_PROJECT_VERSION}" LANGUAGES C CXX) list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake") include(DebugSymbols) @@ -118,7 +120,11 @@ sourcemeta_target_clang_format(SOURCES test/*.h test/*.cc enterprise/*.h enterprise/*.cc) sourcemeta_target_shellcheck(SOURCES - test/*.sh docker/*.sh enterprise/scripts/*.sh benchmark/*.sh) + release.sh + test/*.sh + docker/*.sh + enterprise/scripts/*.sh + benchmark/*.sh) if(ONE_TESTS) enable_testing() diff --git a/VERSION b/VERSION new file mode 100644 index 00000000..798e3899 --- /dev/null +++ b/VERSION @@ -0,0 +1 @@ +6.3.0 diff --git a/release.sh b/release.sh new file mode 100755 index 00000000..8ed2274f --- /dev/null +++ b/release.sh @@ -0,0 +1,59 @@ +#!/bin/sh + +set -o errexit +set -o nounset + +usage() { + echo "Usage: $0 " 1>&2 + exit 1 +} + +if [ "$#" -ne 1 ]; then + usage +fi + +BUMP_TYPE="$1" + +CURRENT_VERSION="$(cat VERSION)" +MAJOR="$(echo "$CURRENT_VERSION" | cut -d . -f1)" +MINOR="$(echo "$CURRENT_VERSION" | cut -d . -f2)" +PATCH="$(echo "$CURRENT_VERSION" | cut -d . -f3)" + +case "$BUMP_TYPE" in + major) + MAJOR=$((MAJOR + 1)) + MINOR=0 + PATCH=0 + ;; + minor) + MINOR=$((MINOR + 1)) + PATCH=0 + ;; + patch) + PATCH=$((PATCH + 1)) + ;; + *) + usage + ;; +esac + +NEW_VERSION="${MAJOR}.${MINOR}.${PATCH}" +echo "Bumping version: ${CURRENT_VERSION} -> ${NEW_VERSION}" + +replace_version() { + file="$1" + if ! grep -q "$CURRENT_VERSION" "$file" + then + echo "Error: ${CURRENT_VERSION} not found in ${file}" 1>&2 + exit 1 + fi + sed -i.bak "s/${CURRENT_VERSION}/${NEW_VERSION}/g" "$file" + rm -f "${file}.bak" +} + +replace_version VERSION + +git add VERSION +git commit --gpg-sign --signoff --message "v${NEW_VERSION}" +git tag --sign "v${NEW_VERSION}" --message "v${NEW_VERSION}" +git log -1 --patch From 6089bf8627ab1060c30cf350aeb16d9529c95b67 Mon Sep 17 00:00:00 2001 From: Juan Cruz Viotti Date: Tue, 2 Jun 2026 18:26:09 -0400 Subject: [PATCH 2/3] Fix Signed-off-by: Juan Cruz Viotti --- Dockerfile | 1 + enterprise/Dockerfile | 1 + 2 files changed, 2 insertions(+) diff --git a/Dockerfile b/Dockerfile index 6fe639ba..7fea4186 100644 --- a/Dockerfile +++ b/Dockerfile @@ -11,6 +11,7 @@ COPY src /source/src COPY contrib /source/contrib COPY vendor /source/vendor COPY CMakeLists.txt /source/CMakeLists.txt +COPY VERSION /source/VERSION # For testing COPY test/cli /source/test/cli diff --git a/enterprise/Dockerfile b/enterprise/Dockerfile index 6bb56a6f..42dfbea9 100644 --- a/enterprise/Dockerfile +++ b/enterprise/Dockerfile @@ -28,6 +28,7 @@ COPY contrib /source/contrib COPY vendor /source/vendor COPY DEPENDENCIES /source/DEPENDENCIES COPY CMakeLists.txt /source/CMakeLists.txt +COPY VERSION /source/VERSION COPY enterprise /source/enterprise # For testing From f63b62fd032cbeae470a80c599f5944e99a487b5 Mon Sep 17 00:00:00 2001 From: Juan Cruz Viotti Date: Tue, 2 Jun 2026 18:28:28 -0400 Subject: [PATCH 3/3] Fixes Signed-off-by: Juan Cruz Viotti --- CMakeLists.txt | 2 ++ release.sh | 26 +++++++++----------------- 2 files changed, 11 insertions(+), 17 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index d63ec8f1..3f5b3410 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,5 +1,7 @@ cmake_minimum_required(VERSION 3.16) file(READ "${CMAKE_CURRENT_LIST_DIR}/VERSION" ONE_PROJECT_VERSION) +set_property(DIRECTORY APPEND PROPERTY + CMAKE_CONFIGURE_DEPENDS "${CMAKE_CURRENT_LIST_DIR}/VERSION") string(STRIP "${ONE_PROJECT_VERSION}" ONE_PROJECT_VERSION) project(one VERSION "${ONE_PROJECT_VERSION}" LANGUAGES C CXX) list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake") diff --git a/release.sh b/release.sh index 8ed2274f..d027dbcd 100755 --- a/release.sh +++ b/release.sh @@ -14,7 +14,10 @@ fi BUMP_TYPE="$1" -CURRENT_VERSION="$(cat VERSION)" +SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" +VERSION_FILE="${SCRIPT_DIR}/VERSION" + +CURRENT_VERSION="$(cat "$VERSION_FILE")" MAJOR="$(echo "$CURRENT_VERSION" | cut -d . -f1)" MINOR="$(echo "$CURRENT_VERSION" | cut -d . -f2)" PATCH="$(echo "$CURRENT_VERSION" | cut -d . -f3)" @@ -40,20 +43,9 @@ esac NEW_VERSION="${MAJOR}.${MINOR}.${PATCH}" echo "Bumping version: ${CURRENT_VERSION} -> ${NEW_VERSION}" -replace_version() { - file="$1" - if ! grep -q "$CURRENT_VERSION" "$file" - then - echo "Error: ${CURRENT_VERSION} not found in ${file}" 1>&2 - exit 1 - fi - sed -i.bak "s/${CURRENT_VERSION}/${NEW_VERSION}/g" "$file" - rm -f "${file}.bak" -} - -replace_version VERSION +echo "$NEW_VERSION" > "$VERSION_FILE" -git add VERSION -git commit --gpg-sign --signoff --message "v${NEW_VERSION}" -git tag --sign "v${NEW_VERSION}" --message "v${NEW_VERSION}" -git log -1 --patch +git -C "$SCRIPT_DIR" commit --only --gpg-sign --signoff \ + --message "v${NEW_VERSION}" -- VERSION +git -C "$SCRIPT_DIR" tag --sign "v${NEW_VERSION}" --message "v${NEW_VERSION}" +git -C "$SCRIPT_DIR" log -1 --patch