From f883b3d7fe2c91c5824d79e4c3b1bff16c2d8897 Mon Sep 17 00:00:00 2001 From: zach Date: Mon, 29 Jun 2026 18:57:32 +0200 Subject: [PATCH] versioning --- CMakeLists.txt | 45 ++++++++++++++++++++----- Plugins/ZShell/CMakeLists.txt | 62 ++++++++++++++++++----------------- Plugins/ZShell/zutils.cpp | 14 ++++++++ Plugins/ZShell/zutils.hpp | 4 +++ 4 files changed, 87 insertions(+), 38 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index a2e2def..dc8c0e6 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,6 +1,35 @@ cmake_minimum_required(VERSION 3.19) -project(ZShell) +if(NOT DEFINED VERSION) + execute_process( + COMMAND git describe --tags --abbrev=0 + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + OUTPUT_VARIABLE GIT_LAST_TAG + OUTPUT_STRIP_TRAILING_WHITESPACE + ERROR_QUIET + ) + + if (GIT_LAST_TAG) + string(REGEX REPLACE "^v" "" GIT_LAST_TAG "${GIT_LAST_TAG}") + + string(REPLACE "." ";" VERSION_LIST "${GIT_LAST_TAG}") + list(GET VERSION_LIST 0 VERSION_MAJOR) + list(GET VERSION_LIST 1 VERSION_MINOR) + + execute_process( + COMMAND git rev-list v${VERSION_MAJOR}.${VERSION_MINOR}.0..HEAD --count + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + OUTPUT_VARIABLE VERSION_PATCH + OUTPUT_STRIP_TRAILING_WHITESPACE + ERROR_QUIET + ) + endif() +endif() + +set(PROJECT_VERSION "${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}") + +project(ZShell VERSION ${VERSION_MAJOR}.${VERSION_MINOR}.${VERSION_PATCH}) +message(STATUS "ZShell version: ${PROJECT_VERSION}") set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED ON) @@ -15,11 +44,11 @@ set(INSTALL_QSCONFDIR "etc/xdg/quickshell/zshell" CACHE STRING "Quickshell confi set(INSTALL_GREETERCONFDIR "etc/xdg/quickshell/zshell-greeter" CACHE STRING "Quickshell greeter install dir") add_compile_options( - -Wall -Wextra -Wpedantic -Wshadow -Wconversion - -Wold-style-cast -Wnull-dereference -Wdouble-promotion - -Wformat=2 -Wfloat-equal -Woverloaded-virtual - -Wsign-conversion -Wredundant-decls -Wswitch - -Wunreachable-code + -Wall -Wextra -Wpedantic -Wshadow -Wconversion + -Wold-style-cast -Wnull-dereference -Wdouble-promotion + -Wformat=2 -Wfloat-equal -Woverloaded-virtual + -Wsign-conversion -Wredundant-decls -Wswitch + -Wunreachable-code ) @@ -30,8 +59,8 @@ endif() if("shell" IN_LIST ENABLE_MODULES) foreach(dir assets scripts Components Config Modules Daemons Drawers Effects Helpers Paths) - install(DIRECTORY ${dir} DESTINATION "${INSTALL_QSCONFDIR}") - endforeach() + install(DIRECTORY ${dir} DESTINATION "${INSTALL_QSCONFDIR}") + endforeach() # Disable watching for changes file(READ shell.qml SHELL_QML) diff --git a/Plugins/ZShell/CMakeLists.txt b/Plugins/ZShell/CMakeLists.txt index 2457613..edf225f 100644 --- a/Plugins/ZShell/CMakeLists.txt +++ b/Plugins/ZShell/CMakeLists.txt @@ -9,7 +9,7 @@ pkg_check_modules(Cava IMPORTED_TARGET libcava QUIET) pkg_check_modules(GLIB REQUIRED glib-2.0 gobject-2.0 gio-2.0) if(NOT Cava_FOUND) - pkg_check_modules(Cava IMPORTED_TARGET cava REQUIRED) + pkg_check_modules(Cava IMPORTED_TARGET cava REQUIRED) endif() if(NOT TARGET Sensors::Sensors) @@ -24,48 +24,50 @@ set(QT_QML_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}/qml") qt_standard_project_setup(REQUIRES 6.9) function(qml_module arg_TARGET) - cmake_parse_arguments(PARSE_ARGV 1 arg "" "URI" "SOURCES;LIBRARIES") - qt_add_qml_module(${arg_TARGET} - URI ${arg_URI} - VERSION 1.0 - SOURCES ${arg_SOURCES} - ) + cmake_parse_arguments(PARSE_ARGV 1 arg "" "URI" "SOURCES;LIBRARIES") + qt_add_qml_module(${arg_TARGET} + URI ${arg_URI} + VERSION 1.0 + SOURCES ${arg_SOURCES} + ) - qt_query_qml_module(${arg_TARGET} - URI module_uri - VERSION module_version - PLUGIN_TARGET module_plugin_target - TARGET_PATH module_target_path - QMLDIR module_qmldir - TYPEINFO module_typeinfo - ) + qt_query_qml_module(${arg_TARGET} + URI module_uri + VERSION module_version + PLUGIN_TARGET module_plugin_target + TARGET_PATH module_target_path + QMLDIR module_qmldir + TYPEINFO module_typeinfo + ) set(module_dir "${INSTALL_QMLDIR}/${module_target_path}") - install(TARGETS ${arg_TARGET} LIBRARY DESTINATION "${module_dir}" RUNTIME DESTINATION "${module_dir}") - install(TARGETS "${module_plugin_target}" LIBRARY DESTINATION "${module_dir}" RUNTIME DESTINATION "${module_dir}") - install(FILES "${module_qmldir}" DESTINATION "${module_dir}") - install(FILES "${module_typeinfo}" DESTINATION "${module_dir}") - target_link_libraries(${arg_TARGET} PRIVATE Qt::Core Qt::Qml ${arg_LIBRARIES}) + install(TARGETS ${arg_TARGET} LIBRARY DESTINATION "${module_dir}" RUNTIME DESTINATION "${module_dir}") + install(TARGETS "${module_plugin_target}" LIBRARY DESTINATION "${module_dir}" RUNTIME DESTINATION "${module_dir}") + install(FILES "${module_qmldir}" DESTINATION "${module_dir}") + install(FILES "${module_typeinfo}" DESTINATION "${module_dir}") + target_link_libraries(${arg_TARGET} PRIVATE Qt::Core Qt::Qml ${arg_LIBRARIES}) endfunction() qml_module(ZShell - URI ZShell - SOURCES - writefile.hpp writefile.cpp - appdb.hpp appdb.cpp - imageanalyser.hpp imageanalyser.cpp + URI ZShell + SOURCES + writefile.hpp writefile.cpp + appdb.hpp appdb.cpp + imageanalyser.hpp imageanalyser.cpp requests.hpp requests.cpp toaster.hpp toaster.cpp qalculator.hpp qalculator.cpp zutils.hpp zutils.cpp - LIBRARIES - Qt::Gui - Qt::Quick - Qt::Concurrent - Qt::Sql + LIBRARIES + Qt::Gui + Qt::Quick + Qt::Concurrent + Qt::Sql Qt::DBus PkgConfig::Qalculate ) +target_compile_definitions(ZShell PRIVATE ZSHELL_VERSION="${VERSION}") + add_subdirectory(Models) add_subdirectory(Internal) add_subdirectory(Services) diff --git a/Plugins/ZShell/zutils.cpp b/Plugins/ZShell/zutils.cpp index c26bd0f..ec0449f 100644 --- a/Plugins/ZShell/zutils.cpp +++ b/Plugins/ZShell/zutils.cpp @@ -3,9 +3,11 @@ #include #include #include +#include #include #include #include +#include #include #include @@ -142,4 +144,16 @@ qreal ZUtils::clamp(qreal value, qreal min, qreal max) { return qBound(min, value, max); } +#ifndef ZSHELL_VERSION +#define ZSHELL_VERSION "" +#endif + +QString ZUtils::version() const { + return QStringLiteral(ZSHELL_VERSION); +} + +QString ZUtils::qtVersion() const { + return QStringLiteral(QT_VERSION_STR); +} + } // namespace ZShell diff --git a/Plugins/ZShell/zutils.hpp b/Plugins/ZShell/zutils.hpp index fdc413d..54cfb5f 100644 --- a/Plugins/ZShell/zutils.hpp +++ b/Plugins/ZShell/zutils.hpp @@ -1,6 +1,7 @@ #pragma once #include +#include #include #include @@ -26,6 +27,9 @@ Q_INVOKABLE static bool deleteFile(const QUrl& path); Q_INVOKABLE static QString toLocalFile(const QUrl& url); Q_INVOKABLE static qreal clamp(qreal value, qreal min, qreal max); + +[[nodiscard]] QString version() const; +[[nodiscard]] QString qtVersion() const; }; } // namespace ZShell