An open source command-line task management application written in C++.
With inspiration from taskell, taskpp is intended to support JSON imports and exports to integrate with Github and Gitlab APIs.
Q: Why isn't this being written in Rust?
A: I'm just beginning to learn Rust and I believe I can get more done
in a cleaner fashion with C++, given my familiarity with it.
Q: C++ is old, what the hell?
A: Yes, it is. However, new standards in recent years have modernized
C++ quite a bit; we'll be using C++20-supported compilers and stdlibs in
this project.
Some dependencies are required to build taskpp:
meson
ninja
gcc, clang (with C++ frontend, support for C++20)
gcovr (optional, for coverage)
lcov (optional, for html coverage)
gtest (required for testing)
libfmt
boost (program_options, filesystem)
doxygen (optional, for doc)
graphviz (optional, for doc)
git (required for meson project versioning; requires tags)
First, configure meson for the project:
$ meson builddir
Now that we have a build directory, we can compile the project:
$ ninja -C builddir
After Building, users can install the project to their system:
$ ninja -C builddir install
taskpp uses the Google Test framework to perform tests against our source code.
Code coverage is controlled by passing -Db_coverage=true to meson.
-Dbuild_tests=true must be set to run tests:
$ meson -Db_coverage=true -Dbuild_tests=true builddir
First, Build the project. Next, run tests:
$ ninja -C builddir test
After running tests, produce coverage reports:
$ ninja -C builddir coverage-text
$ ninja -C builddir coverage-xml
Note: meson does not currently have a way to exclude source
files from the coverage report. To cleanup coverage reports,
kevr's meson patch
can be used to add support for the GCOV_ARGS environment variable.
We can then pass --exclude to gcovr via the new variable:
## with kevr's meson patch
## define GCOV_ARGS to exclude sources ending in .test.cpp
$ export GCOV_ARGS="--exclude '.*\.test\.cpp'"
$ ninja coverage-text -C builddir
Going out of our way to exclude .test.cpp files is a bit too
cumbersome without the aforementioned patch merged into meson
upstream. We would primarily like to do this because branch
coverage in .test.cpp files can be sporadic and we care about
it being properly exercised within real application source code.
To build documentation for the project, run ninja's doc target:
$ ninja -C builddir doc
Doxygen will be used to generate documentation and store output in
<project_root>/doxygen.
-
Visit our IRC channel #taskpp on Libera.chat
- Web client: https://web.libera.chat/?channel=#taskpp
-
File an issue at https://gitlab.com/kevr2d2/taskpp
-
For private inquiries, send me an email at kevr@0cost.org
Developers wishing to contribute to the project are absolutely welcome to do so. Merge requests are welcomed at any time in our Gitlab repository.
If you're looking to find issues to help with, visit https://gitlab.com/kevr2d2/taskpp/issues to search for something you'd like to work on.
When it comes to modifying existing code, we require 100% coverage on any code that was touched (see Testing).
- Badges were sourced from https://img.shields.io/badge/.
taskpp is developed under the GPLv2 public license.
Copyright © 2022 Kevin Morris
Complete GPLv2 text can be found in LICENSE.