From 3d3264d8d6417b42deff53fcd6db4dd0398b84ad Mon Sep 17 00:00:00 2001 From: Lukas Forsberg Date: Fri, 30 May 2025 12:28:38 +0200 Subject: [PATCH] added pkg build for project --- CMakeLists.txt | 4 ++-- PKGBUILD | 26 ++++++++++++++++++++++++++ README.md | 15 ++++++++++++++- lf-server-admin-panel.service | 13 +++++++++++++ service-viewer/PKGBUILD | 18 ------------------ src/json_settings.cpp | 2 +- src/json_settings.h | 2 +- src/systemd.cpp | 3 ++- 8 files changed, 59 insertions(+), 24 deletions(-) create mode 100644 PKGBUILD create mode 100644 lf-server-admin-panel.service delete mode 100644 service-viewer/PKGBUILD diff --git a/CMakeLists.txt b/CMakeLists.txt index 70dafdc..03a6a47 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -32,7 +32,7 @@ endforeach() # Use Crow from system include (installed via yay -S crow + asio) include_directories(/usr/include) -add_executable(app src/main.cpp +add_executable(lf-server-admin-panel src/main.cpp src/htmx/HtmxTable.cpp src/htmx/HtmxTable.h src/systemd.cpp @@ -48,7 +48,7 @@ add_executable(app src/main.cpp src/json_settings.h src/json.hpp) -target_link_libraries(app pthread) +target_link_libraries(lf-server-admin-panel pthread) # Optional: Print build type at configuration time message(STATUS "Configuring build type: ${CMAKE_BUILD_TYPE}") \ No newline at end of file diff --git a/PKGBUILD b/PKGBUILD new file mode 100644 index 0000000..f2c6fb1 --- /dev/null +++ b/PKGBUILD @@ -0,0 +1,26 @@ +# Maintainer: Lukas Forsberg lukas96.forsberg@gmail.com + +pkgname=lf-server-admin-panel +pkgver=0.1.0 +pkgrel=1 +arch=('x86_64') +depends=('crow' 'asio') +pkgdesc="A Linux C++ Crow/HTMX web service to list the status of user specified systemd services" +license=('MIT') +makedepends=('cmake' 'gcc') +source=( + ${pkgname}-${pkgver}.tar.gz +) +md5sums=('SKIP') # SKIP if local files +build() { + cd "$srcdir" + cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr + make +} +package() { + install -Dm755 "$srcdir/${pkgname}" "$pkgdir/usr/bin/${pkgname}" + install -Dm644 "$srcdir/templates/index.html" "$pkgdir/usr/share/${pkgname}/templates/index.html" + install -Dm644 "$srcdir/static/htmx.min.js" "$pkgdir/usr/share/${pkgname}/static/htmx.min.js" + install -Dm644 "$srcdir/static/settings.json" "$pkgdir/usr/share/${pkgname}/static/settings.json" + install -Dm644 "$srcdir/lf-server-admin-panel.service" "$pkgdir/usr/lib/systemd/system/lf-server-admin-panel.service" +} \ No newline at end of file diff --git a/README.md b/README.md index b394c14..9d1b02c 100644 --- a/README.md +++ b/README.md @@ -7,4 +7,17 @@ pacman -S crow asio gdb gcc cmake make ### vscode build : Ctrl+Shift+P → "CMake: Configure" -run : F5 or Run → Start Debugging \ No newline at end of file +run : F5 or Run → Start Debugging + +## Make Package +1. tar the source files to make it cleaner + +``` +tar czf lf-server-admin-panel-0.1.0.tar.gz src/ static/ templates/ lf-server-admin-panel.service CMakeLists.txt +``` + +2. create the package + +``` +makepkg -fL +``` \ No newline at end of file diff --git a/lf-server-admin-panel.service b/lf-server-admin-panel.service new file mode 100644 index 0000000..c96049d --- /dev/null +++ b/lf-server-admin-panel.service @@ -0,0 +1,13 @@ +[Unit] +Description=lf-server-admin-panel Service +After=network.target + +[Service] +Type=simple +WorkingDirectory=/usr/share/lf-server-admin-panel +ExecStart=/usr/bin/lf-server-admin-panel +Restart=on-failure +RestartSec=5 + +[Install] +WantedBy=multi-user.target \ No newline at end of file diff --git a/service-viewer/PKGBUILD b/service-viewer/PKGBUILD deleted file mode 100644 index ff05bba..0000000 --- a/service-viewer/PKGBUILD +++ /dev/null @@ -1,18 +0,0 @@ -pkgname=service-viewer -pkgver=1.0.0 -pkgrel=1 -arch=('x86_64') -depends=('crow') # add any libraries you need -pkgdesc="A C++ Crow/HTMX web service" -license=('MIT') -source=('src/') -md5sums=('SKIP') # SKIP if local files -build() { - # No build needed if already compiled - return 0 -} -package() { - install -Dm755 "$srcdir/src/yourapp" "$pkgdir/usr/bin/yourapp" - install -Dm644 "$srcdir/src/assets/index.html" "$pkgdir/usr/share/yourapp/index.html" - install -Dm644 "$srcdir/src/assets/style.css" "$pkgdir/usr/share/yourapp/style.css" -} \ No newline at end of file diff --git a/src/json_settings.cpp b/src/json_settings.cpp index fe43424..0c3e4dd 100644 --- a/src/json_settings.cpp +++ b/src/json_settings.cpp @@ -44,7 +44,7 @@ expected AppSettings::loadAppSettings() { return settings; } -optional AppSettings::getId(string_view name){ +optional AppSettings::getId(string_view name){ for (auto& service : services) { if(service.name == name) { return service.service; diff --git a/src/json_settings.h b/src/json_settings.h index df59478..e92cd85 100644 --- a/src/json_settings.h +++ b/src/json_settings.h @@ -14,7 +14,7 @@ struct Service { struct AppSettings { static std::expected loadAppSettings(); - std::optional getId(std::string_view name); + std::optional getId(std::string_view name); std::vector services; }; diff --git a/src/systemd.cpp b/src/systemd.cpp index 36907af..74a3e85 100644 --- a/src/systemd.cpp +++ b/src/systemd.cpp @@ -21,6 +21,7 @@ namespace systemd { void toggle_service(string_view serviceName){ string_view toggle = is_service_active(serviceName) ? "stop" : "start"; const string cmd = format("systemctl {} {}", toggle, serviceName); - system(cmd.c_str()); + // TODO: add error handling + (void)system(cmd.c_str()); } } \ No newline at end of file