From 9e7b953d73f523f8974b7435ec834c3185046542 Mon Sep 17 00:00:00 2001 From: trigg Date: Sun, 9 Aug 2026 15:12:05 +0100 Subject: [PATCH] util: added '-v' and '--version' and tracks git versions as well as release numbers --- src/background/meson.build | 2 +- src/dock/meson.build | 4 ++-- src/locker-pin/meson.build | 2 +- src/locker/meson.build | 2 +- src/panel/meson.build | 2 +- src/util/meson.build | 16 +++++++++++++++- src/util/version.h.in | 2 ++ src/util/wf-shell-app.cpp | 12 +++++++++++- 8 files changed, 34 insertions(+), 8 deletions(-) create mode 100644 src/util/version.h.in diff --git a/src/background/meson.build b/src/background/meson.build index 950db772a..483ca657a 100644 --- a/src/background/meson.build +++ b/src/background/meson.build @@ -1,3 +1,3 @@ -executable('wf-background', ['background.cpp'], +executable('wf-background', ['background.cpp', version_h], dependencies: [gtkmm, gtklayershell, wayland_client, libutil, wf_protos, wfconfig, epoxy], install: true) diff --git a/src/dock/meson.build b/src/dock/meson.build index 51acac33a..9151c45be 100644 --- a/src/dock/meson.build +++ b/src/dock/meson.build @@ -1,3 +1,3 @@ -executable('wf-dock', ['dock.cpp', 'dock-app.cpp', 'toplevel.cpp', 'toplevel-icon.cpp'], +executable('wf-dock', ['dock.cpp', 'dock-app.cpp', 'toplevel.cpp', 'toplevel-icon.cpp', version_h,], dependencies: [gtkmm, gtklayershell, wayland_client, libutil, wf_protos, wfconfig], - install: true) + install: true) \ No newline at end of file diff --git a/src/locker-pin/meson.build b/src/locker-pin/meson.build index 9f43f3d3a..c14204a78 100644 --- a/src/locker-pin/meson.build +++ b/src/locker-pin/meson.build @@ -5,7 +5,7 @@ deps = [ executable( 'wf-locker-pin', - ['locker-pin.cpp'], + ['locker-pin.cpp', version_h], dependencies: deps, install: true, ) diff --git a/src/locker/meson.build b/src/locker/meson.build index d7e93327e..6f3a13fd4 100644 --- a/src/locker/meson.build +++ b/src/locker/meson.build @@ -36,7 +36,7 @@ endif executable( 'wf-locker', - ['locker.cpp', 'lockscreen.cpp', 'timedrevealer.cpp'] + widget_sources, + ['locker.cpp', 'lockscreen.cpp', 'timedrevealer.cpp', version_h] + widget_sources, dependencies: deps, install: true, ) diff --git a/src/panel/meson.build b/src/panel/meson.build index ee51c0a0a..e08cd384b 100644 --- a/src/panel/meson.build +++ b/src/panel/meson.build @@ -89,7 +89,7 @@ endif executable( 'wf-panel', - ['panel.cpp'] + widget_sources, + ['panel.cpp', version_h] + widget_sources, dependencies: deps, install: true, ) \ No newline at end of file diff --git a/src/util/meson.build b/src/util/meson.build index d53e3680e..3ee6b5fa6 100644 --- a/src/util/meson.build +++ b/src/util/meson.build @@ -19,7 +19,7 @@ util = static_library( 'network/settings.cpp', 'network/connection.cpp', 'background-gl.cpp', - 'icon-select.cpp' + 'icon-select.cpp', ], dependencies: [ wf_protos, @@ -32,5 +32,19 @@ util = static_library( ], ) +git_command = [ + 'sh', + '-c', 'printf "@0@ version @1@-%s (%s) branch %s gtk @2@" "$(git rev-parse --short HEAD)" "$(git log -1 --format=%as)" "$(git rev-parse --abbrev-ref HEAD)"'.format(meson.project_name(), meson.project_version(), gtkmm.version()), +] + +fallback_string = '@0@ version @1@-unknown-commit (unknown-date) branch unknown-branch gtk @2@'.format(meson.project_name(), meson.project_version(), gtkmm.version()) + +version_h = vcs_tag( + input: 'version.h.in', + output: 'version.h', + command: git_command, + fallback: fallback_string, +) + util_includes = include_directories('.') libutil = declare_dependency(link_with: util, include_directories: util_includes) diff --git a/src/util/version.h.in b/src/util/version.h.in new file mode 100644 index 000000000..5d7f04dcc --- /dev/null +++ b/src/util/version.h.in @@ -0,0 +1,2 @@ +#pragma once +#define WF_SHELL_VERSION_STRING "@VCS_TAG@" diff --git a/src/util/wf-shell-app.cpp b/src/util/wf-shell-app.cpp index a59efe912..e4df6ec8d 100644 --- a/src/util/wf-shell-app.cpp +++ b/src/util/wf-shell-app.cpp @@ -9,6 +9,7 @@ #include #include #include +#include "version.h" #include @@ -370,7 +371,6 @@ WayfireShellApp::WayfireShellApp() void WayfireShellApp::init_app() { - std::cout << "setting up" << std::endl; app = Gtk::Application::create( this->get_application_name(), Gio::Application::Flags::NONE | this->get_extra_application_flags()); app->signal_activate().connect( @@ -402,6 +402,16 @@ WayfireShellApp& WayfireShellApp::get() void WayfireShellApp::run(int argc, char **argv) { + for (int i = 1; i < argc; ++i) + { + std::string arg = argv[i]; + if ((arg == "-v") || (arg == "--version")) + { + std::cout << WF_SHELL_VERSION_STRING << std::endl; + return; // Terminate early + } + } + app->run(argc, argv); }