# Developing Taskwarrior

## Satisfy the Requirements:

 * CMake 3.0 or later
 * gcc 7.0 or later, clang 6.0 or later, or a compiler with full C++17 support
 * libuuid (if not on macOS)
 * python 3 (optional, for running the test suite)
 * Rust 1.64.0 or higher (hint: use https://rustup.rs/ instead of using your system's package manager)

## Obtain and Build Code:
```
    $ git clone --recursive https://github.com/GothenburgBitFactory/taskwarrior taskwarrior.git
    $ cd taskwarrior.git
    $ git checkout develop               # Latest dev branch
    $ git submodule init                 # This is now done by cmake as a test
    $ git submodule update               # Update the libhsared.git submodule
    $ cmake -DCMAKE_BUILD_TYPE=debug .   # debug or release. Default: neither
    $ make VERBOSE=1 -j4                 # Shows details, builds using 4 jobs
                                         # Alternately 'export MAKEFLAGS=-j 4'
```

This will build several executables, but the one you want is probably `src/task`.
When you make changes, just run the last line again.

## Run the Test Suite:

First switch to the test directory:

```
    $ cd test
```
Then you can run all tests, showing details, with
```
    $ make VERBOSE=1
```
Alternately, run the tests with the details hidden in `all.log`:
```
    $ ./run_all
```
Either way, you can get a summary of any test failures with:
```
    $ ./problems
```

Note that any development should be performed using a git clone, and the current development branch.
The source tarballs do not reflect HEAD, and do not contain the test suite.
Follow the [GitHub flow](https://docs.github.com/en/get-started/quickstart/github-flow) for creating a pull request.
