diff --git a/cmake/FetchIperf3.cmake b/cmake/FetchIperf3.cmake new file mode 100644 index 0000000..c447005 --- /dev/null +++ b/cmake/FetchIperf3.cmake @@ -0,0 +1,54 @@ +include(ExternalProject) +include(FetchContent) + +find_program(MAKE NAMES make gmake nmake REQUIRED) +find_program(AUTORECONF NAMES autoreconf REQUIRED) +find_program(GIT NAMES git REQUIRED) +find_program(SH NAMES sh REQUIRED) + +if(CMAKE_CROSSCOMPILING) + set(SYSROOT_FLAG --sysroot=${CMAKE_SYSROOT}) +else() + set(SYSROOT_FLAG "") +endif() + + +set(ENV{CC} "${CMAKE_C_COMPILER}") +set(ENV{CXX} "${CMAKE_CXX_COMPILER}") +set(ENV{LD} "${CMAKE_LINKER}") + +if(CMAKE_BUILD_TYPE STREQUAL "Debug" OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo") + set(ENV{CFLAGS} -g3) +endif() + +ExternalProject_Add( + iperf3 + GIT_REPOSITORY https://github.com/esnet/iperf.git + GIT_TAG 3.18 + GIT_SHALLOW TRUE + PREFIX ${FETCHCONTENT_BASE_DIR} + SOURCE_DIR ${FETCHCONTENT_BASE_DIR}/iperf3-src + BINARY_DIR ${FETCHCONTENT_BASE_DIR}/iperf3-build + STAMP_DIR ${FETCHCONTENT_BASE_DIR}/iperf3-subbuild/stamps + LOG_DIR ${FETCHCONTENT_BASE_DIR}/iperf3-subbuild/logs + TMP_DIR ${FETCHCONTENT_BASE_DIR}/iperf3-subbuild/tmp + CONFIGURE_COMMAND cd ${FETCHCONTENT_BASE_DIR}/iperf3-src && ./configure ${SYSROOT_FLAG} + --prefix=${FETCHCONTENT_BASE_DIR}/iperf3-build --with-openssl=${OPENSSL_ROOT_DIR} + BUILD_COMMAND ${MAKE} -C ${FETCHCONTENT_BASE_DIR}/iperf3-src + INSTALL_COMMAND ${MAKE} -C ${FETCHCONTENT_BASE_DIR}/iperf3-src install + UPDATE_COMMAND "" + PATCH_COMMAND ${SH} -c "cd ${FETCHCONTENT_BASE_DIR}/iperf3-src && ${GIT} apply --ignore-whitespace --verbose --reject ${PROJECT_SOURCE_DIR}/patches/*.patch") + +add_dependencies(iperf3 OpenSSL::SSL OpenSSL::Crypto) + +add_library(libiperf_static STATIC IMPORTED) +set_target_properties(libiperf_static PROPERTIES IMPORTED_LOCATION ${FETCHCONTENT_BASE_DIR}/iperf3-build/lib/libiperf.a + INTERFACE_INCLUDE_DIRECTORIES ${FETCHCONTENT_BASE_DIR}/iperf3-build/include/) +add_library(libiperf_shared SHARED IMPORTED) +set_target_properties(libiperf_shared PROPERTIES IMPORTED_LOCATION ${FETCHCONTENT_BASE_DIR}/iperf3-build/lib/libiperf.so + INTERFACE_INCLUDE_DIRECTORIES ${FETCHCONTENT_BASE_DIR}/iperf3-build/include/) +add_dependencies(libiperf_static iperf3) +add_dependencies(libiperf_shared iperf3) + +file(MAKE_DIRECTORY ${FETCHCONTENT_BASE_DIR}/iperf3-build/include/ ${FETCHCONTENT_BASE_DIR}/iperf3-build/lib/) + diff --git a/cmake/FetchLibbacktrace.cmake b/cmake/FetchLibbacktrace.cmake index 48f1961..5bdf4e2 100644 --- a/cmake/FetchLibbacktrace.cmake +++ b/cmake/FetchLibbacktrace.cmake @@ -5,7 +5,7 @@ set(BUILD_SHARED OFF CACHE STRING "" FORCE) FetchContent_Declare( libbacktrace - GIT_REPOSITORY git@github.com:brenozd/libbacktrace.git + GIT_REPOSITORY https://github.com/brenozd/libbacktrace.git GIT_TAG master GIT_SHALLOW TRUE OVERRIDE_FIND_PACKAGE) diff --git a/cmake/FetchLibpcap.cmake b/cmake/FetchLibpcap.cmake new file mode 100644 index 0000000..1abc047 --- /dev/null +++ b/cmake/FetchLibpcap.cmake @@ -0,0 +1,16 @@ +include(FetchContent) + +set(FETCHCONTENT_QUIET TRUE) + +set(LIBPCAP_BUILD_EXAMPLES OFF CACHE BOOL "" FORCE) +set(LIBPCAP_BUILD_TESTS OFF CACHE BOOL "" FORCE) + +FetchContent_Declare( + libpcap + GIT_REPOSITORY https://github.com/the-tcpdump-group/libpcap.git + GIT_TAG libpcap-1.10.5 + GIT_SHALLOW TRUE + OVERRIDE_FIND_PACKAGE) + +FetchContent_MakeAvailable(libpcap) + diff --git a/cmake/FetchOpenSSL.cmake b/cmake/FetchOpenSSL.cmake new file mode 100644 index 0000000..b0054b8 --- /dev/null +++ b/cmake/FetchOpenSSL.cmake @@ -0,0 +1,110 @@ +include(ExternalProject) +include(FetchContent) + +set(OPENSSL_DESIRED_BRANCH "openssl-3.4") +set(OPENSSL_BUILD_DIR ${FETCHCONTENT_BASE_DIR}/openssl-build) + +find_program(MAKE NAMES make gmake nmake REQUIRED) +find_program(AUTORECONF NAMES autoreconf REQUIRED) + +if(CMAKE_CROSSCOMPILING) + set(OPENSSL_INSTALL_DIR ${CMAKE_SYSROOT}) + set(SYSROOT_FLAG --sysroot=${CMAKE_SYSROOT}) +else() + set(OPENSSL_INSTALL_DIR ${OPENSSL_BUILD_DIR}) + set(SYSROOT_FLAG "") +endif() + +if(CMAKE_BUILD_TYPE STREQUAL "Debug" OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo") + set(ENV{CFLAGS} -g3 -O0) +endif() + +set(ENV{CC} "${CMAKE_C_COMPILER}") +set(ENV{CXX} "${CMAKE_CXX_COMPILER}") +set(ENV{LD} "${CMAKE_LINKER}") + +# Configura flags de compilação se não passado +if(NOT DEFINED OPENSSL_CONFIGURE_FLAGS) + # Configura o target de acordo com o sistema (32-bit ou 64-bit) + if(CMAKE_SIZEOF_VOID_P EQUAL 8) + message(STATUS "Detected 64-bit target system based on toolchain.") + set(OPENSSL_TARGET_CONFIG "linux-generic64" CACHE STRING "" FORCE) + elseif(CMAKE_SIZEOF_VOID_P EQUAL 4) + message(STATUS "Detected 32-bit target system based on toolchain.") + set(OPENSSL_TARGET_CONFIG "linux-generic32" CACHE STRING "" FORCE) + else() + message(FATAL_ERROR "Unknown target architecture: pointer size is neither 4 nor 8.") + endif() + + set(OPENSSL_CONFIGURE_FLAGS + ${OPENSSL_TARGET_CONFIG} + no-async + no-dso + no-hw + no-engine + no-unit-test + ${SYSROOT_FLAG}) +endif() + +ExternalProject_Add( + openssl + GIT_REPOSITORY https://github.com/openssl/openssl.git + GIT_TAG ${OPENSSL_DESIRED_BRANCH} + GIT_SHALLOW TRUE + PREFIX ${FETCHCONTENT_BASE_DIR} + SOURCE_DIR ${FETCHCONTENT_BASE_DIR}/openssl-src + BINARY_DIR ${OPENSSL_BUILD_DIR} + STAMP_DIR ${FETCHCONTENT_BASE_DIR}/openssl-subbuild/stamps + LOG_DIR ${FETCHCONTENT_BASE_DIR}/openssl-subbuild/logs + TMP_DIR ${FETCHCONTENT_BASE_DIR}/openssl-subbuild/tmp + CONFIGURE_COMMAND + cd ${FETCHCONTENT_BASE_DIR}/openssl-src && ./Configure ${OPENSSL_CONFIGURE_FLAGS} --prefix=${OPENSSL_INSTALL_DIR} + --openssldir=${OPENSSL_SOURCE_DIR} + BUILD_COMMAND ${MAKE} -C ${FETCHCONTENT_BASE_DIR}/openssl-src + INSTALL_COMMAND ${MAKE} -C ${FETCHCONTENT_BASE_DIR}/openssl-src install_sw + UPDATE_COMMAND "") + +file(MAKE_DIRECTORY ${OPENSSL_INSTALL_DIR}/include/ ${OPENSSL_INSTALL_DIR}/lib/) + +if(OPENSSL_USE_STATIC_LIBS) + add_library(OpenSSL::SSL STATIC IMPORTED) + set_target_properties(OpenSSL::SSL PROPERTIES IMPORTED_LOCATION ${OPENSSL_INSTALL_DIR}/lib/libssl.a + INTERFACE_INCLUDE_DIRECTORIES ${OPENSSL_INSTALL_DIR}/include) + + add_library(OpenSSL::Crypto STATIC IMPORTED) + set_target_properties(OpenSSL::Crypto PROPERTIES IMPORTED_LOCATION ${OPENSSL_INSTALL_DIR}/lib/libcrypto.a + INTERFACE_INCLUDE_DIRECTORIES ${OPENSSL_INSTALL_DIR}/include) + set(OPENSSL_CRYPTO_LIBRARY ${OPENSSL_INSTALL_DIR}/lib/libcrypto.a) + set(OPENSSL_SSL_LIBRARY ${OPENSSL_INSTALL_DIR}/lib/libssl.a) +else() + # Se for dinâmico (compartilhado) + add_library(OpenSSL::SSL SHARED IMPORTED) + set_target_properties(OpenSSL::SSL PROPERTIES IMPORTED_LOCATION ${OPENSSL_INSTALL_DIR}/lib/libssl.so + INTERFACE_INCLUDE_DIRECTORIES ${OPENSSL_INSTALL_DIR}/include) + + add_library(OpenSSL::Crypto SHARED IMPORTED) + set_target_properties(OpenSSL::Crypto PROPERTIES IMPORTED_LOCATION ${OPENSSL_INSTALL_DIR}/lib/libcrypto.so + INTERFACE_INCLUDE_DIRECTORIES ${OPENSSL_INSTALL_DIR}/include) + set(OPENSSL_CRYPTO_LIBRARY ${OPENSSL_INSTALL_DIR}/lib/libcrypto.so) + set(OPENSSL_SSL_LIBRARY ${OPENSSL_INSTALL_DIR}/lib/libssl.so) +endif() + +# Adiciona dependências para garantir que as bibliotecas sejam compiladas antes +# do uso +add_dependencies(OpenSSL::SSL openssl) +add_dependencies(OpenSSL::Crypto openssl) + +# Configura variáveis para que outros targets possam usar as bibliotecas do +# OpenSSL +set(OPENSSL_ROOT_DIR ${OPENSSL_INSTALL_DIR}) +set(OPENSSL_INCLUDE_DIR ${OPENSSL_INSTALL_DIR}/include) +set(OPENSSL_LIBRARIES OpenSSL::SSL OpenSSL::Crypto) + +# Strip out the "OpenSSL_" part and replace underscores with periods +string(REGEX REPLACE "^OpenSSL_" "" OPENSSL_FETCHED_VERSION "${OPENSSL_DESIRED_BRANCH}") +string(REPLACE "_" "." OPENSSL_FETCHED_VERSION "${OPENSSL_FETCHED_VERSION}") +string(REGEX REPLACE "[^0-9.]$" "" OPENSSL_FETCHED_VERSION "${OPENSSL_FETCHED_VERSION}") + +set(OPENSSL_VERSION "${OPENSSL_FETCHED_VERSION}") + +file(MAKE_DIRECTORY ${OPENSSL_INSTALL_DIR}/lib/ ${OPENSSL_INSTALL_DIR}/include/) diff --git a/cmake/FetchXXHash.cmake b/cmake/FetchXXHash.cmake new file mode 100644 index 0000000..5e538d0 --- /dev/null +++ b/cmake/FetchXXHash.cmake @@ -0,0 +1,15 @@ +include(FetchContent) + +set(FETCHCONTENT_QUIET TRUE) +set(BUILD_SHARED_LIBS OFF CACHE STRING "" FORCE) + +FetchContent_Declare( + xxhash + GIT_REPOSITORY https://github.com/Cyan4973/xxHash.git + GIT_TAG v0.8.3 + GIT_SHALLOW TRUE + SOURCE_SUBDIR "cmake_unofficial/" + OVERRIDE_FIND_PACKAGE) + +FetchContent_MakeAvailable(xxhash) + diff --git a/cmake/FetchZLog.cmake b/cmake/FetchZLog.cmake new file mode 100644 index 0000000..8975f0e --- /dev/null +++ b/cmake/FetchZLog.cmake @@ -0,0 +1,22 @@ +include(FetchContent) + +FetchContent_Declare( + zlog + GIT_REPOSITORY https://github.com/HardySimpson/zlog + GIT_TAG 1.2.18 + GIT_SHALLOW TRUE +) +FetchContent_MakeAvailable(zlog) + +# Install zlog automatically after build +set(zlog_INSTALL_DIR ${FETCHCONTENT_BASE_DIR}/zlog-install/) +add_custom_target( + zlog_copy_header ALL + COMMAND ${CMAKE_COMMAND} -E copy ${zlog_SOURCE_DIR}/src/zlog.h ${zlog_BINARY_DIR}/include/zlog.h + DEPENDS zlog + COMMENT "Installing zlog into ${zlog_INSTALL_DIR}" +) + +# Add the install directory to include and link paths +target_include_directories(zlog_s PUBLIC ${zlog_BINARY_DIR}/include) +target_include_directories(zlog PUBLIC ${zlog_BINARY_DIR}/include) diff --git a/cmake/FindOrBuildOpenSSL.cmake b/cmake/FindOrBuildOpenSSL.cmake deleted file mode 100644 index 78762fb..0000000 --- a/cmake/FindOrBuildOpenSSL.cmake +++ /dev/null @@ -1,172 +0,0 @@ -include(FetchContent) - -# Verifica a instalação do OpenSSL no sistema -find_package(OpenSSL 1.0.2...1.1.1 QUIET) - -if(OPENSSL_FOUND) - return() -endif() - -# Diretórios para baixar e instalar o OpenSSL -set(OPENSSL_SOURCE_DIR ${FETCHCONTENT_BASE_DIR}/openssl-src) -set(OPENSSL_DESIRED_BRANCH "OpenSSL_1_1_1w") - -if(CMAKE_CROSSCOMPILING) - set(OPENSSL_INSTALL_DIR ${CMAKE_SYSROOT}) - set(SYSROOT_FLAG --sysroot=${CMAKE_SYSROOT}) -else() - set(OPENSSL_INSTALL_DIR ${FETCHCONTENT_BASE_DIR}/openssl-build) - set(SYSROOT_FLAG "") -endif() - -# Verifica se o OpenSSL já foi clonado e configura o repositório -if(EXISTS ${OPENSSL_SOURCE_DIR}/.git) - # Verifica a branch actual - execute_process( - COMMAND git -C ${OPENSSL_SOURCE_DIR} rev-parse --abbrev-ref HEAD - OUTPUT_VARIABLE CURRENT_BRANCH - OUTPUT_STRIP_TRAILING_WHITESPACE OUTPUT_QUIET ERROR_QUIET) - - if(NOT "${CURRENT_BRANCH}" STREQUAL "${DESIRED_BRANCH}") - # Faz o checkout da branch desejada se necessário - execute_process( - COMMAND git -C ${OPENSSL_SOURCE_DIR} checkout ${DESIRED_BRANCH} - OUTPUT_QUIET - RESULT_VARIABLE CHECKOUT_STATUS) - if(NOT CHECKOUT_STATUS EQUAL 0) - message( - FATAL_ERROR "Failed to checkout branch ${DESIRED_BRANCH} in OpenSSL") - endif() - - # Atualiza o repositório para garantir que está na última versão - execute_process( - COMMAND git -C ${OPENSSL_SOURCE_DIR} pull origin ${DESIRED_BRANCH} - OUTPUT_QUIET - RESULT_VARIABLE PULL_STATUS) - if(NOT PULL_STATUS EQUAL 0) - message( - FATAL_ERROR - "Failed to pull latest changes for branch ${DESIRED_BRANCH} in OpenSSL" - ) - endif() - endif() -else() - # Clona o repositório do OpenSSL se ele não existir - execute_process( - COMMAND git clone -b ${OPENSSL_DESIRED_BRANCH} --depth 1 - https://github.com/openssl/openssl.git ${OPENSSL_SOURCE_DIR} - OUTPUT_QUIET - RESULT_VARIABLE CLONE_STATUS) - if(NOT CLONE_STATUS EQUAL 0) - message(FATAL_ERROR "Failed to clone OpenSSL") - endif() -endif() - - -# Configura flags de compilação se não passado -if(NOT DEFINED OPENSSL_CONFIGURE_FLAGS) - # Configura o target de acordo com o sistema (32-bit ou 64-bit) - if(CMAKE_SIZEOF_VOID_P EQUAL 8) - message(STATUS "Detected 64-bit target system based on toolchain.") - set(OPENSSL_TARGET_CONFIG - "linux-generic64" - CACHE STRING "" FORCE) - elseif(CMAKE_SIZEOF_VOID_P EQUAL 4) - message(STATUS "Detected 32-bit target system based on toolchain.") - set(OPENSSL_TARGET_CONFIG - "linux-generic32" - CACHE STRING "" FORCE) - else() - message( - FATAL_ERROR "Unknown target architecture: pointer size is neither 4 nor 8.") - endif() - - set(OPENSSL_CONFIGURE_FLAGS ${OPENSSL_TARGET_CONFIG} no-async no-dso no-hw no-engine no-unit-test ${SYSROOT_FLAG}) -endif() - -if(CMAKE_BUILD_TYPE STREQUAL "Debug" OR CMAKE_BUILD_TYPE STREQUAL "RelWithDebInfo") - set(ENV{CFLAGS} -g3) -endif() - -set(ENV{CC} "${CMAKE_C_COMPILER}") -set(ENV{CXX} "${CMAKE_CXX_COMPILER}") -set(ENV{LD} "${CMAKE_LINKER}") - -# Executa o script de configuração do OpenSSL durante a fase de configuração do -# CMake -execute_process( - COMMAND - ./Configure ${OPENSSL_CONFIGURE_FLAGS} --prefix=${OPENSSL_INSTALL_DIR} --openssldir=${OPENSSL_SOURCE_DIR} - WORKING_DIRECTORY ${OPENSSL_SOURCE_DIR} - RESULT_VARIABLE CONFIGURE_STATUS) - -if(NOT CONFIGURE_STATUS EQUAL 0) - message(FATAL_ERROR "Failed to configure OpenSSL") -endif() - -# Adiciona commandos personalizados de compilação para o OpenSSL -add_custom_command( - OUTPUT ${OPENSSL_INSTALL_DIR}/lib/libssl.a # Ou qualquer outro artefato - # importante (dinâmico ou estático) - COMMAND make clean depend - COMMAND make -j4 V=sc - COMMAND make install_sw - WORKING_DIRECTORY ${OPENSSL_SOURCE_DIR} - COMMENT "Building and installing OpenSSL") - -# Define um alvo personalizado que depende da conclusão do build -add_custom_target(openssl ALL DEPENDS ${OPENSSL_INSTALL_DIR}/lib/libssl.a) - -# Configura a vinculação de bibliotecas e a importação para OpenSSL (estático ou -# dinâmico) -if(OPENSSL_STATIC) - # Se for estático - add_library(OpenSSL::SSL STATIC IMPORTED) - set_target_properties( - OpenSSL::SSL - PROPERTIES IMPORTED_LOCATION ${OPENSSL_INSTALL_DIR}/lib/libssl.a - INTERFACE_INCLUDE_DIRECTORIES ${OPENSSL_INSTALL_DIR}/include) - - add_library(OpenSSL::Crypto STATIC IMPORTED) - set_target_properties( - OpenSSL::Crypto - PROPERTIES IMPORTED_LOCATION ${OPENSSL_INSTALL_DIR}/lib/libcrypto.a - INTERFACE_INCLUDE_DIRECTORIES ${OPENSSL_INSTALL_DIR}/include) - set(OPENSSL_CRYPTO_LIBRARY ${OPENSSL_INSTALL_DIR}/lib/libcrypto.a) - set(OPENSSL_SSL_LIBRARY ${OPENSSL_INSTALL_DIR}/lib/libssl.a) -else() - # Se for dinâmico (compartilhado) - add_library(OpenSSL::SSL SHARED IMPORTED) - set_target_properties( - OpenSSL::SSL - PROPERTIES IMPORTED_LOCATION ${OPENSSL_INSTALL_DIR}/lib/libssl.so - INTERFACE_INCLUDE_DIRECTORIES ${OPENSSL_INSTALL_DIR}/include) - - add_library(OpenSSL::Crypto SHARED IMPORTED) - set_target_properties( - OpenSSL::Crypto - PROPERTIES IMPORTED_LOCATION ${OPENSSL_INSTALL_DIR}/lib/libcrypto.so - INTERFACE_INCLUDE_DIRECTORIES ${OPENSSL_INSTALL_DIR}/include) - set(OPENSSL_CRYPTO_LIBRARY ${OPENSSL_INSTALL_DIR}/lib/libcrypto.so) - set(OPENSSL_SSL_LIBRARY ${OPENSSL_INSTALL_DIR}/lib/libssl.so) -endif() - -# Adiciona dependências para garantir que as bibliotecas sejam compiladas antes -# do uso -add_dependencies(OpenSSL::SSL openssl) -add_dependencies(OpenSSL::Crypto openssl) - -# Configura variáveis para que outros targets possam usar as bibliotecas do -# OpenSSL -set(OPENSSL_ROOT_DIR ${OPENSSL_INSTALL_DIR}) -set(OPENSSL_INCLUDE_DIR ${OPENSSL_INSTALL_DIR}/include) -set(OPENSSL_LIBRARIES OpenSSL::SSL OpenSSL::Crypto) - -# Strip out the "OpenSSL_" part and replace underscores with periods -string(REGEX REPLACE "^OpenSSL_" "" OPENSSL_FETCHED_VERSION "${OPENSSL_DESIRED_BRANCH}") -string(REPLACE "_" "." OPENSSL_FETCHED_VERSION "${OPENSSL_FETCHED_VERSION}") -string(REGEX REPLACE "[^0-9.]$" "" OPENSSL_FETCHED_VERSION "${OPENSSL_FETCHED_VERSION}") - -set(OPENSSL_VERSION "${OPENSSL_FETCHED_VERSION}") - -file(MAKE_DIRECTORY ${OPENSSL_INSTALL_DIR}/lib/ ${OPENSSL_INSTALL_DIR}/include/) diff --git a/cmake/StripAll.cmake b/cmake/StripAllTargets.cmake similarity index 100% rename from cmake/StripAll.cmake rename to cmake/StripAllTargets.cmake diff --git a/scripts/versioning.sh b/scripts/versioning.sh index 1e30cfa..046e54d 100755 --- a/scripts/versioning.sh +++ b/scripts/versioning.sh @@ -2,30 +2,30 @@ set -e # Script to Bump Version Numbers and Update File metadata -# This script updates the version numbers of a C/C++ project, specifically in `version.hpp` or `version.h`, +# This script updates the version numbers of a C/C++ project, specifically in `version.hpp` or `version.h`, #and also updates information about compilation commits and build timestamps. -VERSION_FILE="$(find "$(pwd)" \( -iname "version.hpp" -o -iname "version.h" \))" +VERSION_FILE="$(find "$(pwd)" \( -iname "version.hpp" -o -iname "version.h" \) -not -path "$(pwd)/build/*")" MAJOR=$(grep -oP '([a-zA-Z]*)_VERSION_MAJOR (\K[0-9]+)' "$VERSION_FILE") MINOR=$(grep -oP '([a-zA-Z]*)_VERSION_MINOR (\K[0-9]+)' "$VERSION_FILE") PATCH=$(grep -oP '([a-zA-Z]*)_VERSION_PATCH (\K[0-9]+)' "$VERSION_FILE") _bump_version() { - case "$1" in - major) - MAJOR=$((MAJOR + 1)) - ;; - minor) - MINOR=$((MINOR + 1)) - ;; - patch) - PATCH=$((PATCH + 1)) - ;; - *) - echo "Unknown version semantic $1" >&2 - exit 124 - ;; - esac + case "$1" in + major) + MAJOR=$((MAJOR + 1)) + ;; + minor) + MINOR=$((MINOR + 1)) + ;; + patch) + PATCH=$((PATCH + 1)) + ;; + *) + echo "Unknown version semantic $1" >&2 + exit 124 + ;; + esac } # Atualizar versões @@ -39,6 +39,3 @@ COMMIT_HASH=$(git rev-parse HEAD) BUILD_TIMESTAMP=$(date +%s) sed -i "s/\([a-zA-Z]\+\)_COMMIT_HASH \"[a-zA-Z0-9]\+\"/\1_COMMIT_HASH \"$COMMIT_HASH\"/" "$VERSION_FILE" sed -i "s/\([a-zA-Z]\+\)_BUILD_TIMESTAMP [0-9]\+/\1_BUILD_TIMESTAMP $BUILD_TIMESTAMP/" "$VERSION_FILE" - -# Exibir versão atualizada -printf "%d.%d.%d" "$MAJOR" "$MINOR" "$PATCH"