- Add .github/workflows/test.yml, using flatpak-builder's run-tests option so PRs and pushes exercise ctest inside the same KDE SDK sandbox as release builds. - Add REUSE.toml covering files that can't carry an inline SPDX header (.desktop, keys/*.asc). - Add CONTRIBUTING.md documenting build/test/release steps.
1.7 KiB
Contributing to Kareer
Build
Kareer is a KDE/Kirigami application (C++20 + QML) built with CMake and Extra CMake Modules. See the README for the full list of system packages to install, then:
cmake -B build -G Ninja
cmake --build build
./build/bin/kareer
Every GUI action is also available from the kareer CLI
(add|list|show|update|stage|delete|stats|stages) — run ./build/bin/kareer --help to see the subcommands.
Test
ctest --test-dir build --output-on-failure
Tests live in autotests/ and link the core logic directly out of src/
(see autotests/CMakeLists.txt). CI runs the same suite on every pull
request via .github/workflows/test.yml, using flatpak-builder's
run-tests option so the run happens inside the same KDE SDK sandbox as
release builds.
Conventions
- Every source file starts with
SPDX-License-Identifier: GPL-3.0-or-later(in whatever comment syntax fits the file type). Files that can't carry an inline header —.desktop,keys/*.asc— are covered instead byREUSE.toml. src/is intentionally flat: one class per concern, nomodels/,controllers/, orviewmodels/subfolders.- C++ backend classes are exposed to QML via
QML_ELEMENT; QML views are meant to stay thin renderers over that state, not hold logic themselves. JobsDatabaseis the only class that touches the SQLite database directly — route all persistence changes through it.
Releasing
.github/workflows/build.yml builds, signs, and publishes a Flatpak
bundle whenever a v* tag is pushed. To cut a release: bump
project(... VERSION ...) in CMakeLists.txt, add a matching <release>
entry to the metainfo file, update the manifest's pinned tag:, then tag
and push.