Compare commits

...

1194 Commits

Author SHA1 Message Date
Dustin J. Mitchell
7a092bea03 Release v3.2.0 (#3679) 2024-11-12 14:52:22 -05:00
Dustin J. Mitchell
54a94bd18c include bubblegum-256.theme in default .taskrc (#3673) 2024-11-08 13:10:04 +01:00
Dustin J. Mitchell
a2f9b92d6c Better undo output (and remove undo.style config) (#3672) 2024-11-07 14:56:34 -05:00
Dustin J. Mitchell
dcc8a8cdde bump libshared for bold 256color support (#3670)
In particular, commit 47a750c385.
2024-11-06 07:40:16 -05:00
Dustin J. Mitchell
c9967c20e2 Restore support for task info journal (#3671)
This support was removed before Taskwarrior-3.x, and is now restored,
including the original tests removed in
ddd367232e
2024-11-06 07:39:39 -05:00
Dustin J. Mitchell
7da23aee1c Run cargo test and fix it (#3663)
run cargo test and fix it
2024-11-05 08:55:10 -05:00
Denis Zh.
5b1be95f7d Add color.calendar.scheduled to no-color.theme (#3666)
* Add scheduled color setting for calendar report
* Add default color.calendar.scheduled to all themes
2024-11-05 08:54:49 -05:00
Denis Zh.
0ff7844732 Fix missing line in man task-color (#3665)
Escape leading single quote to prevent groff misinterpretation as a
control character.
2024-11-05 08:00:43 -05:00
pre-commit-ci[bot]
023e7958c9 [pre-commit.ci] pre-commit autoupdate (#3664)
updates:
- [github.com/pre-commit/mirrors-clang-format: v19.1.2 → v19.1.3](https://github.com/pre-commit/mirrors-clang-format/compare/v19.1.2...v19.1.3)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2024-11-04 16:42:35 -05:00
Dustin J. Mitchell
8184226319 Support ENABLE_TLS_NATIVE_ROOTS to use system TLS CAs (#3660) 2024-11-02 11:16:23 +01:00
Dustin J. Mitchell
94c95563ab Upgrade to TaskChampion 0.9.0 (#3662)
See https://github.com/GothenburgBitFactory/taskchampion/releases/tag/v0.9.0
2024-10-31 12:59:49 +00:00
Dustin J. Mitchell
6ff900f3fc Use Replica::pending_tasks (#3661)
This replaces a loop over _all_ tasks with one that fetches only pending
tasks, as determined by the working set.

This should be faster for task DB's with large numbers of completed
tasks, although on my medium-sized installation (~5000 total tasks) the
difference is negligible.
2024-10-30 21:49:04 -04:00
dependabot[bot]
8bad3cdcbc Bump docker/build-push-action from 6.8.0 to 6.9.0 (#3642)
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.8.0 to 6.9.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/v6.8.0...v6.9.0)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-27 15:22:38 -04:00
pre-commit-ci[bot]
0bb32d188c [pre-commit.ci] pre-commit autoupdate (#3657)
updates:
- [github.com/pre-commit/mirrors-clang-format: v19.1.1 → v19.1.2](https://github.com/pre-commit/mirrors-clang-format/compare/v19.1.1...v19.1.2)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2024-10-27 15:22:29 -04:00
dependabot[bot]
c3b850898f Bump sigstore/cosign-installer from 3.6.0 to 3.7.0 (#3641)
Bumps [sigstore/cosign-installer](https://github.com/sigstore/cosign-installer) from 3.6.0 to 3.7.0.
- [Release notes](https://github.com/sigstore/cosign-installer/releases)
- [Commits](https://github.com/sigstore/cosign-installer/compare/v3.6.0...v3.7.0)

---
updated-dependencies:
- dependency-name: sigstore/cosign-installer
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-27 15:22:12 -04:00
Fredrik Lanker
af8c5d58c8 Limit the allowed epoch timestamps (#3651)
The code for parsing epoch timestamps when displaying tasks only
supports values between year 1980 and 9999. Previous to this change, it
was possible to set e.g., the due timestamp to a value outside of these
limits, which would make it impossible to later on show the task.

With this change, we only allow setting values within the same limits
used by the code for displaying tasks.
2024-10-23 19:18:21 -04:00
Dustin J. Mitchell
2db373d631 Update to TaskChampion 0.8.0 (#3648)
* Update to TaskChampion 0.8.0

* Cargo update
2024-10-22 19:37:47 -04:00
Dustin J. Mitchell
96c72f3e06 Issue warnings instead of errors for 'weird' tasks (#3646)
* Issue warnings instead of errors for 'weird' tasks

* Support more comprehensive checks when adding a task
2024-10-22 15:15:51 -04:00
Thomas Lauf
4bf6144daf Add SECURITY.md (#3655) 2024-10-21 15:16:25 -04:00
Scott Mcdermott
3e20ad6f6f Pass rc.weekstart to libshared for ISO8601 weeknum parsing if "monday" (#3654)
* libshared: bump for weekstart, epoch defines, eopww fix

mainly those visible changes, and miscellaneous others

see GothenburgBitFactory/taskwarrior#3623 (weekstart)
see GothenburgBitFactory/taskwarrior#3651 (epoch limit defines)
see GothenburgBitFactory/libshared#73 (eopww fix)

* Initialize libshared's weekstart from user's rc.weekstart config

This enables use of newer libshared code that can parse week numbers
according to ISO8601 instead of existing code which is always using
Sunday-based weeks.  To get ISO behavior, set rc.weekstart=monday.
Default is still Sunday / old algorithm, as before, since Sunday is in
the hardcoded default rcfile.

Weekstart does not yet fix week-relative shortcuts, which will still
always use Monday.

See #3623 for further details.
2024-10-19 16:00:50 -04:00
Dustin J. Mitchell
7bd3d1b892 Install uuid-dev in GitHub action (#3647) 2024-10-14 17:48:41 -04:00
pre-commit-ci[bot]
0bd3989bab [pre-commit.ci] pre-commit autoupdate (#3650)
updates:
- [github.com/psf/black: 24.8.0 → 24.10.0](https://github.com/psf/black/compare/24.8.0...24.10.0)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2024-10-14 17:47:39 -04:00
Dustin J. Mitchell
26c383d615 Restore 'load' timer (#3635)
* Restore 'load' timer

* [pre-commit.ci] auto fixes from pre-commit.com hooks

for more information, see https://pre-commit.ci

---------

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2024-10-10 07:33:02 +02:00
pre-commit-ci[bot]
a8b4bcdda8 [pre-commit.ci] pre-commit autoupdate (#3638)
updates:
- [github.com/pre-commit/pre-commit-hooks: v4.6.0 → v5.0.0](https://github.com/pre-commit/pre-commit-hooks/compare/v4.6.0...v5.0.0)
- [github.com/pre-commit/mirrors-clang-format: v18.1.8 → v19.1.1](https://github.com/pre-commit/mirrors-clang-format/compare/v18.1.8...v19.1.1)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2024-10-07 14:36:44 -04:00
Dustin J. Mitchell
28628e5dca Add newline in sync error message (#3603) 2024-10-03 18:32:13 -04:00
dependabot[bot]
ff2b1cb888 Bump docker/build-push-action from 6.7.0 to 6.8.0 (#3637)
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.7.0 to 6.8.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/v6.7.0...v6.8.0)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-30 08:59:26 -04:00
dependabot[bot]
cfe92ce845 Bump threeal/gcovr-action from 1.0.0 to 1.1.0 (#3636)
Bumps [threeal/gcovr-action](https://github.com/threeal/gcovr-action) from 1.0.0 to 1.1.0.
- [Release notes](https://github.com/threeal/gcovr-action/releases)
- [Commits](https://github.com/threeal/gcovr-action/compare/v1.0.0...v1.1.0)

---
updated-dependencies:
- dependency-name: threeal/gcovr-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-30 08:06:38 -04:00
Dustin J. Mitchell
c95dc9d149 Ignore SIGPIPE (#3627)
This replicates what the Rust runtime does, and matches what Rust code
expects, for example when writing to a socket which is no longer
connected to the remote end.
2024-09-22 18:57:46 -04:00
Gagan Nagaraj
d75ef7f197 Check if end date is being set to a pending task (#3622)
check if end date is being set to a pending task

-throw error if end date is being set to a pending task
- add test for the bug
2024-09-13 12:16:20 -04:00
Gagan Nagaraj
c00c0e941b Throw error when task config write is unsuccessfully (#3620) 2024-09-11 10:20:22 -04:00
Gagan Nagaraj
6a24510473 Exclude attributes starting with tag_ (#3619)
* Exclude attributes starting with tag_

* Check only for tag_*
2024-09-09 08:12:19 -04:00
Tobias Predel
72f9cd91a5 Refine INSTALL file (#3615)
Update INSTALL file

CMake can also abstract the install procedure from the underlying Makefile
2024-09-02 18:22:33 -04:00
Dustin J. Mitchell
44d443a8d6 Update INSTALL file (#3606) 2024-09-02 12:53:50 +00:00
Dustin J. Mitchell
2e3badbf99 Add some instructions to the MSRV (#3604)
There is no easy way to determine the MSRV for TaskChampion, other than
somehow pulling the right version of the source and grepping for it. In
practice, if we update the `taskchampion` dependency to one that has a
higher MSRV, we'll get a build error and find this comment. And if we
get an error building Taskwarrior due to an old MSRV (for example if
something changes on `crates.io`) then we will also find this comment.

This also removes some superfluous dependency versions from the root
workspace. `src/taskchampion-cpp/Cargo.toml` specifies versions
directly.
2024-08-26 21:45:19 -04:00
dependabot[bot]
6cfbb16966 Bump docker/build-push-action from 6.6.1 to 6.7.0 (#3602)
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.6.1 to 6.7.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/v6.6.1...v6.7.0)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-19 09:22:41 -04:00
Dustin J. Mitchell
70632b088e Do not count undo operations in the 'would be reverted..' message (#3598) 2024-08-14 08:35:34 -04:00
dependabot[bot]
d46e5eca58 Bump docker/build-push-action from 6.5.0 to 6.6.1 (#3595)
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.5.0 to 6.6.1.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/v6.5.0...v6.6.1)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-12 08:23:45 -04:00
dependabot[bot]
05da133eb6 Bump sigstore/cosign-installer from 3.5.0 to 3.6.0 (#3594)
Bumps [sigstore/cosign-installer](https://github.com/sigstore/cosign-installer) from 3.5.0 to 3.6.0.
- [Release notes](https://github.com/sigstore/cosign-installer/releases)
- [Commits](https://github.com/sigstore/cosign-installer/compare/v3.5.0...v3.6.0)

---
updated-dependencies:
- dependency-name: sigstore/cosign-installer
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-12 08:22:36 -04:00
Dustin J. Mitchell
c719cce4f1 Run all C++ tests from a single executable (#3582) 2024-08-12 00:20:17 +00:00
Dustin J. Mitchell
4ff63a7960 Use TaskChampion 0.7.0, now via cxx instead of hand-rolled FFI (#3588)
TC 0.7.0 introduces a new `TaskData` type that maps to Taskwarrior's
`Task` type more cleanly. It also introduces the idea of gathering lists
of operations and "committing" them to a replica.

A consequence of this change is that TaskChampion no longer
automatically maintains dependency information, so Taskwarrior must do
so, with its `TDB2::dependency_sync` method. This method does a very
similar thing to what TaskChampion had been doing, so this is a shift of
responsibility but not a major performance difference.

Cxx is .. not great. It is missing a lot of useful things that make a
general-purpose bridge impractical:

 - no support for trait objects
 - no support for `Option<T>` (https://github.com/dtolnay/cxx/issues/87)
 - no support for `Vec<Box<..>>`

As a result, some creativity is required in writing the bridge, for
example returning a `Vec<OptionTaskData>` from `all_task_data` to allow
individual `TaskData` values to be "taken" from the vector.

That said, Cxx is the current state-of-the-art, and does a good job of
ensuring memory safety, at the cost of some slightly awkward APIs.

Subsequent work can remove the "TDB2" layer and allow commands and other
parts of Taskwarrior to interface directly with the `Replica`.
2024-08-11 02:06:00 +00:00
Jan Christian Grünhage
0f96fd31bf Update google-cloud-auth to drop ring@0.16.20 (#3591)
* Update google-cloud-auth to drop ring@0.16.20

ring@0.16.20 doesn't build on ppc and risc-v, and updating
google-cloud-auth pulls in a newer version of jsonwebtoken,
which in turn depends on a newer version of ring that we depend on
already either way.

This necessitated an MSRV bump to 1.73.0
2024-08-09 21:24:12 -04:00
Jan Christian Grünhage
3d30f2ac46 Optionally use system provided corrosion (#3590) 2024-08-09 13:05:19 -04:00
Dustin J. Mitchell
49e09a9783 Remove accidentally-included sqlite3 file (#3589) 2024-08-08 03:11:56 +00:00
Dustin J. Mitchell
17889a3f25 Actually run shell tests (#3583)
Two of these used EXPFAIL which, because nothing is interpreting the TAP
output, does not work. So, that functionality is removed, and the
expected-to-fail bits are commented out or removed.

There was a conditional on the filename in `bash_tap.sh` which caused it
to not actually do anything and just run the test as a simple shell
script. That, too, has been removed.
2024-08-07 00:44:12 +00:00
pre-commit-ci[bot]
c0b708d1f3 [pre-commit.ci] pre-commit autoupdate (#3587)
updates:
- [github.com/psf/black: 24.4.2 → 24.8.0](https://github.com/psf/black/compare/24.4.2...24.8.0)

Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
2024-08-05 14:20:35 -04:00
Dustin J. Mitchell
5c6cc3e522 Release 3.1.0 (#3574) 2024-08-04 16:51:11 +00:00
Dustin J. Mitchell
160be69852 Update to docker compose v2 (#3577) 2024-08-04 16:37:18 +00:00
Dustin J. Mitchell
70714e8ca0 Merge pull request #3566 from felixschurk/add-clang-format
Add clang-format to enforce style guide
2024-07-29 17:45:36 -04:00
Felix Schurk
4d058a5c5a add .git-blame-ignore-revs file to hide formating changes in git blame 2024-07-29 22:36:03 +02:00
Felix Schurk
93356b39c3 add initial bulk run from pre-commit over all files 2024-07-29 22:34:51 +02:00
Felix Schurk
665aeeef61 reflect updated code-style and workflow in documentation 2024-07-29 22:33:17 +02:00
Felix Schurk
954d3f5058 add blank line between cmake.h header include to prevent sorting
* add required comment in the line below cmake.h include header
2024-07-29 22:33:17 +02:00
Felix Schurk
dfc3566796 add .cache from clang-format to .gitignore 2024-07-29 22:33:17 +02:00
Felix Schurk
a40ead9c60 add pre-commit-config.yaml file
Includes default tools, as well as clang-format and black.
2024-07-29 22:33:17 +02:00
Felix Schurk
5406772b66 add clang-format initial version 2024-07-29 22:33:16 +02:00
dependabot[bot]
234fac40c6 Bump docker/build-push-action from 6.4.1 to 6.5.0 (#3570)
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.4.1 to 6.5.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/v6.4.1...v6.5.0)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-29 08:50:15 -04:00
dependabot[bot]
9de339e087 Bump docker/login-action from 3.2.0 to 3.3.0 (#3569)
Bumps [docker/login-action](https://github.com/docker/login-action) from 3.2.0 to 3.3.0.
- [Release notes](https://github.com/docker/login-action/releases)
- [Commits](https://github.com/docker/login-action/compare/v3.2.0...v3.3.0)

---
updated-dependencies:
- dependency-name: docker/login-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-29 08:49:13 -04:00
Adrian Sadłocha
bb72ea6169 Remove encoding declaration in Python files (#3568)
As per
https://docs.python.org/3.11/reference/lexical_analysis.html#encoding-declarations,
the default encoding of Python files is UTF-8. In fact, it's been the
default encoding since Python 3.0 (released in 2008).
2024-07-26 23:36:23 -04:00
dependabot[bot]
3a07f70253 Bump docker/build-push-action from 6.3.0 to 6.4.1 (#3562)
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.3.0 to 6.4.1.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/v6.3.0...v6.4.1)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-26 23:35:18 -04:00
Adrian Sadłocha
9c49863795 Make task news nag configurable and deterministic (#3567)
This patch fixes #3497.
2024-07-26 20:30:54 -04:00
Adrian Sadłocha
9dde68f918 Remove unused variables in task history implementation (#3564) 2024-07-24 19:54:56 -04:00
Adrian Sadłocha
4dc3093b22 Update a comment to match the code (#3565) 2024-07-24 19:52:25 -04:00
Adrian Sadłocha
40ea3f2f54 Fix conversion from TCStatus::Unknown (#3561)
Before this patch, the messsage would be "unknown TCStatus 4294967295"
(i.e. `u32::MAX`) instead of "unknown TCStatus -1".
2024-07-20 06:46:06 -04:00
Adrian Sadłocha
7ea4baed77 Warn if an import contains multiple occurrences of the same UUID (#3560) 2024-07-19 22:27:16 -04:00
Dustin J. Mitchell
0650fe509f Fix formatting in task-sync manpage (#3535) 2024-07-15 14:50:01 +02:00
Dustin J. Mitchell
7d79b9e516 Rename 'expiration.on-sync' to 'purge.on-sync' (#3556)
Taskwarrior uses "expire" to refer to deletion of tasks past their
"until" date, so let's use `purge` to link this semantically to the
`task purge` command.
2024-07-14 15:45:26 -04:00
Dustin J. Mitchell
1304d6361c Restore 'task purge' functionality (#3540)
Co-authored-by: ryneeverett <ryneeverett@gmail.com>
2024-07-14 15:59:00 +00:00
Sebastian Carlos
e156efae7d Note in taskrc(5) that "undo" configurations are not currently supported (#3518) 2024-07-13 22:54:35 -04:00
Dustin J. Mitchell
d4649dd210 Revert "Do not create recurring tasks before today (#3542)" (#3555)
This reverts commit 6d3519419e.
2024-07-13 19:12:49 -04:00
Dustin J. Mitchell
9db275fedb Fix link in issue template (#3554) 2024-07-12 21:27:11 -04:00
Dustin J. Mitchell
c477b2b59c Do not claim that Taskwarrior automatically syncs (#3537)
Taskwarrior only syncs when `task sync` is run.
2024-07-12 21:23:20 -04:00
Dustin J. Mitchell
213b9d3aee Add support for task expiration (#3546) 2024-07-09 16:39:39 -04:00
Will R S Hansen
2bd609afe3 Export tasks in a deterministic order (#3549)
fix issue #3527
2024-07-09 03:22:14 +00:00
dependabot[bot]
61c9b48664 Bump docker/build-push-action from 6.2.0 to 6.3.0 (#3547)
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.2.0 to 6.3.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/v6.2.0...v6.3.0)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-08 07:49:05 -04:00
Felix Schurk
4a04275266 add faketime and change to apt-get in devcontainer (#3543)
We require faketime to be installed for running the tests, therefore its added.
Further for non-interactive usage apt-get is recommended, therefore the change.
2024-07-07 23:04:09 +02:00
koleesch
847c482c25 Remove duplicate check from task diag (#3545) 2024-07-07 13:19:54 -04:00
Dustin J. Mitchell
6d3519419e Do not create recurring tasks before today (#3542)
Tasks can be due "today", as `task add foo due:today ..` is a common
form. However, recurrences before that are just not created.

This avoids a lengthy "hang" when recurrences are updated on an old task
database, as many tasks in the past are created.
2024-07-07 08:51:09 -04:00
Sebastian Carlos
d1a3573c5f Replace "gc" with "rebuild" in man pages. (#3533)
Replace "gc" with "rebuild" in man page.

Also, explain IDs in the context of the working set of tasks.
2024-07-04 22:32:22 -04:00
Hector Dearman
fa5604ea8d Relax sync.server.origin to allow paths (#3423) 2024-07-04 23:17:52 +00:00
Felix Schurk
85f52e3630 Update performance scripts (#3532)
* update performance script to work with out-of-source build
* update displayed messages and remove perf.rc file
* remove .gitignore in performance folder
2024-07-04 08:45:42 +02:00
Felix Schurk
eb22036f6b Update to taskchampion 0.6 (#3531)
* update dependency to taskchampion 0.6
* change from origin to url in remote server
2024-07-04 08:45:11 +02:00
dependabot[bot]
9372c988fa Bump docker/build-push-action from 6.0.0 to 6.2.0 (#3529)
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 6.0.0 to 6.2.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/v6.0.0...v6.2.0)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-01 09:37:08 -04:00
Sebastian Carlos
1b81813223 Clarify relation between the DUE tag and the rc.due setting in task(1) (#3526)
Also, clarify that DUE is based on a number of days since the current date.

Co-authored-by: Sebastian Carlos <sebastiancarlos@gmail.com>
2024-06-28 18:13:02 -04:00
Sebastian Carlos
b70d8ef574 Remove locking config (#3519)
This flag is no longer needed. It was used to control file locking on the *.data files.

Co-authored-by: Sebastian Carlos <sebastiancarlos@gmail.com>
2024-06-28 18:12:10 -04:00
Felix Schurk
5ab51271b0 increase timout to 10s and run on ubuntu-latest (#3523)
As identified in #3512 it seams as the problem was the internal timeout.
Closes #3507.
2024-06-28 18:11:53 -04:00
Sebastian Carlos
64609a0407 Consistently exclude WAITING tasks from reports which filter by status (#3525)
Consistently exclude WAITING tasks from reports which filter by status

If I understand correctly, the virtual status "waiting" is deprecated.
This is why some reports include the explicit "-WAITING" filter even
though it is not necessary: The idea is that being explicit will be
needed in the future when the "waiting" status is removed.

But I noticed that some reports do not include the "-WAITING" filter, so
I added it to all reports that filter by status.
2024-06-28 18:02:37 -04:00
Sebastian Carlos
750af261aa Un-deprecate the non-1/0 boolean values (#3522)
As per https://github.com/GothenburgBitFactory/tw.org/issues/867

Co-authored-by: Sebastian Carlos <sebastiancarlos@gmail.com>
2024-06-26 22:29:26 -04:00
Dustin J. Mitchell
9cd1b96e1f Remove support for the F4 format (#3494)
This was only still used in tests.
2024-06-26 07:33:46 +02:00
Dustin J. Mitchell
f1460013be Include fewer deps (#3489)
Update chrono, and include fewer deps

Somewhere in the process of moving TaskChampion back to its own repo,
Taskwarrior's `Cargo.toml` ended up containing all of its dependencies,
unnecessarily.

This included an old version of `chrono` (addressed in
https://github.com/GothenburgBitFactory/taskchampion/pull/399). Removing
the old version requirement from `Cargo.toml` results in using a newer
version, addressing a (benign) security vulnerability.
2024-06-24 17:19:12 -04:00
Sebastian Carlos
910860ae1c Properly tag monospaced text in man pages. (Improves HTML rendering) (#3509)
This would be immediately useful to improve the rendering of the man
pages in third-party websites such as manned.org and the arch man pagesk
- https://mankier.com/1/task
- https://man.archlinux.org/man/task.1

The regular console output, or websites which render the manpage in
monospaced fonts, will not be affected by this change.

This change could also help with eventually rendering the manpages in
the documentation website, and having a mix of monospaced and variable
width fonts.

To test the HTML output:
```bash
git clone git@github.com:jacksonp/manner.git # used by ManKier
./manner/manner.php task.1.in >| task.1.html && $BROWSER task.1.html
```

Co-authored-by: Sebastian Carlos <sebastiancarlos@gmail.com>
2024-06-24 14:00:12 -04:00
Sebastian Carlos
71becf0185 Remove mentions of legacy data files in the man pages (#3516)
Co-authored-by: Sebastian Carlos <sebastiancarlos@gmail.com>
2024-06-24 13:59:00 -04:00
Felix Schurk
572268606f update branch in coverage status badge (#3515) 2024-06-24 17:31:53 +02:00
Dustin J. Mitchell
e3181aa8d4 Consider all news "major" (#3493)
This has the effect that `task news` will unconditionally update the
config with the new version once news has been shown (assuming the user
does not kill the process first).
2024-06-24 08:14:33 -04:00
Sebastian Carlos
e7ad31c1c2 Document the 'status' attribute in the man page (#3511)
Co-authored-by: Sebastian Carlos <sebastiancarlos@gmail.com>
2024-06-23 19:45:08 -04:00
Sebastian Carlos
1d59c210d2 Document 'modified' attribute in man page. (#3510)
Co-authored-by: Sebastian Carlos <sebastiancarlos@gmail.com>
2024-06-23 19:25:43 -04:00
Felix Schurk
e0e6ea7170 remove test certificates and link in python code (#3506)
With taskwarrior > 3.0 these are no longer required and thus can be
removed.
2024-06-22 19:52:43 -04:00
Adrian Galilea
bb8a105754 Add bubblegum-256.theme for improved legibility and contrast (#3376) (#3505) 2024-06-22 19:46:56 -04:00
Dustin J. Mitchell
261e07dc0d Add a config.toml symlink (#3503)
This also uses `cargo xtask` in the action, to test this functionality
2024-06-21 18:18:16 -04:00
Dustin J. Mitchell
5f983a66af Include version in default-generated .taskrc (#3500)
This will avoid new users being prompted with all the news since
2.5.0.
2024-06-21 08:32:09 -04:00
Felix Schurk
c44229dd32 create coverage actions (#3483)
* add coveralls coverage actions to tests
* using Ninja for Build
* exclude build directory in coverage report
* let distro tests run after successful coverage run
* add coveralls badge to readme

Closes #3413.
2024-06-21 12:31:45 +00:00
Hector Dearman
0119867223 Resolve a number of minor warnings (#3495) 2024-06-20 08:29:39 -04:00
Hector Dearman
210ec10132 Update cargo dependencies (#3496)
Run cargo update

The build was failing on nightly-aarch64-apple-darwin
(rustc 1.81.0-nightly (d8a38b000 2024-06-19))
due issues like:

error[E0635]: unknown feature `stdsimd`
  --> /Users/chromy/.cargo/registry/src/index.crates.io-6f17d22bba15001f/ahash-0.7.6/src/lib.rs:33:42
   |
33 | #![cfg_attr(feature = "stdsimd", feature(stdsimd))]
   |                                          ^^^^^^^

This was due to:
https://users.rust-lang.org/t/error-e0635-unknown-feature-stdsimd/106445
And resolved by moving to a newer version of ahash.

I confirmed the build still works on:
stable-aarch64-apple-darwin (rustc 1.78.0 (9b00956e5 2024-04-29))
1.70.0-aarch64-apple-darwin (rustc 1.70.0 (90c541806 2023-05-31))

after this change.

I had to manually downgrade google-cloud-auth to v0.13.0
v0.13.2 depends on jsonwebtoken v9.3.0 which drops support for rustc
1.70.0.
2024-06-20 08:28:02 -04:00
Dustin J. Mitchell
24f56b65a9 Only warn about .data files when showing reports (#3473)
* Only warn about .data files when showing reports

This avoids the warning appearing in shell completion, for example.

* Update src/commands/CmdCustom.cpp

Co-authored-by: ryneeverett <ryneeverett@gmail.com>

---------

Co-authored-by: ryneeverett <ryneeverett@gmail.com>
2024-06-19 11:17:14 +02:00
Dustin J. Mitchell
9788798189 Remove unnecessary cbindgen-related Makefile (#3486) 2024-06-19 02:54:46 +00:00
dependabot[bot]
dfab237830 Bump docker/build-push-action from 5.3.0 to 6.0.0 (#3492)
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 5.3.0 to 6.0.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/v5.3.0...v6.0.0)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-17 12:02:51 +00:00
Dustin J. Mitchell
82e645b929 Fix builds with Rust 1.79 (#3487)
* use underscore in taskchampion-lib name

* update to corrosion 0.5.0
2024-06-17 10:15:20 +02:00
Dustin J. Mitchell
161463deec Fix warning about unused method (#3488)
fix warning about unused method
2024-06-14 22:15:21 -04:00
Dustin J. Mitchell
bba010c307 Update the comms channels in README (#3484)
We don't update the bird-site anymore, libera.chaat is gone (or
un-monitored), and we prefer discussions over discord over reddit.
2024-06-14 19:37:47 -04:00
Dustin J. Mitchell
e9c6c6c846 Be resilient to a missing 'entry' in urgency (#3479)
Any combination of properties is possible - Taskwarrior should make
the best of the tasks it finds, rather than crashing.
2024-06-13 14:17:23 -04:00
dependabot[bot]
5821eda98e Bump docker/login-action from 3.1.0 to 3.2.0 (#3474)
Bumps [docker/login-action](https://github.com/docker/login-action) from 3.1.0 to 3.2.0.
- [Release notes](https://github.com/docker/login-action/releases)
- [Commits](https://github.com/docker/login-action/compare/v3.1.0...v3.2.0)

---
updated-dependencies:
- dependency-name: docker/login-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-03 17:07:15 -04:00
Dustin J. Mitchell
99827de3dd Add a release-check action to verify release tarballs have all the necessary parts (#3472) 2024-06-02 17:44:04 -04:00
dependabot[bot]
977a8f3853 Bump tokio from 1.37.0 to 1.38.0 (#3470)
Bumps [tokio](https://github.com/tokio-rs/tokio) from 1.37.0 to 1.38.0.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.37.0...tokio-1.38.0)

---
updated-dependencies:
- dependency-name: tokio
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-31 08:00:05 -04:00
Felix Schurk
236a5f0bf1 remove custom commands and custom scripts (#3468)
Fixes #3462.
2024-05-28 18:27:09 -04:00
Andonome
50052f5115 Placing limit in man 5 taskrc (#3467) 2024-05-27 15:50:59 -04:00
Andonome
d775923070 Let task show recognize limit in taskrc (#3466) 2024-05-27 13:50:46 -04:00
Dustin J. Mitchell
8a807af2ef Add test that on-add returning 1 does not add task (#3457)
This test existed, but didn't notice that the task was actually added.
The bug itself was fixed in #3443.
2024-05-15 08:11:45 -04:00
Dustin J. Mitchell
aebbfaff98 Be resilient to different numbers of local changes (#3449)
With an explanation in the comments
2024-05-14 22:03:16 -04:00
Maarten Aertsen
fb16dbf7cf Test modification of a task by an on-add hook (test case for #3416) (#3443)
* Add test case to cover https://github.com/GothenburgBitFactory/taskwarrior/issues/3416

* Add (builtin) on-add-modify test hook and use it

* TDB2::add() move hook invocation before save (#3416)
2024-05-14 21:47:43 -04:00
Dustin J. Mitchell
e4c33d1e1d move .cargo/config to config.toml (#3454) 2024-05-14 01:51:23 +00:00
Dustin J. Mitchell
20583ddb7d more specifics about docs updates (#3453) 2024-05-14 01:50:43 +00:00
Felix Schurk
82e0d53cdf add ctest as test driver (#3446) 2024-05-10 01:20:54 +00:00
Felix Schurk
2361521449 remove stress_test file (#3447)
Close #3422
2024-05-08 21:33:17 -04:00
Joseph Coffa
60575a1967 Update task-sync(5) to include delete perms for GCP sync (#3442) 2024-05-05 23:24:41 -04:00
Dominik Rehák
0deeeb0a1d CmdStart: Fix "make this task pending" note for completed tasks (#2769) 2024-05-05 20:04:18 -04:00
Philipp Oberdiek
9d9dde1065 Fix inherited urgency when parent and child have the same urgency (#2941)
Update condition for inheritance value hack

If the parent and child task have the same urgency the parent task also
needs the 0.01 extra urgency to be sorted above the child.
2024-05-05 20:02:12 -04:00
Steve Dondley
651ea36382 prevent task completion commands from triggering hooks #3131 (#3133) 2024-05-05 19:51:44 -04:00
Dustin J. Mitchell
8aa4758993 add targets for individual tests (#3431) 2024-05-03 10:06:29 -04:00
Dustin J. Mitchell
28a46880a2 Treat a nonzero exit status as a failure (#3430)
And fix the test cases that have been failing ,undetected
2024-05-03 13:58:09 +00:00
Christian Clauss
50cfbe8b63 Fix Python SyntaxError in tests/version.test.py (#3424)
% `ruff check`
```
error: Failed to parse test/version.test.py:92:54: Expected a statement
Error: test/version.test.py:92:54: E999 SyntaxError: Expected a statement
```
2024-05-03 00:30:02 +00:00
Felix Schurk
52dbecb515 remove .gitignore files and symbolic links/aliases (#3421)
* remove symbollic links in the src directory as they are no longer
  working with the out-of-source build
* remove .gitignore in the documentation (is build in build folder not
  needed)
* remove CMake folders as they are also no longer present in the source
  directory

Closes #3420.
2024-05-02 20:26:10 -04:00
Christian Clauss
b7551cbba6 Fix SyntaxWarning invalid escape sequence in Python code (#3433) 2024-05-03 00:22:33 +00:00
Dustin J. Mitchell
380c740ff0 remove pull req template (#3432) 2024-05-02 19:35:00 -04:00
Dustin J. Mitchell
94b3e301d1 Remove taskchampion source from this repo (#3427)
* move taskchampion-lib to src/tc/lib, remove the rest
* update references to taskchampion
* Use a top-level Cargo.toml so everything is consistent
* apply comments from ryneeverett
2024-05-02 02:45:11 +00:00
mattsmida
ef9613e2d6 Renaming test files according to their language (#3407) 2024-05-01 14:28:07 -04:00
Dustin J. Mitchell
43ca74549d Include the whole error message in errors from Rust (#3415) 2024-04-30 14:54:42 -04:00
Felix Schurk
d093ce3d84 Fix test script paths (#3387)
* fix path to task executable in pyton tests

The current approach would copy the current files into the `build/test`
directory. Updating the paths according to the custom user setup.

By the copy I appended `.py` to have a clear visible distingtion which
ones are the python tests.

As soon as a source file in the normal directory is changed, it is
copied over and the corresponding file is updated.

From now on the python tests would need to get run in the according
build directory.

* reflect the current build instruction in PR template

* update paths and globing in run_all

* add line break for every cpp test

* remove .gitignore in test folder

As now all the auxillary files such as `all.log` as well as the
executables are present in the `build` directory there is no longer a
need to ignore them.

* update paths in python test scripts and enable deactivated

* remove .py extension when copy to build

Further remove glob pattern for `*.t.py` tests.

* remove accidentally added template.t from test files
2024-04-28 15:38:14 -04:00
sleepy_nols
7dba5e7695 update '.data' warning message to '*.data' for better readability (#3409)
TDB2: update '.data' warning to '*.data' for better readability, closes #3406
2024-04-28 15:24:42 -04:00
Felix Schurk
eaef05ee95 Update fedora 38 docker container to fedora 40 (#3396) 2024-04-24 08:31:36 -04:00
Dustin J. Mitchell
bc86a1e53f Release 3.0.2 (#3394) 2024-04-23 00:18:38 +00:00
Dustin J. Mitchell
9b35ab37aa Remove debug print (#3389) 2024-04-22 20:01:26 -04:00
Dustin J. Mitchell
a9995808ec Update cmake support for git submodules (#3383) 2024-04-21 08:55:38 -04:00
Dustin J. Mitchell
0627447a6a Update for 3.0.1 (#3382)
update for 3.0.1
2024-04-20 23:18:57 +00:00
Dustin J. Mitchell
f054a4061e Remove taskchampion-sync-server (#3380)
This crate has been moved to
https://github.com/GothenburgBitFactory/taskchampion-sync-server.

The integration-tests repo used the sync server to test integration
between taskchampion and the sync-server. We should do that again, but
after taskchampion moves to its own repo (#3209). In the interim, the
cross-sync integration test can simply test syncing between local
servers, but the snapshot test is no longer useful as the local server
does not support snapshots.
2024-04-20 12:44:06 +00:00
dependabot[bot]
304b84e4da Bump rustls from 0.21.7 to 0.21.11 (#3379)
Bumps [rustls](https://github.com/rustls/rustls) from 0.21.7 to 0.21.11.
- [Release notes](https://github.com/rustls/rustls/releases)
- [Changelog](https://github.com/rustls/rustls/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rustls/rustls/compare/v/0.21.7...v/0.21.11)

---
updated-dependencies:
- dependency-name: rustls
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-19 19:32:49 -04:00
Dustin J. Mitchell
f86a069faf Fix paths generated from origin (#3372)
These mistakenly doubled the initial `/` character. This was broken in #3361.
2024-04-16 22:05:45 -04:00
ryneeverett
0944c73716 Recommend LSP's in development docs (#3370)
* Recommend LSP's in development docs

Per conversation in #3338.

There are already a lot of documented compile options so I think we're
better off suggesting that everybody create a compile_commands.json
whether or not they're using an LSP because it doesn't cost much.

While I was at it it seemed reasonable to mention rust LSP too. Now that
rls is deprecated I'm not sure there is any competitor to rust-analyzer
worth mentioning.

* Export compile commands by default.

Thanks to @felixschurk for the idea and telling me how to do it.

It took me a minute to figure out that this places the
compile_commands.json in the build directory rather than the root of the
project. But clangd still finds it there and that's a better place for
it anyway.
2024-04-16 08:19:58 -04:00
Dustin J. Mitchell
10cec507cb Check that sync.server.origin is a URL (#3361) 2024-04-16 02:11:55 +00:00
Dustin J. Mitchell
4d9bb20bdd Update task news to support 3.0.0 (#3342)
* Introduce Version, use it to check current version in custom reports
* Support multiple versions in 'task news'
2024-04-15 22:04:16 -04:00
dependabot[bot]
d243d000eb Bump env_logger from 0.10.0 to 0.10.2 (#3336)
Bumps [env_logger](https://github.com/rust-cli/env_logger) from 0.10.0 to 0.10.2.
- [Release notes](https://github.com/rust-cli/env_logger/releases)
- [Changelog](https://github.com/rust-cli/env_logger/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-cli/env_logger/compare/v0.10.0...v0.10.2)

---
updated-dependencies:
- dependency-name: env_logger
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-15 21:49:56 -04:00
Dustin J. Mitchell
9040a7eb79 Throw std::strings on sync server errors (#3362) 2024-04-15 21:49:17 -04:00
Dustin J. Mitchell
0a491f36ad Store all modified tasks for use by on-exit hook (#3352)
The on-exit hook gets all modified tasks as input, but this was omitted
in the previous release. This adds a test for the desired behavior, and
updates TDB2 to correctly store the required information.
2024-04-15 21:14:25 -04:00
dependabot[bot]
7578768d9b Bump peaceiris/actions-gh-pages from 3 to 4 (#3367)
Bumps [peaceiris/actions-gh-pages](https://github.com/peaceiris/actions-gh-pages) from 3 to 4.
- [Release notes](https://github.com/peaceiris/actions-gh-pages/releases)
- [Changelog](https://github.com/peaceiris/actions-gh-pages/blob/main/CHANGELOG.md)
- [Commits](https://github.com/peaceiris/actions-gh-pages/compare/v3...v4)

---
updated-dependencies:
- dependency-name: peaceiris/actions-gh-pages
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-15 21:12:20 -04:00
dependabot[bot]
cb0d21f96e Bump peaceiris/actions-mdbook from 1 to 2 (#3366)
Bumps [peaceiris/actions-mdbook](https://github.com/peaceiris/actions-mdbook) from 1 to 2.
- [Release notes](https://github.com/peaceiris/actions-mdbook/releases)
- [Changelog](https://github.com/peaceiris/actions-mdbook/blob/main/CHANGELOG.md)
- [Commits](https://github.com/peaceiris/actions-mdbook/compare/v1...v2)

---
updated-dependencies:
- dependency-name: peaceiris/actions-mdbook
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-15 21:11:17 -04:00
dependabot[bot]
3b414cd9bb Bump sigstore/cosign-installer from 3.4.0 to 3.5.0 (#3365)
Bumps [sigstore/cosign-installer](https://github.com/sigstore/cosign-installer) from 3.4.0 to 3.5.0.
- [Release notes](https://github.com/sigstore/cosign-installer/releases)
- [Commits](https://github.com/sigstore/cosign-installer/compare/v3.4.0...v3.5.0)

---
updated-dependencies:
- dependency-name: sigstore/cosign-installer
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-15 21:10:52 -04:00
Dustin J. Mitchell
c90eb8f71d remove reference to NEWS (#3357) 2024-04-12 22:46:09 -04:00
Dustin J. Mitchell
7c465ceb8f Remove NEWS, as it is redundant to 'task news' (#3354) 2024-04-07 21:58:27 -04:00
Dustin J. Mitchell
a6b721853b Remove 'sync' from default verbose flags (#3319)
Do not give sync feedback when not doing remote sync
2024-04-08 01:02:07 +00:00
ryneeverett
fd306712b8 Install corrosion as submodule. (#3348)
This will enable nixpkgs -- and any other distribution that builds in a
network sandbox and/or wants to use their own corrosion package rather
than building another one -- to do so without patching taskwarrior.

Since we're already using submodules for libshared I don't think this
should make the build process any more complicated for anyone else.

See
https://github.com/NixOS/nixpkgs/issues/300679#issuecomment-2041252688
for context.
2024-04-07 12:10:54 -04:00
Felix Schurk
b5aa7c6ae2 change order of hook invocation and setting task id (#3339)
this prevents that the task id is always returned as zero after a hook
is run on it
closes #3312
2024-04-05 19:45:55 -04:00
Dustin J. Mitchell
933885f21c Merge pull request #3341 from ryneeverett/sync-config-man-warning
sync: Point to manpage if unconfigured
2024-04-05 19:01:50 -04:00
ryneeverett
587f8910ef sync: Point to manpage if unconfigured
See #3340.
2024-04-05 10:35:15 -04:00
dependabot[bot]
de42c8ba34 Bump strum_macros from 0.25.0 to 0.25.3 (#3335)
Bumps [strum_macros](https://github.com/Peternator7/strum) from 0.25.0 to 0.25.3.
- [Release notes](https://github.com/Peternator7/strum/releases)
- [Changelog](https://github.com/Peternator7/strum/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Peternator7/strum/commits)

---
updated-dependencies:
- dependency-name: strum_macros
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-04 18:16:31 +00:00
Dustin J. Mitchell
8a0a98d3ef Issue a warning if .data files remain (#3321)
This will help users realize that they have updated to an incompatible
version and must export and import their tasks.
2024-03-31 18:55:30 -04:00
Felix Schurk
5a56cff88b prefix regex strings to be treated as raw strings (#3322)
Source for documentation
https://docs.python.org/3/reference/lexical_analysis.html#string-and-bytes-literals.
Closes #3316.
2024-03-31 09:08:56 -04:00
Dustin J. Mitchell
c91cef43b0 add note about ENABLE_SYNC to changelog (#3317) 2024-03-31 00:59:21 +00:00
Felix Schurk
8c2c629a4d use CMake project settings (#3315)
This adds a description as well as the homepage to the CMake settings.
Further it would also now use the numbering cheme as supposed to in
CMake, this way other people could now pin a specific version if
taskwarrior is included in another project.
Documentation from CMake is https://cmake.org/cmake/help/latest/command/project.html
2024-03-30 10:33:49 -04:00
dependabot[bot]
dfaf3dfcb2 Bump tokio from 1.36.0 to 1.37.0 (#3310)
Bumps [tokio](https://github.com/tokio-rs/tokio) from 1.36.0 to 1.37.0.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.36.0...tokio-1.37.0)

---
updated-dependencies:
- dependency-name: tokio
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-29 09:25:44 -04:00
Dustin J. Mitchell
06fdfc5af3 Edit Cargo.toml during release (#3302) 2024-03-27 22:56:13 +00:00
dependabot[bot]
19f2c0d7b4 Bump uuid from 1.7.0 to 1.8.0 (#3290)
* Bump uuid from 1.7.0 to 1.8.0

Bumps [uuid](https://github.com/uuid-rs/uuid) from 1.7.0 to 1.8.0.
- [Release notes](https://github.com/uuid-rs/uuid/releases)
- [Commits](https://github.com/uuid-rs/uuid/compare/1.7.0...1.8.0)

---
updated-dependencies:
- dependency-name: uuid
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* use as_bytes

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Dustin J. Mitchell <djmitche@google.com>
2024-03-24 22:19:27 +00:00
Dustin J. Mitchell
8bb08bf01d Add releasing docs (#3292)
add releasing docs
2024-03-24 21:32:38 +00:00
Dustin J. Mitchell
3e41fb604c Prepare for 3.0.0 release (#3287) 2024-03-24 16:13:06 -04:00
dependabot[bot]
d54264f80c Bump docker/build-push-action from 5.2.0 to 5.3.0 (#3289)
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 5.2.0 to 5.3.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/v5.2.0...v5.3.0)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-19 19:40:31 -04:00
dependabot[bot]
db60bf6d72 Bump docker/login-action from 3.0.0 to 3.1.0 (#3288)
Bumps [docker/login-action](https://github.com/docker/login-action) from 3.0.0 to 3.1.0.
- [Release notes](https://github.com/docker/login-action/releases)
- [Commits](https://github.com/docker/login-action/compare/v3.0.0...v3.1.0)

---
updated-dependencies:
- dependency-name: docker/login-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-19 19:40:23 -04:00
dependabot[bot]
0c8edfc50e Bump docker/build-push-action from 5.1.0 to 5.2.0 (#3285)
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 5.1.0 to 5.2.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/v5.1.0...v5.2.0)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-11 08:44:18 -04:00
dependabot[bot]
904bece710 Bump mio from 0.8.10 to 0.8.11 (#3283)
Bumps [mio](https://github.com/tokio-rs/mio) from 0.8.10 to 0.8.11.
- [Release notes](https://github.com/tokio-rs/mio/releases)
- [Changelog](https://github.com/tokio-rs/mio/blob/master/CHANGELOG.md)
- [Commits](https://github.com/tokio-rs/mio/compare/v0.8.10...v0.8.11)

---
updated-dependencies:
- dependency-name: mio
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-03-04 23:55:44 +00:00
Dustin J. Mitchell
aaff97d878 Use opensuse tumbleweed (#3282) 2024-03-04 17:42:27 +00:00
Dustin J. Mitchell
18a8bd2997 Use corrosion instead of CMakeRust (#3273)
* Use corrosion instead of CMakeRust
* use OpenSUSE tumbleweed (latest) to get newer CMake
2024-03-02 16:21:34 -05:00
Felix Schurk
8dd29e0a8a Change to out-of source build, Update build instructions (#3271)
* update build instructions

Usage of "modern" CMake syntax and using specific out of source build.
Further add example on how to build in parallel, build a specific target
and how to change the compiler.

This closes #3236.
2024-02-25 12:27:52 -05:00
ryneeverett
34c0e67469 show undo diff (#3213)
Exposes undo operations via the C API, and uses those to show a (new, differently formatted) diff before committing the undo.
2024-02-09 22:11:14 -05:00
dependabot[bot]
89df80c9f0 Bump sigstore/cosign-installer from 3.3.0 to 3.4.0 (#3267)
Bumps [sigstore/cosign-installer](https://github.com/sigstore/cosign-installer) from 3.3.0 to 3.4.0.
- [Release notes](https://github.com/sigstore/cosign-installer/releases)
- [Commits](https://github.com/sigstore/cosign-installer/compare/v3.3.0...v3.4.0)

---
updated-dependencies:
- dependency-name: sigstore/cosign-installer
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-05 11:29:42 -05:00
dependabot[bot]
79435b1a03 Bump tokio from 1.35.1 to 1.36.0 (#3268)
Bumps [tokio](https://github.com/tokio-rs/tokio) from 1.35.1 to 1.36.0.
- [Release notes](https://github.com/tokio-rs/tokio/releases)
- [Commits](https://github.com/tokio-rs/tokio/compare/tokio-1.35.1...tokio-1.36.0)

---
updated-dependencies:
- dependency-name: tokio
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-05 11:28:21 -05:00
Akash Shanmugaraj
aeb6acf640 added BYOS (Bring Your Own SERVICE_ACCOUNT) for GCS authentication (#3262) 2024-01-27 07:57:12 -05:00
Dustin J. Mitchell
83bbe4ec37 Fix invalid imports in [{..}] form (#3241)
* Fix invalid imports in `[{..}]` form

Before this change, if an import of data that takes the form of a JSON
array of JSON objects results in an error, the import would be re-tried
assuming that each line of the file is a JSON object (the old format).
However, no check was made that the value actually was an object before
casting it to `json::object`, resulting in a segfault.

This adds the check, and handles the failure with a useful error message
(from the first attempt to parse the file).
2024-01-25 08:01:20 -05:00
Dustin J. Mitchell
5b5a7a37c0 Use the correct formatting for tag_ properties (#3261)
This resolves a discrepancy between Taskwarrior and Taskchampion as to
how tags should be represented.
2024-01-24 18:11:51 -05:00
dependabot[bot]
00a3b6edc2 Bump actions/cache from 3 to 4 (#3257)
Bumps [actions/cache](https://github.com/actions/cache) from 3 to 4.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-22 08:45:34 -05:00
Dustin J. Mitchell
4af0636b52 Add note about Rust not building automatically (#3255) 2024-01-21 22:13:46 -05:00
Dustin J. Mitchell
bacb79302a Change 'should' to 'may' in server snapshot requirements (#3256)
For an object store backend, none of the suggestions in this paragraph
make much sense. "May" is much softer, in terms of
https://datatracker.ietf.org/doc/html/rfc2119. And in particular, the
cloud server implementation does not do any of these things.
2024-01-21 22:13:10 -05:00
Dustin J. Mitchell
daca37806e Rename sync.server.encryption_secret to sync.encryption_secret. (#3249)
* Rename `sync.server.encryption_secret` to `sync.encryption_secret`.

* move pwgen
2024-01-21 19:11:24 -05:00
ryneeverett
082b6084fa sync server: Don't hash client_id for salt (#3250)
We don't know why we're doing this step so we probably shouldn't.
Cryptography isn't magic and extra steps are harmful in that they
obscure the important parts.
2024-01-21 18:16:25 -05:00
Dustin J. Mitchell
fa21835001 Better links from TW devel docs to TaskChampion (#3253) 2024-01-21 18:03:11 -05:00
ryneeverett
4008069a70 sync: Use 600,000 iterations for pbkdf2. (#3251)
Per [wikipedia](https://en.wikipedia.org/wiki/PBKDF2), "In 2023, OWASP
recommended to use 600,000 iterations for PBKDF2-HMAC-SHA256..."
2024-01-21 14:06:53 -05:00
Dustin J. Mitchell
323bd23251 Removed unused import (#3245)
Co-authored-by: Akash Shanmugaraj <65720968+akashShanmugraj@users.noreply.github.com>
2024-01-21 13:14:02 -05:00
Dustin J. Mitchell
5806413d64 Update to supported linux distros (#3248) 2024-01-21 13:13:41 -05:00
dependabot[bot]
0fca650b65 Bump webpki from 0.22.0 to 0.22.4 (#3246)
Bumps [webpki](https://github.com/briansmith/webpki) from 0.22.0 to 0.22.4.
- [Commits](https://github.com/briansmith/webpki/commits)

---
updated-dependencies:
- dependency-name: webpki
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-21 12:54:45 -05:00
Dustin J. Mitchell
9566c929e2 Add support for cloud sync, specifically GCP (#3223)
* Add support for cloud sync, specifically GCP

This adds generic support for sync to cloud services, with specific
spuport for GCP. Adding others -- so long as they support a
compare-and-set operation -- should be comparatively straightforward.

The cloud support includes cleanup of unnecessary data, and should keep
total space usage roughly proportional to the number of tasks.

Co-authored-by: ryneeverett <ryneeverett@gmail.com>
2024-01-21 12:36:37 -05:00
dependabot[bot]
6f1c16fecd Bump uuid from 1.6.0 to 1.7.0 (#3244)
Bumps [uuid](https://github.com/uuid-rs/uuid) from 1.6.0 to 1.7.0.
- [Release notes](https://github.com/uuid-rs/uuid/releases)
- [Commits](https://github.com/uuid-rs/uuid/compare/1.6.0...1.7.0)

---
updated-dependencies:
- dependency-name: uuid
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-20 17:38:08 -05:00
Dustin J. Mitchell
80047ad5e7 Disable Clang's return-type-c-linkage warning (#3227)
* Disable return-type-c-linkage warning on Clang.

This is emitted by the compiler when it can't tell if the incomplete
type being returned is a C++ type, which might not have a C-compatible
layout. In `taskchampion.h`, the types are not C++ types so this is not
an issue and the warning is unnecessary.

* Use an if instead

Fancy generator expressions appear to not work.

* Try some different CMake syntax
2024-01-20 16:41:38 -05:00
Dustin J. Mitchell
b515f876ca Disable mac tests (#3242)
Disable mac testers
2024-01-20 16:39:53 -05:00
Dustin J. Mitchell
6d23497d6f Update task model docs (#3234)
Dependencies are now implemented, and the docs should be clear about the
format of the keys and values.

Noticed while working on GothenburgBitFactory/tw.org#212.
2023-12-27 21:22:23 -05:00
Dustin J. Mitchell
e29925155d Fix formatting of comments in taskchampion.h (#3228) 2023-12-27 20:02:23 -05:00
Dustin J. Mitchell
bd46b254af Fix unnecessary mut (#3224) 2023-12-24 20:14:17 -05:00
Dustin J. Mitchell
1380d79148 Update to 2021 edition (#3217)
..and also include the rust-version property in the taskchampion crate.
2023-12-24 08:58:04 -05:00
Dustin J. Mitchell
b52248f146 Make the sync server client an optional feature (#3216)
* Make the sync server client an optional feature

* fix comment, remove unnecessary allow(dead_code)
2023-12-24 08:57:37 -05:00
ryneeverett
e95f95eb08 xtask msrv: this subcommand is not capitalized (#3218)
$ cargo xtask MSRV 1.99
        Finished dev [unoptimized + debuginfo] target(s) in 0.21s
         Running `target/debug/xtask MSRV 1.99`
    Error: xtask: unknown xtask
    $ cargo xtask msrv 1.99
        Finished dev [unoptimized + debuginfo] target(s) in 0.21s
         Running `target/debug/xtask msrv 1.99`
    xtask: Updated MSRV in ../.github/workflows/checks.yml
    xtask: Updated MSRV in ../.github/workflows/rust-tests.yml
    xtask: Updated MSRV in taskchampion/src/lib.rs
    xtask: Updated MSRV in taskchampion/Cargo.toml
2023-12-24 08:57:01 -05:00
dependabot[bot]
1c11f8b650 Bump sigstore/cosign-installer from 3.1.2 to 3.3.0 (#3211)
Bumps [sigstore/cosign-installer](https://github.com/sigstore/cosign-installer) from 3.1.2 to 3.3.0.
- [Release notes](https://github.com/sigstore/cosign-installer/releases)
- [Commits](https://github.com/sigstore/cosign-installer/compare/v3.1.2...v3.3.0)

---
updated-dependencies:
- dependency-name: sigstore/cosign-installer
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-12-18 08:42:35 -05:00
dependabot[bot]
1a783f95e5 Bump ureq from 2.8.0 to 2.9.0 (#3207)
Bumps [ureq](https://github.com/algesten/ureq) from 2.8.0 to 2.9.0.
- [Changelog](https://github.com/algesten/ureq/blob/main/CHANGELOG.md)
- [Commits](https://github.com/algesten/ureq/compare/2.8.0...2.9.0)

---
updated-dependencies:
- dependency-name: ureq
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-11-21 14:35:01 -05:00
dependabot[bot]
5b93918bee Bump uuid from 1.5.0 to 1.6.0 (#3205)
Bumps [uuid](https://github.com/uuid-rs/uuid) from 1.5.0 to 1.6.0.
- [Release notes](https://github.com/uuid-rs/uuid/releases)
- [Commits](https://github.com/uuid-rs/uuid/compare/1.5.0...1.6.0)

---
updated-dependencies:
- dependency-name: uuid
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-11-20 21:42:53 -05:00
dependabot[bot]
d0b81166fa Bump docker/build-push-action from 4.2.1 to 5.1.0 (#3204)
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 4.2.1 to 5.1.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/v4.2.1...v5.1.0)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-11-20 21:23:36 -05:00
dependabot[bot]
1b6fd7c803 Bump regex from 1.9.4 to 1.10.2 (#3201)
Bumps [regex](https://github.com/rust-lang/regex) from 1.9.4 to 1.10.2.
- [Release notes](https://github.com/rust-lang/regex/releases)
- [Changelog](https://github.com/rust-lang/regex/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/regex/compare/1.9.4...1.10.2)

---
updated-dependencies:
- dependency-name: regex
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-11-14 12:03:15 -05:00
dependabot[bot]
1392f55944 Bump proptest from 1.3.1 to 1.4.0 (#3198)
* Bump proptest from 1.3.1 to 1.4.0

Bumps [proptest](https://github.com/proptest-rs/proptest) from 1.3.1 to 1.4.0.
- [Release notes](https://github.com/proptest-rs/proptest/releases)
- [Changelog](https://github.com/proptest-rs/proptest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/proptest-rs/proptest/compare/v1.3.1...v1.4.0)

---
updated-dependencies:
- dependency-name: proptest
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* Update MSRV to 1.65 to match proptest

Rust 1.65 is just over one year old right now.

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Dustin J. Mitchell <djmitche@google.com>
2023-11-13 23:21:54 -05:00
dependabot[bot]
41992d4849 Bump regex from 1.5.6 to 1.9.4 (#3197)
Bumps [regex](https://github.com/rust-lang/regex) from 1.5.6 to 1.9.4.
- [Release notes](https://github.com/rust-lang/regex/releases)
- [Changelog](https://github.com/rust-lang/regex/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/regex/compare/1.5.6...1.9.4)

---
updated-dependencies:
- dependency-name: regex
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-11-13 19:19:55 -05:00
Isaac Wyatt
8f327db5b9 Add cargo xtask msrv (#3189)
* added cargo xtask msrv X.Y placeholder function

* add placeholder function cargo xtask msrv (X.Y)

* implement CLI arg vec, graceful errors, formatting

* impl. xtask msrv insert,upsert,graceful failures

* misc fixes - still need to update write method

* interim commit before removing comments

* updated per @djmitche suggestions. 2 fixes todo

* impl unwrap error checks, file truncating, etc

* removed test paths

* updated toml with specific regex version

* updated cargo toml and lock for regex version

* updated cargo toml and lock for regex version

* fixed clippy complaints

* impl replace file content, not comments

* accept djmitche suggestion to change comment documentation

Co-authored-by: Dustin J. Mitchell <dustin@v.igoro.us>

* refactored, need to fix Cow return

* removed debug prints, unncessary if, etc.

* fix non-idiomatic rust, arg.len error handling

* add #MSRV to config files and test

---------

Co-authored-by: iwyatt <sayhello+git@isaacwyatt.com>
Co-authored-by: Dustin J. Mitchell <dustin@v.igoro.us>
2023-11-11 17:54:38 -05:00
dependabot[bot]
1583e56cfc Bump uuid from 1.4.0 to 1.5.0 (#3192)
Bumps [uuid](https://github.com/uuid-rs/uuid) from 1.4.0 to 1.5.0.
- [Release notes](https://github.com/uuid-rs/uuid/releases)
- [Commits](https://github.com/uuid-rs/uuid/compare/1.4.0...1.5.0)

---
updated-dependencies:
- dependency-name: uuid
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-20 08:23:57 -04:00
dependabot[bot]
a1aa7a9d74 Bump rustix from 0.37.19 to 0.37.25 (#3191)
Bumps [rustix](https://github.com/bytecodealliance/rustix) from 0.37.19 to 0.37.25.
- [Release notes](https://github.com/bytecodealliance/rustix/releases)
- [Commits](https://github.com/bytecodealliance/rustix/compare/v0.37.19...v0.37.25)

---
updated-dependencies:
- dependency-name: rustix
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-20 08:17:19 -04:00
Thomas Lauf
a8f79f84a8 Fix typo 2023-10-20 12:03:02 +02:00
dependabot[bot]
9fc40c5949 Bump ureq from 2.7.0 to 2.8.0 (#3180)
* Bump ureq from 2.7.0 to 2.8.0

Bumps [ureq](https://github.com/algesten/ureq) from 2.7.0 to 2.8.0.
- [Changelog](https://github.com/algesten/ureq/blob/main/CHANGELOG.md)
- [Commits](https://github.com/algesten/ureq/compare/2.7.0...2.8.0)

---
updated-dependencies:
- dependency-name: ureq
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>

* update rustls too

* more Cargo.lock updates

---------

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Dustin J. Mitchell <djmitche@google.com>
2023-10-07 17:23:47 -04:00
dependabot[bot]
9337763491 Bump byteorder from 1.4.3 to 1.5.0 (#3184)
Bumps [byteorder](https://github.com/BurntSushi/byteorder) from 1.4.3 to 1.5.0.
- [Changelog](https://github.com/BurntSushi/byteorder/blob/master/CHANGELOG.md)
- [Commits](https://github.com/BurntSushi/byteorder/compare/1.4.3...1.5.0)

---
updated-dependencies:
- dependency-name: byteorder
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-06 08:10:48 -04:00
dependabot[bot]
ee35cd6d82 Bump proptest from 1.2.0 to 1.3.1 (#3181)
Bumps [proptest](https://github.com/proptest-rs/proptest) from 1.2.0 to 1.3.1.
- [Release notes](https://github.com/proptest-rs/proptest/releases)
- [Changelog](https://github.com/proptest-rs/proptest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/proptest-rs/proptest/compare/v1.2.0...v1.3.1)

---
updated-dependencies:
- dependency-name: proptest
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-05 19:45:03 -04:00
dependabot[bot]
5d4abd3338 Bump docker/login-action from 2.1.0 to 3.0.0
Bumps [docker/login-action](https://github.com/docker/login-action) from 2.1.0 to 3.0.0.
- [Release notes](https://github.com/docker/login-action/releases)
- [Commits](https://github.com/docker/login-action/compare/v2.1.0...v3.0.0)

---
updated-dependencies:
- dependency-name: docker/login-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-09-24 13:52:46 +02:00
dependabot[bot]
98f945ba73 Bump docker/build-push-action from 3.2.0 to 4.2.1 (#3172)
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 3.2.0 to 4.2.1.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/v3.2.0...v4.2.1)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-11 22:05:33 -04:00
dependabot[bot]
bf05d075a1 Bump actions/checkout from 3 to 4 (#3171)
Bumps [actions/checkout](https://github.com/actions/checkout) from 3 to 4.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v3...v4)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-11 22:05:04 -04:00
dependabot[bot]
743ded84c1 Bump sigstore/cosign-installer from 2.8.1 to 3.1.2 (#3170)
Bumps [sigstore/cosign-installer](https://github.com/sigstore/cosign-installer) from 2.8.1 to 3.1.2.
- [Release notes](https://github.com/sigstore/cosign-installer/releases)
- [Commits](https://github.com/sigstore/cosign-installer/compare/v2.8.1...v3.1.2)

---
updated-dependencies:
- dependency-name: sigstore/cosign-installer
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-09-04 15:50:38 -04:00
Jonathan Neidel
d25f5a5118 Fix arch badge after pkg moved repositories (#3166) 2023-08-31 21:42:02 -04:00
Bernhard M. Wiedemann
603bf075f1 Fix issues with year 2038 (#3052)
* Fix annotations in year 2038

Fixes #3050

* Ensure 32-bit systems work better after 2038

Without this patch, their 32-bit signed long int could overflow.

This patch was done while working on reproducible builds for openSUSE.
2023-08-30 22:08:31 -04:00
dependabot[bot]
7017d8fc31 Bump rustls-webpki from 0.100.1 to 0.100.2 (#3161)
Bumps [rustls-webpki](https://github.com/rustls/webpki) from 0.100.1 to 0.100.2.
- [Release notes](https://github.com/rustls/webpki/releases)
- [Commits](https://github.com/rustls/webpki/compare/v/0.100.1...v/0.100.2)

---
updated-dependencies:
- dependency-name: rustls-webpki
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-22 18:55:41 -04:00
gl-yziquel
0e4828f155 Fixing a link in DEVELOPER.md. (#3159) 2023-08-20 22:40:40 -04:00
Thomas Lauf
ba83ee9cac Add workflow for Taskwarrior Docker image (#3039)
The workflow is triggered by a successful run of the test suite and creates a Docker image with a Taskwarrior installation of the current branch (restricted to develop/stable)
2023-08-12 11:30:39 +02:00
Dustin J. Mitchell
971b229a4b Consolidate in-repo documentation (#3143)
* move doc/misc to top level, add READMEs

* Move docs -> doc/devel

This also consolidates the _three_ documents describing (differently)
how to build Taskwarrior into a signle document.
2023-08-09 21:30:01 -04:00
Michal Koutný
3248437326 Fix fish completion (#3068)
* Fix fish completions

As per [1] printf in fish does not support '--' as a delimiter of format
string and args.
It used to work (accidentally) earlier (fish 3.5, glibc 2.31) but it is
broken (fish 3.6, glibc 2.36) nowadays.
Fix it by using the simple form of printf invocation with no argument
escaping.

Fixes: #3048

[1] https://fishshell.com/docs/current/cmds/printf.html#description

* Fix fish completions with older fish

Older versions (fish 3.5) cannot cope with '-' in printf format hence
add a workaround for these.
2023-07-25 15:29:50 -04:00
Nathan Luong
76b21f49e8 Implement due dates related methods for Task and TaskMut (#3145)
* Implement due dates related methods for Task and TaskMut

* Merge add_due and remove_due into the single method called set_due

* reformat the file
2023-07-25 09:09:25 -04:00
Dathan Bennett
c86252d693 Add devcontainer spec (#3144)
* Add devcontainer spec from codespaces generator

I started a codespace and used the VSCode devcontainer generator to
generate the devcontainer.json, reinstall-cmake.sh, and Dockerfile.

* Add uuid-dev in Dockerfile

---------

Co-authored-by: Dathan Bennett <dathanb@netflix.com>
2023-07-20 17:33:02 -04:00
Dathan Bennett
a7bb0c9ba0 Link executables using system frameworks on Darwin (#3075)
* Link test executables using system frameworks on Darwin

On an M1 MBP, running `cmake . && make test` yields the error

```
[ 69%] Linking CXX executable tc.t
Undefined symbols for architecture arm64:
  "_CFRelease", referenced from:
      _$LT$iana_time_zone..platform..system_time_zone..SystemTimeZone$u20$as$u20$core..ops..drop..Drop$GT$::drop::hcd3964de9573de30 in libtc_rust.a(iana_time_zone-0e2714c6ff24f5bb.iana_time_zone.4cacef0c-cgu.15.rcgu.o)
  "_CFStringGetBytes", referenced from:
      iana_time_zone::platform::string_ref::StringRef$LT$T$GT$::to_utf8::h39971b546d587152 in libtc_rust.a(iana_time_zone-0e2714c6ff24f5bb.iana_time_zone.4cacef0c-cgu.13.rcgu.o)
  "_CFStringGetCStringPtr", referenced from:
      iana_time_zone::platform::string_ref::StringRef$LT$T$GT$::as_utf8::h8bb5c2c0d091ded1 in libtc_rust.a(iana_time_zone-0e2714c6ff24f5bb.iana_time_zone.4cacef0c-cgu.13.rcgu.o)
  "_CFStringGetLength", referenced from:
      iana_time_zone::platform::string_ref::StringRef$LT$T$GT$::to_utf8::h39971b546d587152 in libtc_rust.a(iana_time_zone-0e2714c6ff24f5bb.iana_time_zone.4cacef0c-cgu.13.rcgu.o)
  "_CFTimeZoneCopySystem", referenced from:
      iana_time_zone::platform::system_time_zone::SystemTimeZone::new::hc42d30609914d79d in libtc_rust.a(iana_time_zone-0e2714c6ff24f5bb.iana_time_zone.4cacef0c-cgu.15.rcgu.o)
  "_CFTimeZoneGetName", referenced from:
      iana_time_zone::platform::system_time_zone::SystemTimeZone::name::h44947ee6deb3339a in libtc_rust.a(iana_time_zone-0e2714c6ff24f5bb.iana_time_zone.4cacef0c-cgu.15.rcgu.o)
  "_SecRandomCopyBytes", referenced from:
      ring::rand::darwin::fill::h0ad94d66d4e1a222 in libtc_rust.a(ring-e5f87a2e334d4c6a.ring.a21bac31-cgu.4.rcgu.o)
  "_kSecRandomDefault", referenced from:
      ring::rand::darwin::fill::h0ad94d66d4e1a222 in libtc_rust.a(ring-e5f87a2e334d4c6a.ring.a21bac31-cgu.4.rcgu.o)
ld: symbol(s) not found for architecture arm64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make[3]: *** [test/tc.t] Error 1
make[2]: *** [test/CMakeFiles/tc.t.dir/all] Error 2
make[1]: *** [test/CMakeFiles/test.dir/rule] Error 2
```

This change resolves the error by updating the targets in
test/CMakeLists.txt to link against the CoreFoundation and Security
frameworks when building under Mac OS.

* Link executables against CoreFoundation and Security frameworks on Mac OS

* Rename test_osx.sh to test_macos.sh

---------

Co-authored-by: Dathan Bennett <dathanb@netflix.com>
2023-07-20 17:23:12 -04:00
Dustin J. Mitchell
7f68441916 Change "client key" to "client id" (#3130)
In #3118 @ryneeverett mentioned that "key" suggests that this is a
secret, when in truth it's just a user identifier. So "ID" is a better
word for it than "key".
2023-07-11 22:13:53 -04:00
dependabot[bot]
8097e28318 Bump pretty_assertions from 1.3.0 to 1.4.0 (#3129)
Bumps [pretty_assertions](https://github.com/rust-pretty-assertions/rust-pretty-assertions) from 1.3.0 to 1.4.0.
- [Release notes](https://github.com/rust-pretty-assertions/rust-pretty-assertions/releases)
- [Changelog](https://github.com/rust-pretty-assertions/rust-pretty-assertions/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-pretty-assertions/rust-pretty-assertions/compare/v1.3.0...v1.4.0)

---
updated-dependencies:
- dependency-name: pretty_assertions
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-07-08 10:28:07 -04:00
Dustin J. Mitchell
31105c2ba3 Sync against taskchampion-sync-server (#3118)
This removes use of gnutls and the TLS implementation, which is no
longer needed (task synchronization is handled via Taskchampion, which
uses `reqwest`, which handles TLS via other Rust dependencies). This
incidentally removes the following config options:
 * `debug.tls`
 * `taskd.ca`
 * `taskd.certificate`
 * `taskd.ciphers`
 * `taskd.credentials`
 * `taskd.key`
 * `taskd.server`
 * `taskd.trust`
2023-07-08 10:27:33 -04:00
Dustin J. Mitchell
771977aa69 Restore check for missing config 2023-07-04 14:08:51 -04:00
dependabot[bot]
5db8b292c7 Bump uuid from 1.3.0 to 1.4.0
Bumps [uuid](https://github.com/uuid-rs/uuid) from 1.3.0 to 1.4.0.
- [Release notes](https://github.com/uuid-rs/uuid/releases)
- [Commits](https://github.com/uuid-rs/uuid/compare/1.3.0...1.4.0)

---
updated-dependencies:
- dependency-name: uuid
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-28 12:23:50 -04:00
Dustin J. Mitchell
0c3d4bbe74 bump ffizz-header to 0.5 2023-06-26 18:18:44 -04:00
Dustin J. Mitchell
48543b7fcb Put Rust deps at the root of the workspace
This allows us to be consistent about the required versions for each of
the member packages.

Fixes #3088.
2023-06-21 12:01:06 -04:00
Dustin J. Mitchell
7a310fbfc1 Remove redundant comments
There's no need to repeat comments on the fields of a struct within
taskchampion-lib.
2023-06-21 12:00:23 -04:00
dependabot[bot]
1930ea0ad0 Bump strum_macros from 0.24.3 to 0.25.0
Bumps [strum_macros](https://github.com/Peternator7/strum) from 0.24.3 to 0.25.0.
- [Changelog](https://github.com/Peternator7/strum/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Peternator7/strum/commits)

---
updated-dependencies:
- dependency-name: strum_macros
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-19 16:29:57 -04:00
dependabot[bot]
790a50f7e0 Bump strum from 0.24.1 to 0.25.0
Bumps [strum](https://github.com/Peternator7/strum) from 0.24.1 to 0.25.0.
- [Changelog](https://github.com/Peternator7/strum/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Peternator7/strum/commits)

---
updated-dependencies:
- dependency-name: strum
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-19 13:36:25 -04:00
Dustin J. Mitchell
839a0c4a0f fix workflow reference 2023-06-19 13:36:17 -04:00
Dustin J. Mitchell
efc2531a7f fix a spot where C code looked like a doctest 2023-06-19 13:36:17 -04:00
Dustin J. Mitchell
a0703af0b9 Run 'cargo xtask codegen' in CI and check that there are no diffs 2023-06-19 13:36:17 -04:00
Dustin J. Mitchell
75e10676ce Use ffizz_header to generate taskchampion.h 2023-06-19 13:36:17 -04:00
dependabot[bot]
989a330e46 Bump ureq from 2.6.1 to 2.7.0
Bumps [ureq](https://github.com/algesten/ureq) from 2.6.1 to 2.7.0.
- [Changelog](https://github.com/algesten/ureq/blob/main/CHANGELOG.md)
- [Commits](https://github.com/algesten/ureq/compare/2.6.1...2.7.0)

---
updated-dependencies:
- dependency-name: ureq
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-15 19:54:42 -04:00
Dustin J. Mitchell
a69b0c8032 Remove properties when set to an empty string
Fixes #3109.
2023-06-11 17:37:03 -04:00
Dustin J. Mitchell
6cd5bf1237 Update "modified" on modification 2023-06-11 17:37:03 -04:00
Dustin J. Mitchell
a1b64a05ba add more information to 'task purge' footnote 2023-06-11 17:37:03 -04:00
Dustin J. Mitchell
02de8dfe67 remove TDB2::commit call from tests 2023-06-11 17:37:03 -04:00
Dustin J. Mitchell
3b4113c61a Update comments for TDB2::modify 2023-06-11 17:37:03 -04:00
Dustin J. Mitchell
18d60719e4 update comment for TDB2::get_changes 2023-06-11 17:37:03 -04:00
Dustin J. Mitchell
9df4c8156e remove TDB::commit 2023-06-11 17:37:03 -04:00
Dustin J. Mitchell
0882a08d18 Remove unnecessary TDB2::{modify,add} argument 2023-06-11 17:37:03 -04:00
Dustin J. Mitchell
5bb9857984 Use Taskchampion to store Taskwarrior data
This replaces the TF2 task files with a TaskChampion replica.
2023-06-11 17:37:03 -04:00
Dustin J. Mitchell
4b814bc602 [BREAKING] remove diff display from 'task undo'
TaskChampion does not make the necessary information available to
accomplish this, but see #2928.
2023-06-11 17:37:03 -04:00
Dustin J. Mitchell
87467f72c7 [BREAKING] remove 'task purge' support
TaskChampion removes deleted tasks automatically when they expire, so
this subcommand is no longer required.
2023-06-11 17:37:03 -04:00
Dustin J. Mitchell
d47c70579f [BREAKING] Disable the 'sync' command
This will require support from TaskChampion.
2023-06-11 17:37:03 -04:00
dependabot[bot]
16c35a41d3 Bump tempfile from 3.5.0 to 3.6.0
Bumps [tempfile](https://github.com/Stebalien/tempfile) from 3.5.0 to 3.6.0.
- [Changelog](https://github.com/Stebalien/tempfile/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Stebalien/tempfile/compare/v3.5.0...v3.6.0)

---
updated-dependencies:
- dependency-name: tempfile
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-06-07 20:19:59 -04:00
dependabot[bot]
d28cdc39fa Bump proptest from 1.1.0 to 1.2.0
Bumps [proptest](https://github.com/proptest-rs/proptest) from 1.1.0 to 1.2.0.
- [Release notes](https://github.com/proptest-rs/proptest/releases)
- [Changelog](https://github.com/proptest-rs/proptest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/proptest-rs/proptest/compare/v1.1.0...v1.2.0)

---
updated-dependencies:
- dependency-name: proptest
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-25 10:55:10 -04:00
dependabot[bot]
66b2db52f4 Bump clap from 4.2.1 to 4.3.0
Bumps [clap](https://github.com/clap-rs/clap) from 4.2.1 to 4.3.0.
- [Release notes](https://github.com/clap-rs/clap/releases)
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md)
- [Commits](https://github.com/clap-rs/clap/compare/clap_complete-v4.2.1...clap_complete-v4.3.0)

---
updated-dependencies:
- dependency-name: clap
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-05-22 19:09:04 -04:00
Dathan Bennett
41608dc35f Fork CMakeRust and add the aarch64-apple-darwin fix to it 2023-04-27 19:18:10 -04:00
Dathan Bennett
7492fc48bb Vendor CMakeRust 2023-04-27 19:18:10 -04:00
Dathan Bennett
37d7f3de8a Ignore IntelliJ artifacts and remove CMakeRust submodule 2023-04-27 19:18:10 -04:00
Dustin J. Mitchell
ddd367232e [BREAKING] Remove journal.info support
This support will require access to all of the operations ever performed
on a task, which is not currently exposed by TaskChampion (but see #2928)
2023-04-16 19:21:14 -04:00
dependabot[bot]
cf711f5eb1 Bump h2 from 0.3.16 to 0.3.17
Bumps [h2](https://github.com/hyperium/h2) from 0.3.16 to 0.3.17.
- [Release notes](https://github.com/hyperium/h2/releases)
- [Changelog](https://github.com/hyperium/h2/blob/master/CHANGELOG.md)
- [Commits](https://github.com/hyperium/h2/compare/v0.3.16...v0.3.17)

---
updated-dependencies:
- dependency-name: h2
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-04-13 17:16:10 -04:00
Dustin J. Mitchell
f0ced5287b bump MSRV 2023-04-09 16:17:16 -04:00
Dustin J. Mitchell
645c6bf13f update clap used in sync-server 2023-04-09 16:17:16 -04:00
Dustin J. Mitchell
5f2d82dc72 update MSRV 2023-04-09 15:44:26 -04:00
Dustin J. Mitchell
ae028983b6 clippy fixes 2023-04-09 15:44:26 -04:00
Dustin J. Mitchell
52fdc6a877 Update Actix crates to latest versions
This avoids a vulnerability in tokio (#3085). The major version updates
of both actix-web and actix-rt required some signficant changes. Chief
among those, it turns out we were relying on actix-rt to run the
HttpServer in a different thread from the rest of the test, so that we
could talk to it from sync code in the test thread. This no longer
works, so the sync code is now run in a dedicated thread with
`actix_rt::task::spawn_blocking`.
2023-04-09 15:44:26 -04:00
Dathan Bennett
33366e2f05 Ignore the aarch64-apple-darwin directory
This directory is generated instead of the x86_64-unknown-linux-gnu
directory when building on an ARM64/AArch64 Mac, so this change adds
that directory to the gitignore config.
2023-04-09 15:29:29 -04:00
Dustin J. Mitchell
ed674ec9e5 fix branch references in dev docs 2023-04-09 15:28:45 -04:00
dependabot[bot]
491941a55c Bump tempfile from 3.4.0 to 3.5.0
Bumps [tempfile](https://github.com/Stebalien/tempfile) from 3.4.0 to 3.5.0.
- [Release notes](https://github.com/Stebalien/tempfile/releases)
- [Changelog](https://github.com/Stebalien/tempfile/blob/master/NEWS)
- [Commits](https://github.com/Stebalien/tempfile/commits)

---
updated-dependencies:
- dependency-name: tempfile
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-29 17:51:08 -04:00
dependabot[bot]
77e1773b04 Bump rusqlite from 0.28.0 to 0.29.0
Bumps [rusqlite](https://github.com/rusqlite/rusqlite) from 0.28.0 to 0.29.0.
- [Release notes](https://github.com/rusqlite/rusqlite/releases)
- [Changelog](https://github.com/rusqlite/rusqlite/blob/master/Changelog.md)
- [Commits](https://github.com/rusqlite/rusqlite/compare/v0.28.0...v0.29.0)

---
updated-dependencies:
- dependency-name: rusqlite
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-27 17:37:40 -04:00
dependabot[bot]
d2f2e2b4a4 Bump rstest from 0.16.0 to 0.17.0
Bumps [rstest](https://github.com/la10736/rstest) from 0.16.0 to 0.17.0.
- [Release notes](https://github.com/la10736/rstest/releases)
- [Changelog](https://github.com/la10736/rstest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/la10736/rstest/compare/0.16.0...0.17.0)

---
updated-dependencies:
- dependency-name: rstest
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-03-21 15:23:16 -04:00
dependabot[bot]
e46533ef2b Bump tempfile from 3.3.0 to 3.4.0
Bumps [tempfile](https://github.com/Stebalien/tempfile) from 3.3.0 to 3.4.0.
- [Release notes](https://github.com/Stebalien/tempfile/releases)
- [Changelog](https://github.com/Stebalien/tempfile/blob/master/NEWS)
- [Commits](https://github.com/Stebalien/tempfile/commits)

---
updated-dependencies:
- dependency-name: tempfile
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-28 15:12:52 -05:00
dependabot[bot]
0adced74a1 Bump libsqlite3-sys from 0.25.0 to 0.25.2
Bumps [libsqlite3-sys](https://github.com/rusqlite/rusqlite) from 0.25.0 to 0.25.2.
- [Release notes](https://github.com/rusqlite/rusqlite/releases)
- [Changelog](https://github.com/rusqlite/rusqlite/blob/master/Changelog.md)
- [Commits](https://github.com/rusqlite/rusqlite/compare/v0.25.0...v0.25.2)

---
updated-dependencies:
- dependency-name: libsqlite3-sys
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-16 19:49:07 -05:00
ryneeverett
1c4e103904 taskchampion: Add time.utc_timestamp function.
Add a function that returns a Timestamp from an i64. One advantage is
improved readability since this function is guaranteed to return a
`LocalResult::Single`. Anther advantage is that it will panic if
something other than a LocalResult::Single is returned by chrono, which
shouldn't be possible for UTC timestamps which can't have DST ambiguity.
2023-02-06 08:23:27 -05:00
dependabot[bot]
5a4b981b6c Bump proptest from 1.0.0 to 1.1.0
Bumps [proptest](https://github.com/proptest-rs/proptest) from 1.0.0 to 1.1.0.
- [Release notes](https://github.com/proptest-rs/proptest/releases)
- [Changelog](https://github.com/proptest-rs/proptest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/proptest-rs/proptest/compare/1.0.0...v1.1.0)

---
updated-dependencies:
- dependency-name: proptest
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-06 08:04:06 -05:00
Dustin J. Mitchell
d6475cc096 explicit type for cache value 2023-02-03 20:25:51 -05:00
Dustin J. Mitchell
c701a81699 make calculation of DependencyMap easier to read 2023-02-03 20:25:51 -05:00
Dustin J. Mitchell
7b0104e177 Only consider tasks dependent if both are pending
More specifically, consider them dependent if a task in the working set
(regardless of status) depends on a task with status "pending"
(regardless of presence in the working set).  This has the desired
user-visible effect of making a task no longer +BLOCKED when the task it
depends on is marked as done, without requiring a working-set rebuild in
the intervening time.
2023-02-03 20:25:51 -05:00
Dustin J. Mitchell
05c7f36b17 fix typo 2023-02-03 20:02:48 -05:00
Dustin J. Mitchell
f94df28226 Do not further update 'modified' if it's explicitly set 2023-02-03 20:02:48 -05:00
Dustin J. Mitchell
b963af9b4b use non-deprecated chrono functions 2023-02-02 20:00:15 -05:00
dependabot[bot]
6fc78209da Bump uuid from 1.2.1 to 1.3.0
Bumps [uuid](https://github.com/uuid-rs/uuid) from 1.2.1 to 1.3.0.
- [Release notes](https://github.com/uuid-rs/uuid/releases)
- [Commits](https://github.com/uuid-rs/uuid/compare/1.2.1...1.3.0)

---
updated-dependencies:
- dependency-name: uuid
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-02-02 19:42:39 -05:00
ryneeverett
3fdc6d3662 simpletap: simplify to use parent run method
Per the TODO, use `__init__` to override the stream. There don't seem to
be any other substantial changes to the `run` method needed for TAP and
I'm assuming the additional code in the upstream `run` has been added
since this class was written.

My primary motivation was to set `result.buffer = self.buffer` in the
`run` method, which fixes the runner enough to be able to use
`breakpoint()`.

In addition, I updated the shebang in `tw-2189.t` for portability.
2023-01-30 18:33:42 -05:00
dependabot[bot]
717e430f2e Bump bumpalo from 3.9.1 to 3.12.0
Bumps [bumpalo](https://github.com/fitzgen/bumpalo) from 3.9.1 to 3.12.0.
- [Release notes](https://github.com/fitzgen/bumpalo/releases)
- [Changelog](https://github.com/fitzgen/bumpalo/blob/main/CHANGELOG.md)
- [Commits](https://github.com/fitzgen/bumpalo/compare/3.9.1...3.12.0)

---
updated-dependencies:
- dependency-name: bumpalo
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-22 22:30:07 -05:00
dependabot[bot]
84fb2f0d2f Bump bumpalo from 3.9.1 to 3.12.0 in /src/tc/rust
Bumps [bumpalo](https://github.com/fitzgen/bumpalo) from 3.9.1 to 3.12.0.
- [Release notes](https://github.com/fitzgen/bumpalo/releases)
- [Changelog](https://github.com/fitzgen/bumpalo/blob/main/CHANGELOG.md)
- [Commits](https://github.com/fitzgen/bumpalo/compare/3.9.1...3.12.0)

---
updated-dependencies:
- dependency-name: bumpalo
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-22 21:27:07 -05:00
ryneeverett
725dab681f fixup 2023-01-16 16:56:09 -05:00
ryneeverett
2f7196dbfc Don't expose third-party errors in public API. 2023-01-16 16:56:09 -05:00
ryneeverett
f56296ea93 Address inline review comments. 2023-01-16 16:56:09 -05:00
ryneeverett
c061d926bb taskchampion: use taskchampion::Error
Resolve #2878
2023-01-16 16:56:09 -05:00
dependabot[bot]
755100fd8a Bump actions-rs/cargo from 1.0.1 to 1.0.3
Bumps [actions-rs/cargo](https://github.com/actions-rs/cargo) from 1.0.1 to 1.0.3.
- [Release notes](https://github.com/actions-rs/cargo/releases)
- [Changelog](https://github.com/actions-rs/cargo/blob/master/CHANGELOG.md)
- [Commits](https://github.com/actions-rs/cargo/compare/v1.0.1...v1.0.3)

---
updated-dependencies:
- dependency-name: actions-rs/cargo
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-15 15:29:59 -05:00
dependabot[bot]
e0e1d77744 Bump actions/cache from 2 to 3
Bumps [actions/cache](https://github.com/actions/cache) from 2 to 3.
- [Release notes](https://github.com/actions/cache/releases)
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md)
- [Commits](https://github.com/actions/cache/compare/v2...v3)

---
updated-dependencies:
- dependency-name: actions/cache
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-15 15:29:50 -05:00
dependabot[bot]
33eab5632c Bump actions/checkout from 2 to 3
Bumps [actions/checkout](https://github.com/actions/checkout) from 2 to 3.
- [Release notes](https://github.com/actions/checkout/releases)
- [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md)
- [Commits](https://github.com/actions/checkout/compare/v2...v3)

---
updated-dependencies:
- dependency-name: actions/checkout
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-15 15:29:42 -05:00
ryneeverett
5c4fb01abf taskchampion: update docs
- update CI branch filters so workflows actually run on merge
- update CI docs deployment target
- update links
- fix typos
- remove references to `ta` cli which was removed
- remove build-docs.sh script which duplicates publish-docs.yml workflow
2023-01-14 11:25:46 -05:00
Saúl Nogueras
c2c803582a Add fish context completions
Fixes #3034
2023-01-11 00:11:04 -05:00
DBV
627dc79a7e Update CmdNews.cpp
typo
2023-01-11 00:09:28 -05:00
Thomas Lauf
c1ed70b63e Enable version updates for GitHub actions 2023-01-11 00:08:34 -05:00
dependabot[bot]
226df73c58 Bump ureq from 2.5.0 to 2.6.1
Bumps [ureq](https://github.com/algesten/ureq) from 2.5.0 to 2.6.1.
- [Release notes](https://github.com/algesten/ureq/releases)
- [Changelog](https://github.com/algesten/ureq/blob/main/CHANGELOG.md)
- [Commits](https://github.com/algesten/ureq/commits)

---
updated-dependencies:
- dependency-name: ureq
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2023-01-03 23:55:51 -05:00
Dustin J. Mitchell
f1e1095c0a apply clippy fixes 2022-12-26 17:49:04 -05:00
Dustin J. Mitchell
88333ac785 Expose is_* methods on tasks. 2022-12-21 16:36:23 -05:00
Dustin J. Mitchell
7c27f116ad Minor fixes to status in tc-lib 2022-12-19 20:01:38 -05:00
Tomas Babej
64aa1b1c7e osx: Set LDFLAGS to search Foundation and Security 2022-12-18 21:01:36 -05:00
Tomas Babej
3289f93073 tests: Adjust comment
The recurrence period is 1m=P30D.
2022-12-18 15:23:55 -05:00
Dustin J. Mitchell
e6f28bb7e6 include recurring tasks in working-set, but not +PENDING 2022-12-18 14:56:00 -05:00
Dustin J. Mitchell
9add31104b Add a Recurring status to TaskChampion 2022-12-18 14:56:00 -05:00
Dustin J. Mitchell
6e5d8b1dde fix recurrence test to avoid wasting a lot of time 2022-12-18 14:21:10 -05:00
Tomas Babej
19f183159e tests: Fail OS-X test workflow on error in the build process
This sets `set -e` to ensure any errors in the test script are
propagated upwards and noticed by the Github workflow.

Prior to these changes failures in the build process of the tests would
be ignored, and the success / failure would be determined purely by the
return code of the `./problems` script.
2022-12-18 14:19:56 -05:00
Dustin J. Mitchell
e4987ea7e0 use OpenFlags::default to avoid maintaining explicit defaults 2022-12-18 13:01:32 -05:00
Dustin J. Mitchell
015e8eac25 pass create_if_missing in Replica constructor 2022-12-18 13:01:32 -05:00
Dustin J. Mitchell
67fc422311 Add support for _not_ creating a DB if one does not exist 2022-12-18 13:01:32 -05:00
Dustin J. Mitchell
9e5c0001c4 Skip incorrectly-passing tests (see #2996) 2022-12-18 12:59:28 -05:00
Dustin J. Mitchell
6981aaccf2 Add a <vector> include in Replica.h
Replica.h refers to std::vector, so this header file must be included.
2022-12-18 12:58:38 -05:00
John Nguyen
591d6ccffb Bump libshared submodule 2022-12-18 12:33:36 -05:00
Tomas Babej
c483fdcc0e review-dockerfile: Setup Rust 2022-12-18 12:24:25 -05:00
Tomas Babej
7e45425075 review-dockerfile: Add workaround for a new location of CentOS repos 2022-12-18 12:24:25 -05:00
Dustin J. Mitchell
dbeee0640a Add a hint to 'make test' see test problems 2022-12-18 12:01:12 -05:00
dependabot[bot]
bfc220058f Bump rstest from 0.15.0 to 0.16.0
Bumps [rstest](https://github.com/la10736/rstest) from 0.15.0 to 0.16.0.
- [Release notes](https://github.com/la10736/rstest/releases)
- [Changelog](https://github.com/la10736/rstest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/la10736/rstest/compare/0.15.0...0.16.0)

---
updated-dependencies:
- dependency-name: rstest
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-28 18:40:29 -05:00
dependabot[bot]
06c3fbefd7 Bump env_logger from 0.9.1 to 0.10.0
Bumps [env_logger](https://github.com/rust-cli/env_logger) from 0.9.1 to 0.10.0.
- [Release notes](https://github.com/rust-cli/env_logger/releases)
- [Changelog](https://github.com/rust-cli/env_logger/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-cli/env_logger/compare/v0.9.1...v0.10.0)

---
updated-dependencies:
- dependency-name: env_logger
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-11-27 12:08:44 -05:00
Dustin J. Mitchell
a93a3aa4f9 Update Cargo.lock (see #2994) 2022-11-12 17:49:42 -05:00
Matthew James Kraai
5d719ffb45 Add missing words to task documentation 2022-11-02 19:56:28 -04:00
Dustin J. Mitchell
e5ae01ea71 skip all patch updates 2022-10-26 17:22:12 -04:00
Dustin J. Mitchell
f5f37009cb Ignore patch updates for some noisy deps 2022-10-26 17:22:12 -04:00
dependabot[bot]
4af27903f9 Bump serde from 1.0.145 to 1.0.147
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.145 to 1.0.147.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.145...v1.0.147)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-25 14:42:44 -04:00
dependabot[bot]
c93039f1fd Bump libc from 0.2.135 to 0.2.136
Bumps [libc](https://github.com/rust-lang/libc) from 0.2.135 to 0.2.136.
- [Release notes](https://github.com/rust-lang/libc/releases)
- [Commits](https://github.com/rust-lang/libc/compare/0.2.135...0.2.136)

---
updated-dependencies:
- dependency-name: libc
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-25 14:42:33 -04:00
dependabot[bot]
cd6922ac39 Bump anyhow from 1.0.65 to 1.0.66
Bumps [anyhow](https://github.com/dtolnay/anyhow) from 1.0.65 to 1.0.66.
- [Release notes](https://github.com/dtolnay/anyhow/releases)
- [Commits](https://github.com/dtolnay/anyhow/compare/1.0.65...1.0.66)

---
updated-dependencies:
- dependency-name: anyhow
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-22 15:47:57 -04:00
dependabot[bot]
5b14f63dee Bump clap from 4.0.17 to 4.0.18
Bumps [clap](https://github.com/clap-rs/clap) from 4.0.17 to 4.0.18.
- [Release notes](https://github.com/clap-rs/clap/releases)
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md)
- [Commits](https://github.com/clap-rs/clap/compare/v4.0.17...v4.0.18)

---
updated-dependencies:
- dependency-name: clap
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-22 15:47:43 -04:00
dependabot[bot]
6e5513d6f4 Bump futures from 0.3.24 to 0.3.25
Bumps [futures](https://github.com/rust-lang/futures-rs) from 0.3.24 to 0.3.25.
- [Release notes](https://github.com/rust-lang/futures-rs/releases)
- [Changelog](https://github.com/rust-lang/futures-rs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/futures-rs/compare/0.3.24...0.3.25)

---
updated-dependencies:
- dependency-name: futures
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-22 15:47:35 -04:00
dependabot[bot]
2bd4c21e37 Bump serde_json from 1.0.86 to 1.0.87
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.86 to 1.0.87.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.86...v1.0.87)

---
updated-dependencies:
- dependency-name: serde_json
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-22 09:14:41 -04:00
dependabot[bot]
c6b13de344 Bump clap from 4.0.15 to 4.0.17
Bumps [clap](https://github.com/clap-rs/clap) from 4.0.15 to 4.0.17.
- [Release notes](https://github.com/clap-rs/clap/releases)
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md)
- [Commits](https://github.com/clap-rs/clap/compare/v4.0.15...v4.0.17)

---
updated-dependencies:
- dependency-name: clap
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-19 18:35:46 -04:00
dependabot[bot]
1af43d505d Bump clap from 4.0.14 to 4.0.15
Bumps [clap](https://github.com/clap-rs/clap) from 4.0.14 to 4.0.15.
- [Release notes](https://github.com/clap-rs/clap/releases)
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md)
- [Commits](https://github.com/clap-rs/clap/compare/v4.0.14...v4.0.15)

---
updated-dependencies:
- dependency-name: clap
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-17 18:55:33 -04:00
dependabot[bot]
be3fea8cd2 Bump clap from 4.0.13 to 4.0.14
Bumps [clap](https://github.com/clap-rs/clap) from 4.0.13 to 4.0.14.
- [Release notes](https://github.com/clap-rs/clap/releases)
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md)
- [Commits](https://github.com/clap-rs/clap/compare/v4.0.13...v4.0.14)

---
updated-dependencies:
- dependency-name: clap
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-13 18:48:12 -04:00
dependabot[bot]
5588bcc2e8 Bump clap from 4.0.11 to 4.0.13
Bumps [clap](https://github.com/clap-rs/clap) from 4.0.11 to 4.0.13.
- [Release notes](https://github.com/clap-rs/clap/releases)
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md)
- [Commits](https://github.com/clap-rs/clap/compare/v4.0.11...v4.0.13)

---
updated-dependencies:
- dependency-name: clap
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-12 20:09:45 -04:00
dependabot[bot]
b1d24e455b Bump libc from 0.2.134 to 0.2.135
Bumps [libc](https://github.com/rust-lang/libc) from 0.2.134 to 0.2.135.
- [Release notes](https://github.com/rust-lang/libc/releases)
- [Commits](https://github.com/rust-lang/libc/compare/0.2.134...0.2.135)

---
updated-dependencies:
- dependency-name: libc
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-12 20:09:35 -04:00
dependabot[bot]
5c518f9b90 Bump clap from 4.0.10 to 4.0.11
Bumps [clap](https://github.com/clap-rs/clap) from 4.0.10 to 4.0.11.
- [Release notes](https://github.com/clap-rs/clap/releases)
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md)
- [Commits](https://github.com/clap-rs/clap/compare/v4.0.10...v4.0.11)

---
updated-dependencies:
- dependency-name: clap
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-10 08:49:17 -04:00
dependabot[bot]
0b54cbb89d Bump uuid from 1.1.2 to 1.2.1
Bumps [uuid](https://github.com/uuid-rs/uuid) from 1.1.2 to 1.2.1.
- [Release notes](https://github.com/uuid-rs/uuid/releases)
- [Commits](https://github.com/uuid-rs/uuid/compare/1.1.2...1.2.1)

---
updated-dependencies:
- dependency-name: uuid
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-10 08:48:55 -04:00
dependabot[bot]
75cdc6aa6f Bump serde_json from 1.0.85 to 1.0.86
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.85 to 1.0.86.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.85...v1.0.86)

---
updated-dependencies:
- dependency-name: serde_json
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-10 08:48:30 -04:00
dependabot[bot]
98ba98899e Bump clap from 4.0.9 to 4.0.10
Bumps [clap](https://github.com/clap-rs/clap) from 4.0.9 to 4.0.10.
- [Release notes](https://github.com/clap-rs/clap/releases)
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md)
- [Commits](https://github.com/clap-rs/clap/compare/v4.0.9...v4.0.10)

---
updated-dependencies:
- dependency-name: clap
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-06 12:51:09 -04:00
Dustin J. Mitchell
41625f8b11 fix clippy warnings 2022-10-05 07:31:56 -04:00
dependabot[bot]
7b35121374 Bump clap from 4.0.4 to 4.0.9
Bumps [clap](https://github.com/clap-rs/clap) from 4.0.4 to 4.0.9.
- [Release notes](https://github.com/clap-rs/clap/releases)
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md)
- [Commits](https://github.com/clap-rs/clap/compare/v4.0.4...v4.0.9)

---
updated-dependencies:
- dependency-name: clap
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-04 14:39:25 -04:00
Dustin J. Mitchell
1b55e5b265 fix clippy lints 2022-10-02 15:27:25 -04:00
Dustin J. Mitchell
9e6be07e24 update to clap-4.x 2022-10-02 15:27:25 -04:00
dependabot[bot]
898ccd8797 Bump clap from 3.2.10 to 4.0.4
Bumps [clap](https://github.com/clap-rs/clap) from 3.2.10 to 4.0.4.
- [Release notes](https://github.com/clap-rs/clap/releases)
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md)
- [Commits](https://github.com/clap-rs/clap/compare/v3.2.10...v4.0.4)

---
updated-dependencies:
- dependency-name: clap
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-02 15:27:25 -04:00
dependabot[bot]
b59581b6cc Bump libc from 0.2.133 to 0.2.134
Bumps [libc](https://github.com/rust-lang/libc) from 0.2.133 to 0.2.134.
- [Release notes](https://github.com/rust-lang/libc/releases)
- [Commits](https://github.com/rust-lang/libc/compare/0.2.133...0.2.134)

---
updated-dependencies:
- dependency-name: libc
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-01 09:11:26 -04:00
dependabot[bot]
8bda81e51e Bump thiserror from 1.0.36 to 1.0.37
Bumps [thiserror](https://github.com/dtolnay/thiserror) from 1.0.36 to 1.0.37.
- [Release notes](https://github.com/dtolnay/thiserror/releases)
- [Commits](https://github.com/dtolnay/thiserror/compare/1.0.36...1.0.37)

---
updated-dependencies:
- dependency-name: thiserror
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-10-01 09:11:14 -04:00
dependabot[bot]
d62435d421 Bump thiserror from 1.0.35 to 1.0.36
Bumps [thiserror](https://github.com/dtolnay/thiserror) from 1.0.35 to 1.0.36.
- [Release notes](https://github.com/dtolnay/thiserror/releases)
- [Commits](https://github.com/dtolnay/thiserror/compare/1.0.35...1.0.36)

---
updated-dependencies:
- dependency-name: thiserror
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-26 09:35:53 -04:00
dependabot[bot]
603ebb59c7 Bump serde from 1.0.144 to 1.0.145
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.144 to 1.0.145.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.144...v1.0.145)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-25 17:51:47 -04:00
dependabot[bot]
34be9b44bb Bump env_logger from 0.9.0 to 0.9.1
Bumps [env_logger](https://github.com/env-logger-rs/env_logger) from 0.9.0 to 0.9.1.
- [Release notes](https://github.com/env-logger-rs/env_logger/releases)
- [Changelog](https://github.com/env-logger-rs/env_logger/blob/main/CHANGELOG.md)
- [Commits](https://github.com/env-logger-rs/env_logger/commits)

---
updated-dependencies:
- dependency-name: env_logger
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-20 16:25:55 -04:00
dependabot[bot]
78555c3014 Bump libc from 0.2.132 to 0.2.133
Bumps [libc](https://github.com/rust-lang/libc) from 0.2.132 to 0.2.133.
- [Release notes](https://github.com/rust-lang/libc/releases)
- [Commits](https://github.com/rust-lang/libc/compare/0.2.132...0.2.133)

---
updated-dependencies:
- dependency-name: libc
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-20 15:23:20 -04:00
dependabot[bot]
0bae7d9b65 Bump anyhow from 1.0.64 to 1.0.65
Bumps [anyhow](https://github.com/dtolnay/anyhow) from 1.0.64 to 1.0.65.
- [Release notes](https://github.com/dtolnay/anyhow/releases)
- [Commits](https://github.com/dtolnay/anyhow/compare/1.0.64...1.0.65)

---
updated-dependencies:
- dependency-name: anyhow
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-15 17:44:47 -04:00
dependabot[bot]
89f70e560d Bump thiserror from 1.0.34 to 1.0.35
Bumps [thiserror](https://github.com/dtolnay/thiserror) from 1.0.34 to 1.0.35.
- [Release notes](https://github.com/dtolnay/thiserror/releases)
- [Commits](https://github.com/dtolnay/thiserror/compare/1.0.34...1.0.35)

---
updated-dependencies:
- dependency-name: thiserror
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-15 17:44:16 -04:00
dependabot[bot]
74afa95145 Bump anyhow from 1.0.63 to 1.0.64
Bumps [anyhow](https://github.com/dtolnay/anyhow) from 1.0.63 to 1.0.64.
- [Release notes](https://github.com/dtolnay/anyhow/releases)
- [Commits](https://github.com/dtolnay/anyhow/compare/1.0.63...1.0.64)

---
updated-dependencies:
- dependency-name: anyhow
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-05 11:54:38 -04:00
dependabot[bot]
9421caf4ea Bump thiserror from 1.0.33 to 1.0.34
Bumps [thiserror](https://github.com/dtolnay/thiserror) from 1.0.33 to 1.0.34.
- [Release notes](https://github.com/dtolnay/thiserror/releases)
- [Commits](https://github.com/dtolnay/thiserror/compare/1.0.33...1.0.34)

---
updated-dependencies:
- dependency-name: thiserror
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-05 11:54:26 -04:00
dependabot[bot]
1337f8f2fa Bump pretty_assertions from 1.2.1 to 1.3.0
Bumps [pretty_assertions](https://github.com/rust-pretty-assertions/rust-pretty-assertions) from 1.2.1 to 1.3.0.
- [Release notes](https://github.com/rust-pretty-assertions/rust-pretty-assertions/releases)
- [Changelog](https://github.com/rust-pretty-assertions/rust-pretty-assertions/blob/main/CHANGELOG.md)
- [Commits](https://github.com/rust-pretty-assertions/rust-pretty-assertions/compare/v1.2.1...v1.3.0)

---
updated-dependencies:
- dependency-name: pretty_assertions
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-02 20:05:54 -04:00
dependabot[bot]
889660537a Bump thiserror from 1.0.32 to 1.0.33
Bumps [thiserror](https://github.com/dtolnay/thiserror) from 1.0.32 to 1.0.33.
- [Release notes](https://github.com/dtolnay/thiserror/releases)
- [Commits](https://github.com/dtolnay/thiserror/compare/1.0.32...1.0.33)

---
updated-dependencies:
- dependency-name: thiserror
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-02 18:24:00 -04:00
dependabot[bot]
01c18edb8c Bump anyhow from 1.0.62 to 1.0.63
Bumps [anyhow](https://github.com/dtolnay/anyhow) from 1.0.62 to 1.0.63.
- [Release notes](https://github.com/dtolnay/anyhow/releases)
- [Commits](https://github.com/dtolnay/anyhow/compare/1.0.62...1.0.63)

---
updated-dependencies:
- dependency-name: anyhow
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-02 18:23:53 -04:00
dependabot[bot]
58497c17cd Bump iana-time-zone from 0.1.44 to 0.1.47
Bumps [iana-time-zone](https://github.com/strawlab/iana-time-zone) from 0.1.44 to 0.1.47.
- [Release notes](https://github.com/strawlab/iana-time-zone/releases)
- [Changelog](https://github.com/strawlab/iana-time-zone/blob/main/CHANGELOG.md)
- [Commits](https://github.com/strawlab/iana-time-zone/compare/0.1.44...v0.1.47)

---
updated-dependencies:
- dependency-name: iana-time-zone
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-09-01 19:18:49 -04:00
dependabot[bot]
a441418a5d Bump futures from 0.3.23 to 0.3.24
Bumps [futures](https://github.com/rust-lang/futures-rs) from 0.3.23 to 0.3.24.
- [Release notes](https://github.com/rust-lang/futures-rs/releases)
- [Changelog](https://github.com/rust-lang/futures-rs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/futures-rs/compare/0.3.23...0.3.24)

---
updated-dependencies:
- dependency-name: futures
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-30 15:11:00 -04:00
dependabot[bot]
e96a89124d Bump serde from 1.0.143 to 1.0.144
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.143 to 1.0.144.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.143...v1.0.144)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-22 10:44:57 -04:00
dependabot[bot]
71b991a91f Bump serde_json from 1.0.83 to 1.0.85
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.83 to 1.0.85.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.83...v1.0.85)

---
updated-dependencies:
- dependency-name: serde_json
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-22 10:44:39 -04:00
Dustin J. Mitchell
4fdb46fd47 ffi for tc_task_get/set_value 2022-08-21 17:22:50 -04:00
dependabot[bot]
7cecac3328 Bump anyhow from 1.0.61 to 1.0.62
Bumps [anyhow](https://github.com/dtolnay/anyhow) from 1.0.61 to 1.0.62.
- [Release notes](https://github.com/dtolnay/anyhow/releases)
- [Commits](https://github.com/dtolnay/anyhow/compare/1.0.61...1.0.62)

---
updated-dependencies:
- dependency-name: anyhow
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-21 09:06:33 -04:00
dependabot[bot]
5c33e6c93c Bump libc from 0.2.131 to 0.2.132
Bumps [libc](https://github.com/rust-lang/libc) from 0.2.131 to 0.2.132.
- [Release notes](https://github.com/rust-lang/libc/releases)
- [Commits](https://github.com/rust-lang/libc/compare/0.2.131...0.2.132)

---
updated-dependencies:
- dependency-name: libc
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-20 21:16:48 -04:00
Dustin J. Mitchell
4a1556ccb9 Add Replica::num_undo_points and exclude undo points from num_operations 2022-08-20 21:12:44 -04:00
dependabot[bot]
17726ddfe4 Bump chrono from 0.4.21 to 0.4.22
Bumps [chrono](https://github.com/chronotope/chrono) from 0.4.21 to 0.4.22.
- [Release notes](https://github.com/chronotope/chrono/releases)
- [Changelog](https://github.com/chronotope/chrono/blob/main/CHANGELOG.md)
- [Commits](https://github.com/chronotope/chrono/compare/v0.4.21...v0.4.22)

---
updated-dependencies:
- dependency-name: chrono
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-15 19:12:42 -04:00
dependabot[bot]
fd98b188e2 Bump futures from 0.3.21 to 0.3.23
Bumps [futures](https://github.com/rust-lang/futures-rs) from 0.3.21 to 0.3.23.
- [Release notes](https://github.com/rust-lang/futures-rs/releases)
- [Changelog](https://github.com/rust-lang/futures-rs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/futures-rs/compare/0.3.21...0.3.23)

---
updated-dependencies:
- dependency-name: futures
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-15 19:11:32 -04:00
dependabot[bot]
4651bd1bdb Bump libc from 0.2.129 to 0.2.131
Bumps [libc](https://github.com/rust-lang/libc) from 0.2.129 to 0.2.131.
- [Release notes](https://github.com/rust-lang/libc/releases)
- [Commits](https://github.com/rust-lang/libc/commits)

---
updated-dependencies:
- dependency-name: libc
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-13 08:57:10 -04:00
dependabot[bot]
04c95ecc56 Bump anyhow from 1.0.60 to 1.0.61
Bumps [anyhow](https://github.com/dtolnay/anyhow) from 1.0.60 to 1.0.61.
- [Release notes](https://github.com/dtolnay/anyhow/releases)
- [Commits](https://github.com/dtolnay/anyhow/compare/1.0.60...1.0.61)

---
updated-dependencies:
- dependency-name: anyhow
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-11 17:47:04 -04:00
Dustin J. Mitchell
9c0bccd08a rustsec org is now hosting audit-check 2022-08-11 01:14:37 -04:00
Dustin J. Mitchell
38ad3bc14b spell audit-check repo correctly 2022-08-11 01:14:37 -04:00
Dustin J. Mitchell
69850e5f6a [tests] Make sure waiting task is still waiting
10s is gone in an instant in a busy CI box, which is probably why this
test is failing on Macs.
2022-08-10 23:38:04 -04:00
dependabot[bot]
c51478b81a Bump chrono from 0.4.20 to 0.4.21
Bumps [chrono](https://github.com/chronotope/chrono) from 0.4.20 to 0.4.21.
- [Release notes](https://github.com/chronotope/chrono/releases)
- [Changelog](https://github.com/chronotope/chrono/blob/main/CHANGELOG.md)
- [Commits](https://github.com/chronotope/chrono/compare/v0.4.20...v0.4.21)

---
updated-dependencies:
- dependency-name: chrono
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-10 18:02:51 -04:00
dependabot[bot]
d69359b63c Bump libc from 0.2.127 to 0.2.129
Bumps [libc](https://github.com/rust-lang/libc) from 0.2.127 to 0.2.129.
- [Release notes](https://github.com/rust-lang/libc/releases)
- [Commits](https://github.com/rust-lang/libc/compare/0.2.127...0.2.129)

---
updated-dependencies:
- dependency-name: libc
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-10 18:02:42 -04:00
dependabot[bot]
26fbbabe9b Bump serde from 1.0.142 to 1.0.143
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.142 to 1.0.143.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.142...v1.0.143)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-09 14:58:28 -04:00
dependabot[bot]
e3985c87b5 Bump strum_macros from 0.24.2 to 0.24.3
Bumps [strum_macros](https://github.com/Peternator7/strum) from 0.24.2 to 0.24.3.
- [Release notes](https://github.com/Peternator7/strum/releases)
- [Changelog](https://github.com/Peternator7/strum/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Peternator7/strum/commits)

---
updated-dependencies:
- dependency-name: strum_macros
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-08 08:27:49 -04:00
Dustin J. Mitchell
4852b146a8 stop using forked audit action 2022-08-06 20:55:39 -04:00
Dustin J. Mitchell
bad3b3d700 use the (existing) .cargo/audit.toml to ignore some rust advisories 2022-08-06 20:55:39 -04:00
dependabot[bot]
152db46ce3 Bump chrono from 0.4.19 to 0.4.20
Bumps [chrono](https://github.com/chronotope/chrono) from 0.4.19 to 0.4.20.
- [Release notes](https://github.com/chronotope/chrono/releases)
- [Changelog](https://github.com/chronotope/chrono/blob/main/CHANGELOG.md)
- [Commits](https://github.com/chronotope/chrono/compare/v0.4.19...v0.4.20)

---
updated-dependencies:
- dependency-name: chrono
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-05 21:36:25 -04:00
dependabot[bot]
005aa817c6 Bump libc from 0.2.126 to 0.2.127
Bumps [libc](https://github.com/rust-lang/libc) from 0.2.126 to 0.2.127.
- [Release notes](https://github.com/rust-lang/libc/releases)
- [Commits](https://github.com/rust-lang/libc/compare/0.2.126...0.2.127)

---
updated-dependencies:
- dependency-name: libc
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-04 21:59:55 -04:00
dependabot[bot]
37f7ac4ffc Bump serde_json from 1.0.82 to 1.0.83
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.82 to 1.0.83.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.82...v1.0.83)

---
updated-dependencies:
- dependency-name: serde_json
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-04 21:59:24 -04:00
dependabot[bot]
848792fc5a Bump serde from 1.0.141 to 1.0.142
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.141 to 1.0.142.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.141...v1.0.142)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-04 21:59:12 -04:00
dependabot[bot]
79c1d88658 Bump anyhow from 1.0.59 to 1.0.60
Bumps [anyhow](https://github.com/dtolnay/anyhow) from 1.0.59 to 1.0.60.
- [Release notes](https://github.com/dtolnay/anyhow/releases)
- [Commits](https://github.com/dtolnay/anyhow/compare/1.0.59...1.0.60)

---
updated-dependencies:
- dependency-name: anyhow
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-03 12:59:17 -04:00
dependabot[bot]
aa8557a06f Bump thiserror from 1.0.31 to 1.0.32
Bumps [thiserror](https://github.com/dtolnay/thiserror) from 1.0.31 to 1.0.32.
- [Release notes](https://github.com/dtolnay/thiserror/releases)
- [Commits](https://github.com/dtolnay/thiserror/compare/1.0.31...1.0.32)

---
updated-dependencies:
- dependency-name: thiserror
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-03 12:59:00 -04:00
dependabot[bot]
2064a502ca Bump anyhow from 1.0.58 to 1.0.59
Bumps [anyhow](https://github.com/dtolnay/anyhow) from 1.0.58 to 1.0.59.
- [Release notes](https://github.com/dtolnay/anyhow/releases)
- [Commits](https://github.com/dtolnay/anyhow/compare/1.0.58...1.0.59)

---
updated-dependencies:
- dependency-name: anyhow
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-02 12:27:37 -04:00
dependabot[bot]
98fa4d207a Bump serde from 1.0.140 to 1.0.141
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.140 to 1.0.141.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.140...v1.0.141)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-08-02 12:27:17 -04:00
Dustin J. Mitchell
f5e976ae73 remove leftover src/taskchampion submodule 2022-07-29 21:41:41 -04:00
Dustin J. Mitchell
7f686a7977 update Taskchampion README 2022-07-29 21:41:41 -04:00
Dustin J. Mitchell
12ecfa2b1e rename rust/ to taskchampion/ 2022-07-29 21:41:41 -04:00
Dustin J. Mitchell
ccb9a0fdfb Import taskchampion-lib into integration-tests as rust symbols
This allows Cargo to handle the linking peculiarities of platforms.
2022-07-29 21:41:41 -04:00
Dustin J. Mitchell
6f7c5c31a9 install Rust on each push in docker images 2022-07-29 21:41:41 -04:00
Dustin J. Mitchell
3dfd28586a fix linking for taskchampion-integration-tests 2022-07-29 21:41:41 -04:00
Dustin J. Mitchell
6a42cf00a2 Update Taskwarrior workflows to include Rust 2022-07-29 21:41:41 -04:00
Dustin J. Mitchell
8c30400af3 Add a C++ wrapper around TC FFI
This uses CMake to build a simple Rust library (in `src/tc/rust`) that
just re-exports everything from the `taskchampion-lib` crate.

The C++ wrappers then wrap this into C++ objects with proper lifecycle
maintenance, in the `tc` namespace.

The C++ wrappers are incomplete, and missing methods are tagged with
"TODO".  These will be added as needed.
2022-07-29 21:41:41 -04:00
Tomas Babej
fd03169314 man: Make frequency abbreviation more clear 2022-07-25 19:51:59 -04:00
Dustin J. Mitchell
72a8be3340 Update .github/workflows/security.yml
Co-authored-by: Tomas Babej <tomas@tbabej.com>
2022-07-24 16:46:45 -04:00
Dustin J. Mitchell
56ea105e25 Ignore RUSTSEC-2020-0071
See discussion at
https://github.com/taskchampion/taskchampion/issues/304.  Note that
RUSTSEC-2020-0159 is the same bug as RUSTSEC-2020-0071.
2022-07-24 16:46:45 -04:00
Dustin J. Mitchell
3aa14b3efc ignore RUSTSEC-2021-0124
This is a vulnerability in tokio, which is required by Actix-web. For
the moment, ignore it, and then decide whether to upgrade actix to suit,
or switch to a different (simpler) web server package.
2022-07-24 16:46:45 -04:00
Dustin J. Mitchell
977ab11af2 Revert "temporarily remove cargo audit check"
This reverts commit 892efd0b1371b0a9d7ce973c30b18b0db6ca2854.
2022-07-24 16:46:45 -04:00
Dustin J. Mitchell
35c8ce2ccb Remove references to TDB2::read_only
A TC replica is always read-write.
2022-07-24 14:18:21 -04:00
Dustin J. Mitchell
f452100588 Remove references to TDB2::data_size
This value will is not relevant for TaskChampion.
2022-07-24 14:18:21 -04:00
Dustin J. Mitchell
e3ef6c504a remove TBD2::clear, only used in tests 2022-07-24 14:18:21 -04:00
Dustin J. Mitchell
271d06cd9c make TDB2.pending/completed non-public
References to methods on these fields are replaced with methods on TDB2,
several of which already existed.
2022-07-24 14:18:21 -04:00
Dustin J. Mitchell
4ebd0ffb39 make TDB2.undo non-public
The stats command calls an API to provide this information in a way that
will still be relevant for TaskChampion, while CmdInfo's access to the
data remains.  The TaskChampion interface for per-task hitsory is still
not ready.
2022-07-24 14:18:21 -04:00
Tomas Babej
2f30bc8cbf tests: Add dockerfile for Ubuntu 22.04 2022-07-24 13:58:10 -04:00
Tomas Babej
8845055abb tests: Add Ubuntu 22.04 into the test matrix 2022-07-24 13:58:10 -04:00
Tomas Babej
08d647102f tests: Remove Ubuntu 21.04 and 21.10 from the test matrix
Both releases are beyond their respective EoL [1].

[1]: https://wiki.ubuntu.com/Releases
2022-07-24 13:58:10 -04:00
Dustin J. Mitchell
4d84252012 Update pull_request_template for Rust code 2022-07-24 12:20:16 -04:00
dependabot[bot]
4d3c407db5 Bump serde from 1.0.139 to 1.0.140
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.139 to 1.0.140.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.139...v1.0.140)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-21 19:06:01 -04:00
dependabot[bot]
a47d08d2d9 Bump rusqlite from 0.27.0 to 0.28.0
Bumps [rusqlite](https://github.com/rusqlite/rusqlite) from 0.27.0 to 0.28.0.
- [Release notes](https://github.com/rusqlite/rusqlite/releases)
- [Changelog](https://github.com/rusqlite/rusqlite/blob/master/Changelog.md)
- [Commits](https://github.com/rusqlite/rusqlite/compare/v0.27.0...v0.28.0)

---
updated-dependencies:
- dependency-name: rusqlite
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-15 14:39:33 -04:00
Pablo Baeyens
dcc285bc4a [rust/taskchampion/src/task] Add Task::get_value and TaskMut::set_value 2022-07-13 20:49:21 -04:00
dependabot[bot]
2889e77d51 Bump clap from 3.2.8 to 3.2.10
Bumps [clap](https://github.com/clap-rs/clap) from 3.2.8 to 3.2.10.
- [Release notes](https://github.com/clap-rs/clap/releases)
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md)
- [Commits](https://github.com/clap-rs/clap/compare/v3.2.8...v3.2.10)

---
updated-dependencies:
- dependency-name: clap
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-12 09:14:39 -04:00
dependabot[bot]
971c27ac47 Bump ureq from 2.4.0 to 2.5.0
Bumps [ureq](https://github.com/algesten/ureq) from 2.4.0 to 2.5.0.
- [Release notes](https://github.com/algesten/ureq/releases)
- [Changelog](https://github.com/algesten/ureq/blob/main/CHANGELOG.md)
- [Commits](https://github.com/algesten/ureq/compare/2.4.0...2.5.0)

---
updated-dependencies:
- dependency-name: ureq
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-11 17:16:32 -04:00
dependabot[bot]
f3993c3004 Bump serde from 1.0.138 to 1.0.139
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.138 to 1.0.139.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.138...v1.0.139)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-11 17:16:11 -04:00
dependabot[bot]
4a81c1b23f Bump serde from 1.0.137 to 1.0.138
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.137 to 1.0.138.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.137...v1.0.138)

---
updated-dependencies:
- dependency-name: serde
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-04 09:36:04 -04:00
dependabot[bot]
0b61753220 Bump clap from 3.2.6 to 3.2.8
Bumps [clap](https://github.com/clap-rs/clap) from 3.2.6 to 3.2.8.
- [Release notes](https://github.com/clap-rs/clap/releases)
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md)
- [Commits](https://github.com/clap-rs/clap/compare/v3.2.6...v3.2.8)

---
updated-dependencies:
- dependency-name: clap
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-02 10:25:00 -04:00
dependabot[bot]
4255b613bc Bump serde_json from 1.0.81 to 1.0.82
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.81 to 1.0.82.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.81...v1.0.82)

---
updated-dependencies:
- dependency-name: serde_json
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-02 10:24:48 -04:00
dependabot[bot]
fae77410fa Bump rstest from 0.14.0 to 0.15.0
Bumps [rstest](https://github.com/la10736/rstest) from 0.14.0 to 0.15.0.
- [Release notes](https://github.com/la10736/rstest/releases)
- [Changelog](https://github.com/la10736/rstest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/la10736/rstest/compare/0.14.0...0.15.0)

---
updated-dependencies:
- dependency-name: rstest
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-07-02 10:24:37 -04:00
dependabot[bot]
9bb2bc016a Bump strum_macros from 0.24.1 to 0.24.2
Bumps [strum_macros](https://github.com/Peternator7/strum) from 0.24.1 to 0.24.2.
- [Release notes](https://github.com/Peternator7/strum/releases)
- [Changelog](https://github.com/Peternator7/strum/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Peternator7/strum/commits)

---
updated-dependencies:
- dependency-name: strum_macros
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-06-27 20:17:53 -04:00
dependabot[bot]
b88623f842 Bump anyhow from 1.0.57 to 1.0.58
Bumps [anyhow](https://github.com/dtolnay/anyhow) from 1.0.57 to 1.0.58.
- [Release notes](https://github.com/dtolnay/anyhow/releases)
- [Commits](https://github.com/dtolnay/anyhow/compare/1.0.57...1.0.58)

---
updated-dependencies:
- dependency-name: anyhow
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-06-23 09:02:33 -04:00
dependabot[bot]
c113a17924 Bump rstest from 0.13.0 to 0.14.0
Bumps [rstest](https://github.com/la10736/rstest) from 0.13.0 to 0.14.0.
- [Release notes](https://github.com/la10736/rstest/releases)
- [Changelog](https://github.com/la10736/rstest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/la10736/rstest/compare/0.13.0...0.14.0)

---
updated-dependencies:
- dependency-name: rstest
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-06-23 08:30:50 -04:00
dependabot[bot]
1350f41ab5 Bump clap from 3.2.5 to 3.2.6
Bumps [clap](https://github.com/clap-rs/clap) from 3.2.5 to 3.2.6.
- [Release notes](https://github.com/clap-rs/clap/releases)
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md)
- [Commits](https://github.com/clap-rs/clap/compare/v3.2.5...v3.2.6)

---
updated-dependencies:
- dependency-name: clap
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-06-23 08:13:33 -04:00
Dustin J. Mitchell
c8cfcec48b Make TDB2.backlog non-public
The stats command gets this information from an API that will also work
for TaskChampion.  The sync command still accesses the field directly,
as the command must be completely rewritten for TaskChampion.
2022-06-21 12:05:50 -04:00
Dustin J. Mitchell
d699ce8cba bump MSRV to the latest version 2022-06-21 12:02:25 -04:00
dependabot[bot]
bdc509bde7 Bump clap from 3.1.18 to 3.2.5
Bumps [clap](https://github.com/clap-rs/clap) from 3.1.18 to 3.2.5.
- [Release notes](https://github.com/clap-rs/clap/releases)
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md)
- [Commits](https://github.com/clap-rs/clap/compare/v3.1.18...v3.2.5)

---
updated-dependencies:
- dependency-name: clap
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-06-21 12:02:25 -04:00
dependabot[bot]
8999cdbfc0 Bump strum_macros from 0.24.0 to 0.24.1
Bumps [strum_macros](https://github.com/Peternator7/strum) from 0.24.0 to 0.24.1.
- [Release notes](https://github.com/Peternator7/strum/releases)
- [Changelog](https://github.com/Peternator7/strum/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Peternator7/strum/commits)

---
updated-dependencies:
- dependency-name: strum_macros
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-06-21 11:51:33 -04:00
dependabot[bot]
3f4420850a Bump uuid from 1.1.1 to 1.1.2
Bumps [uuid](https://github.com/uuid-rs/uuid) from 1.1.1 to 1.1.2.
- [Release notes](https://github.com/uuid-rs/uuid/releases)
- [Commits](https://github.com/uuid-rs/uuid/compare/1.1.1...1.1.2)

---
updated-dependencies:
- dependency-name: uuid
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-06-21 11:51:20 -04:00
dependabot[bot]
47c6d072ec Bump strum from 0.24.0 to 0.24.1
Bumps [strum](https://github.com/Peternator7/strum) from 0.24.0 to 0.24.1.
- [Release notes](https://github.com/Peternator7/strum/releases)
- [Changelog](https://github.com/Peternator7/strum/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Peternator7/strum/commits)

---
updated-dependencies:
- dependency-name: strum
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-06-21 11:51:09 -04:00
Raf Czlonka
92a9a716a8 Use 'speakers' instead of 'users'.
"Non-English users" sounds very much like "users who are not English".
Also, "Non-English speakers" is already a well established phrase.
2022-06-12 18:30:20 -04:00
Raf Czlonka
12bdc0d480 Fix typo: 'holday' -> 'holiday'
While there, be consistent when using hyphens.
2022-06-12 18:30:20 -04:00
sec65
0d63165ca5 TW-2763: added hooks.location to show command 2022-06-12 18:11:05 -04:00
Dustin J. Mitchell
d422db32ea temporarily remove cargo audit check 2022-06-12 18:07:44 -04:00
dependabot[bot]
63bb9fc7ee Bump cbindgen from 0.23.0 to 0.24.3
Bumps [cbindgen](https://github.com/eqrion/cbindgen) from 0.23.0 to 0.24.3.
- [Release notes](https://github.com/eqrion/cbindgen/releases)
- [Changelog](https://github.com/eqrion/cbindgen/blob/master/CHANGES)
- [Commits](https://github.com/eqrion/cbindgen/compare/v0.23.0...v0.24.3)

---
updated-dependencies:
- dependency-name: cbindgen
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-06-11 22:20:00 -04:00
dependabot[bot]
ce6626459c Bump uuid from 1.1.0 to 1.1.1
Bumps [uuid](https://github.com/uuid-rs/uuid) from 1.1.0 to 1.1.1.
- [Release notes](https://github.com/uuid-rs/uuid/releases)
- [Commits](https://github.com/uuid-rs/uuid/compare/1.1.0...1.1.1)

---
updated-dependencies:
- dependency-name: uuid
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-06-01 17:24:50 -04:00
Nikos Koukis
4c179a427d Fix issue with filter not applied correctly during task _tags command
Also includes:

* Add cmake build directory + Session.vim files to .gitignore list
2022-05-31 01:31:28 -04:00
dependabot[bot]
9c4e0a43a0 Bump flate2 from 1.0.23 to 1.0.24
Bumps [flate2](https://github.com/rust-lang/flate2-rs) from 1.0.23 to 1.0.24.
- [Release notes](https://github.com/rust-lang/flate2-rs/releases)
- [Commits](https://github.com/rust-lang/flate2-rs/commits)

---
updated-dependencies:
- dependency-name: flate2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-30 12:35:18 -04:00
dependabot[bot]
e842b66e5c Bump clap from 2.34.0 to 3.1.18 (#2824)
* Bump clap from 2.34.0 to 3.1.18

Bumps [clap](https://github.com/clap-rs/clap) from 2.34.0 to 3.1.18.
- [Release notes](https://github.com/clap-rs/clap/releases)
- [Changelog](https://github.com/clap-rs/clap/blob/master/CHANGELOG.md)
- [Commits](https://github.com/clap-rs/clap/compare/v2.34.0...v3.1.18)

---
updated-dependencies:
- dependency-name: clap
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>

* update taskchampion-sync-server for clap 3.x

* bump MSRV to 1.54 for extended_key_value_attributes required by clap

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Dustin J. Mitchell <dustin@v.igoro.us>
2022-05-30 12:34:55 -04:00
Dustin J. Mitchell
a1bd08d6d1 bump MSRV to 1.54 for extended_key_value_attributes required by cbindgen 2022-05-29 21:52:48 -04:00
dependabot[bot]
368a6dde5f Bump cbindgen from 0.20.0 to 0.23.0
Bumps [cbindgen](https://github.com/eqrion/cbindgen) from 0.20.0 to 0.23.0.
- [Release notes](https://github.com/eqrion/cbindgen/releases)
- [Changelog](https://github.com/eqrion/cbindgen/blob/master/CHANGES)
- [Commits](https://github.com/eqrion/cbindgen/compare/v0.20.0...v0.23.0)

---
updated-dependencies:
- dependency-name: cbindgen
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-29 21:52:48 -04:00
dependabot[bot]
b1f13b29c3 Bump env_logger from 0.8.4 to 0.9.0
Bumps [env_logger](https://github.com/env-logger-rs/env_logger) from 0.8.4 to 0.9.0.
- [Release notes](https://github.com/env-logger-rs/env_logger/releases)
- [Changelog](https://github.com/env-logger-rs/env_logger/blob/main/CHANGELOG.md)
- [Commits](https://github.com/env-logger-rs/env_logger/compare/v0.8.4...v0.9.0)

---
updated-dependencies:
- dependency-name: env_logger
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-29 21:00:27 -04:00
Tomas Babej
61f03a7d0a workflows: Fix a typo 2022-05-28 08:37:42 -04:00
Dustin J. Mitchell
3529ee9289 bump MSRV to 1.53 for debug_non_exhaustive 2022-05-28 08:37:00 -04:00
Dustin J. Mitchell
e5b23ef9a0 add missing unsafe block
The // SAFETY comment already exists -- only the unsafe { .. } was
omitted.
2022-05-28 08:37:00 -04:00
Dustin J. Mitchell
e6470f463f Update all Rust dependencies to their latest
Accomplished by removing Cargo.lock and running `cargo build`.
2022-05-28 08:37:00 -04:00
Dustin J. Mitchell
085da00b0c add write-all permission to the audit 2022-05-28 08:33:20 -04:00
Dustin J. Mitchell
3a675c67bf add Cargo.* to Rust CODEOWNERS 2022-05-27 22:47:59 -04:00
dependabot[bot]
13cfe1c7db Bump strum from 0.21.0 to 0.24.0
Bumps [strum](https://github.com/Peternator7/strum) from 0.21.0 to 0.24.0.
- [Release notes](https://github.com/Peternator7/strum/releases)
- [Changelog](https://github.com/Peternator7/strum/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Peternator7/strum/commits)

---
updated-dependencies:
- dependency-name: strum
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-27 18:13:10 -04:00
Dustin J. Mitchell
f9b19526f0 to_hyphenated -> as_hyphenated 2022-05-27 18:12:46 -04:00
dependabot[bot]
99dd74bef7 Bump uuid from 0.8.2 to 1.1.0
Bumps [uuid](https://github.com/uuid-rs/uuid) from 0.8.2 to 1.1.0.
- [Release notes](https://github.com/uuid-rs/uuid/releases)
- [Commits](https://github.com/uuid-rs/uuid/compare/0.8.2...1.1.0)

---
updated-dependencies:
- dependency-name: uuid
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-27 18:12:46 -04:00
dependabot[bot]
14a84af0db Bump rstest from 0.10.0 to 0.13.0
Bumps [rstest](https://github.com/la10736/rstest) from 0.10.0 to 0.13.0.
- [Release notes](https://github.com/la10736/rstest/releases)
- [Changelog](https://github.com/la10736/rstest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/la10736/rstest/compare/0.10.0...0.13.0)

---
updated-dependencies:
- dependency-name: rstest
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-26 22:44:42 -04:00
dependabot[bot]
db416c9698 Bump flate2 from 1.0.20 to 1.0.23
Bumps [flate2](https://github.com/rust-lang/flate2-rs) from 1.0.20 to 1.0.23.
- [Release notes](https://github.com/rust-lang/flate2-rs/releases)
- [Commits](https://github.com/rust-lang/flate2-rs/compare/1.0.20...1.0.23)

---
updated-dependencies:
- dependency-name: flate2
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-26 22:40:44 -04:00
dependabot[bot]
0d7ab56360 Bump pretty_assertions from 1.0.0 to 1.2.1
Bumps [pretty_assertions](https://github.com/colin-kiegel/rust-pretty-assertions) from 1.0.0 to 1.2.1.
- [Release notes](https://github.com/colin-kiegel/rust-pretty-assertions/releases)
- [Changelog](https://github.com/colin-kiegel/rust-pretty-assertions/blob/main/CHANGELOG.md)
- [Commits](https://github.com/colin-kiegel/rust-pretty-assertions/compare/v1.0.0...v1.2.1)

---
updated-dependencies:
- dependency-name: pretty_assertions
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-26 13:55:15 -04:00
dependabot[bot]
e30eae7dd7 Bump libc from 0.2.113 to 0.2.126
Bumps [libc](https://github.com/rust-lang/libc) from 0.2.113 to 0.2.126.
- [Release notes](https://github.com/rust-lang/libc/releases)
- [Commits](https://github.com/rust-lang/libc/compare/0.2.113...0.2.126)

---
updated-dependencies:
- dependency-name: libc
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-26 13:55:09 -04:00
dependabot[bot]
34b2e6a6b8 Bump strum_macros from 0.21.1 to 0.24.0
Bumps [strum_macros](https://github.com/Peternator7/strum) from 0.21.1 to 0.24.0.
- [Release notes](https://github.com/Peternator7/strum/releases)
- [Changelog](https://github.com/Peternator7/strum/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Peternator7/strum/commits)

---
updated-dependencies:
- dependency-name: strum_macros
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-26 13:55:02 -04:00
dependabot[bot]
e8fe3cda77 Bump rusqlite from 0.25.3 to 0.27.0
Bumps [rusqlite](https://github.com/rusqlite/rusqlite) from 0.25.3 to 0.27.0.
- [Release notes](https://github.com/rusqlite/rusqlite/releases)
- [Changelog](https://github.com/rusqlite/rusqlite/blob/master/Changelog.md)
- [Commits](https://github.com/rusqlite/rusqlite/compare/v0.25.3...v0.27.0)

---
updated-dependencies:
- dependency-name: rusqlite
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-25 23:40:33 -04:00
dependabot[bot]
b14d53fbc7 Bump thiserror from 1.0.25 to 1.0.31
Bumps [thiserror](https://github.com/dtolnay/thiserror) from 1.0.25 to 1.0.31.
- [Release notes](https://github.com/dtolnay/thiserror/releases)
- [Commits](https://github.com/dtolnay/thiserror/compare/1.0.25...1.0.31)

---
updated-dependencies:
- dependency-name: thiserror
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-25 22:55:53 -04:00
dependabot[bot]
c259e73f2a Bump termcolor from 1.1.2 to 1.1.3
Bumps [termcolor](https://github.com/BurntSushi/termcolor) from 1.1.2 to 1.1.3.
- [Release notes](https://github.com/BurntSushi/termcolor/releases)
- [Commits](https://github.com/BurntSushi/termcolor/compare/1.1.2...1.1.3)

---
updated-dependencies:
- dependency-name: termcolor
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-25 22:55:13 -04:00
Dustin J. Mitchell
04f4d3a68e include images for contrib/branching 2022-05-25 21:17:36 -04:00
Dustin J. Mitchell
18e11300fd eliminate unnecessary backslash-escaped quotes 2022-05-25 21:17:36 -04:00
Dustin J. Mitchell
b1ca5d4cf8 reformat to one sentence per line 2022-05-25 21:17:36 -04:00
Dustin J. Mitchell
ade706a72e convert html table to markdown in rfcs/task.md 2022-05-25 21:17:36 -04:00
Dustin J. Mitchell
c441315488 remove unused index 2022-05-25 21:17:36 -04:00
Dustin J. Mitchell
8747cc9f94 Import design docs (RFCs) 2022-05-25 21:17:36 -04:00
Dustin J. Mitchell
07493d5fa6 Bring contributing content from tw.org into dev docs 2022-05-25 21:17:36 -04:00
Dustin J. Mitchell
377f517154 Set up a basic Jekyll theme 2022-05-25 21:17:36 -04:00
Dustin J. Mitchell
e2ef45a06e rust: Update MSRV to 1.52
The bump of minimum rust version is required by some of the updated dependencies.

Closes #2802.
2022-05-25 21:01:04 -04:00
Dustin J. Mitchell
e4a881a4a6 remove usage-docs from workflows 2022-05-25 20:55:18 -04:00
Dustin J. Mitchell
2f57edee51 remove docs about taskchampion-cli 2022-05-25 20:55:18 -04:00
Dustin J. Mitchell
c0ce1fe059 Drop the 'taskchampion-cli' crate
It was fun while it lasted, but we'll be using TaskWarrior for the CLI!
2022-05-25 20:55:18 -04:00
dependabot[bot]
2b9a389636 Bump predicates from 1.0.8 to 2.1.1
Bumps [predicates](https://github.com/assert-rs/predicates-rs) from 1.0.8 to 2.1.1.
- [Release notes](https://github.com/assert-rs/predicates-rs/releases)
- [Changelog](https://github.com/assert-rs/predicates-rs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/assert-rs/predicates-rs/compare/v1.0.8...v2.1.1)

---
updated-dependencies:
- dependency-name: predicates
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-21 20:44:56 -04:00
dependabot[bot]
47a91315df Bump log from 0.4.14 to 0.4.17
Bumps [log](https://github.com/rust-lang/log) from 0.4.14 to 0.4.17.
- [Release notes](https://github.com/rust-lang/log/releases)
- [Changelog](https://github.com/rust-lang/log/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/log/compare/0.4.14...0.4.17)

---
updated-dependencies:
- dependency-name: log
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-21 20:44:47 -04:00
dependabot[bot]
63e48b0a96 Bump dialoguer from 0.8.0 to 0.10.1
Bumps [dialoguer](https://github.com/mitsuhiko/dialoguer) from 0.8.0 to 0.10.1.
- [Release notes](https://github.com/mitsuhiko/dialoguer/releases)
- [Changelog](https://github.com/mitsuhiko/dialoguer/blob/master/CHANGELOG.md)
- [Commits](https://github.com/mitsuhiko/dialoguer/compare/0.8.0...v0.10.1)

---
updated-dependencies:
- dependency-name: dialoguer
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-05-21 20:44:40 -04:00
Tomas Babej
b15732ed38 Merge pull request #2783
Merge development efforts of TaskChampion and Taskwarrior
2022-05-20 03:03:45 -04:00
Dustin J. Mitchell
1ed483ecde codegen taskchampion.h 2022-05-08 20:06:06 +00:00
Dustin J. Mitchell
5c7eeeb87e set up dependabot for rust/ 2022-05-08 20:06:06 +00:00
Dustin J. Mitchell
ea39968816 add codeowners for rust/ 2022-05-08 20:06:06 +00:00
Dustin J. Mitchell
9f5994bfd1 Update GitHub actions to work in Taskwarrior
This moves the workspace Cargo.toml to the root of the repository, so
that the "actions-rs/cargo" action can find it.
2022-05-08 20:06:05 +00:00
Dustin J. Mitchell
1df54125ea Import the TaskChampion repository at rust/ 2022-05-08 19:39:44 +00:00
Dustin J. Mitchell
2a92b2a4b9 move contents of taskchampion repo to tc/ 2022-05-08 19:39:02 +00:00
Tomas Babej
0a558ef7c8 Context: Add a reminder to mirror options in the vim syntax file 2022-05-07 21:52:22 -04:00
Dominik Rehák
e0c9561a8e vim: Add missing config options to taskrc syntax file
Sourced from taskrc(5) and default config (Context.cpp).
2022-05-07 21:49:31 -04:00
Dominik Rehák
27f3e95f12 ColTypeDate: Fix countdown style width 2022-05-07 21:48:07 -04:00
Dustin J. Mitchell
73baefa0a5 Merge pull request #354 from djmitche/tc-lib-rlib
export taskchampion-lib as an rlib, too
2022-04-24 19:17:22 -04:00
Dustin J. Mitchell
ac172b1008 Name the C library differently from the crate 2022-04-24 23:09:15 +00:00
Dustin J. Mitchell
716a558ba2 ignore a C code example 2022-04-24 22:49:31 +00:00
Dustin J. Mitchell
ae3851f5a6 export taskchampion-lib as an rlib, too 2022-04-24 22:49:31 +00:00
Dustin J. Mitchell
07929f327f Merge pull request #353 from djmitche/issue352
Add `Replica.num_local_operations`
2022-04-24 18:28:41 -04:00
Dustin J. Mitchell
20823b7a73 expose Replica::num_local_operations via FFI 2022-04-23 19:19:14 +00:00
Dustin J. Mitchell
fd504b7d66 add num_local_operations to Replica 2022-04-23 18:51:40 +00:00
Jackson Abascal
c3bb3810be Fix urgency inheritance for negative-urgency tasks 2022-04-13 11:38:30 -04:00
Dominik Rehák
8c3aa95224 CmdInfo: Fix leading spaces before urgency value
The minimal field width is set to 4, so if the value is shorter, it gets
prefixed with spaces, breaking the flow of the table.
2022-04-13 11:22:49 -04:00
Dustin J. Mitchell
6f8c734186 Merge pull request #350 from djmitche/issue78
Treat priority as an arbitrary string
2022-04-06 19:10:47 -04:00
Dustin J. Mitchell
1b586a425f Treat priority as an arbitrary string
This matches what TaskWarrior does: priority is a UDA, and can be
redefined by the user's local config.
2022-03-27 17:54:12 -04:00
Dustin J. Mitchell
0dd2d9cd30 Merge pull request #336 from djmitche/issue84
Add support for dependencies
2022-03-15 19:02:32 -04:00
Dustin J. Mitchell
6f48f715ac +BLOCKED, +UNBLOCKED, and +BLOCKING tags
These are somewhat expensive tags, as they require reference to values
outside of the task itself.

To accomplish this, the replica supplies a pre-computed DependencyMap
that is only calculated once per replica, and only from the working set.
2022-03-15 19:02:24 -04:00
Dustin J. Mitchell
47e213d6ec add support for dependencies to 'ta info' 2022-03-15 19:02:24 -04:00
Dustin J. Mitchell
47b1fed42a Add support for modifying dependencies
This requires "resolving" dependencies after the command-line parsing
phase is complete.
2022-03-15 19:02:23 -04:00
Dustin J. Mitchell
db1e1c9c96 Support parsing depends:.. in CLI 2022-03-15 18:01:49 -04:00
Dustin J. Mitchell
bf73cc4cc7 add dependency support to taskchampion 2022-03-15 18:01:48 -04:00
Dustin J. Mitchell
a030053dae Merge pull request #345 from djmitche/reexport-chrono
Re-export the chrono crate from taskchampion.
2022-03-15 17:59:03 -04:00
Dustin J. Mitchell
f8c4ece238 Re-export the chrono crate from taskchampion.
The chrono types are central to use of TC, so this will help consumers
of the TC crate to avoid dependency conflicts.
2022-03-15 17:58:54 -04:00
Dustin J. Mitchell
8e5ab78440 Merge pull request #347 from djmitche/take-from-lists
Allow taking from pointer lists
2022-03-15 17:57:48 -04:00
Dustin J. Mitchell
8c91b2c3db Merge pull request #346 from djmitche/include-guard
add an include guard to taskchampion.h
2022-03-15 17:57:36 -04:00
Dustin J. Mitchell
33a3b980d0 Allow taking from pointer lists
This introduces `tc_task_list_take`, supporting taking ownership of an
item in a task list.

TCTaskList is the only pointer list, but this is a generic and could be
used for other types.
2022-03-13 16:25:59 +00:00
Dustin J. Mitchell
3c6da4138f add an include guard to taskchampion.h 2022-03-12 21:38:59 +00:00
Dustin J. Mitchell
9355e1a728 Merge pull request #341 from djmitche/issue26
Add support for expiration
2022-03-10 15:35:50 -05:00
Dustin J. Mitchell
cb87206047 Merge pull request #344 from djmitche/regex-update
Address RUSTSEC-2022-0013.
2022-03-10 15:35:21 -05:00
Dustin J. Mitchell
889e1d1cdc Merge pull request #342 from djmitche/clippy-warnings
fix some clippy warnings, and make them errors for taskchampion-lib
2022-03-10 15:35:12 -05:00
Dustin J. Mitchell
bd9a5ad5ff Address RUSTSEC-2022-0013.
Note that the risk from this vulnerability was minimal for this project.
2022-03-09 17:52:57 -05:00
Dustin J. Mitchell
a5a8e3b7c8 fix some clippy warnings, and make them errors for taskchampion-lib 2022-03-07 23:49:37 +00:00
Dustin J. Mitchell
42238b5306 add an integration test for syncing task expirations 2022-03-07 23:37:31 +00:00
Dustin J. Mitchell
411bc19762 doc expiration 2022-03-07 23:37:30 +00:00
Dustin J. Mitchell
97bd2addc9 add a 'ta delete' subcommand 2022-03-07 23:37:27 +00:00
Dustin J. Mitchell
3cdc13aa37 expire tasks in 'ta gc' 2022-03-07 23:37:25 +00:00
Dustin J. Mitchell
919e91fd13 don't automatically update modified when updating it explicitly 2022-03-07 23:37:15 +00:00
Dustin J. Mitchell
2a6c91b3f9 Support expiring old, deleted tasks 2022-03-07 23:37:13 +00:00
Dustin J. Mitchell
fcdcebb1e0 Merge pull request #339 from djmitche/uuid-len-const
use TC_UUID_STRING_BYTES constant directly
2022-03-07 10:55:28 -05:00
Dustin J. Mitchell
43ab50db42 use TC_UUID_STRING_BYTES constant directly 2022-03-06 01:25:31 +00:00
Dustin J. Mitchell
a7f353bd6e Merge pull request #332 from djmitche/cdylib
build a C interface to taskchampion
2022-03-03 19:43:22 -05:00
Dustin J. Mitchell
3a4c417cee free replica in test 2022-03-02 20:58:36 -05:00
Dustin J. Mitchell
a525935008 import order fix 2022-02-27 18:14:21 +00:00
Dustin J. Mitchell
85153423be include BCrypt on Windows 2022-02-27 17:59:58 +00:00
Dustin J. Mitchell
1c5b01975c fix unused symbol on windows 2022-02-27 17:57:34 +00:00
Dustin J. Mitchell
aadd4a762f support generation of paths from TCString on Windows 2022-02-27 17:41:45 +00:00
Dustin J. Mitchell
5072ed7458 a bit of docs 2022-02-27 17:13:55 +00:00
Dustin J. Mitchell
8a96ca7273 fix formatting 2022-02-27 17:07:09 +00:00
Dustin J. Mitchell
2c9d74515e link to libtaskchampion separately from the unity tests 2022-02-27 17:03:04 +00:00
Dustin J. Mitchell
17ccaea096 try the latest 'cc' crate in hopes it fixes things 2022-02-26 23:05:36 +00:00
Dustin J. Mitchell
f0178d4fab don't use unsafe_op_in_unsafe_fn, as it's not in MSRV 2022-02-24 03:33:08 +00:00
Dustin J. Mitchell
471119dbdf TCString as PassByValue 2022-02-18 03:52:09 +00:00
Dustin J. Mitchell
2eee761644 fix xtask Cargo.toml 2022-02-16 01:03:46 +00:00
Dustin J. Mitchell
741cb84430 better docs for C 2022-02-16 01:01:35 +00:00
Dustin J. Mitchell
b1d537ac87 use codegen, instead of build.rs, to build header file 2022-02-16 00:28:07 +00:00
Dustin J. Mitchell
02055b122e find shared library on macos as well 2022-02-16 00:07:30 +00:00
Dustin J. Mitchell
8e34c107d5 update safety comments 2022-02-13 22:21:07 +00:00
Dustin J. Mitchell
ca904d6288 improve output of C tests 2022-02-13 21:02:18 +00:00
Dustin J. Mitchell
41a578ab2b add server support 2022-02-13 20:18:07 +00:00
Dustin J. Mitchell
c0403f3f38 fix bad test 2022-02-13 16:18:17 +00:00
Dustin J. Mitchell
fc73911cde fix some clippy::wrong_self_convention 2022-02-13 03:39:39 +00:00
Dustin J. Mitchell
ad464c4779 use Uda instead of UDA 2022-02-13 03:39:39 +00:00
Dustin J. Mitchell
51a854cfef address some clippy lints 2022-02-13 03:30:02 +00:00
Dustin J. Mitchell
bbb7b64842 review safety comments 2022-02-13 03:19:11 +00:00
Dustin J. Mitchell
c22182cc19 rename trait methods to avoid ambiguity 2022-02-13 02:30:17 +00:00
Dustin J. Mitchell
213da88b27 add tc_task_get_taskmap 2022-02-13 02:05:25 +00:00
Dustin J. Mitchell
1488355b89 add working-set support 2022-02-12 22:19:09 +00:00
Dustin J. Mitchell
ad560fdb79 add UDA support 2022-02-12 16:22:45 +00:00
Dustin J. Mitchell
f81c4eec90 rename array to list in rust types 2022-02-12 15:20:46 +00:00
Dustin J. Mitchell
e9cd6adc5b fix memory leak, remove blanket pointer-by-value impls 2022-02-12 01:21:05 +00:00
Dustin J. Mitchell
76cbc2880b refactor annotations to handle invalid strings 2022-02-12 00:26:57 +00:00
Dustin J. Mitchell
7ebdaa761c treat libc::time_t as a PassByValue 2022-02-12 00:18:01 +00:00
Dustin J. Mitchell
af51e0382a implement lists in the same files as singular data 2022-02-11 23:59:22 +00:00
Dustin J. Mitchell
7996a98908 add annotation support 2022-02-11 23:54:52 +00:00
Dustin J. Mitchell
b01285d780 add some simple replica functions 2022-02-10 01:18:50 +00:00
Dustin J. Mitchell
1c734851ae safety notes for new types 2022-02-10 01:10:40 +00:00
Dustin J. Mitchell
7a473d0eda simplify imports 2022-02-10 01:01:02 +00:00
Dustin J. Mitchell
a4d992012e TCUuidList, refactor traits 2022-02-10 00:55:34 +00:00
Dustin J. Mitchell
8cbd44544c remove commented-out code 2022-02-10 00:30:13 +00:00
Dustin J. Mitchell
914017b46c tc_replica_all_tasks 2022-02-10 00:11:30 +00:00
Dustin J. Mitchell
c9c72b4fd3 return TCResult from tc_uuid_from_str 2022-02-09 23:43:23 +00:00
Dustin J. Mitchell
28a4599a6a rename TCStrings to TCStringList 2022-02-09 23:37:32 +00:00
Dustin J. Mitchell
8caf442e3f mark all extern-C functions as unsafe 2022-02-09 23:26:39 +00:00
Dustin J. Mitchell
ae5afff4f7 fix another lint 2022-02-09 03:20:17 +00:00
Dustin J. Mitchell
5cf3ce4bc8 comment out failing clippy lint 2022-02-09 03:16:14 +00:00
Dustin J. Mitchell
f96b5415c8 fix some clippy warnings 2022-02-09 02:59:01 +00:00
Dustin J. Mitchell
a270b6c254 Simplify implementation of arrays 2022-02-07 00:15:09 +00:00
Dustin J. Mitchell
e11506ee6a always implement traits for C type 2022-02-06 23:05:33 +00:00
Dustin J. Mitchell
1e585ba0d9 comment updates 2022-02-06 16:50:43 +00:00
Dustin J. Mitchell
831eb0bb15 TCTags -> TCStrings to be more general 2022-02-06 16:40:17 +00:00
Dustin J. Mitchell
3d248b55fd factor out some utilities for pointer arrays 2022-02-06 16:38:31 +00:00
Dustin J. Mitchell
b0f7850711 trivially implement PassByValue for usize 2022-02-06 16:26:09 +00:00
Dustin J. Mitchell
dadc9473d3 unit tests for TCString 2022-02-06 16:21:42 +00:00
Dustin J. Mitchell
f4c6e04d44 TCTags as PassByValue 2022-02-06 05:27:30 +00:00
Dustin J. Mitchell
23ba6a57b3 switch to PassByValue and PassByPointer traits 2022-02-06 04:02:53 +00:00
Dustin J. Mitchell
a46a9d587a fix typo 2022-02-05 00:25:02 +00:00
Dustin J. Mitchell
3dd2ae5011 implement TCTags as an array 2022-02-04 02:49:55 +00:00
Dustin J. Mitchell
8b160c7ee8 more task functions 2022-02-01 03:01:09 +00:00
Dustin J. Mitchell
e5625e1597 entry and wait time support 2022-02-01 02:45:28 +00:00
Dustin J. Mitchell
f2b3e5fd0a tc_task_has_tag 2022-02-01 01:02:49 +00:00
Dustin J. Mitchell
03ffb6ce83 limit unsafe regions 2022-02-01 00:48:49 +00:00
Dustin J. Mitchell
22a6857c1b simplify TCResult to just two values 2022-02-01 00:46:04 +00:00
Dustin J. Mitchell
b675cef99c add error handling for tasks 2022-02-01 00:35:02 +00:00
Dustin J. Mitchell
2dc9358085 add warn(unsafe_op_in_unsafe_fn) 2022-01-31 19:57:05 +00:00
Dustin J. Mitchell
ce45c1004c add tc_task_add_tag and check errors 2022-01-31 19:44:00 +00:00
Dustin J. Mitchell
ef0bb2ced4 allow task setters to return error values 2022-01-31 19:34:21 +00:00
Dustin J. Mitchell
8bd9605b25 support starting and stopping tasks 2022-01-31 00:04:58 +00:00
Dustin J. Mitchell
d24319179c TCFoo::from_arg to take from a pointer 2022-01-30 23:53:12 +00:00
Dustin J. Mitchell
364ca57736 Slightly more ergonomic task mutation 2022-01-30 23:42:52 +00:00
Dustin J. Mitchell
452ae2074f implement task mutability 2022-01-29 03:08:45 +00:00
Dustin J. Mitchell
50aceb9696 use RefCell for replica, more consistent rust methods 2022-01-29 01:00:55 +00:00
Dustin J. Mitchell
82459e699c use a simple constant 2022-01-28 03:51:58 +00:00
Dustin J. Mitchell
b3cbec1af3 more unsafe notations 2022-01-28 02:11:13 +00:00
Dustin J. Mitchell
1470bbf741 mark unsafe utils as such; add safety comments 2022-01-27 02:22:47 +00:00
Dustin J. Mitchell
633ea5cf47 correctly handle invalid utf-8 2022-01-27 02:22:47 +00:00
Dustin J. Mitchell
b5201a28c3 build bindings-test shared 2022-01-27 02:22:47 +00:00
Dustin J. Mitchell
e1c348b96e tc_replica_get_task 2022-01-26 02:15:57 +00:00
Dustin J. Mitchell
f3b73ca0e4 add task_import_with_uuid 2022-01-26 02:15:57 +00:00
Dustin J. Mitchell
96b59dd5b2 serialize C integration tests 2022-01-26 02:15:57 +00:00
Dustin J. Mitchell
8f703fd63a use TCString in UUIDs 2022-01-26 01:29:29 +00:00
Dustin J. Mitchell
dd87f7da1e simplify defining suites 2022-01-26 00:58:29 +00:00
Dustin J. Mitchell
f8cffb798c fix confusing doc string 2022-01-26 00:58:28 +00:00
Dustin J. Mitchell
c5ff2398f7 ignore test-db 2022-01-26 00:57:36 +00:00
Dustin J. Mitchell
0d68e65354 some polish on strings 2022-01-26 00:57:06 +00:00
Dustin J. Mitchell
ca0279a73f move existing integration tests into new crate 2022-01-26 00:57:06 +00:00
Dustin J. Mitchell
c006cbe8e5 test bindings in an integration-tests crate 2022-01-25 02:54:01 +00:00
Dustin J. Mitchell
56a805151d use 2018 edition like the other crates 2022-01-25 02:26:04 +00:00
Dustin J. Mitchell
017fb398be replace a clone with a copy 2022-01-25 02:26:04 +00:00
Dustin J. Mitchell
40f30c6d89 remove unnecessary string clone 2022-01-25 02:26:04 +00:00
Dustin J. Mitchell
65082c26e7 improved TCString support 2022-01-25 02:26:04 +00:00
Dustin J. Mitchell
bb722325fe more task functionality 2022-01-25 02:26:04 +00:00
Dustin J. Mitchell
821118106a add TC prefix to types, too 2022-01-25 02:26:04 +00:00
Dustin J. Mitchell
46e08bc040 add some UUID support 2022-01-25 02:26:04 +00:00
Dustin J. Mitchell
e590dc7c98 add tc_replica_undo 2022-01-25 02:26:04 +00:00
Dustin J. Mitchell
ce56127bbf create / free replicas, plus error handling 2022-01-25 02:26:04 +00:00
Dustin J. Mitchell
33f5f056b1 first bits of a dynamc lib 2022-01-25 02:26:04 +00:00
Dustin J. Mitchell
8576e7ffa7 Merge pull request #330 from djmitche/issue327
Support an 'end' key in task maps
2022-01-24 10:24:18 -05:00
Dustin J. Mitchell
e7d4e1e8f3 Merge pull request #329 from djmitche/issue94
Implement `ta import` and `ta import-tdb2`
2022-01-24 10:23:22 -05:00
Dustin J. Mitchell
50300c4ad7 remove empty conditional 2022-01-23 15:31:58 +00:00
Dustin J. Mitchell
a49e51defd Merge branch 'main' into issue327 2022-01-23 15:31:02 +00:00
Dustin J. Mitchell
210eb60c86 'ta import' -> 'ta import-tw' 2022-01-23 15:27:13 +00:00
Dustin J. Mitchell
656f7e9ea0 replica.create_task -> import_task_with_uuid 2022-01-23 15:22:41 +00:00
Dustin J. Mitchell
0308b7a4c7 Merge branch 'main' into issue94 2022-01-23 15:18:17 +00:00
Dustin J. Mitchell
e4399cde26 Merge pull request #331 from djmitche/issue326
add 'entry' key to tasks when created
2022-01-23 10:16:17 -05:00
Dustin J. Mitchell
5019ecb4f8 allow windows newlines in TDB2 files 2022-01-08 22:34:32 +00:00
Dustin J. Mitchell
69d052603d ta import-tdb2 2022-01-08 22:28:33 +00:00
Dustin J. Mitchell
162a9eae95 Support parsing TDB2 files 2022-01-08 22:11:16 +00:00
Dustin J. Mitchell
9824ac1fd3 add 'entry' key to tasks when created 2022-01-06 02:18:32 +00:00
Dustin J. Mitchell
b663745892 Support an 'end' key in task maps
This definition matches how TaskWarrior uses the same key.
2022-01-06 02:02:13 +00:00
Dustin J. Mitchell
4b2ef1913a use owned values to avoid unnecessary cloning 2022-01-06 00:17:01 +00:00
Dustin J. Mitchell
63804b5652 Implement 'ta import'
Tests include "TODO" notes for data not handled by TaskChampion,
including links to the associated GitHub issues.
2022-01-06 00:06:19 +00:00
Dustin J. Mitchell
e2e0951c81 Make a public method 2022-01-05 03:12:44 +00:00
Dustin J. Mitchell
e3f438d9fa make taskdb.apply for create/delete not fail if already exists/doesn't exist 2022-01-05 02:49:04 +00:00
Dustin J. Mitchell
d6efad06ee Merge pull request #320 from djmitche/issue318
use strum_macros::Display to display Status
2022-01-03 10:14:31 -05:00
Dustin J. Mitchell
9965d10736 Maintain unrecognized statuses 2022-01-03 02:35:19 +00:00
Dustin J. Mitchell
6a1d1a8c3c use strum_macros::Display to display Status 2022-01-03 02:35:19 +00:00
Dustin J. Mitchell
1bc7b5f019 Merge pull request #316 from djmitche/issue90
Define UDAs
2021-12-27 17:06:47 -05:00
Dustin J. Mitchell
bc8bb52551 do not use str.split_once, as it is not in MSRV 2021-12-27 00:14:40 +00:00
Dustin J. Mitchell
e94c29ae2f use better trait bounds 2021-12-27 00:09:02 +00:00
Dustin J. Mitchell
829f67ee02 Merge branch 'main' into issue90 2021-12-26 19:04:10 -05:00
Dustin J. Mitchell
b255ad2a7d use namespace.key for UDAs in the API, with legacy support 2021-12-27 00:01:14 +00:00
Dustin J. Mitchell
d5f087bf9a Merge pull request #324 from djmitche/issue322
Update clippy toolchain to 1.57
2021-12-23 09:08:49 -05:00
Dustin J. Mitchell
cb1395ea32 Merge pull request #323 from taskchampion/issue92
Support 'undo'
2021-12-23 09:08:01 -05:00
Dustin J. Mitchell
8195b187c4 fix docs typo 2021-12-23 09:06:19 -05:00
Dustin J. Mitchell
691a3e49e8 Update clippy toolchain to 1.57 2021-12-22 00:43:15 +00:00
Dustin J. Mitchell
36c51d2d93 fix clippy 2021-12-22 00:31:46 +00:00
Dustin J. Mitchell
5fb3f700c0 add some logging for undo 2021-12-21 01:12:30 +00:00
Dustin J. Mitchell
e328b86d97 add user docs for 'ta undo' 2021-12-21 01:10:08 +00:00
Dustin J. Mitchell
caa62ba9a0 add a 'ta undo' subcommand 2021-12-21 01:05:52 +00:00
Dustin J. Mitchell
9d93928996 support undo operations 2021-12-21 00:43:26 +00:00
Dustin J. Mitchell
9e20935f04 Merge pull request #319 from djmitche/issue317
Fix application of modifications during 'ta add'
2021-12-20 19:28:32 -05:00
Dustin J. Mitchell
2b63a227d2 Merge pull request #321 from djmitche/clippy-1-57-fixes
fix a few lints in clippy 1.57
2021-12-20 18:29:14 -05:00
Dustin J. Mitchell
4fa1f9c6bc fix a few lints in clippy 1.57 2021-12-20 16:35:55 +00:00
Dustin J. Mitchell
2456012ed6 Fix application of modifications during 'ta add' 2021-12-20 16:16:25 +00:00
Dustin J. Mitchell
1647ba9144 insert UndoPoint appropriately into the replica operations 2021-12-20 00:33:32 +00:00
Dustin J. Mitchell
103bbcdf8f Store data necessary to undo ReplicaOps 2021-12-19 23:58:57 +00:00
Dustin J. Mitchell
1789344cd0 refactor sync to use SyncOps 2021-12-19 23:44:45 +00:00
Dustin J. Mitchell
cefdd83d94 Use the latest taskmap when modifying a task
The previous logic duplicated the action of applying an operation to the
TaskDb with a "manual" application to the Task's local TaskMap.  This
now uses the updated TaskMap fetched from the DB, which will help to
incorporate any other concurrent DB updates.
2021-12-19 23:29:16 +00:00
Dustin J. Mitchell
fee25fa742 Apply SyncOps, but keep a list of ReplicaOps
This changes a lot of function signatures, but basically:
 * TaskDB::apply now takes a SyncOp, not a ReplicaOp
 * Replica::update_task returns a TaskMap
2021-12-19 23:29:15 +00:00
Dustin J. Mitchell
0b29efab31 rename Operation to ReplicaOp for clarity 2021-12-19 22:55:24 +00:00
Dustin J. Mitchell
6f7794c7de introduce a new taskchampion::server::SyncOp type 2021-12-19 22:55:24 +00:00
Dustin J. Mitchell
ff9ad8185b undo docs 2021-12-19 22:55:24 +00:00
Dustin J. Mitchell
ef12e1a2f8 Define UDAs 2021-12-18 23:39:56 +00:00
Dustin J. Mitchell
acd4aefc17 Merge pull request #313 from djmitche/issue89
Add support for annotations
2021-10-31 09:49:25 -04:00
Dustin J. Mitchell
af56efdbd5 Merge pull request #314 from djmitche/issue312
Use `tag_<tag>` instead of `tag.<tag>`
2021-10-30 09:31:36 -04:00
Dustin J. Mitchell
e9b3611fd9 Use tag_<tag> instead of tag.<tag>
This aligns with the Taskwarrior data model.
2021-10-29 20:41:37 -04:00
Dustin J. Mitchell
4314b8bc2d Add support for annotations
This matches the taskwarrior task model for annotations.
2021-10-29 20:28:23 -04:00
Dustin J. Mitchell
7fe5553093 fix errors from merges 2021-10-26 22:37:51 -04:00
Dustin J. Mitchell
7c8c85f27f Merge pull request #301 from djmitche/issue299
Drop tindercrypt, document encryption
2021-10-26 22:05:59 -04:00
Dustin J. Mitchell
ae80cbef2a Merge pull request #309 from djmitche/issue286
use TW's semantics for `start`
2021-10-25 09:21:11 -04:00
Dustin J. Mitchell
5648d20bde add changelog 2021-10-25 09:20:44 -04:00
Dustin J. Mitchell
9ebff38277 Merge pull request #310 from djmitche/issue23-integration
Add integration tests for snapshots
2021-10-25 09:15:57 -04:00
Dustin J. Mitchell
5bae2b6464 remove debug print 2021-10-24 21:41:41 -04:00
Dustin J. Mitchell
2e65d172cd Add an integration test for snapshot syncing 2021-10-24 21:41:41 -04:00
Dustin J. Mitchell
8df3e4f2f8 use TW's semantics for start 2021-10-24 20:57:58 -04:00
Dustin J. Mitchell
43a21ba3a6 Merge pull request #306 from djmitche/no-audit-on-pr
do not run audit on PRs
2021-10-21 19:41:23 -04:00
dbr/Ben
c1c9b7f80b Merge pull request #307 from taskchampion/auditcfg
Add config for cargo-audit
2021-10-21 19:56:34 +11:00
dbr
ae244055f7 Also ignore time bug 2021-10-21 13:45:32 +11:00
dbr
6aa355b835 Add config for cargo-audit 2021-10-21 13:33:19 +11:00
Dustin J. Mitchell
642da4da3e do not run audit on PRs 2021-10-20 22:29:16 -04:00
Dustin J. Mitchell
2f7c11bcc3 Merge pull request #305 from djmitche/issue23-client-apply
Client initialization from snapshots
2021-10-20 22:22:51 -04:00
Dustin J. Mitchell
c63a21797a remove dbg!(..) 2021-10-20 21:25:28 -04:00
Dustin J. Mitchell
ec35d4fa20 use a distinct error for out-of-sync replica 2021-10-20 21:23:29 -04:00
Dustin J. Mitchell
c72cae648d Apply snapshots automatically on empty taskdbs 2021-10-20 21:23:29 -04:00
Dustin J. Mitchell
0af66fd6c8 Validate encryption using externally-generated data 2021-10-19 18:31:30 -04:00
Dustin J. Mitchell
17f5521ea4 add an app_id to the encryption AAD 2021-10-17 18:06:16 -04:00
Dustin J. Mitchell
4300f7bdda use CHACHA20_POLY1305 instead of AES_256_GCM 2021-10-17 17:37:32 -04:00
Dustin J. Mitchell
97d1366b66 move taskchampion::server::remote::crypto to taskchampion::server::crypto 2021-10-16 22:37:28 +00:00
Dustin J. Mitchell
0f39a3f3b2 [BREAKING CHANGE] drop use of tindercrypt, and use ring directly 2021-10-16 22:34:33 +00:00
Dustin J. Mitchell
ddfb327292 WIP 2021-10-15 02:56:46 +00:00
Dustin J. Mitchell
636862f8c5 update README with current relationship to TW 2021-10-13 17:59:58 -04:00
Dustin J. Mitchell
bd2189e589 Merge pull request #300 from djmitche/issue23-client
Client support for adding snapshots
2021-10-13 16:44:50 -04:00
Dustin J. Mitchell
1c6a5315c9 remove unused file 2021-10-11 21:29:49 -04:00
Dustin J. Mitchell
333cb37091 Support add_snapshots on cli 2021-10-11 21:00:08 -04:00
Dustin J. Mitchell
ed3475d9ea support avoiding snapshots 2021-10-11 21:00:08 -04:00
Dustin J. Mitchell
b97f6dc4d5 Send snapshots to server 2021-10-11 21:00:07 -04:00
Dustin J. Mitchell
13a96efacb Add snapshot encoding / decoding 2021-10-11 20:58:36 -04:00
Dustin J. Mitchell
bde19d7f07 Return SnapshotUrgency from AddVersion 2021-10-11 20:58:34 -04:00
Dustin J. Mitchell
b8d892878c document sync data formats 2021-10-11 20:56:45 -04:00
Dustin J. Mitchell
79f07b57ad more taskdb refactoring 2021-10-11 20:56:45 -04:00
Dustin J. Mitchell
f229715242 Merge pull request #295 from taskchampion/issue23-config
add server-side config --snapshot-{days,versions}
2021-10-10 15:24:18 -04:00
Dustin J. Mitchell
ef1d8f37a8 write config defaults once 2021-10-10 01:43:30 +00:00
Dustin J. Mitchell
329c0d0aef move ServerConfig to crate::server 2021-10-10 01:35:12 +00:00
Dustin J. Mitchell
4d19ca7bdb add server-side config --snapshot-{days,versions} 2021-10-10 01:28:05 +00:00
Dustin J. Mitchell
74aee49107 Merge pull request #297 from djmitche/versionid-nil
Replace NO_VERSION_ID with NIL_VERSION_ID
2021-10-09 21:14:43 -04:00
Dustin J. Mitchell
45e2f2cde8 Merge pull request #296 from djmitche/app-configure
Use App::configure to set up actix
2021-10-09 21:14:22 -04:00
Dustin J. Mitchell
dd9bef0a7b Merge pull request #294 from taskchampion/taskdb-refactor
factor taskdb into multiple modules
2021-10-09 21:13:56 -04:00
Dustin J. Mitchell
aaac1c3356 Use App::configure to set up actix
This avoids the need for the messy cache-control-header macro.
Otherwise, it has no effect.
2021-10-09 18:07:25 -04:00
Dustin J. Mitchell
536b88c8f4 Replace NO_VERSION_ID with NIL_VERSION_ID
The docs refer to this as the "nil version ID" so let's do the same.

This started out more ambitiously, to change this to `VersionId::NIL`,
but that required making VersionId a newtype and all of the implicit
conversions from VersionId to Uuid would have to be explicit.  That
didn't seem wortht the trouble.
2021-10-09 17:59:09 -04:00
Dustin J. Mitchell
a0a3f36a16 factor taskdb into multiple modules 2021-10-09 09:47:10 -04:00
Dustin J. Mitchell
f109056340 Merge pull request #289 from taskchampion/issue23
Add support for snapshots
2021-10-09 09:40:57 -04:00
Dustin J. Mitchell
7bb6ea6865 Request snapshots in AddVersion 2021-10-08 23:15:48 -04:00
Dustin J. Mitchell
d1da8eee52 Add add_snapshot API method 2021-10-08 23:15:48 -04:00
Dustin J. Mitchell
e2f79edad6 add get_snapshot API method 2021-10-08 23:15:48 -04:00
Dustin J. Mitchell
53d1f8dbc2 update get_child_version to distinguish gone and not-found 2021-10-08 23:15:48 -04:00
Dustin J. Mitchell
2570956710 [breaking] Add snapshot support to server storage
This refactors the storage API pretty substantially, and represents a
breaking change to the schema used by the sqlite storage
2021-10-08 23:15:48 -04:00
Dustin J. Mitchell
8d2be3b495 add get_version to server storage api 2021-10-08 23:15:48 -04:00
Dustin J. Mitchell
eadce9f15a Add documentation for snapshots 2021-10-08 23:15:48 -04:00
Dustin J. Mitchell
75fd0ff83a Remove cargo fmt error
This was added to test the 'Formatting' action.  It works :)
2021-10-03 22:26:03 +00:00
Dustin J. Mitchell
e2320fb9aa Merge pull request #293 from taskchampion/cargo-fmt
add a cargo-fmt job to CI
2021-10-02 22:16:06 -04:00
Dustin J. Mitchell
fbd140a706 add fmt error 2021-10-02 15:03:41 +00:00
Dustin J. Mitchell
de5d46d3c7 add a cargo-fmt job to CI 2021-10-02 14:57:47 +00:00
Dustin J. Mitchell
d01386f3ea Merge pull request #292 from taskchampion/issue291
Switch to pretty_assertions
2021-10-02 10:54:25 -04:00
Dustin J. Mitchell
bcef6bf392 remove redundant {..} 2021-10-01 22:18:24 -04:00
Dustin J. Mitchell
d923dc7bae Merge pull request #288 from taskchampion/docs-update
Docs update
2021-10-01 22:08:40 -04:00
Dustin J. Mitchell
a143660124 Switch to pretty_assertions 2021-10-02 01:08:26 +00:00
Dustin J. Mitchell
267288c9e6 Merge pull request #290 from taskchampion/update-cache
use actions/cache@v2
2021-09-29 08:42:16 -04:00
Dustin J. Mitchell
a95860b0d1 use actions/cache@v2 2021-09-29 12:24:02 +00:00
Dustin J. Mitchell
a76d7580ce cargo fmt 2021-09-26 13:59:58 -04:00
Dustin J. Mitchell
255cf29d4f Update docs
* improve linking
* parallel construction for storage and servers
* clarify rationale for Task/TaskMut
2021-09-26 13:59:04 -04:00
Dustin J. Mitchell
7881b2993c update docs 2021-09-26 09:34:35 -04:00
Dustin J. Mitchell
bfb732947c more build-docs fixes 2021-09-26 09:33:37 -04:00
Dustin J. Mitchell
c62eeb4fcb v0.4.1 2021-09-26 09:26:38 -04:00
Dustin J. Mitchell
a122a28993 Add derive feature for serde
This feature had previously been indirectly required by a dependency,
and this is no longer the case.
2021-09-26 09:07:15 -04:00
Dustin J. Mitchell
e9dfcaaa44 more updates to build-docs.sh 2021-09-25 23:53:08 +00:00
Dustin J. Mitchell
67b2f261a1 fix build-docs to create gh-pages branch 2021-09-25 23:50:39 +00:00
Dustin J. Mitchell
fe7d421c21 v0.4.0 2021-09-25 23:42:16 +00:00
Dustin J. Mitchell
b1b17310e6 fix typo 2021-09-25 23:16:16 +00:00
Dustin J. Mitchell
56bcd24e37 Merge pull request #285 from taskchampion/issue99
Add cache-control headers to API responses
2021-09-25 10:26:38 -04:00
Dustin J. Mitchell
217f3bf28a Add cache-control headers to API responses 2021-09-15 22:32:35 +00:00
Dustin J. Mitchell
3837a61b6f Merge pull request #284 from taskchampion/issue128
Add integration test for replica/server interactions
2021-09-14 09:36:57 -04:00
Dustin J. Mitchell
7d3aae4555 allow publishing taskchampion-cli, to allow 'cargo install' 2021-09-14 09:26:44 -04:00
Dustin J. Mitchell
757f923c66 reword README 2021-09-13 17:42:16 -04:00
Dustin J. Mitchell
fb39c90592 Add an integration test combining replica and server
This confirms that task changes are replicated via the server.
2021-09-12 21:30:05 +00:00
Dustin J. Mitchell
ebcf9527dc refactor sync-server into a lib crate with a binary 2021-09-12 21:30:04 +00:00
dbr/Ben
4690cf7fc8 Merge pull request #206 from dbr/sqlstore
Switch to SQLite storage backend
2021-09-10 10:04:08 +09:30
dbr
11a3b7882b Changelog entry! 2021-09-10 10:03:46 +10:00
dbr
43ca0623b1 Merge branch 'main' into sqlstore 2021-09-10 09:59:35 +10:00
dbr/Ben
4cbc9a805f Merge pull request #279 from taskchampion/changelog
Basic changelog infrastructure
2021-09-10 09:26:24 +09:30
Dustin J. Mitchell
1ee07de6a9 Merge pull request #282 from taskchampion/issue281
Fix clippy and only run it with the MSRV
2021-09-06 10:12:39 -04:00
Dustin J. Mitchell
91b2e1164f run clippy on the MSRV 2021-09-05 22:14:21 +00:00
Dustin J. Mitchell
72b4941485 fix new clippy warnings 2021-09-05 21:55:09 +00:00
dbr
8ca7f70cef Store changelog snippets as .md 2021-09-05 17:02:48 +10:00
dbr
a4b67d9f4e Remove unused error variant 2021-09-04 13:29:03 +10:00
dbr
f8ed4cecdd Reset operation auto-increment ID 2021-09-04 13:05:21 +10:00
dbr
5db04ee1af Tidying 2021-09-04 13:05:10 +10:00
dbr
89e9a42374 Refactor calculation of next working set ID
As per Dustin's code-review comment
2021-09-04 13:02:03 +10:00
dbr
1d62799437 Deduplicate StoredUuid wrapper 2021-09-04 12:53:37 +10:00
dbr/Ben
477bf9e328 Tweaks from code review
Co-authored-by: Dustin J. Mitchell <dustin@v.igoro.us>
2021-09-04 12:05:30 +09:30
Dustin J. Mitchell
fd2add5dea Merge pull request #280 from gravityvi/feature/support-more-timestamps
added common business date acronyms
2021-08-28 16:14:57 -04:00
Ravi Sawlani
037807e3ac update image ref 2021-08-28 02:06:33 +05:30
Ravi Sawlani
3edf45d238 added ref pic 2021-08-28 01:47:50 +05:30
Ravi Sawlani
d001b5dbc9 update doc 2021-08-28 01:01:02 +05:30
Ravi Sawlani
f013233c88 document changes 2021-08-28 00:59:09 +05:30
dbr
e8a4d8029b Update contribute+release docs regarding changelog 2021-08-26 19:56:53 +10:00
Ravi Sawlani
f824d6123c added tests 2021-08-25 12:42:37 +05:30
Ravi Sawlani
c5e18aec31 lint issue 2021-08-24 22:41:45 +05:30
Ravi Sawlani
90b06df30f refactor 2021-08-24 22:38:27 +05:30
Ravi Sawlani
4a3b19bba6 added common business date acronyms 2021-08-24 22:26:30 +05:30
dbr
cae03c6d7e Initial changelog
Also simple process/script to manage entries in PR's without merge conflicts:

1. Unreleased entries area stored as text files in ".changelogs/"
2. On release these are concatenated together and put in CHANGELOG.md

Script basically just add line of text to a "YYYY-MM-DD-branch.txt" formatted file
2021-06-20 22:13:57 +10:00
Dustin J. Mitchell
c8533c86f5 Merge pull request #273 from taskchampion/issue269
Create a new doc if necessary in `ta config set`
2021-06-16 21:29:46 -04:00
Dustin J. Mitchell
cc5240eeec Create config directory if necessary 2021-06-16 13:45:00 +00:00
Dustin J. Mitchell
8e84bf0446 Create a new doc if necessary in ta config set 2021-06-16 13:44:42 +00:00
dbr
86deed3197 Remove unused Transaction from Txn
Also note about why StorageTxn isn't implemented
2021-06-16 11:22:17 +10:00
dbr/Ben
53cba2b31e Merge pull request #276 from taskchampion/ci-platforms
CI tests on Windows+macOS
2021-06-16 10:55:43 +10:00
Dustin J. Mitchell
a709f8a132 Merge remote-tracking branch 'upstream/main' into ci-platforms 2021-06-15 10:13:51 -04:00
Dustin J. Mitchell
9c35b31fbe Merge pull request #275 from taskchampion/issue274
Fix arg parsing on Windows
2021-06-15 10:13:00 -04:00
dbr
75f0447c7b Fix empty-dir problem with server also, and add tests 2021-06-15 22:09:54 +10:00
dbr
c3bc93f631 Clipplease 2021-06-15 22:02:32 +10:00
dbr
e72b990ea2 Avoid error if DB folder does not exist 2021-06-15 20:01:47 +10:00
dbr
2f533d2f3a Merge remote-tracking branch 'origin/main' into sqlstore
# Conflicts:
#	Cargo.lock
#	taskchampion/Cargo.toml
2021-06-15 19:49:36 +10:00
dbr
2a2aef2b25 Maybe this time 2021-06-15 12:25:04 +10:00
dbr
5769b20702 Important missing line to make CI actually run on matrix.os 2021-06-15 12:20:55 +10:00
dbr
41c5cc842d Typo 2021-06-15 12:16:09 +10:00
dbr
fbc97c871b Test on Windows+macOS 2021-06-15 12:13:15 +10:00
Dustin J. Mitchell
62c17ab411 Fix arg parsing on Windows 2021-06-14 10:57:44 -04:00
Dustin J. Mitchell
4917d49331 Merge pull request #267 from taskchampion/issue179
Add confirmation prompts for modifications of lots of tasks
2021-06-10 21:16:28 -04:00
Dustin J. Mitchell
0de4fc1dee Add confirmation prompts for modifications of lots of tasks 2021-06-10 10:55:42 -04:00
Dustin J. Mitchell
31ff46bee6 pin mdbook version 2021-06-09 15:38:36 -04:00
Dustin J. Mitchell
ebdae1f44a Merge pull request #266 from taskchampion/issue80
Add support for synthetic tags
2021-06-09 15:28:10 -04:00
Dustin J. Mitchell
4ccd33bc0c Merge pull request #265 from taskchampion/issue264
Treat partially-matched arguments as an error
2021-06-09 15:27:10 -04:00
dbr/Ben
5c7d9330fd Merge pull request #263 from taskchampion/actionnames
Tidy up CI actions names
2021-06-09 11:37:59 +10:00
Dustin J. Mitchell
64b319bd20 Merge pull request #268 from taskchampion/use-built
Use `built` to determine version information
2021-06-08 11:10:18 -04:00
Dustin J. Mitchell
6c9ba48674 Use built to determine version information 2021-06-07 15:29:12 -04:00
dbr/Ben
0c43f82176 Merge pull request #262 from taskchampion/usagecmdname
Remove path from ta command in usage text
2021-06-06 15:00:35 +10:00
Dustin J. Mitchell
7956f6a34b implement FromStr instead of just from_str 2021-06-05 21:30:28 -04:00
Dustin J. Mitchell
cf3a053a0e Add PENDING, COMPLETED, DELETED synthetic tags
Note that DELETED is not tested since we don't yet support deleting
tasks.
2021-06-05 21:30:27 -04:00
Dustin J. Mitchell
0e60bcedaf hide the implementation of Tag 2021-06-05 21:20:36 -04:00
Dustin J. Mitchell
ff23c9148b refactor taskchampion::task into submodules 2021-06-05 21:20:10 -04:00
Dustin J. Mitchell
3d698f7939 add support for synthetic tags 2021-06-05 20:27:02 -04:00
Dustin J. Mitchell
2b3383842e Treat partially-matched arguments as an error 2021-06-05 09:15:24 -04:00
Dustin J. Mitchell
21c4f95fd9 fix clippy 2021-06-05 09:03:59 -04:00
dbr
4b0ceb31ac Tweak clippy job names 2021-06-05 13:50:59 +10:00
dbr
2a928e05b3 Check to see if the two clippy's can be merged into one 2021-06-05 12:24:57 +10:00
dbr
52d5500687 Make security more consistent 2021-06-05 12:22:09 +10:00
dbr
9cbe245fc1 First pass at tidying action names 2021-06-05 12:19:12 +10:00
dbr
4cc41a8731 Clippy the Pendant 2021-06-05 12:05:56 +10:00
dbr
8069d1badc Remove path from ta command in usage text
Previously would show things like "target/bin/ta [filter] list"
2021-06-05 11:54:30 +10:00
Dustin J. Mitchell
5f28eb3a74 produce Tag instances in the parser (#260)
and..
* fix usage-docs plugin
* upgrade mdbook
2021-06-04 09:26:12 -04:00
Dustin J. Mitchell
5a454a5dfd Merge pull request #250 from taskchampion/issue83
Support "wait"
2021-06-03 17:51:57 -04:00
Dustin J. Mitchell
ac6b020b6d minor updates from review 2021-06-01 09:24:40 -04:00
Dustin J. Mitchell
b18701c3cb remove many duration strings to simplify 2021-06-01 09:20:14 -04:00
Dustin J. Mitchell
0259a5e2e2 parse durations and timestamps 2021-05-31 08:49:37 -04:00
Dustin J. Mitchell
288f29d9d5 refactor argparse::args into submodules 2021-05-31 08:49:37 -04:00
Dustin J. Mitchell
1aae7e059d Add wait to reports, for display and sorting 2021-05-31 08:49:37 -04:00
Dustin J. Mitchell
cf078e1233 add 'wait' to the info output 2021-05-31 08:49:37 -04:00
Dustin J. Mitchell
e977fb294c Implement modifying tasks' "wait" value 2021-05-31 08:49:35 -04:00
Dustin J. Mitchell
d7d703f135 Merge pull request #256 from taskchampion/issue233
Summarize tasks nicely in console output
2021-05-31 08:47:17 -04:00
Dustin J. Mitchell
1bd97fd15d Merge pull request #254 from taskchampion/issue216
Define and test an MSRV
2021-05-31 08:39:01 -04:00
Dustin J. Mitchell
ae56313162 Merge pull request #257 from taskchampion/sec-md
Create SECURITY.md based on POLICY.md
2021-05-30 22:00:36 -04:00
Dustin J. Mitchell
e81a078506 Create SECURITY.md based on POLICY.md 2021-05-30 21:41:35 -04:00
Dustin J. Mitchell
9e3646bf84 Summarize tasks nicely in console output 2021-05-30 16:36:20 -04:00
Dustin J. Mitchell
d4f669ed6e Define and test an MSRV 2021-05-30 16:07:41 -04:00
dbr
7c665c9a77 Clippy things 2021-05-28 20:41:03 +10:00
dbr
0f6323e2de Unused 2021-05-28 20:35:57 +10:00
dbr
3c8c7d4888 Updated Cargo.lock 2021-05-28 12:19:49 +10:00
dbr
aa2340965e Merge branch 'main' into sqlstore 2021-05-28 12:17:09 +10:00
dbr
baa6b59e39 Remove KvStorage 2021-05-28 12:10:18 +10:00
dbr
98f2ab51cb Functional sqlite backend
..but not too efficient, creating a new connection pretty much per-query
2021-05-28 12:09:36 +10:00
dbr
f91f797244 Implement storage for local server 2021-05-28 11:38:46 +10:00
Dustin J. Mitchell
adfde8be15 Merge pull request #236 from taskchampion/issue140
Generate usage documentation
2021-05-26 11:03:49 -04:00
dbr/Ben
1d14737e30 Merge pull request #247 from taskchampion/defaultrun
Make 'cargo run' run ta binary
2021-05-25 15:21:21 +10:00
Dustin J. Mitchell
09558f9329 Substitute usage information into the documentation
This will simplify keeping documentation in sync with the code.
2021-05-24 08:51:05 -04:00
dbr
b944e27880 Make 'cargo run' run ta binary 2021-05-24 19:44:32 +10:00
Dustin J. Mitchell
e9dc6e987d Merge pull request #245 from taskchampion/issue138
add 'ta config path'
2021-05-23 09:12:44 -04:00
Dustin J. Mitchell
45db886f2a add 'ta config path' 2021-05-23 09:12:04 -04:00
Dustin J. Mitchell
7f046a8e27 Merge pull request #225 from taskchampion/issue217
Support multiple exit codes
2021-05-21 10:26:24 -04:00
Dustin J. Mitchell
ae5511623c Merge pull request #244 from taskchampion/codeowners
Add CODEOWNERS pointing to @dbr and me
2021-05-21 10:26:16 -04:00
Dustin J. Mitchell
9d78654573 Merge pull request #221 from taskchampion/issue177
Require a filter be specified for modifications
2021-05-21 10:25:45 -04:00
dbr/Ben
3e4437ab14 Merge pull request #242 from dbr/betterversion
Include git HEAD rev in version output
2021-05-21 23:11:02 +10:00
Dustin J. Mitchell
8ba72d19df Add CODEOWNERS pointing to @dbr and me 2021-05-21 09:07:35 -04:00
dbr
00089639fe Include git HEAD rev in version output
Closes #241
2021-05-21 16:31:25 +10:00
dbr
991b29da6c WIP 2021-05-21 15:52:07 +10:00
Dustin J. Mitchell
bb7130f960 Support multiple exit codes
..with more specific error enums.
2021-05-18 18:57:55 +00:00
Dustin J. Mitchell
0852bfd195 Require a filter be specified for modifications
This filter can either be `*` or some "real" filter.  But an empty set
of arguments no longer automatically matches all tasks.
2021-05-18 18:57:46 +00:00
Dustin J. Mitchell
2345a57940 fix clippy warning 2021-05-18 18:57:29 +00:00
Dustin J. Mitchell
023e638335 Merge pull request #231 from taskchampion/working_set_rebuild_bug
Fix a working set rebuild bug
2021-05-17 21:36:56 -04:00
Dustin J. Mitchell
fd4b35f3fe Merge pull request #228 from taskchampion/issue164-edit
Support editing config file from the command line
2021-05-17 21:35:54 -04:00
Dustin J. Mitchell
47b3148a38 Merge pull request #239 from taskchampion/fix-new-clippy
fix new clippy warnings
2021-05-17 21:34:03 -04:00
Dustin J. Mitchell
3bb198425c Use ta config set in documentation 2021-05-16 09:53:41 -04:00
Dustin J. Mitchell
fd62c8327b Add a ta config set subcommand
This uses `toml_edit` to edit the config file in-place.  For the moment,
it only supports top-level arguments, but can be extended to do other
things later.
2021-05-16 09:53:41 -04:00
Dustin J. Mitchell
a778423cbc store the filename of the loaded config file 2021-05-16 09:53:41 -04:00
Dustin J. Mitchell
09efb33073 move Settings to its own module
..and add some tests for it
2021-05-16 09:53:40 -04:00
Dustin J. Mitchell
73b6648d06 assert that working-set element 0 is None 2021-05-16 09:42:18 -04:00
Dustin J. Mitchell
5f6918fbc7 Skip element 0 when rebuilding the working set
The existing code was correct, assuming that element 0 is always None,
but this is clearer.
2021-05-16 09:42:17 -04:00
Dustin J. Mitchell
fa7623ebe7 Handle setting a working set item to None twice
Without this, setting an item to None that did not already exist failed,
because the kv delete operation did not find the referenced key.

This also checks that the index is not 0, which is not allowed as the
working set is 1-indexed.
2021-05-16 09:40:35 -04:00
Dustin J. Mitchell
3a2450cb23 provide context for errors to help debugging 2021-05-16 09:40:35 -04:00
Dustin J. Mitchell
fa9e6ddcd5 Don't unwrap in production code 2021-05-16 09:40:35 -04:00
Dustin J. Mitchell
cbe11a1d3d fix new clippy warnings 2021-05-16 09:38:40 -04:00
Dustin J. Mitchell
cea5ae87c7 Merge pull request #237 from taskchampion/issue151
[breaking] Include /v1/ in the sync-server paths
2021-05-16 09:18:19 -04:00
Dustin J. Mitchell
373cef9d33 [breaking] Include /v1/ in the sync-server paths
This is an incompatible change to the sync-server protocol.
2021-05-14 12:51:24 -04:00
Dustin J. Mitchell
febe6d8b68 sort the 'next' repot by id 2021-05-11 14:58:57 -04:00
Dustin J. Mitchell
ac53383aea remove debugging prints 2021-05-09 21:30:58 -04:00
Dustin J. Mitchell
3f1453b70b Merge pull request #230 from taskchampion/issue100
Document environment variables all in one place
2021-05-08 09:56:57 -04:00
dbr
027225d2a3 More WIP.
Workaround for !Send SQLite causing problems as each get_txn creates a new transaction
2021-05-08 22:09:48 +10:00
Dustin J. Mitchell
7aea34c7a3 Document environment variables all in one place 2021-05-07 11:16:10 -04:00
dbr
7ff54ed0de WIP. Open new connection for each transaction as workaround 2021-05-07 22:24:55 +10:00
Dustin J. Mitchell
1d0ed132df remove spurious dependency from mdbook-deploy workflow
Fixes #227.
2021-05-05 16:55:21 +00:00
Dustin J. Mitchell
f30264b77f Merge pull request #223 from taskchampion/issue222
rename CLI to `ta`
2021-05-04 17:19:42 -04:00
Dustin J. Mitchell
0f0f2b0e75 rename CLI to ta 2021-05-04 17:09:47 -04:00
Dustin J. Mitchell
73ad035bed Merge pull request #220 from taskchampion/issue120
Fix doc links
2021-05-03 09:41:11 -04:00
Dustin J. Mitchell
5d8a1f50d4 Merge pull request #224 from taskchampion/issue164
Switch to TOML for configuration
2021-05-03 09:36:37 -04:00
Dustin J. Mitchell
94d1217d81 Switch to TOML for configuration 2021-05-02 17:04:26 -04:00
Dustin J. Mitchell
c696bf35d4 Fix doc links
`installation.md` was not being included due to using `-` instead of `*`
in `SUMMARY.md`.  The usage link was just incorrect.
2021-05-01 12:25:19 -04:00
Dustin J. Mitchell
b4a8b150a8 Merge pull request #218 from taskchampion/graphics
Add CGI assets
2021-05-01 10:43:03 -04:00
dbr
60ff0a8d11 Very WIP (i.e broken) start of SQLite storage in server 2021-04-29 16:00:22 +10:00
dbr
ff894f6ff6 Comments and rustfmt 2021-04-29 11:01:46 +10:00
dbr
a3c9a76f1d Explicit check that rusqlite::Transaction isn't auto-commited on drop 2021-04-29 10:58:34 +10:00
dbr
23531d73c4 Remove debug junk 2021-04-29 10:57:43 +10:00
dbr
e479c25c34 Tidier 2021-04-29 10:41:17 +10:00
dbr
cefd6fd6cc Serialize Uuid as string for nicer debugging
Also implement ToSql/FromSql for Operation/TaskMap so errors are handled properly
2021-04-29 10:39:29 +10:00
dbr
d5724c4dc2 Unused 2021-04-29 10:37:04 +10:00
Dustin J. Mitchell
24011b5e8d Merge pull request #212 from savchenko/main
Compatibility, deprecation and security policies
2021-04-28 13:55:27 -04:00
dbr
e06e33bee4 Remove kv storage backend
Now uses sqlite by default
2021-04-29 00:20:13 +10:00
dbr
cf70ef49ed Minor tidying 2021-04-29 00:10:53 +10:00
dbr
5ae828b1eb Implement working set methods 2021-04-29 00:09:54 +10:00
Andrew Savchenko
aad0496620 Add CGI assets
- Closes https://github.com/taskchampion/taskchampion/issues/207
2021-04-28 14:02:08 +09:30
Andrew Savchenko
8f0f8bf31b Add CGI assets
- Closes https://github.com/taskchampion/taskchampion/issues/207
2021-04-28 13:56:29 +09:30
Andrew Savchenko
db9d5483e8 Update Policy
- Closes https://github.com/taskchampion/taskchampion/pull/212
2021-04-28 13:43:06 +09:30
Andrew Savchenko
990c540563 Update Policy
- https://github.com/taskchampion/taskchampion/pull/212#discussion_r621457029
2021-04-28 13:37:11 +09:30
Andrew Savchenko
62f3dab049 Update Policy
- https://github.com/taskchampion/taskchampion/pull/212#discussion_r621458637
2021-04-28 12:20:34 +09:30
dbr
2b7e121e7e Implement operations storage for SQLite 2021-04-28 12:35:50 +10:00
dbr
1959f0c63a Implement all_task_uuids and base version methods 2021-04-27 19:35:45 +10:00
Andrew Savchenko
215fda0539 [ABI] Add notice about backend upgrade 2021-04-27 16:00:22 +09:30
Andrew Savchenko
c81d61dfa6 Removed SECURITY.md in favour of POLICY.md 2021-04-27 15:41:29 +09:30
Andrew Savchenko
8aa6b50969 Add POLICY.md
- https://github.com/taskchampion/taskchampion/issues/210
- https://github.com/taskchampion/taskchampion/milestone/1
2021-04-27 15:40:11 +09:30
dbr
305e6e2ede Appease clippy 2021-04-22 14:16:07 +10:00
dbr
11d0172bf8 fmt 2021-04-22 14:15:50 +10:00
dbr
a9b93e7c20 Use names for row.get(...) 2021-04-22 13:33:54 +10:00
dbr
4bd6c40daf Use uuid feature of rusqlite 2021-04-22 13:31:15 +10:00
dbr
0f3729d4c8 sqlite: Get all rows
Needs some improvement to error handling
2021-04-22 12:54:34 +10:00
dbr
e40724b381 Start of SQLite backed storage #131 2021-04-22 11:48:05 +10:00
Dustin J. Mitchell
6a0bddab38 Merge pull request #205 from taskchampion/issue201
Replace tempfile with tempdir
2021-04-17 09:09:56 -04:00
Dustin J. Mitchell
f6550233e6 Merge pull request #204 from taskchampion/audit-fix-2021-04-16
run 'git audit fix'
2021-04-17 09:09:47 -04:00
Dustin J. Mitchell
c8d6619d71 Replace tempfile with tempdir 2021-04-16 19:29:27 -04:00
Dustin J. Mitchell
27c20074e3 run 'git audit fix' 2021-04-16 19:22:08 -04:00
Dustin J. Mitchell
9c54985fac Merge pull request #203 from taskchampion/issue198
Use `dirs-next` instead of `dirs`
2021-04-16 13:26:45 -04:00
Dustin J. Mitchell
6c0f7a736f Use dirs-next instead of dirs 2021-04-16 09:21:59 -04:00
Dustin J. Mitchell
10536f024d use audit action from the README 2021-04-15 16:45:22 -04:00
Dustin J. Mitchell
8d15ce896f try cargo audit at main 2021-04-12 11:16:24 -04:00
Dustin J. Mitchell
1b8672ffc9 fix audit cron 2021-04-11 19:55:35 +00:00
Dustin J. Mitchell
6bfa77e29d Merge pull request #195 from taskchampion/issue174-actions
add taskchampion-tests action
2021-04-03 20:17:57 -04:00
Dustin J. Mitchell
d20884281b add security audit 2021-04-03 20:16:12 -04:00
Dustin J. Mitchell
e4e40b3e5e Add actions
These will be more easily maintained by others than a Taskcluster
configuration.
2021-04-03 20:11:08 -04:00
Dustin J. Mitchell
c767718ac9 Merge pull request #194 from taskchampion/issue174
Update links ot point to new org
2021-04-03 19:46:21 -04:00
Dustin J. Mitchell
c2349cf708 Update links to point to new org 2021-04-03 19:44:31 -04:00
Dustin J. Mitchell
ed576a8c6c Merge pull request #193 from djmitche/dependabot/cargo/serde_json-1.0.64
Bump serde_json from 1.0.59 to 1.0.64
2021-03-31 18:29:39 -04:00
Dustin J. Mitchell
51f9a1093e Merge pull request #192 from djmitche/dependabot/cargo/textwrap-0.13.4
Bump textwrap from 0.12.1 to 0.13.4
2021-03-31 18:29:32 -04:00
Dustin J. Mitchell
ad878b7b29 Merge pull request #191 from djmitche/dependabot/cargo/actix-web-3.3.2
Bump actix-web from 3.3.0 to 3.3.2
2021-03-31 18:29:19 -04:00
Dustin J. Mitchell
b9ad3ea9a0 Merge pull request #190 from djmitche/dependabot/cargo/anyhow-1.0.40
Bump anyhow from 1.0.39 to 1.0.40
2021-03-31 18:28:39 -04:00
dependabot[bot]
35ae3420b8 Bump serde_json from 1.0.59 to 1.0.64
Bumps [serde_json](https://github.com/serde-rs/json) from 1.0.59 to 1.0.64.
- [Release notes](https://github.com/serde-rs/json/releases)
- [Commits](https://github.com/serde-rs/json/compare/v1.0.59...v1.0.64)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-31 07:30:38 +00:00
dependabot[bot]
e69efe79d0 Bump textwrap from 0.12.1 to 0.13.4
Bumps [textwrap](https://github.com/mgeisler/textwrap) from 0.12.1 to 0.13.4.
- [Release notes](https://github.com/mgeisler/textwrap/releases)
- [Changelog](https://github.com/mgeisler/textwrap/blob/master/CHANGELOG.md)
- [Commits](https://github.com/mgeisler/textwrap/compare/0.12.1...0.13.4)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-31 07:30:25 +00:00
dependabot[bot]
5b28993be0 Bump actix-web from 3.3.0 to 3.3.2
Bumps [actix-web](https://github.com/actix/actix-web) from 3.3.0 to 3.3.2.
- [Release notes](https://github.com/actix/actix-web/releases)
- [Changelog](https://github.com/actix/actix-web/blob/master/CHANGES.md)
- [Commits](https://github.com/actix/actix-web/compare/web-v3.3.0...web-v3.3.2)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-31 07:30:16 +00:00
dependabot[bot]
a21c85a872 Bump anyhow from 1.0.39 to 1.0.40
Bumps [anyhow](https://github.com/dtolnay/anyhow) from 1.0.39 to 1.0.40.
- [Release notes](https://github.com/dtolnay/anyhow/releases)
- [Commits](https://github.com/dtolnay/anyhow/compare/1.0.39...1.0.40)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-31 07:30:05 +00:00
dependabot[bot]
0e982a52d7 Merge pull request #188 from djmitche/dependabot/cargo/config-0.11.0 2021-03-30 12:15:32 +00:00
dependabot[bot]
82fc8dcd97 Bump config from 0.10.1 to 0.11.0
Bumps [config](https://github.com/mehcode/config-rs) from 0.10.1 to 0.11.0.
- [Release notes](https://github.com/mehcode/config-rs/releases)
- [Changelog](https://github.com/mehcode/config-rs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/mehcode/config-rs/commits/0.11.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-30 12:09:05 +00:00
Dustin J. Mitchell
2f3ee17e0b Merge pull request #189 from djmitche/dependabot/cargo/nom-6.1.2
Bump nom from 6.0.1 to 6.1.2
2021-03-30 08:08:16 -04:00
Dustin J. Mitchell
b003332ba0 Merge pull request #187 from djmitche/dependabot/cargo/lmdb-rkv-0.14.0
Bump lmdb-rkv from 0.12.3 to 0.14.0
2021-03-30 08:07:20 -04:00
Dustin J. Mitchell
f2b79026b6 Merge pull request #186 from djmitche/dependabot/cargo/thiserror-1.0.24
Bump thiserror from 1.0.22 to 1.0.24
2021-03-30 08:06:59 -04:00
Dustin J. Mitchell
ef995d7cac Merge pull request #185 from djmitche/dependabot/cargo/actix-rt-2.2.0
Bump actix-rt from 1.1.1 to 2.2.0
2021-03-30 08:06:37 -04:00
dependabot[bot]
cc7f522e2a Bump nom from 6.0.1 to 6.1.2
Bumps [nom](https://github.com/Geal/nom) from 6.0.1 to 6.1.2.
- [Release notes](https://github.com/Geal/nom/releases)
- [Changelog](https://github.com/Geal/nom/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Geal/nom/compare/6.0.1...6.1.2)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-30 07:43:37 +00:00
dependabot[bot]
af39be175c Bump lmdb-rkv from 0.12.3 to 0.14.0
Bumps [lmdb-rkv](https://github.com/mozilla/lmdb-rs) from 0.12.3 to 0.14.0.
- [Release notes](https://github.com/mozilla/lmdb-rs/releases)
- [Commits](https://github.com/mozilla/lmdb-rs/compare/0.12.3...0.14.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-30 07:43:23 +00:00
dependabot[bot]
c89b646fdc Bump thiserror from 1.0.22 to 1.0.24
Bumps [thiserror](https://github.com/dtolnay/thiserror) from 1.0.22 to 1.0.24.
- [Release notes](https://github.com/dtolnay/thiserror/releases)
- [Commits](https://github.com/dtolnay/thiserror/compare/1.0.22...1.0.24)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-30 07:43:17 +00:00
dependabot[bot]
695785116d Bump actix-rt from 1.1.1 to 2.2.0
Bumps [actix-rt](https://github.com/actix/actix-net) from 1.1.1 to 2.2.0.
- [Release notes](https://github.com/actix/actix-net/releases)
- [Commits](https://github.com/actix/actix-net/compare/rt-1.1.1...rt-v2.2.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-30 07:43:11 +00:00
dependabot[bot]
74041221e7 Merge pull request #184 from djmitche/dependabot/cargo/assert_cmd-1.0.3 2021-03-29 23:51:58 +00:00
Dustin J. Mitchell
3fc07c9e83 Merge pull request #170 from djmitche/dependabot/cargo/ureq-2.1.0
Bump ureq from 1.5.2 to 2.1.0
2021-03-29 19:51:16 -04:00
dependabot[bot]
def67c81b6 Bump assert_cmd from 1.0.2 to 1.0.3
Bumps [assert_cmd](https://github.com/assert-rs/assert_cmd) from 1.0.2 to 1.0.3.
- [Release notes](https://github.com/assert-rs/assert_cmd/releases)
- [Changelog](https://github.com/assert-rs/assert_cmd/blob/master/CHANGELOG.md)
- [Commits](https://github.com/assert-rs/assert_cmd/compare/v1.0.2...v1.0.3)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-29 23:45:28 +00:00
dependabot[bot]
55f8d1c7c0 Merge pull request #182 from djmitche/dependabot/cargo/uuid-0.8.2 2021-03-29 23:40:59 +00:00
dependabot[bot]
1bc881b1a5 Merge pull request #183 from djmitche/dependabot/cargo/predicates-1.0.7 2021-03-29 23:39:56 +00:00
dependabot[bot]
357bbcad01 Bump uuid from 0.8.1 to 0.8.2
Bumps [uuid](https://github.com/uuid-rs/uuid) from 0.8.1 to 0.8.2.
- [Release notes](https://github.com/uuid-rs/uuid/releases)
- [Commits](https://github.com/uuid-rs/uuid/compare/0.8.1...0.8.2)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-29 23:34:12 +00:00
dependabot[bot]
ff58711b2d Bump predicates from 1.0.5 to 1.0.7
Bumps [predicates](https://github.com/assert-rs/predicates-rs) from 1.0.5 to 1.0.7.
- [Release notes](https://github.com/assert-rs/predicates-rs/releases)
- [Changelog](https://github.com/assert-rs/predicates-rs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/assert-rs/predicates-rs/compare/v1.0.5...v1.0.7)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-29 23:34:08 +00:00
Dustin J. Mitchell
98fdb15b75 Merge pull request #176 from djmitche/ignore-clippy-identifier-caps
fix some clippy stuff
2021-03-29 19:33:02 -04:00
Dustin J. Mitchell
bbceed41f9 fix needless_question_mark 2021-03-29 19:25:12 -04:00
Dustin J. Mitchell
dba50ae60b Merge pull request #181 from djmitche/dependabot/cargo/proptest-1.0.0
Bump proptest from 0.9.6 to 1.0.0
2021-03-29 09:28:03 -04:00
Dustin J. Mitchell
fdeadfd981 Fix upper_case_acronyms lint 2021-03-29 13:26:02 +00:00
dependabot[bot]
959c4f47f7 Bump proptest from 0.9.6 to 1.0.0
Bumps [proptest](https://github.com/altsysrq/proptest) from 0.9.6 to 1.0.0.
- [Release notes](https://github.com/altsysrq/proptest/releases)
- [Changelog](https://github.com/AltSysrq/proptest/blob/master/CHANGELOG.md)
- [Commits](https://github.com/altsysrq/proptest/compare/0.9.6...1.0.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-29 09:49:46 +00:00
Dustin J. Mitchell
0f02b38fd8 Modify ureq usage for new version 2021-03-28 17:48:31 -04:00
dependabot[bot]
1de0816661 Bump ureq from 1.5.2 to 2.1.0
Bumps [ureq](https://github.com/algesten/ureq) from 1.5.2 to 2.1.0.
- [Release notes](https://github.com/algesten/ureq/releases)
- [Changelog](https://github.com/algesten/ureq/blob/main/CHANGELOG.md)
- [Commits](https://github.com/algesten/ureq/commits/2.1.0)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-28 17:48:31 -04:00
Dustin J. Mitchell
c42cc3bdcb fix new clippy warnings 2021-03-27 23:38:51 -04:00
Dustin J. Mitchell
7ed2bf4441 Merge pull request #172 from djmitche/dependabot/cargo/env_logger-0.8.3
Bump env_logger from 0.8.2 to 0.8.3
2021-03-27 19:12:57 -04:00
dependabot[bot]
718f16154c Bump env_logger from 0.8.2 to 0.8.3
Bumps [env_logger](https://github.com/env-logger-rs/env_logger) from 0.8.2 to 0.8.3.
- [Release notes](https://github.com/env-logger-rs/env_logger/releases)
- [Changelog](https://github.com/env-logger-rs/env_logger/blob/master/CHANGELOG.md)
- [Commits](https://github.com/env-logger-rs/env_logger/compare/v0.8.2...v0.8.3)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-27 23:05:56 +00:00
Dustin J. Mitchell
e8566df3a7 Merge pull request #169 from djmitche/dependabot/cargo/log-0.4.14
Bump log from 0.4.11 to 0.4.14
2021-03-27 19:03:56 -04:00
dependabot[bot]
e0dbeb2763 Bump log from 0.4.11 to 0.4.14
Bumps [log](https://github.com/rust-lang/log) from 0.4.11 to 0.4.14.
- [Release notes](https://github.com/rust-lang/log/releases)
- [Changelog](https://github.com/rust-lang/log/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rust-lang/log/compare/0.4.11...0.4.14)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-27 22:50:56 +00:00
Dustin J. Mitchell
ded325c1be Merge pull request #168 from djmitche/dependabot/cargo/serde-1.0.125
Bump serde from 1.0.117 to 1.0.125
2021-03-27 18:48:54 -04:00
Dustin J. Mitchell
0724c4b02d Merge pull request #156 from dbr/remove-failure
Replace 'failure' with anyhow + thiserror
2021-03-27 18:48:35 -04:00
Dustin J. Mitchell
bb821feaa9 use clippy stable, not preview 2021-03-27 18:47:49 -04:00
dependabot[bot]
ae46f82d94 Bump serde from 1.0.117 to 1.0.125
Bumps [serde](https://github.com/serde-rs/serde) from 1.0.117 to 1.0.125.
- [Release notes](https://github.com/serde-rs/serde/releases)
- [Commits](https://github.com/serde-rs/serde/compare/v1.0.117...v1.0.125)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-27 22:04:30 +00:00
Dustin J. Mitchell
0f2002663d Merge pull request #166 from djmitche/issue165
use the correct 'package-ecosystem' config
2021-03-27 18:03:36 -04:00
Dustin J. Mitchell
5745e9b396 use the correct 'package-ecosystem' config 2021-03-26 09:00:17 -04:00
dbr
5ee67d65e2 Remove whitespace in comment to avoid cargo fmt doing weird things 2021-03-25 18:29:53 +11:00
dbr
c04ece0e90 Fix one actual clippy lint: remove an unnecessary clone 2021-03-25 18:21:18 +11:00
dbr
b5b9e63a4f Disable "unnecessary_wraps" linter as it is almost entirely false-positives
Was added in 1.50 and will be reduced in severity in next release as per https://github.com/rust-lang/rust-clippy/pull/6765
2021-03-25 18:20:47 +11:00
dbr
6d77b9a319 cargo fmt 2021-03-25 17:10:11 +11:00
dbr
0e7a4c2c33 Fix minor typo in doc comment 2021-03-25 16:34:53 +11:00
dbr
4d9755c43b Replace 'failure' crate with anyhow+thiserror
Closes #148
2021-03-25 16:33:35 +11:00
Dustin J. Mitchell
3cccdc7e32 v0.3.0 2021-01-10 22:45:12 -05:00
Dustin J. Mitchell
9cfbe01271 Merge pull request #147 from djmitche/issue144
Reorganize the 'taskchampion' crate
2021-01-10 22:31:40 -05:00
Dustin J. Mitchell
ae4cee1ac3 add docs for the 'server' and 'storage' modules 2021-01-10 22:22:18 -05:00
Dustin J. Mitchell
02d9c577ab use StorageConfig instead of ReplicaConfig 2021-01-10 22:22:18 -05:00
Dustin J. Mitchell
b004b6cb93 use ServerConfig::into_server instead of server::from_config 2021-01-10 22:22:18 -05:00
Dustin J. Mitchell
15ffc62279 rename taskstorage to storage 2021-01-10 22:22:17 -05:00
Dustin J. Mitchell
a318ceebe2 Merge pull request #146 from djmitche/issue106
Adjust Tag syntax to match TaskWarrior
2021-01-09 23:00:52 -05:00
Dustin J. Mitchell
824c14b5b8 Notes about active development of TW 2021-01-10 03:51:46 +00:00
Dustin J. Mitchell
b95c146a7e Adjust Tag syntax to match TaskWarrior 2021-01-10 03:47:38 +00:00
Dustin J. Mitchell
2bacc05ced Merge pull request #145 from djmitche/issue123
Centralize API for working set to a single struct
2021-01-09 18:42:36 -05:00
Dustin J. Mitchell
087769146e Centralize API for working set to a single struct
Rather than allow addressing tasks either by working set ID or uuid,
with attendant performance issues, this moves the API for the working
set to a single struct that just serves as a 1-1 mapping of indexes to
UUIDs.  It's up to the caller to use this information.
2021-01-09 23:42:27 +00:00
Dustin J. Mitchell
d06f2e5aeb Merge pull request #143 from djmitche/issue125
Always pass Uuids by value
2021-01-09 17:57:29 -05:00
Dustin J. Mitchell
45d3e38c63 Always pass Uuids by value
Rust handles this well.  Fixes #125.
2021-01-09 22:09:06 +00:00
Dustin J. Mitchell
ca1b7da9bf Merge pull request #142 from djmitche/issue68
Automatically add new pending tasks to working set after sync
2021-01-02 14:59:56 -05:00
Dustin J. Mitchell
5e92770eb8 Automatically rebuild working set after sync 2021-01-02 14:47:36 -05:00
Dustin J. Mitchell
dc2df10158 Control whether to renumber the working set when rebuilding it 2021-01-02 14:47:36 -05:00
Dustin J. Mitchell
b62370c150 Rename replica.gc to replica.rebuild_working_set
The command-line operation is still `gc`, but we'll break that down into
finer pieces in the replica.
2021-01-02 13:23:48 -05:00
Dustin J. Mitchell
da63d77d9d Merge pull request #141 from djmitche/issue102
Update documentation for reports, new CLI
2021-01-01 16:49:55 -05:00
Dustin J. Mitchell
8b4f345387 Update documentation for reports, new CLI
This is basically a redraft of the documentation to be more complete and
better cover some of the features added since it was written.
2021-01-01 21:18:49 +00:00
Dustin J. Mitchell
b29f75a075 fix to tc.yml to only build on pushes to main 2020-12-30 21:46:23 +00:00
Dustin J. Mitchell
d57efbec5d Merge pull request #136 from djmitche/issue120
Parse reports from config, with defaults
2020-12-30 16:45:05 -05:00
Dustin J. Mitchell
46c3b31208 Parse reports from config, with defaults 2020-12-30 21:18:45 +00:00
Dustin J. Mitchell
2928bab41c Merge pull request #133 from djmitche/issue121
Use named reports
2020-12-29 20:06:19 -05:00
Dustin J. Mitchell
705edce82b only run CI on pushes to main, not to topic branches 2020-12-30 01:02:00 +00:00
Dustin J. Mitchell
b7c12eec1e Allow filtering by status 2020-12-30 00:52:53 +00:00
Dustin J. Mitchell
83d8fc3b4e Factor out the unnecessary ModArg struct 2020-12-30 00:28:48 +00:00
Dustin J. Mitchell
fc977a0fe6 Limit Filter "universes" to invocation::filter
Universes are really an optimization of filtering tasks, so let's define
them there, and derive them from the set of conditions.  This means that
complex filters might get missed and end up doing a full task scan, but
that's probably OK.

Note that this does not fix the working-set API issues (#108 and #123).
2020-12-30 00:26:53 +00:00
Dustin J. Mitchell
0a458b5f5b Treat any bare word in the command line as a report name 2020-12-29 22:54:07 +00:00
Dustin J. Mitchell
21684666a6 Merge pull request #132 from djmitche/issue60
Use a single secret value to identify clients
2020-12-28 20:51:08 -05:00
Dustin J. Mitchell
31378cb8d4 Include client key in a header, not the URL
Since this value is used both for identification and authentication, it
shouldn't be in the URL where it might be logged or otherwise
discovered.
2020-12-28 23:08:42 +00:00
Dustin J. Mitchell
92d629522b rename client id -> client key 2020-12-28 21:32:59 +00:00
Dustin J. Mitchell
e555af8895 add request logging 2020-12-28 00:25:26 +00:00
Dustin J. Mitchell
812b49587f Merge pull request #130 from djmitche/issue25
Encrypt content sent to the server.
2020-12-27 13:59:24 -05:00
Dustin J. Mitchell
a8d45c67c6 Encrypt content sent to the server
This implements client-side encryption, so that users' task information
is not availble to the server (or to anyone who does not have the
`encryption_secret`).
2020-12-27 18:51:41 +00:00
Dustin J. Mitchell
6b70b47aa0 specify version ranges 2020-12-26 16:03:57 +00:00
Dustin J. Mitchell
c472e04a09 Merge pull request #127 from djmitche/issue76
Default to a local server, so `task sync` works out of the box
2020-12-26 10:45:15 -05:00
Dustin J. Mitchell
64b38ee814 add some debug logging 2020-12-26 15:34:00 +00:00
Dustin J. Mitchell
57834848f2 Default to a local server, so task sync works out of the box 2020-12-26 15:29:48 +00:00
Dustin J. Mitchell
db85ff86a1 Merge pull request #126 from djmitche/issue119
implement generic report generation
2020-12-26 09:59:12 -05:00
Dustin J. Mitchell
00f548c713 implement generic report generation 2020-12-26 04:11:20 +00:00
Dustin J. Mitchell
f264e74288 specify nom version 2020-12-25 04:18:24 +00:00
Dustin J. Mitchell
e7b7e88bc9 convert unrwap to expect and add testing 2020-12-25 02:52:49 +00:00
Dustin J. Mitchell
8a10fa8335 fix some more pedantic lints 2020-12-25 02:43:51 +00:00
Dustin J. Mitchell
46512b78d7 Merge pull request #118 from djmitche/issue112
use a s!(..) shorthand in CLI tests
2020-12-24 21:37:48 -05:00
Dustin J. Mitchell
922e71cd4d use a s!(..) shorthand in CLI tests 2020-12-24 21:15:56 +00:00
Dustin J. Mitchell
7e906ced22 Merge pull request #117 from djmitche/issue113
use static strings for usage
2020-12-24 16:15:51 -05:00
Dustin J. Mitchell
75aaf8d4ab use static strings for usage 2020-12-24 21:07:27 +00:00
Dustin J. Mitchell
7594144a2d Merge pull request #115 from djmitche/issue110
Fix clippy warnings and make them all errors
2020-12-24 13:30:39 -05:00
Dustin J. Mitchell
8989b0d2e3 Fix clippy warnings and make them all errors 2020-12-24 17:39:49 +00:00
Dustin J. Mitchell
c75d07df94 Merge pull request #114 from djmitche/issue11
Support filtering by tags
2020-12-24 12:14:10 -05:00
Dustin J. Mitchell
8c9e240e97 Document filter and modification syntax 2020-12-24 17:04:51 +00:00
Dustin J. Mitchell
9c94a7b753 support filtering by tags 2020-12-24 16:38:08 +00:00
Dustin J. Mitchell
161c38807d Merge pull request #109 from djmitche/issue11-filter-refactor
Refactor filtering to start with a universe
2020-12-24 11:05:32 -05:00
Dustin J. Mitchell
a0568f017c Refactor filtering to start with a universe 2020-12-23 03:50:34 +00:00
Dustin J. Mitchell
e6d60524fa Merge pull request #107 from djmitche/issue103
Implement tags in the Replica API and the CLI
2020-12-22 21:06:37 -05:00
Dustin J. Mitchell
5ea72f878a display tags in 'task info' 2020-12-21 20:43:09 +00:00
Dustin J. Mitchell
54e8484bc2 Support CLI syntax for changing tags 2020-12-21 20:43:09 +00:00
Dustin J. Mitchell
28c5fb2268 Add support for task tags
Based on properties named `tag.<tag>` as already documented
2020-12-21 20:43:09 +00:00
Dustin J. Mitchell
141752bd4b Merge pull request #98 from djmitche/issue44
Switch to a command-line API closer to TaskWarrior
2020-12-21 10:20:55 -05:00
Dustin J. Mitchell
8ba6277cce use 'atty' to detect when colors can be used 2020-12-20 19:54:38 -05:00
Dustin J. Mitchell
7d17740ca8 use a generic Write instance for command output 2020-12-20 19:45:24 -05:00
Dustin J. Mitchell
6b550e7516 implement cli help 2020-12-20 18:42:21 -05:00
Dustin J. Mitchell
2c579b9f01 Switch to a command-line API closer to TaskWarrior
* Use a parser (rather than clap) to process the command line
* Outline some generic support for filtering, reporting, modifying, etc.
* Break argument parsing strictly from invocation, to allow independent testing
2020-12-19 16:40:09 -05:00
Dustin J. Mitchell
87bb829634 Merge pull request #96 from srfraser/i88_append
subcommands: prepend and append to description
2020-12-18 16:38:38 -05:00
Simon Fraser
ee341ac7d5 subcommands: prepend and append to description
This currently uses format!() which may not be the best
option. Fixes #88
2020-12-17 12:59:50 +00:00
Dustin J. Mitchell
8f5e299077 Merge remote-tracking branch 'upstream/main' into main 2020-11-29 21:27:35 -05:00
Dustin J. Mitchell
de03209285 bits of docs 2020-11-29 21:26:39 -05:00
Dustin J. Mitchell
0d5635f092 Update RELEASING.md 2020-11-29 21:10:49 -05:00
Dustin J. Mitchell
8601c0cb67 update Cargo.lock 2020-11-29 21:09:28 -05:00
Dustin J. Mitchell
a1747546d6 Update RELEASING.md 2020-11-29 21:09:22 -05:00
Dustin J. Mitchell
e6abfc5f56 more RELEASING stuff 2020-11-29 20:59:52 -05:00
Dustin J. Mitchell
451690afb7 v0.2.0 2020-11-29 20:59:09 -05:00
Dustin J. Mitchell
17a13e0de9 Merge pull request #78 from djmitche/issue49
Add release stuff
2020-11-29 20:49:18 -05:00
Dustin J. Mitchell
0e2e60372d release process 2020-11-29 20:42:10 -05:00
Dustin J. Mitchell
95ada3d2bb Add metadata for the taskchampion crate 2020-11-29 20:35:25 -05:00
Dustin J. Mitchell
81cee8d375 use CARGO_PKG_VERSION for version 2020-11-29 20:35:25 -05:00
Dustin J. Mitchell
dd01c985ec fix typo 2020-11-29 20:34:59 -05:00
Dustin J. Mitchell
8f361c28b7 remove unnecessary warning suppression 2020-11-29 20:34:43 -05:00
Dustin J. Mitchell
89a0071136 Merge pull request #77 from djmitche/issue49
Add a getting-started section
2020-11-29 20:24:47 -05:00
Dustin J. Mitchell
08faac957a Add a getting-started section 2020-11-29 20:14:06 -05:00
Dustin J. Mitchell
33283658d5 Merge pull request #75 from djmitche/issue54
use log and env_logger, and add some logging around sync
2020-11-29 18:34:01 -05:00
Dustin J. Mitchell
0a1ee470f7 use log and env_logger, and add some logging around sync 2020-11-29 18:18:28 -05:00
Dustin J. Mitchell
c117494ce6 Merge pull request #74 from djmitche/issue66
Implement actual on-disk storage for sync-server.
2020-11-29 17:47:11 -05:00
Dustin J. Mitchell
8b233de46e Merge pull request #73 from djmitche/issue72
Add done and delete subcommands
2020-11-29 17:42:02 -05:00
Dustin J. Mitchell
786d5b6a17 Implement actual on-disk storage for sync-server. 2020-11-29 17:41:28 -05:00
Dustin J. Mitchell
1b7dbd0715 remove delete_task from the Replica API so it's not misused 2020-11-29 14:26:47 -05:00
Dustin J. Mitchell
af7363f3aa add delete subcommand 2020-11-29 14:07:16 -05:00
Dustin J. Mitchell
29ab993397 add done 2020-11-29 14:07:16 -05:00
Dustin J. Mitchell
42d988d601 fix clippy warnings 2020-11-29 14:05:51 -05:00
Dustin J. Mitchell
d832b0b859 fix merge error 2020-11-29 11:18:29 -05:00
Dustin J. Mitchell
47cd051bd7 Merge pull request #71 from djmitche/issue7
Add start and stop commands
2020-11-28 23:19:21 -05:00
Dustin J. Mitchell
0e4ab4b88f Add start and stop commands 2020-11-28 23:12:37 -05:00
Dustin J. Mitchell
7a2857e814 Merge pull request #70 from djmitche/issue9
Support configuration of the cli
2020-11-28 22:02:07 -05:00
Dustin J. Mitchell
6d08eacd98 limit config file usage to just yaml 2020-11-28 19:43:30 -05:00
Dustin J. Mitchell
0e926df578 Add configuration-file support to the 'task' command 2020-11-28 18:18:43 -05:00
Dustin J. Mitchell
8af7ba286d Factor replica and sync configuration into simple owned structs 2020-11-28 16:57:32 -05:00
Dustin J. Mitchell
87596bb1f0 update Cargo.lock to latest 2020-11-28 15:14:49 -05:00
Dustin J. Mitchell
091f5b5b17 use semver ranges for dependencies 2020-11-28 15:13:30 -05:00
Dustin J. Mitchell
3c976a324e Create dependabot.yml 2020-11-28 11:31:12 -05:00
Dustin J. Mitchell
383f77b5c6 Merge pull request #69 from djmitche/issue6
add 'task modify' (that can only modify description right now)
2020-11-28 11:26:02 -05:00
Dustin J. Mitchell
a665ff83de add 'task modify' (that can only modify description right now) 2020-11-28 11:17:38 -05:00
Dustin J. Mitchell
b34ef34b2a Merge pull request #67 from djmitche/issue58
take configuration in env vars temporarily
2020-11-28 10:16:56 -05:00
Dustin J. Mitchell
1a92613ddc take configuration in env vars temporarily 2020-11-28 10:02:17 -05:00
Dustin J. Mitchell
97a8a87c24 Merge pull request #64 from djmitche/issue57
Add RemoteServer to the taskchampion crate
2020-11-27 20:23:39 -05:00
Dustin J. Mitchell
a02f864b87 Merge pull request #65 from djmitche/issue63
do not require taskchampion from sync-server
2020-11-27 20:15:25 -05:00
Dustin J. Mitchell
2a37f090a5 Add RemoteServer to the taskchampion crate 2020-11-27 20:15:17 -05:00
Dustin J. Mitchell
3092a6bb7f do not require taskchampion from sync-server 2020-11-27 20:08:54 -05:00
Dustin J. Mitchell
d46f20e75a adjust visibility, comment 2020-11-27 18:16:42 -05:00
Dustin J. Mitchell
f59355f827 set default theme to ayu 2020-11-26 23:38:14 -05:00
Dustin J. Mitchell
f5859bc45c fix docs to include all files 2020-11-26 23:38:14 -05:00
Dustin J. Mitchell
efb1bc6a39 Create CONTRIBUTING.md 2020-11-26 23:36:54 -05:00
Dustin J. Mitchell
367c2fa2bd Create LICENSE 2020-11-26 23:20:45 -05:00
Dustin J. Mitchell
b10dc01213 Create CODE_OF_CONDUCT.md 2020-11-26 23:18:32 -05:00
Dustin J. Mitchell
c96e40e494 Create SECURITY.md 2020-11-26 23:16:39 -05:00
Dustin J. Mitchell
d53d83d06e Merge pull request #62 from djmitche/issue37
replica.new_task now invents its own uuid
2020-11-26 23:13:15 -05:00
Dustin J. Mitchell
eb47cf4e7f scrpit to push docs 2020-11-26 23:02:15 -05:00
Dustin J. Mitchell
0f98727d9b replica.new_task now invents its own uuid 2020-11-26 22:44:13 -05:00
Dustin J. Mitchell
2064057688 fix clippy warnings
I don't know why these are "intermittent"
2020-11-26 22:36:31 -05:00
Dustin J. Mitchell
26b17c6dbc Revert "add signing support"
It turns out we don't need this.

This reverts commit e92fc0628b.
2020-11-26 22:34:20 -05:00
Dustin J. Mitchell
b0dd3905e7 fix crate name for tc-sync-server 2020-11-26 22:30:07 -05:00
Dustin J. Mitchell
e32b9d1bf6 Merge pull request #61 from djmitche/issue55
Implement the sync server
2020-11-26 20:00:22 -05:00
Dustin J. Mitchell
5b1b911bf7 Move add_version and get_child_version to server module
..and add some tests specifically for those functions, in the absence of
all the HTTP nonsense.
2020-11-26 19:59:52 -05:00
Dustin J. Mitchell
fb22b9686f refactor sync server to use pluggable storage
..with a fixed implementation of the replica / server protocol logic.
There isn't much logic yet, and there's a lot of boilerplate to take
care of, so this looks a little lopsided, but I'm confident this is the
right structure for this code's future.
2020-11-26 19:59:52 -05:00
Dustin J. Mitchell
7472749fee add tests for API methods 2020-11-26 19:59:52 -05:00
Dustin J. Mitchell
3fb2327a5b add docs for replica/server protocol 2020-11-26 19:59:52 -05:00
Dustin J. Mitchell
2dae271851 build an in-memory sync server implementation 2020-11-26 19:59:52 -05:00
Dustin J. Mitchell
2457d8bc43 move types in crate::types to crate::server 2020-11-26 19:59:52 -05:00
Dustin J. Mitchell
e84871931f Refactor HTTP implementation of API methods 2020-11-26 19:59:52 -05:00
Dustin J. Mitchell
a5c06008b3 use a trait object for the server, for dynamic dispatch 2020-11-26 19:59:52 -05:00
Dustin J. Mitchell
087333a227 refactor sync server into modules 2020-11-26 19:59:49 -05:00
Dustin J. Mitchell
d0bfbbb7f0 Merge pull request #59 from djmitche/issue8
Refactor synchronization
2020-11-25 20:12:46 -05:00
Dustin J. Mitchell
1511a0e38e update docs based on modified sync designs 2020-11-25 19:46:23 -05:00
Dustin J. Mitchell
3537db9bbe implement a local sync server 2020-11-25 19:13:32 -05:00
Dustin J. Mitchell
8f7e2e2790 add a 'task sync' command using a copy of the test server 2020-11-25 18:07:04 -05:00
Dustin J. Mitchell
a81c84d7c7 refactor sync to new model 2020-11-25 17:58:03 -05:00
Dustin J. Mitchell
e92fc0628b add signing support 2020-11-25 17:58:02 -05:00
Dustin J. Mitchell
75edd2773f make server operations fallible 2020-11-25 17:53:23 -05:00
Dustin J. Mitchell
549d3b9f6d refactor taskchampion::server into a module with submodules 2020-11-25 17:53:23 -05:00
Dustin J. Mitchell
7cfa27fc7e Merge pull request #51 from djmitche/issue34
Remove `remove_from_working_set` method.
2020-11-24 13:14:12 -05:00
Dustin J. Mitchell
fc4fcc9e5d Remove remove_from_working_set method.
Items are only removed from the working set when it is rebuilt, so this
method is unnecessary.
2020-11-24 13:11:40 -05:00
Dustin J. Mitchell
a0573e2dbe Merge pull request #50 from djmitche/issue18
add cargo clippy to CI
2020-11-24 13:08:48 -05:00
Dustin J. Mitchell
ca70d2c914 add cargo clippy to CI 2020-11-24 13:02:14 -05:00
Dustin J. Mitchell
2232aa8083 Merge pull request #47 from djmitche/issue43
Update handling of working set and show id's more widely
2020-11-24 12:19:47 -05:00
Dustin J. Mitchell
122abf4c5b Merge pull request #46 from djmitche/issue40
export the Uuid type from taskchampion
2020-11-24 12:06:46 -05:00
Dustin J. Mitchell
1c5e9b009b Add Replica::get_working_set_index and use it
This is probably ridiculously inefficient, as it will load the working
set for each and every task listed.  Optimize later!
2020-11-24 12:05:30 -05:00
Dustin J. Mitchell
2dd86edd4a use Replica::get_working_set_task 2020-11-24 11:54:48 -05:00
Dustin J. Mitchell
fc668e5ca8 use usize to index working set 2020-11-24 11:53:11 -05:00
Dustin J. Mitchell
c8f14d68cb export the Uuid type from taskchampion 2020-11-24 11:44:21 -05:00
Dustin J. Mitchell
d84c156782 Merge pull request #45 from djmitche/issue30
add an 'info' subcommand
2020-11-24 11:42:34 -05:00
Dustin J. Mitchell
8233763295 add an 'info' subcommand 2020-11-24 11:31:56 -05:00
Dustin J. Mitchell
888b38fd79 Merge pull request #42 from djmitche/issue28
use prettytable for tabular outputs
2020-11-24 09:47:48 -05:00
Dustin J. Mitchell
f31a96176d use prettytable for tabular outputs 2020-11-23 21:58:45 -05:00
Dustin J. Mitchell
f7f5c379ea Merge pull request #41 from djmitche/refactor-cli
Refactor command-line handling
2020-11-23 21:35:04 -05:00
Dustin J. Mitchell
fe4183c3ca Refactor command-line handling into modules per subcommands 2020-11-23 21:29:46 -05:00
Dustin J. Mitchell
e0b69a62b1 fix --help metadata 2020-11-23 16:18:24 -05:00
Dustin J. Mitchell
1de24f66dc restore README to top level 2020-11-23 16:12:46 -05:00
Dustin J. Mitchell
635852c6d9 Merge pull request #39 from djmitche/issue14
Refactor into several crates
2020-11-23 16:10:18 -05:00
Dustin J. Mitchell
084c978b31 move docs back to top level 2020-11-23 16:07:38 -05:00
Dustin J. Mitchell
2296d0fa35 rename DB to TaskDB for consistency 2020-11-23 16:03:04 -05:00
Dustin J. Mitchell
8e2b4c3f6c Reorganize taskchampion crate for docs and tests
The public API of the taskchampion crate now contains the expected parts
and no more, and has some better documentation.

This moves the crate's external `tests/` into internal tests, as the
TaskDB is no longer exposed as part of the crate API.
2020-11-23 15:59:37 -05:00
Dustin J. Mitchell
8f4924f903 remove unnecessary 'extern crate' 2020-11-23 15:02:37 -05:00
Dustin J. Mitchell
ba55d298ce stop ignoring dead code and unused variables 2020-11-23 14:29:51 -05:00
Dustin J. Mitchell
779a331003 reorganize into separate crates
- taskchampion -- core implementation of a replica
 - taskchampion-cli -- command-line interface
 - taskchampion-sync-server -- server implementation (not much yet!)
2020-11-23 14:27:47 -05:00
Dustin J. Mitchell
2830043e13 Merge pull request #38 from djmitche/issue21
Reorganize the Task API
2020-11-23 13:46:16 -05:00
Dustin J. Mitchell
245969e390 make task a simple top-level module 2020-11-23 12:53:58 -05:00
Dustin J. Mitchell
634aaadb73 Reorganize handling of task data
This abandons field-by-field compatibility with the TaskWarrior TDB2
format, which wasn't a sustainable strategy anyway.

Instead, tasks are represented as a TaskMap with custom key formats.  In
this commit, there are only a few allowed keys, with room to grow.

Replica returns convenience wrappers Task (read-only) and TaskMut
(read-write) with getters and setters to make modifying tasks easier.
2020-11-23 12:53:58 -05:00
Dustin J. Mitchell
c2c2a00ed5 Merge pull request #36 from djmitche/issue20
refactor working-set support, improve data model docs
2020-11-22 19:48:52 -05:00
Dustin J. Mitchell
03e4fc7cee Refactor working-set support, add pending tasks
This refactors the working-set support so that taskdb knows how to
rebuild the working set (in a single transaction) but replica knows what
tasks should be in that set.

This also adds support for automatically adding tasks to the working set
when they are marked pending.  Note that tasks are not *removed* from
the working set automatically, but only on a gc operation.
2020-11-22 18:19:05 -05:00
Dustin J. Mitchell
39a0dfe798 revise and expand docs about storage / taskdb / replica 2020-11-22 17:30:42 -05:00
Dustin J. Mitchell
ffbf272afc Merge pull request #32 from djmitche/issue22
fix up some TODOs in replica.rs
2020-11-22 00:56:10 -05:00
Dustin J. Mitchell
1a2c17ab8c Merge branch 'main' into issue22 2020-11-22 00:55:58 -05:00
Dustin J. Mitchell
4074db7729 Merge pull request #31 from djmitche/issue15-more
remove more taskwarrior compatibility stuff
2020-11-22 00:55:39 -05:00
Dustin J. Mitchell
f45292d049 remove more taskwarrior compatibility stuff 2020-11-22 00:51:41 -05:00
Dustin J. Mitchell
74fb3c3c41 fix up some TODOs in replica.rs 2020-11-21 23:46:53 -05:00
Dustin J. Mitchell
b3a0fe9f20 Merge pull request #27 from djmitche/issue12
add an mdbook
2020-11-21 21:32:09 -05:00
Dustin J. Mitchell
17fe90c8d0 poor excuse for documentation 2020-11-21 21:27:58 -05:00
Dustin J. Mitchell
ae8872d51e add an mdbook 2020-11-21 21:27:58 -05:00
Dustin J. Mitchell
1e28289b8b Merge pull request #19 from djmitche/issue3
use a v1 .taskcluster.yml
2020-11-21 19:15:57 -05:00
Dustin J. Mitchell
c8a28b5ab3 install rustfmt 2020-11-21 19:09:55 -05:00
Dustin J. Mitchell
2bd68e85d3 remove TODO (now moved to issues) 2020-11-21 19:06:15 -05:00
Dustin J. Mitchell
0e792ad584 use a v1 .taskcluster.yml 2020-11-21 18:55:29 -05:00
Dustin J. Mitchell
785f3940c5 Merge pull request #17 from djmitche/issue13
rename to taskchampion
2020-11-21 18:01:44 -05:00
Dustin J. Mitchell
1fa6155b22 rename to taskchampion 2020-11-21 18:01:25 -05:00
Dustin J. Mitchell
8ed54e9728 Merge pull request #16 from djmitche/issue15
remove taskwarrior compatibility stuff
2020-11-21 17:54:01 -05:00
Dustin J. Mitchell
3ddaff07ca remove taskwarrior compatibility stuff 2020-11-21 17:52:09 -05:00
Dustin J. Mitchell
ae93d91b6e more CLI compatibility WIP 2020-02-02 18:46:27 -05:00
Dustin J. Mitchell
cfdb266800 add some cli parsing stuff 2020-02-02 15:11:14 -05:00
Dustin J. Mitchell
61b2de132b support rebuilding the working set 2020-01-19 15:55:15 -05:00
Dustin J. Mitchell
12980da5fd add working_set support to taskstorage 2020-01-19 14:56:09 -05:00
Dustin J. Mitchell
ad08991292 Start on making replica higher-level, with some TODO's 2020-01-19 14:03:03 -05:00
Dustin J. Mitchell
4203f232ad docs 2020-01-12 16:00:40 -05:00
Dustin J. Mitchell
f8977c9ce3 use kv in cli 2020-01-12 13:51:58 -05:00
Dustin J. Mitchell
4172c7012c simplify the taskstorage methods 2020-01-12 13:48:16 -05:00
Dustin J. Mitchell
2f973d3e62 task storge implementation based on kv / LMDB 2020-01-12 13:36:02 -05:00
Dustin J. Mitchell
afd11d08a7 make the TaskStorage API fallible everywhere 2020-01-05 15:39:34 -05:00
Dustin J. Mitchell
611b1cd68f factor storage out to a trait object 2020-01-05 15:00:08 -05:00
Dustin J. Mitchell
e228c99b83 partial refactor to separate taskdb and storage 2020-01-05 13:17:07 -05:00
Dustin J. Mitchell
727db7f669 name taskwarrior-rest 2020-01-02 21:08:17 -05:00
Dustin J. Mitchell
752d05e96b merge README 2020-01-01 19:57:01 -05:00
Dustin J. Mitchell
2d000fdeb9 merge ot with rask 2020-01-01 19:54:26 -05:00
Dustin J. Mitchell
e17943d878 add a simple CLI 2020-01-01 18:53:12 -05:00
Dustin J. Mitchell
b898ec1fde add a Replica 2020-01-01 18:22:01 -05:00
Dustin J. Mitchell
f6ffcc7039 add proptest for action sequences 2020-01-01 17:45:50 -05:00
Dustin J. Mitchell
04f6b1d421 add test for syncing deletes and creates 2019-12-29 13:38:36 -05:00
Dustin J. Mitchell
41acb1fa1e Add support for Delete operations 2019-12-29 13:16:42 -05:00
Dustin J. Mitchell
e83bdc28cd use strings as values, with option to allow removing 2019-12-29 11:54:59 -05:00
Dustin J. Mitchell
e5bd258e84 comments about applying 2019-12-29 11:09:37 -05:00
Dustin J. Mitchell
4a62413e21 add TODO 2019-12-29 11:09:05 -05:00
Dustin J. Mitchell
59f4e6abd7 actually support synchronization 2019-12-28 22:46:10 -05:00
Dustin J. Mitchell
0a2293a9c5 use proptest to check invariants 2019-12-28 14:31:37 -05:00
Dustin J. Mitchell
8799636c1a add a transform function for operations 2019-12-28 12:17:42 -05:00
Dustin J. Mitchell
72a12c751e remove text operations 2019-12-28 11:45:26 -05:00
Dustin J. Mitchell
0c3e4d5c2e add a tasks method to db 2019-12-28 11:44:45 -05:00
Dustin J. Mitchell
83b2318a06 backup scheme 2019-12-28 11:24:20 -05:00
Dustin J. Mitchell
e5a92826f6 add taskdb 2019-12-28 11:20:35 -05:00
Dustin J. Mitchell
10c7dd28b9 add README 2019-12-25 17:44:40 -05:00
Dustin J. Mitchell
05d26285e3 implement TextOperation 2019-12-25 10:51:44 -05:00
Dustin J. Mitchell
93ce28ed15 add README 2018-11-24 17:00:44 -05:00
Dustin J. Mitchell
1809fe3674 build on push 2018-11-24 16:55:53 -05:00
Dustin J. Mitchell
63d5f78cb8 add .taskcluster.yml 2018-11-24 16:55:01 -05:00
Dustin J. Mitchell
d0744d5178 refactor to a library, add integration tests 2018-11-12 18:25:47 -05:00
Dustin J. Mitchell
9f310c76bd use a distinct error_chain for the tdb submodule 2018-11-12 17:42:19 -05:00
Dustin J. Mitchell
7fd94f6495 Remove unused methods from Pig 2018-11-12 09:39:59 -05:00
Dustin J. Mitchell
1272acb893 Use error_chain 2018-11-11 21:09:53 -05:00
Dustin J. Mitchell
f9d950e621 rename Nibbler to Pig as per latest code in Taskwarrior 2018-11-10 19:46:32 -05:00
Dustin J. Mitchell
6a66b7a84b parse all defined fields in tasks 2018-11-10 19:34:23 -05:00
Dustin J. Mitchell
de5e4e134c parse into tasks 2018-11-09 20:48:29 -05:00
Dustin J. Mitchell
d1c09f2561 parse a TDB2 file 2018-11-09 19:34:55 -05:00
588 changed files with 33874 additions and 33487 deletions

6
.cargo/audit.toml Normal file
View File

@@ -0,0 +1,6 @@
[advisories]
ignore = [
"RUSTSEC-2021-0124", # see https://github.com/GothenburgBitFactory/taskwarrior/issues/2830
"RUSTSEC-2020-0159", # segfault in localtime_r - low risk to TC
"RUSTSEC-2020-0071", # same localtime_r bug as above
]

5
.clang-format Normal file
View File

@@ -0,0 +1,5 @@
---
Language: Cpp
BasedOnStyle: Google
ColumnLimit: 100
...

20
.devcontainer/Dockerfile Normal file
View File

@@ -0,0 +1,20 @@
FROM mcr.microsoft.com/devcontainers/cpp:1-ubuntu-22.04
ARG REINSTALL_CMAKE_VERSION_FROM_SOURCE="3.22.2"
# Optionally install the cmake for vcpkg
COPY ./reinstall-cmake.sh /tmp/
RUN if [ "${REINSTALL_CMAKE_VERSION_FROM_SOURCE}" != "none" ]; then \
chmod +x /tmp/reinstall-cmake.sh && /tmp/reinstall-cmake.sh ${REINSTALL_CMAKE_VERSION_FROM_SOURCE}; \
fi \
&& rm -f /tmp/reinstall-cmake.sh
RUN sudo apt-get update && sudo apt-get install uuid-dev faketime
# [Optional] Uncomment this section to install additional vcpkg ports.
# RUN su vscode -c "${VCPKG_ROOT}/vcpkg install <your-port-name-here>"
# [Optional] Uncomment this section to install additional packages.
# RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \
# && apt-get -y install --no-install-recommends <your-package-list-here>

View File

@@ -0,0 +1,24 @@
// For format details, see https://aka.ms/devcontainer.json. For config options, see the
// README at: https://github.com/devcontainers/templates/tree/main/src/cpp
{
"name": "Taskwarrior development environment",
"build": {
"dockerfile": "Dockerfile"
},
// Features to add to the dev container. More info: https://containers.dev/features.
"features": {
"ghcr.io/devcontainers/features/rust:1": {}
}
// Use 'forwardPorts' to make a list of ports inside the container available locally.
// "forwardPorts": [],
// Use 'postCreateCommand' to run commands after the container is created.
// "postCreateCommand": "gcc -v",
// Configure tool-specific properties.
// "customizations": {},
// Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root.
// "remoteUser": "root"
}

View File

@@ -0,0 +1,59 @@
#!/usr/bin/env bash
#-------------------------------------------------------------------------------------------------------------
# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License. See https://go.microsoft.com/fwlink/?linkid=2090316 for license information.
#-------------------------------------------------------------------------------------------------------------
#
set -e
CMAKE_VERSION=${1:-"none"}
if [ "${CMAKE_VERSION}" = "none" ]; then
echo "No CMake version specified, skipping CMake reinstallation"
exit 0
fi
# Cleanup temporary directory and associated files when exiting the script.
cleanup() {
EXIT_CODE=$?
set +e
if [[ -n "${TMP_DIR}" ]]; then
echo "Executing cleanup of tmp files"
rm -Rf "${TMP_DIR}"
fi
exit $EXIT_CODE
}
trap cleanup EXIT
echo "Installing CMake..."
apt-get -y purge --auto-remove cmake
mkdir -p /opt/cmake
architecture=$(dpkg --print-architecture)
case "${architecture}" in
arm64)
ARCH=aarch64 ;;
amd64)
ARCH=x86_64 ;;
*)
echo "Unsupported architecture ${architecture}."
exit 1
;;
esac
CMAKE_BINARY_NAME="cmake-${CMAKE_VERSION}-linux-${ARCH}.sh"
CMAKE_CHECKSUM_NAME="cmake-${CMAKE_VERSION}-SHA-256.txt"
TMP_DIR=$(mktemp -d -t cmake-XXXXXXXXXX)
echo "${TMP_DIR}"
cd "${TMP_DIR}"
curl -sSL "https://github.com/Kitware/CMake/releases/download/v${CMAKE_VERSION}/${CMAKE_BINARY_NAME}" -O
curl -sSL "https://github.com/Kitware/CMake/releases/download/v${CMAKE_VERSION}/${CMAKE_CHECKSUM_NAME}" -O
sha256sum -c --ignore-missing "${CMAKE_CHECKSUM_NAME}"
sh "${TMP_DIR}/${CMAKE_BINARY_NAME}" --prefix=/opt/cmake --skip-license
ln -s /opt/cmake/bin/cmake /usr/local/bin/cmake
ln -s /opt/cmake/bin/ctest /usr/local/bin/ctest

2
.git-blame-ignore-revs Normal file
View File

@@ -0,0 +1,2 @@
# initial bulk run of formatting with pre-commit
93356b39c3086fdf8dd41d7357bb1c115ff69cb1

1
.github/CONTRIBUTING.md vendored Normal file
View File

@@ -0,0 +1 @@
Please see the ["Contributing to Taskwarrior"](https://github.com/GothenburgBitFactory/taskwarrior/tree/develop/doc/devel/contrib) section of the developer documentation.

18
.github/dependabot.yml vendored Normal file
View File

@@ -0,0 +1,18 @@
version: 2
updates:
# Enable version updates for GitHub actions
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
# Enable updates for Rust packages
- package-ecosystem: "cargo"
directory: "/" # Location of package manifests
schedule:
interval: "daily"
ignore:
# skip patch updates, as they can be quite noisy, but keep
# minor and major updates so that we don't fall too far
# behind
- dependency-name: "*"
update-types: ["version-update:semver-patch"]

View File

@@ -9,4 +9,4 @@
* Clearly describe the feature.
* Clearly state the use case. We are only interested in use cases, do not waste time with implementation details or suggested syntax.
* Please see our notes on [How to request a feature](https://taskwarrior.org/docs/features.html)
* Please see our notes on [How to request a feature](https://taskwarrior.org/docs/features/)

View File

@@ -1,9 +0,0 @@
#### Description
Replace this text with a description of the PR.
#### Additional information...
- [ ] Have you run the test suite?
Many changes need to be tested. Please run the test suite
and include the output of ```cd test && ./problems```.

66
.github/workflows/checks.yml vendored Normal file
View File

@@ -0,0 +1,66 @@
name: checks
on:
push:
branches:
- develop
pull_request:
types: [opened, reopened, synchronize]
jobs:
clippy:
runs-on: ubuntu-latest
name: "Check & Clippy"
steps:
- uses: actions/checkout@v4
- name: Cache cargo registry
uses: actions/cache@v4
with:
path: ~/.cargo/registry
key: ${{ runner.os }}-cargo-registry-${{ hashFiles('**/Cargo.lock') }}
- name: Cache cargo build
uses: actions/cache@v4
with:
path: target
key: ${{ runner.os }}-cargo-build-target-${{ hashFiles('**/Cargo.lock') }}
- uses: actions-rs/toolchain@v1
with:
# If this version is old enough to cause errors, or older than the
# TaskChampion MSRV, bump it to the MSRV of the currently-required
# TaskChampion package; if necessary, bump that version as well.
toolchain: "1.73.0" # MSRV
override: true
- uses: actions-rs/cargo@v1.0.3
with:
command: check
- run: rustup component add clippy
- uses: actions-rs/clippy-check@v1
with:
token: ${{ secrets.GITHUB_TOKEN }}
args: --all-features
name: "Clippy Results"
fmt:
runs-on: ubuntu-latest
name: "Formatting"
steps:
- uses: actions/checkout@v4
- uses: actions-rs/toolchain@v1
with:
profile: minimal
components: rustfmt
toolchain: stable
override: true
- uses: actions-rs/cargo@v1.0.3
with:
command: fmt
args: --all -- --check

53
.github/workflows/docker-image.yaml vendored Normal file
View File

@@ -0,0 +1,53 @@
name: Taskwarrior Docker image
on:
workflow_dispatch:
workflow_run:
workflows: [tests]
branches:
- develop
- stable
types:
- completed
env:
REGISTRY: "ghcr.io"
jobs:
build-and-push-docker-image:
runs-on: ubuntu-latest
if: ${{ github.event.workflow_run.conclusion == 'success' }}
permissions:
contents: read
packages: write
id-token: write
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
submodules: "recursive"
- name: Install cosign
uses: sigstore/cosign-installer@v3.7.0
- name: Log into registry ${{ env.REGISTRY }}
uses: docker/login-action@v3.3.0
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and push Taskwarrior Docker image
id: build-and-push
uses: docker/build-push-action@v6.9.0
with:
context: .
file: "./docker/task.dockerfile"
push: true
tags: ${{ env.REGISTRY }}/${{ github.actor }}/task:${{ github.ref_name }}
- name: Sign the published Docker image
env:
COSIGN_EXPERIMENTAL: "true"
run: cosign sign ${{ env.REGISTRY }}/${{ github.actor }}/task@${{ steps.build-and-push.outputs.digest }}

30
.github/workflows/release-check.yaml vendored Normal file
View File

@@ -0,0 +1,30 @@
name: release-tests
on: [push, pull_request]
jobs:
check-tarball:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Cache cargo registry
uses: actions/cache@v4
with:
path: ~/.cargo/registry
key: ${{ runner.os }}-cargo-registry-${{ hashFiles('**/Cargo.lock') }}
- uses: actions-rs/toolchain@v1
with:
toolchain: "stable"
override: true
- name: Install uuid-dev
run: sudo apt install uuid-dev
- name: make a release tarball and build from it
run: |
cmake -S. -Bbuild &&
make -Cbuild package_source &&
tar -xf build/task-*.tar.gz &&
cd task-*.*.* &&
cmake -S. -Bbuild &&
cmake --build build --target task_executable

20
.github/workflows/security.yml vendored Normal file
View File

@@ -0,0 +1,20 @@
name: security
on:
schedule:
- cron: '0 0 * * *'
push:
paths:
- '**/Cargo.toml'
- '**/Cargo.lock'
jobs:
audit:
runs-on: ubuntu-latest
permissions: write-all
name: "Audit Rust Dependencies"
steps:
- uses: actions/checkout@v4
- uses: rustsec/audit-check@master
with:
token: ${{ secrets.GITHUB_TOKEN }}

View File

@@ -1,54 +1,162 @@
## Run the Taskwarrior tests, using stable rust to build TaskChampion.
name: tests
on: [push, pull_request]
jobs:
coverage:
runs-on: ubuntu-latest
steps:
- name: Install apt packages
run: sudo apt-get install -y build-essential cmake git uuid-dev faketime locales python3 curl gcovr ninja-build
- name: Check out this repository
uses: actions/checkout@v4.1.6
- name: Configure project
run: cmake -S . -B build -G Ninja -DCMAKE_BUILD_TYPE=Debug -DCMAKE_CXX_FLAGS=--coverage
- name: Build project
run: cmake --build build --target test_runner --target task_executable
- name: Test project
run: ctest --test-dir build -j 8 --output-on-failure
- name: Generate a code coverage report
uses: threeal/gcovr-action@v1.1.0
with:
coveralls-out: coverage.coveralls.json
excludes: |
build
- name: Sent to Coveralls
uses: coverallsapp/github-action@v2
with:
file: coverage.coveralls.json
# MacOS tests do not run in Docker, and use the actions-rs Rust installaction
tests-macos-12:
needs: coverage
name: tests (Mac OS 12.latest)
if: false # see #3242
runs-on: macos-latest
steps:
- uses: actions/checkout@v4
- name: Cache cargo registry
uses: actions/cache@v4
with:
path: ~/.cargo/registry
key: ${{ runner.os }}-stable-cargo-registry-${{ hashFiles('**/Cargo.lock') }}
- name: Cache cargo build
uses: actions/cache@v4
with:
path: target
key: ${{ runner.os }}-stable-cargo-build-target-${{ hashFiles('**/Cargo.lock') }}
- uses: actions-rs/toolchain@v1
with:
toolchain: "stable"
override: true
- name: Test MacOS
run: bash test/scripts/test_macos.sh
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
tests-macos-13:
needs: coverage
name: tests (Mac OS 13.latest)
if: false # see #3242
runs-on: macos-13
steps:
- uses: actions/checkout@v4
- name: Cache cargo registry
uses: actions/cache@v4
with:
path: ~/.cargo/registry
key: ${{ runner.os }}-stable-cargo-registry-${{ hashFiles('**/Cargo.lock') }}
- name: Cache cargo build
uses: actions/cache@v4
with:
path: target
key: ${{ runner.os }}-stable-cargo-build-target-${{ hashFiles('**/Cargo.lock') }}
- uses: actions-rs/toolchain@v1
with:
toolchain: "stable"
override: true
- name: Test MacOS
run: bash test/scripts/test_macos.sh
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
cargo-test:
runs-on: ubuntu-latest
name: "Cargo Test"
steps:
- uses: actions/checkout@v4
- name: Cache cargo registry
uses: actions/cache@v4
with:
path: ~/.cargo/registry
key: ${{ runner.os }}-cargo-registry-${{ hashFiles('**/Cargo.lock') }}
- name: Cache cargo build
uses: actions/cache@v4
with:
path: target
key: ${{ runner.os }}-cargo-build-target-${{ hashFiles('**/Cargo.lock') }}
- uses: actions-rs/toolchain@v1
with:
# If this version is old enough to cause errors, or older than the
# TaskChampion MSRV, bump it to the MSRV of the currently-required
# TaskChampion package; if necessary, bump that version as well.
toolchain: "1.73.0" # MSRV
override: true
- uses: actions-rs/cargo@v1.0.3
with:
command: test
tests:
needs: coverage
strategy:
fail-fast: false
matrix:
include:
- name: "Centos 8"
- name: "Fedora 40"
runner: ubuntu-latest
dockerfile: centos8
- name: "Fedora 32"
dockerfile: fedora40
- name: "Fedora 39"
runner: ubuntu-latest
dockerfile: fedora32
- name: "Fedora 33"
runner: ubuntu-latest
dockerfile: fedora33
- name: "Fedora 34"
runner: ubuntu-latest
dockerfile: fedora34
- name: "Fedora 35"
runner: ubuntu-latest
dockerfile: fedora35
dockerfile: fedora39
- name: "Debian Testing"
runner: ubuntu-latest
dockerfile: debiantesting
- name: "Ubuntu 18.04"
runner: ubuntu-latest
dockerfile: ubuntu1804
- name: "Ubuntu 20.04"
runner: ubuntu-latest
dockerfile: ubuntu2004
- name: "Ubuntu 21.04"
- name: "Ubuntu 22.04"
runner: ubuntu-latest
dockerfile: ubuntu2104
- name: "Ubuntu 21.10"
dockerfile: ubuntu2204
- name: "OpenSUSE Tumbleweed (Rolling)"
runner: ubuntu-latest
dockerfile: ubuntu2110
- name: "OpenSUSE 15"
runner: ubuntu-latest
dockerfile: opensuse15
dockerfile: opensuse
- name: "Archlinux Base (Rolling)"
runner: ubuntu-latest
dockerfile: arch
- name: "Mac OS X 10.13"
runner: macos-latest
dockerfile: osx
runs-on: ${{ matrix.runner }}
continue-on-error: ${{ matrix.continue-on-error == true }}
steps:
- uses: actions/checkout@v2
- uses: actions/checkout@v4
- name: Build ${{ matrix.name }}
env:
DOCKER_REGISTRY: docker.pkg.github.com
@@ -56,9 +164,10 @@ jobs:
GITHUB_USER: ${{ github.actor }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
CONTAINER: ${{ matrix.dockerfile }}
run: if [[ $CONTAINER != "osx" ]]; then docker-compose build test-$CONTAINER ; fi
run: docker compose build test-${{ env.CONTAINER }}
- name: Test ${{ matrix.name }}
run: if [[ $CONTAINER != "osx" ]]; then docker-compose run test-$CONTAINER; else bash test/scripts/test_osx.sh ; fi
run: docker compose run test-${{ env.CONTAINER }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
CONTAINER: ${{ matrix.dockerfile }}

19
.gitignore vendored
View File

@@ -1,22 +1,13 @@
cmake.h
commit.h
Makefile
src/task
src/taskd
src/libtask.a
src/commands/libcommands.a
src/columns/libcolumns.a
.cache
*~
.*.swp
Session.vim
package-config/osx/binary/task
CMakeFiles
CMakeCache.txt
cmake_install.cmake
install_manifest.txt
_CPack_Packages
CPackConfig.cmake
CPackSourceConfig.cmake
/*build*/
patches
*.exe
tutorials
.prove
/target/
/.idea/

3
.gitmodules vendored
View File

@@ -1,3 +1,6 @@
[submodule "src/libshared"]
path = src/libshared
url = https://github.com/GothenburgBitFactory/libshared.git
[submodule "src/taskchampion-cpp/corrosion"]
path = src/taskchampion-cpp/corrosion
url = https://github.com/corrosion-rs/corrosion.git

19
.pre-commit-config.yaml Normal file
View File

@@ -0,0 +1,19 @@
# See https://pre-commit.com for more information
# See https://pre-commit.com/hooks.html for more hooks
repos:
- repo: https://github.com/pre-commit/pre-commit-hooks
rev: v5.0.0
hooks:
- id: trailing-whitespace
- id: end-of-file-fixer
- id: check-yaml
- id: check-added-large-files
- repo: https://github.com/pre-commit/mirrors-clang-format
rev: v19.1.3
hooks:
- id: clang-format
types_or: [c++, c]
- repo: https://github.com/psf/black
rev: 24.10.0
hooks:
- id: black

View File

@@ -1,16 +1,23 @@
cmake_minimum_required (VERSION 3.0)
cmake_minimum_required (VERSION 3.22)
enable_testing()
set (CMAKE_EXPORT_COMPILE_COMMANDS ON)
project (task
VERSION 3.2.0
DESCRIPTION "Taskwarrior - a command-line TODO list manager"
HOMEPAGE_URL https://taskwarrior.org/)
set (CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake")
include (FetchContent)
include (CheckFunctionExists)
include (CheckStructHasMember)
set (HAVE_CMAKE true)
project (task)
include (CXXSniffer)
set (PROJECT_VERSION "2.6.2")
OPTION (ENABLE_WASM "Enable 'wasm' support" OFF)
if (ENABLE_WASM)
@@ -18,23 +25,14 @@ if (ENABLE_WASM)
set(CMAKE_EXECUTABLE_SUFFIX ".js")
endif (ENABLE_WASM)
OPTION (ENABLE_SYNC "Enable 'task sync' support" ON)
if (ENABLE_SYNC)
set (USE_GNUTLS ON CACHE BOOL "Build gnutls support." FORCE)
else (ENABLE_SYNC)
set (USE_GNUTLS OFF CACHE BOOL "Build gnutls support." FORCE)
message (WARNING "ENABLE_SYNC=OFF. Not building sync support.")
endif (ENABLE_SYNC)
message ("-- Looking for libshared")
if (EXISTS ${CMAKE_SOURCE_DIR}/src/libshared/src)
message ("-- Found libshared")
message ("-- Looking for git submodules")
if (EXISTS ${CMAKE_SOURCE_DIR}/src/libshared/src AND EXISTS ${CMAKE_SOURCE_DIR}/src/taskchampion-cpp/corrosion)
message ("-- Found git submodules")
else (EXISTS ${CMAKE_SOURCE_DIR}/src/libshared/src)
message ("-- Cloning libshared")
message ("-- Cloning git submodules")
execute_process (COMMAND git submodule update --init
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
endif (EXISTS ${CMAKE_SOURCE_DIR}/src/libshared/src)
endif (EXISTS ${CMAKE_SOURCE_DIR}/src/libshared/src AND EXISTS ${CMAKE_SOURCE_DIR}/src/taskchampion-cpp/corrosion)
message ("-- Looking for SHA1 references")
if (EXISTS ${CMAKE_SOURCE_DIR}/.git/index)
@@ -66,19 +64,8 @@ SET (TASK_DOCDIR share/doc/task CACHE STRING "Installation directory for doc fi
SET (TASK_RCDIR "${TASK_DOCDIR}/rc" CACHE STRING "Installation directory for configuration files")
SET (TASK_BINDIR bin CACHE STRING "Installation directory for the binary")
if (USE_GNUTLS)
message ("-- Looking for GnuTLS")
find_package (GnuTLS)
if (GNUTLS_FOUND)
set (HAVE_LIBGNUTLS true)
set (TASK_INCLUDE_DIRS ${TASK_INCLUDE_DIRS} ${GNUTLS_INCLUDE_DIR})
set (TASK_LIBRARIES ${TASK_LIBRARIES} ${GNUTLS_LIBRARIES})
endif (GNUTLS_FOUND)
endif (USE_GNUTLS)
if (ENABLE_SYNC AND NOT GNUTLS_FOUND)
message (FATAL_ERROR "Cannot find GnuTLS. Use -DENABLE_SYNC=OFF to build Taskwarrior without sync support. See INSTALL for more information.")
endif (ENABLE_SYNC AND NOT GNUTLS_FOUND)
# rust libs require these
set (TASK_LIBRARIES dl pthread)
check_function_exists (timegm HAVE_TIMEGM)
check_function_exists (get_current_dir_name HAVE_GET_CURRENT_DIR_NAME)
@@ -143,6 +130,11 @@ if (SOLARIS)
endif (NSL_LIBRARY)
endif (SOLARIS)
# Disable the Clang return-type-c-linkage warning globally. See #3225.
if (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-return-type-c-linkage")
endif (CMAKE_CXX_COMPILER_ID STREQUAL "Clang" OR CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang")
message ("-- Configuring cmake.h")
configure_file (
${CMAKE_SOURCE_DIR}/cmake.h.in
@@ -150,42 +142,26 @@ configure_file (
add_subdirectory (src)
add_subdirectory (src/commands)
add_subdirectory (src/taskchampion-cpp)
add_subdirectory (src/columns)
add_subdirectory (doc)
add_subdirectory (scripts)
if (EXISTS ${CMAKE_SOURCE_DIR}/test)
add_subdirectory (test EXCLUDE_FROM_ALL)
endif (EXISTS ${CMAKE_SOURCE_DIR}/test)
if (EXISTS performance)
if (EXISTS ${CMAKE_SOURCE_DIR}/performance)
add_subdirectory (performance EXCLUDE_FROM_ALL)
endif (EXISTS performance)
endif (EXISTS ${CMAKE_SOURCE_DIR}/performance)
set (doc_FILES NEWS ChangeLog README.md INSTALL AUTHORS COPYING LICENSE)
set (doc_FILES ChangeLog README.md INSTALL AUTHORS COPYING LICENSE)
foreach (doc_FILE ${doc_FILES})
install (FILES ${doc_FILE} DESTINATION ${TASK_DOCDIR})
endforeach (doc_FILE)
add_custom_command(OUTPUT run-review
COMMAND docker build -q --build-arg PR=$(PR) --build-arg LIBPR=$(LIBPR) -t taskwarrior-review:$(PR)s$(LIBPR) - < scripts/review-dockerfile
COMMAND docker run --rm --memory 1g --hostname pr-$(PR)s$(LIBPR) -it taskwarrior-review:$(PR)s$(LIBPR) bash || :
)
add_custom_target(review DEPENDS run-review)
add_custom_command(OUTPUT run-reproduce
COMMAND docker build -q --build-arg RELEASE=$(RELEASE) -t taskwarrior-reproduce:$(RELEASE) - < scripts/reproduce-dockerfile
COMMAND docker run --rm --memory 1g --hostname tw-$(RELEASE) -it taskwarrior-reproduce:$(RELEASE) bash || :
)
add_custom_target(reproduce DEPENDS run-reproduce)
# ---
set (CPACK_SOURCE_GENERATOR "TGZ")
set (CPACK_SOURCE_PACKAGE_FILE_NAME ${PACKAGE_NAME}-${PACKAGE_VERSION})
set (CPACK_SOURCE_IGNORE_FILES "CMakeCache" "CMakeFiles" "CPackConfig" "CPackSourceConfig"
"_CPack_Packages" "cmake_install" "install_manifest" "Makefile$"
"test" "package-config" "misc/*" "src/task$" "src/calc$" "performance"
"src/libtask.a" "src/columns/libcolumns.a" "src/commands/libcommands.a"
"swp$" "src/lex$" "task-.*.tar.gz" "commit.h" "cmake.h$" "\\\\.gitmodules"
"src/libshared/\\\\.git" ".github/" ".*\\\\.gitignore$"
"src/liblibshared.a" "docker-compose.yml" "\\\\.git/")
set (CPACK_SOURCE_IGNORE_FILES "build" "test" "misc/*" "performance" "swp$" "src/lex$" "task-.*.tar.gz"
"commit.h" "cmake.h$" "\\\\.gitmodules" "src/libshared/\\\\.git" ".github/" ".*\\\\.gitignore$" "docker-compose.yml" "\\\\.git/")
include (CPack)

2093
Cargo.lock generated Normal file

File diff suppressed because it is too large Load Diff

7
Cargo.toml Normal file
View File

@@ -0,0 +1,7 @@
[workspace]
members = [
"src/taskchampion-cpp",
]
resolver = "2"

133
ChangeLog
View File

@@ -1,4 +1,134 @@
------ current release ---------------------------
3.2.0 -
- Support for the journal in `task info` has been restored (#3671) and the
task info output no longer contains `tag_` values (#3619).
- The `rc.weekstart` value now affects calculation of week numbers in
expressions like `2013-W49` (#2654).
- Build-time flag `ENABLE_TLS_NATIVE_ROOTS` will cause `task sync` to use the
system TLS roots instead of its built-in roots to authenticate the server (#3660).
- The output from `task undo` is now more human-readable. The `undo.style`
configuraiton option, which has had no effect since 3.0.0, is now removed (3672).
- Fetching pending tasks is now more efficient (#3661).
Thanks to the following people for contributions to this release:
- Denis Zh.
- Dustin J. Mitchell
- Fredrik Lanker
- Gagan Nagaraj
- Jan Christian Grünhage
- Scott Mcdermott
- Thomas Lauf
- Tobias Predel
------ old releases ------------------------------
3.1.0 -
- Support for `task purge` has been restored, and new support added for automatically
expiring old tasks. (#3540, #3546, #3556)
- `task news` is now better behaved, and can be completely disabled.
- Multiple imports of the same UUID will now generate a warning. (#3560)
- The `sync.server.url` config replaces `sync.server.origin` and allows a URL
containing a path. (#3423)
- The new `bubblegum-256.theme` has improved legibility and contrast over
others. (#3505)
- Warnings regarding `.data` files are only show for reports. (#3473)
- Inherited urgency is correctly calculated to make parents more urgent than
children (#2941)
- Task completion commands no longer trigger hooks (#3133)
Thanks to the following people for contributions to this release:
- Adrian Galilea
- Adrian Sadłocha
- Andonome
- Christian Clauss
- Dominik Rehák
- Dustin J. Mitchell
- Felix Schurk
- Hector Dearman
- Joseph Coffa
- koleesch
- Maarten Aertsen
- mattsmida
- Philipp Oberdiek
- Sebastian Carlos
- sleepy_nols
- Steve Dondley
- Will R S Hansen
3.0.2 -
- Fix an accidentally-included debug print which polluted output of
reports with the Taskwarrior version (#3389)
3.0.1 -
- Fix an error in creation of the 3.0.0 tarball which caused builds to fail (#3302)
- Improvements to `task news`, including notes for the 3.0.0 release
- Minor improvements to documentation and error handling
- Fix incorrect task ID of 0 when using hooks (#3339)
- Issue a warning if .data files remain (#3321)
3.0.0 -
- [BREAKING CHANGE] the sync functionality has been rewritten entirely, and
no longer supports taskserver/taskd. Instead, the recommended solution is
a cloud-storage backend, although `taskchampion-sync-server` is also
available.
See https://taskwarrior.org/docs/upgrade-3/ for information on upgrading to
Taskwarrior 3.0.
The following config options are no longer supported:
- `debug.tls`
- `taskd.ca`
- `taskd.certificate`
- `taskd.ciphers`
- `taskd.credentials`
- `taskd.key`
- `taskd.server`
- `taskd.trust`
The Taskwarrior build no longer requires GnuTLS. The build option
`ENABLE_SYNC=OFF` is also no longer supported; sync support is always built
in.
Deep thanks to the following for contributions to this work:
- Akash Shanmugaraj
- Andrew Savchenko
- Dathan Bennett
- Dustin Mitchell
- dbr/Ben
- Felix Schurk
- Isaac Wyatt
- Nathan Luong
- Nikos Koukis
- Pablo Baeyens
- Ravi Sawlani
- ryneeverett
- Simon Fraser
- TW #2732 Fix urgency inheritance for negative-urgency tasks.
Thanks to Jackson Abascal for contributing.
- TW #2763 `task show` now shows `hooks.location.
Thanks to rollniak for reporting and sec65 for contributing.
- TW #2765 Fix leading space before urgency value in `task info`.
Thanks to Dominik Rehák for contributing.
- TW #2780 Fix formatting of countdown-style dates
Thanks to Dominik Rehák for contributing.
- TW #2826 Fix issue with filter not applied correctly during `task _tags` command
Thanks to Nikos Koukis for contributing.
- TW #3052 Parsing of timestamp values now uses 64-bit integers, avoiding
issues in the year 2032.
Thanks to Bernhard M. Wiedemann for contributing.
- TW #3068 Fix fish completion.
Thanks to Michal Koutný for contributing.
2.6.2 -
- TW #502 Sequence of IDs doesn't work with attribute "depends"
@@ -175,8 +305,6 @@
Thanks to bharatvaj for contributing.
- TW #2581 Config entry with a trailing comment cannot be modified
------ old releases ------------------------------
2.5.3 (2021-01-05) - 2f47226f91f0b02f7617912175274d9eed85924f
- #2375 task hangs then dies when certain tasks are present in a report
@@ -2714,4 +2842,3 @@ regular usage to determine which features were needed or unnecessary.]
- Usage.
------ start -----------------------------------

View File

@@ -1,146 +1 @@
# How to Build 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)
* gnutls (optional)
* python 3 (optional, for running the test suite)
## 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'
```
## Running Test Suite:
```
$ cd test
$ make VERBOSE=1 # Shows details
$ ./run_all # Runs all tests silently > all.log
$ ./problems # Enumerate test failures in all.log
```
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.
If you send a patch (support@gothenburgbitfactory.org), make sure that patch is made
against git HEAD on the development branch. We cannot apply patches made
against the tarball source, or master.
# General Statement
This file is intended to convey the current efforts, priorities and needs of
the code base. It is for anyone looking for a way to start contributing.
Here are many ways to contribute that may not be obvious:
* Use Taskwarrior, become familiar with it, and make suggestions. There are
always ongoing discussions about new features and changes to existing
features.
* Join us in the #taskwarrior IRC channel on freenode.net or libera.chat.
Many great ideas, suggestions, testing and discussions have taken place
there. It is also the quickest way to get help, or confirm a bug.
* Review documentation: there are man pages, online articles, tutorials and
so on, and these may contain errors, or they may not convey ideas in the
best way. Perhaps you can help improve it. Contact us - documentation is
a separate effort from the code base, and includes all web sites, and all
are available as git repositories.
* Take a look at the bug database, and help triage the bug list. This is a
review process that involves confirming bugs, providing additional data,
information or analysis. Bug triage is very useful and much needed. You
could check to see that an old bug is still relevant - sometimes they are
not.
* Review the source code, and point out inefficiencies, problems, unreadable
functions, bugs and assumptions.
* Fix a bug. For this you'll need C++ and Git skills. We welcome all bug
fixes, provided the work is done well and doesn't create other problems or
introduce new dependencies. We recommend talking to us before starting.
Seriously.
* Add unit tests. Unit tests are possibly the most useful contributions of
all, because they not only improve the quality of the code, but prevent
future regressions, therefore maintaining quality of subsequent releases.
Plus, broken tests are a great motivator for us to fix the causal defect.
You'll need Python skills.
* Add a feature. Well, let's be very clear about this: adding a feature is
not usually well-received, and if you add a feature and send a patch, it
will most likely be rejected. The reason for this is that there are many
efforts under way, in various code branches. There is a very good chance
that the feature you add is either already in progress, or being done in a
way that is more fitting when considering other work in progress. So if
you want to add a feature, please don't. Start by talking to us, and find
out what is currently under way or planned. You might find that we've
already rejected such a feature for some very good reasons. So please
check first, so we don't duplicate effort or waste anyone's time.
* Spread the word. Help others become more effective at managing tasks.
* Encouragement. Tell us what works for you, and what doesn't. Tell us about
your methodology for managing tasks. It's all useful information.
* Request a feature. This not only tells us that you think something is
missing from the software, but gives us insights into how you use it.
Plus, you might get your feature implemented.
# Unit Tests Needed
There are always more unit tests needed. More specifically, better unit tests
are always needed. The convention is that there are four types of unit test:
1. High level tests that exercise large features, or combinations of commands.
For example, dependencies.t runs through a long list of commands that test
dependencies, but do so by using 'add', 'modify', 'done' and 'delete'.
1. Regression tests that ensure certain bugs are fixed and stay fixed. These
tests are named tw-NNNN.t where NNNN refers to the bug number. While it is
not worth creating tests for small fixes like typos, it is for logic
changes.
1. Small feature tests. When small features are added, we would like small,
low-level feature tests named feature.t, with a descriptive name and
focused tests.
1. Code tests. These are tests written in C++ that exercise C++ objects, or
function calls. These are the lowest level tests. It is important that
these kind of tests be extensive and thorough, because the software depends
on this code the most.
The tests are written in Python, Bash and C++, and all use TAP.
## Tests needed
* Take a look at the bug database (https://github.com/GothenburgBitFactory/taskwarrior/issues)
and notice that many issues, open and closed, have the "needsTest" label.
These are things that we would like to see in the test suite, as regression
tests.
All new unit tests should follow the test/template.t standard.
# Patches
Patches are encouraged and welcomed. Either send a pull request on Github or
email a patch to support@taskwarrior.org. A good patch:
* Maintains the MIT license, and does not contain code lifted from other
sources. You will have written 100% of the code in the patch, otherwise
we cannot maintain the license.
* Precisely addresses one issue only.
* Doesn't break unit tests. This means yes, run the unit tests.
* Doesn't introduce dependencies.
* Is accompanied by new or updated unit tests, where appropriate.
* Is accompanied by documentation changes, where appropriate.
* Conforms to the prevailing coding standards - in other words, it should
fit in with the existing code.
A patch may be rejected for violating any of the above rules, and more.
Bad patches may be accepted and modified depending on work load and mood. It
is possible that a patch may be rejected because it conflicts in some way with
plans or upcoming changes. Check with us first, before sinking time and effort
into a patch.
See [Developing Taskwarrior](./doc/devel/contrib/README.md).

31
INSTALL
View File

@@ -20,20 +20,21 @@ You will need a C++ compiler that supports full C++17, which includes:
You will need the following libraries:
- libuuid (not needed for OSX)
- gnutls (can be optional - see '"sync" command' below)
You will need a Rust toolchain of the Minimum Supported Rust Version (MSRV):
- rust 1.73.0
Basic Installation
------------------
Briefly, these shell commands will unpack, build and install Taskwarrior:
$ tar xzf task-X.Y.Z.tar.gz [1]
$ cd task-X.Y.Z [2]
$ cmake -DCMAKE_BUILD_TYPE=release . [3]
$ make [4]
$ sudo make install [5]
$ cd .. ; rm -r task-X.Y.Z [6]
$ tar xzf task-X.Y.Z.tar.gz [1]
$ cd task-X.Y.Z [2]
$ cmake -S . -B build -DCMAKE_BUILD_TYPE=Release . [3]
$ cmake --build build [4]
$ sudo cmake --install build [5]
$ cd .. ; rm -r task-X.Y.Z [6]
These commands are explained below:
@@ -89,20 +90,6 @@ get absolute installation directories:
CMAKE_INSTALL_PREFIX/TASK_MAN5DIR /usr/local/share/man/man5
"sync" command
--------------
By default, GnuTLS support is required, which enables the "sync" command.
For Debian based distributions, installing "libgnutls-dev" is sufficient.
In order to build Taskwarrior without "sync" support, call cmake with the
"-DENABLE_SYNC=OFF" flag:
$ cmake . -DENABLE_SYNC=OFF
and proceed as described in "Basic Installation".
Uninstallation
--------------
@@ -161,7 +148,7 @@ OpenBSD
WASM
Using the Emscripten compiler, you can achieve it like this:
cmake -DCMAKE_CXX_COMPILER=emcc -DENABLE_SYNC=OFF -DCMAKE_BUILD_TYPE=release -DENABLE_WASM=ON \
cmake -DCMAKE_CXX_COMPILER=emcc -DCMAKE_BUILD_TYPE=release -DENABLE_WASM=ON \
-DCMAKE_EXE_LINKER_FLAGS="-m32 -s NO_DYNAMIC_EXECUTION=1 -s WASM=1 -s NO_EXIT_RUNTIME=1 -s INVOKE_RUN=0" \
-DCMAKE_CXX_FLAGS_RELEASE="-O2 -m32"

View File

@@ -21,4 +21,3 @@ THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

152
NEWS
View File

@@ -1,152 +0,0 @@
New Features in Taskwarrior 2.6.0
- The logic behind new-uuid verbosity option changed. New-uuid now overrides
new-id if set and will cause Taskwarrior to display UUIDs instead of IDs
for new tasks (machine friendly).
- If ~/.taskrc is not found, Taskwarrior will look for its configuration in
$XDG_CONFIG_HOME/task/taskrc (defaulting to ~/.config/task/taskrc). This
allows users to setup their Taskwarrior to follow XDG standard without
using config overrides.
- Newer Unicode characters, such as emojis are correctly handled and displayed.
Taskwarrior now supports all Unicode characters up to Unicode 12.
- Datetime values until year 9999 are now supported.
Duration values of up to 1 000 000 years are now supported.
- 64-bit numeric values (up to 9,223,372,036,854,775,807) are now supported.
- Later/someday named datetime values now resolve to 9999-12-30 (instead of
2038-01-18).
- Calendar now supports displaying due dates until year 9999.
- Calendar now displays waiting tasks with due dates on the calendar.
- Calendar supports highlighting days with scheduled tasks.
- Multi-day holidays are now supported.
- Holiday data files for fr-CA, hu-HU, pt-BR, sk-SK and sv-FI locales are now
generated and shipped with Taskwarrior.
- The task edit command can now handle multi-line annotations and UDAs in a
user friendly way, withouth having to handle with JSON escaping of special
chars.
- A large portion of currently known parser-related issues was fixed.
- The taskrc file now supports relative paths, which are evaluated with
respect to (a) current directory, (b) taskrc directory and (c) now also the
installation directory of configuration files.
- The currently selected context is now applied for "task add" and "task log"
commands. Section on contexts in the manpage was updated to describe this
functionality.
- Users can specify per-context specific overrides of configuration variables.
- The `task import` command can now accept annotations with missing entry
values. Current time will be assumed.
- The new 'by' filter attribute modifier compares using '<=' rather than '<'
as 'before' uses. This allows the last second of the day to match with
'due.by:eod', which it would not otherwise. It also works with
whole units like days, e.g. 'add test due:2021-07-17' would not match
'due.before:tomorrow' (on the 16th), but would match 'due.by:tomorrow'.
- Waiting is now an entirely "virtual" concept, based on a task's
'wait' property and the current time. Task is considered "waiting" if its
wait attribute is in the future. TaskWarrior no longer explicitly
"unwaits" a task (the wait attribute is not removed once its value is in
the past), so the "unwait' verbosity token is no longer available.
This allows for filtering for tasks that were waiting in the past
intervals, but are not waiting anymore.
- The configuration file now supports environment variables.
- Taskwarrior can now handle displaying tasks in windows with limited width,
even if columns contain long strings (like URLs).
- The nag message is emitted at most once per task command, even with bulk
operations. Additionally, the urgency of the task considered is taken
before the completion, not after.
- The export command now takes an optional argument that references an
existing report. As such, "task export <report>" command will export
the same tasks that "task <report>" prints, and in the same order.
- The burndown command now supports non-cumulative display, where tasks only
get plotted within the interval segment when they got completed.
New Commands in Taskwarrior 2.6.0
- The 'news' command will guide the user through important release notes
anytime a new version of Taskwarrior is installed. It provides personalized
feedback, deprecation warnings and usage advice, where applicable.
New Configuration Options in Taskwarrior 2.6.0
- The context definitions for reporting commmands are now stored in
"context.<name>.read". Context definitions for write commands are now
supported using "context.<name>.write" configuration variable.
- The context-specific configuration overrides are now supported. Use
context.<name>.rc.<key>=<value> to override, such as
context.work.rc.urgency.blocking=5.0 to override the value of urgency.blocking
when the 'work' context is active.
- Each report (and the timesheet command) can explicitly opt-out from the
currently active context by setting the report.<name>.context variable to 0
(defaults to 1). Useful for defining universal reports that ignore
currently set context, such as 'inbox' report for GTD methodology.
- Multi-day holidays are now supported. Use holiday.<name>.start=<date> and
holiday.<name>.end=<date> to specify a range-based holiday, such as a
vacation.
- Verbosity token 'default' was introduced in order to display information
about default actions.
- The new burndown.cumulative option can be used to toggle between
non-cumulative and cumulative version of the burndown command.
- The new color.calendar.scheduled setting can be used to control the
highlighting color of days in the calendar that have scheduled tasks.
Newly Deprecated Features in Taskwarrior 2.6.0
- The 'PARENT' and 'CHILD' virtual tags are replaced by 'TEMPLATE' and 'INSTANCE'.
- The 'waiting' status is now deprecated. We recommend using +WAITING virtual tag
or wait-attribute based filters, such as 'wait.before:eow' instead.
- The configuration variable 'monthsperline' is deprecated. Please use
'calendar.monthsperline' instead.
Fixed regressions in 2.6.0
- The "end of <date>" named dates ('eod', 'eow', ...) were pointing to the
first second of the next day, instead of last second of the referenced
interval. This was a regression introduced in 2.5.2.
- The "eow" and "eonw" were using a different weekday as a reference. This
was a regeression introduced in 2.5.2.
- The rc.verbose=<value> configuration override was applied only if it were
the first configuration override. In #2247, this manifested itself as
inability to supress footnotes about the overrides, and in #1953 as failure
to force task to display UUIDs of on task add. This was a regression
introduced in 2.5.2.
- The attribute values of the form "<attribute name>-<arbitrary string>", for
example "due-nextweek" or "scheduled-work" would fail to parse (see
#1913). This was a regression introduced in 2.5.1.
- The capitalized versions of named dates (such as Monday, February or
Tomorrow) are again supported. This was a regression introduced in 2.5.2.
- The duration periods are converted to datetime values using the
current time as the anchor, as opposed to the beginning of unix time.
This was a regression in 2.5.2.
- Filtering for attribute values containing dashes and numbers (such as
'vs.2021-01', see #2392) or spaces (such as "Home renovation", see #2388)
is again supported. This was a regression introduced in 2.4.0.
Removed Features in 2.6.0
-
Other notable changes in 2.6.0
- C++17 compatible compiler is now required (GCC 7.1 or older / clang 5.0 or older).
Known Issues
- https://github.com/GothenburgBitFactory/taskwarrior
Taskwarrior 2.6.0 has been built and tested on the following configurations:
* Archlinux
* OpenSUSE
* macOS 10.15
* Fedora (31, 32, 33, 34)
* Ubuntu (18.04, 20.04, 21.04)
* Debian (Stable, Testing)
* CentOS (7, 8)
However, we expect Taskwarrior to work on other platforms as well.
---
While Taskwarrior has undergone testing, bugs are sure to remain. If you
encounter a bug, please enter a new issue at:
https://github.com/GothenburgBitFactory/taskwarrior

View File

@@ -2,11 +2,11 @@
<img src="https://avatars.githubusercontent.com/u/36100920?s=200&u=24da05914c20c4ccfe8485310f7b83049407fa9a&v=4"></br>
[![GitHub Actions build status](https://github.com/GothenburgBitFactory/taskwarrior/workflows/tests/badge.svg?branch=develop)](https://github.com/GothenburgBitFactory/taskwarrior/actions)
[![Coverage Status](https://coveralls.io/repos/github/GothenburgBitFactory/taskwarrior/badge.svg?branch=develop)](https://coveralls.io/github/GothenburgBitFactory/taskwarrior?branch=develop)
[![Release](https://img.shields.io/github/v/release/GothenburgBitFactory/taskwarrior)](https://github.com/GothenburgBitFactory/taskwarrior/releases/latest)
[![Release date](https://img.shields.io/github/release-date/GothenburgBitFactory/taskwarrior)](https://github.com/GothenburgBitFactory/taskwarrior/releases/latest)
[![GitHub Sponsors](https://img.shields.io/github/sponsors/GothenburgBitFactory?color=green)](https://github.com/sponsors/GothenburgBitFactory/)
</br>
[![Twitter](https://img.shields.io/twitter/follow/taskwarrior?style=social)](https://twitter.com/taskwarrior)
</div>
## Taskwarrior
@@ -20,7 +20,7 @@ with an active and quite vast [ecosystem of tools, hooks and
extensions](https://taskwarrior.org/tools/).
## Install
[![Arch](https://img.shields.io/archlinux/v/community/x86_64/task)](https://archlinux.org/packages/community/x86_64/task/)
[![Arch](https://img.shields.io/archlinux/v/extra/x86_64/task)](https://archlinux.org/packages/extra/x86_64/task/)
[![Debian](https://img.shields.io/debian/v/task/testing)](https://packages.debian.org/search?keywords=task&searchon=names&suite=all&section=all)
[![Fedora](https://img.shields.io/fedora/v/task)](https://bodhi.fedoraproject.org/updates/?packages=task)
[![Homebrew](https://img.shields.io/homebrew/v/task)](https://formulae.brew.sh/formula/task#default)
@@ -31,23 +31,17 @@ Windows](https://taskwarrior.org/download/). Check out the latest available
packages in repositories of your OS distribution of choice [on
Repology](https://repology.org/project/taskwarrior/versions).
Alternatively, you can build Taskwarrior from source.
Alternatively, you can [build Taskwarrior from source](doc/devel/contrib).
## Documentation
The [online documentation](https://taskwarrior.org/docs), downloads, news and
more are available on our website, [taskwarrior.org](https://taskwarrior.org).
We also recommend following [@taskwarrior on
Twitter](https://twitter.com/taskwarrior), where we share info about new
features, releases and various tips and tricks for new Taskwarrior users.
## Community
[![Twitter](https://img.shields.io/twitter/follow/taskwarrior?style=social)](https://twitter.com/taskwarrior)
[![Reddit](https://img.shields.io/reddit/subreddit-subscribers/taskwarrior?style=social)](https://reddit.com/r/taskwarrior/)
[![Libera.chat](https://img.shields.io/badge/IRC%20libera.chat-online-green)](https://web.libera.chat/#taskwarrior)
[![Discord](https://img.shields.io/discord/796949983734661191?label=discord)](https://discord.gg/eRXEHk8w62)
[![Github discussions](https://img.shields.io/github/discussions/GothenburgBitFactory/taskwarrior?label=GitHub%20discussions)](https://github.com/GothenburgBitFactory/taskwarrior/discussions)
[![Reddit](https://img.shields.io/reddit/subreddit-subscribers/taskwarrior?style=social)](https://reddit.com/r/taskwarrior/)
Taskwarrior has a lively community on many places on the internet.
@@ -56,54 +50,8 @@ Github](https://github.com/GothenburgBitFactory/taskwarrior/discussions). For
other support options, take a look at
[taskwarrior.org/support](https://taskwarrior.org/support)
For code contributions, please use pull requests, or alternately send your code patches to
[support@gothenburgbitfactory.org](mailto:support@gothenburgbitfactory.org)
## Branching Model
We use the following branching model:
* `stable` is a branch containing the content of the latest release. Building
from here is the same as building from the latest tarball, or installing a
binary package. No development is done on the `stable` branch.
* `develop` is the current development branch. All work is done here, and upon
release it will be merged to `stable`. While development branch is not
stable, we utilize CI to ensure we're at least not merging improvements that
break existing tests, and hence should be relatively safe. We still recommend
making backups when using the development branch.
## Installing
There are many binary packages available, but to install from source requires:
* git
* cmake
* make
* C++ compiler, currently gcc 7.1+ or clang 5.0+ for full C++17 support
* libuuid
* GnuTLS (optional, required for sync)
Download the tarball, and expand it:
$ curl -O https://taskwarrior.org/download/task-2.6.2.tar.gz
$ tar xzf task-2.6.2.tar.gz
$ cd task-2.6.2
Or clone this repository:
$ git clone --recursive -b stable https://github.com/GothenburgBitFactory/taskwarrior.git
$ cd taskwarrior
Then build:
$ cmake -DCMAKE_BUILD_TYPE=release .
...
$ make
...
[$ make test]
...
$ sudo make install
For code contributions, please use pull requests.
See [Contributing to Taskwarrior](doc/devel/contrib) for more details.
## Contributing
[![Contributors](https://img.shields.io/github/contributors/GothenburgBitFactory/taskwarrior)](https://github.com/GothenburgBitFactory/taskwarrior/graphs/contributors)
@@ -112,8 +60,7 @@ Then build:
Your contributions are especially welcome.
Whether it comes in the form of code patches, ideas, discussion, bug reports, encouragement or criticism, your input is needed.
Visit [Github](https://github.com/GothenburgBitFactory/taskwarrior) and participate in the future of Taskwarrior.
See further development documentation in [`doc/devel`](./doc/devel).
## Sponsoring
[![GitHub Sponsors](https://img.shields.io/github/sponsors/GothenburgBitFactory?color=green)](https://github.com/sponsors/GothenburgBitFactory/)

13
SECURITY.md Normal file
View File

@@ -0,0 +1,13 @@
# Security
To report a vulnerability, please contact [dustin@cs.uchicago.edu](mailto:dustin@cs.uchicago.edu), you may use GPG public-key D8097934A92E4B4210368102FF8B7AC6154E3226 which is available [here](https://keybase.io/djmitche/pgp_keys.asc?fingerprint=d8097934a92e4b4210368102ff8b7ac6154e3226).
Initial response is expected within ~48h.
We kindly ask to follow the responsible disclosure model and refrain from sharing information until:
1. Vulnerabilities are patched in Taskwarrior + 60 days to coordinate with distributions.
2. 90 days since the vulnerability is disclosed to us.
We recognise the legitimacy of public interest and accept that security researchers can publish information after 90-days deadline unilaterally.
We will assist with obtaining CVE and acknowledge the vulnerabilities reported.

View File

@@ -38,9 +38,6 @@
#cmakedefine GNUHURD
#cmakedefine UNKNOWN
/* Found the GnuTLS library */
#cmakedefine HAVE_LIBGNUTLS
/* Found tm_gmtoff */
#cmakedefine HAVE_TM_GMTOFF
@@ -61,4 +58,3 @@
/* Undefine this to eliminate the execute command */
#define HAVE_EXECUTE 1

View File

@@ -1,4 +1,4 @@
cmake_minimum_required (VERSION 3.0)
cmake_minimum_required (VERSION 3.22)
message ("-- Configuring man pages")
set (man_FILES task-color.5 task-sync.5 taskrc.5 task.1)
foreach (man_FILE ${man_FILES})

9
doc/README.md Normal file
View File

@@ -0,0 +1,9 @@
# Documentation
This directory contains Taskwarrior documentation that is built and installed along with the executable:
* [`man`](man/) contains the source for the Taskwarrior manual pages.
* [`rc`](rc/) contains rcfiles that will be installed in `/usr/share/doc/task/rc` or equivalent.
* [`ref`](ref/) contains reference documentation that will be installed in `/usr/share/doc/task` or equivalent.
It also contains [developer documentation](devel/README.md) with a high-level view of how Taskwarrior development is done and how the pieces of the system fit together.

16
doc/devel/README.md Normal file
View File

@@ -0,0 +1,16 @@
# Development Documentation
This directory contains the _development_ documentation for Taskwarrior.
For all other documenation, see https://taskwarrior.org.
* [Contributing To Taskwarrior](contrib/README.md)
* [Taskwarrior RFCs](rfcs/README.md)
## Taskwarrior and TaskChampion
As of the 3.0 release, Taskwarrior uses TaskChampion to manage task data.
Find documentation of TaskChampion here:
* [TaskChampion Repository](https://github.com/GothenburgBitFactory/taskchampion/)
* [TaskChampion Book](https://gothenburgbitfactory.github.io/taskchampion/)
* [TaskChampion API Documentation](https://docs.rs/taskchampion)

View File

@@ -0,0 +1,8 @@
# Contributing To Taskwarrior
* [Welcome, Open Source Contributor](first_time.md)
* [Developing Taskwarrior](development.md)
* [Coding Style](coding_style.md)
* [Branching Model](branching.md)
* [Rust and C++](rust-and-c++.md)
* [Releasing Taskwarrior](releasing.md)

View File

@@ -0,0 +1,13 @@
Software development typically requires a standardized branching model, to manage complexity and parallel efforts.
The branching model can be a source of confusion for developers, so this document describes how branching is used.
We use the following branching model:
* `develop` is the current development branch. All work is done here, and upon
release it will be branched to a release branch. While `develop` is not
stable, we utilize CI to ensure we're at least not merging improvements that
break existing tests, and hence should be relatively safe. We still recommend
making backups when using the development branch.
* The most recent minor release is in a branch named after the release, e.g., `2.7.0`.
This branch is used for bug-fixes of the latest release.

View File

@@ -0,0 +1,19 @@
# Coding Style
The coding style used for the Taskwarrior is based on the [Google C++ Style Guide](https://google.github.io/styleguide/cppguide.html), with small modifications in the line length.
# Automatic formatting
In order to have consistancy and automatic formatting [pre-commit](https://pre-commit.com) is used to apply [clang-format](https://clang.llvm.org/docs/ClangFormat.html) and [black](https://github.com/psf/black) are used.
In order to set them up locally please run:
```python
pip install pre-commit
pre-commit install
```
For more information refer to the [quick-start of pre-commit](https://pre-commit.com/#quick-start).
The setup is also included in the CI, hence if one can not install it automatically then the CI will take care for it in the PR.
## Rust
Rust code should be formatted with `rustfmt` and generally follow Rust style guidelines.

View File

@@ -0,0 +1,96 @@
# Developing Taskwarrior
## Satisfy the Requirements:
* CMake 3.22 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)
* Rust 1.64.0 or higher (hint: use https://rustup.rs/ instead of using your system's package manager)
## Install Optional Dependencies:
* python 3 (for running the test suite)
* pre-commit (for applying formatting changes locally)
* clangd or ccls (for C++ integration in many editors)
* rust-analyzer (for Rust integration in many editors)
## Obtain and Build Code:
The following documentation works with CMake 3.14 and later.
Here are the minimal steps to get started, using an out of source build directory and calling the underlying build tool over the CMake interface.
See the general CMake man pages or the [cmake-documentation](https://cmake.org/cmake/help/latest/manual/cmake.1.html) for more,
## Basic Building
```sh
git clone https://github.com/GothenburgBitFactory/taskwarrior
cd taskwarrior
cmake -S . -B build -DCMAKE_BUILD_TYPE=RelWithDebInfo
cmake --build build
```
Other possible build types can be `Release` and `Debug`.
This will build several executables, but the one you want is probably `src/task`, located in the `build` directory.
When you make changes, just run the last line again.
### Building a specific target
For **only** building the `task` executable, use
```sh
cmake --build build --target task_executable
```
### Building in parallel
If a parallel build is wanted use
```sh
cmake --build build -j <number-of-jobs>
```
### Building with clang as compiler
```sh
cmake -S . -B build-clang\
-DCMAKE_C_COMPILER=clang\
-DCMAKE_CXX_COMPILER=clang++
cmake --build build-clang
```
## Run the Test Suite:
For running the test suite [ctest](https://cmake.org/cmake/help/latest/manual/ctest.1.html) is used.
Before one can run the test suite the `task_executable` must be built.
After that also the `test_runner` target must be build, which can be done over:
```sh
cmake --build build --target test_runner
```
Again you may also use the `-j <number-of-jobs>` option for parallel builds.
Now one can invoke `ctest` to run the tests.
```sh
ctest --test-dir build
```
This would run all the test in serial and might take some time.
### Running tests in parallel
```sh
ctest --test-dir build -j <number-of-jobs>
```
Further it is adviced to add the `--output-on-failure` option to `ctest`, to recieve a verbose output if a test is failing as well as the `--rerun-failed` flag, to invoke in subsequent runs only the failed ones.
### Running specific tests
For this case one can use the `-R <regex>` or `--tests-regex <regex>` option to run only the tests matching the regular expression.
Running only the `cpp` tests can then be achieved over
```sh
ctest --test-dir build -R cpp
```
or running the `variant_*` tests
```sh
ctest --test-dir build -R variant
```
### Repeating a test case
In order to find sporadic test failures the `--repeat` flag can be used.
```sh
ctest --test-dir build -R cpp --repeat-until-fail 10
```
There are more options to `ctest` such as `--progress`, allowing to have a less verbose output.
They can be found in the [ctest](https://cmake.org/cmake/help/latest/manual/ctest.1.html) man page.
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.

View File

@@ -0,0 +1,68 @@
# Welcome, Open Source Contributor
Welcome, potential new Open Source contributor! This is a guide to show you exactly how to make a contribution, and will lead you through the entire process.
There are many people who wish to start contributing, but don't know how or where to start.
If this might be the case for you, then please read on, this guide is for you.
Because we want you to join in the fun with Open Source - it can be fun and rewarding, improve your skills, or just give you a way to contribute back to a project.
## How to Help
Help is needed in all areas of Taskwarrior development - design, coding, testing, support and marketing.
Applicants must be friendly.
Perhaps you are looking to help, but don't know where to start.
Perhaps you have skills we are looking for, here are ways you may be able to help:
- Use Taskwarrior, become familiar with it, and make suggestions.
We get great feedback from both new users and veteran users.
New users have a fresh approach that we can no longer achieve, while veteran users develop clever and crafty ways to use the product.
- Report bugs and odd behavior when you see it.
We don't necessarily know it's broken, unless you tell us.
- Suggest enhancements.
We get lots of these, and it's great.
Some really good ideas have been suggested and implemented.
Sure, some are out of scope, or plain crazy, but the stream of suggestions is fascinating to think about.
- Participate in the [bug tracking](https://github.com/GothenburgBitFactory/taskwarrior/issues) database, to help others and maybe learn something yourself.
- Proofread the documentation and man pages.
- Improve the documentation.
- Improve the man pages.
- Help improve the tutorials.
Make your own tutorial.
- Confirm a bug.
Nothing gets fixed without confirmation.
- Refine a bug.
Provide relevant details, elaborate on the behavior.
- Fix a bug.
Send a patch.
For this you'll need to know some C++ or Rust, and understand the [GitHub flow](https://docs.github.com/en/get-started/quickstart/github-flow).
See [Developing Taskwarrior](./development.md) for more information.
We welcome all bug fixes, provided the work is done well and doesn't create other problems or introduce new dependencies.
We recommend talking to us before starting: we are happy to help you out!
- Write a unit test.
Unit tests are possibly the most useful contributions of all, because they not only improve the quality of the code, but prevent future regressions, therefore maintaining quality of subsequent releases.
Plus, broken tests are a great motivator for us to fix the causal defect.
You'll need Python skills.
- Spread the word.
Help others become more effective at managing tasks.
Share your methodology, to inspire others.
- Encouragement.
Tell us what works for you, and what doesn't.
It's all good.
- Donate! Help offset costs.
Please remember that we need contributions from all skillsets, however small.
Every contribution helps.

View File

@@ -0,0 +1,26 @@
# Releasing Taskwarrior
To release Taskwarrior, follow this process:
- Examine the changes since the last version, and update `src/commands/CmdNews.cpp` accordingly.
There are instructions at the top of the file.
- Create a release PR
- Update version in CMakeLists.txt
- Update Changelog
- get this merged
- On `develop` after that PR merges, create a release tarball:
- `git clone . release-tarball`
- `cd release-tarball/`
- `cmake -S. -Bbuild`
- `make -Cbuild package_source`
- copy build/task-*.tar.gz elsewhere and delete the `release-tarball` dir
- NOTE: older releases had a `test-*.tar.gz` but it's unclear how to generate this
- Update `stable` to the released commit and push upstream
- Tag the commit as vX.Y.Z and push the tag upstream
- Find the tag under https://github.com/GothenburgBitFactory/taskwarrior/tags and create a release from it
- Give it a clever title if you can think of one; refer to previous releases
- Include the tarball from earlier
- Update https://github.com/GothenburgBitFactory/tw.org
- Add a new item in `content/news`
- Update `data/projects.json` with the latest version and a fake next version for "devel"
- Update `data/releases.json` with the new version, and copy the tarball into `content/download`.

View File

@@ -0,0 +1,18 @@
# Rust and C++
Taskwarrior has historically been a C++ project, but as of taskwarrior-3.0.0, the storage backend is now provided by a Rust library called TaskChampion.
## TaskChampion
TaskChampion implements storage and access to "replicas" containing a user's tasks.
It defines an abstract model for this data, and also provides a simple Rust API for manipulating replicas.
It also defines a method of synchronizing replicas and provides an implementation of that method in the form of a sync server.
Other applications, besides Taskwarrior, can use TaskChampion to manage tasks.
Taskwarrior is just one application using the TaskChampion interface.
## Taskwarrior's use of TaskChampion
Taskwarrior's interface to TaskChampion is in `src/taskchampion-cpp`.
This links to `taskchampion` as a Rust dependency, and uses [cxx](https://cxx.rs) to build a C++ API for it.
That API is defined, and documented, in `src/taskchampion-cpp/src/lib.rs`, and available in the `tc` namespace in C++ code.

18
doc/devel/rfcs/README.md Normal file
View File

@@ -0,0 +1,18 @@
# Taskwarrior RFCS
In the mid-2010's, Taskwarrior development was organized around RFCs, as a way to invite comment before designs were finalized.
Although these documents were less formal than [IETF RFCs](https://www.ietf.org/rfc) they serve a similar purpose.
In more recent years, use of RFCs has been discontinued, and the documents linked here should be considered historical.
Many were never completely implemented.
* [General Plans](plans.md)
* [Rules System](rules.md)
* [Full DOM Support ](dom.md)
* [Work Week Support](workweek.md)
* [Recurrence](recurrence.md)
* [Taskwarrior JSON Format](task.md)
* [CLI Updates ](cli.md)
* [Taskserver Sync Protocol](protocol.md)
* [Taskserver Message Format](request.md)
* [Taskserver Sync Algorithm](sync.md)
* [Taskserver Client](client.md)

154
doc/devel/rfcs/cli.md Normal file
View File

@@ -0,0 +1,154 @@
---
title: "Taskwarrior - Command Line Interface"
---
## Work in Progress
This design document is a work in progress, and subject to change. Once finalized, the feature will be scheduled for an upcoming release.
# CLI Syntax Update
The Taskwarrior command line syntax is being updated to allow more consistent and predictable results, while making room for new features.
Adding support for arbitrary expressions on the command line has become complicated because of the relaxed syntax of Taskwarrior. While the relaxed syntax allows for a very expressive command line, it also creates ambiguity for the parser, which needs to be reduced.
With some limited and careful changes it will be possible to have a clear and unambiguous command line syntax, which means a predictable and deterministic experience.
It should be stated that for straightforward and even current usage patterns, the command line will likely not change for you. Another goal is to not require changes to 3rd-party software, where possible. Only the more advanced and as-yet unintroduced features will require a more strict syntax. This is why now is an ideal time to tighten the requirements.
## Argument Types
The argument types supported remain the same, adding some new constructs.
* Config file override
* `rc:<file>`
* Configuration override
* `rc:<name>:<value>` Literal value
* `rc:<name>=<value>` Literal value
* `rc:<name>:=<value>` Calculated value
* Tag
* `+<tag>`
* `-<tag>`
* `'+tag one'` Multi-word tag
* Attribute modifier
* `rc:<name>.<modifier>:<value>`
* Modifier is one of:
* `before`
* `after`
* `under`
* `over`
* `above`
* `below`
* `none`
* `any`
* `is`
* `isnt`
* `equals`
* `not`
* `contains`
* `has`
* `hasnt`
* `left`
* `right`
* `startswith`
* `endswith`
* `word`
* `noword`
* Search pattern
* `/<pattern>/`
* Substitution
* `/<from>/<to>/`
* `/<from>/<to>/g`
* Command
* `add`
* `done`
* `delete`
* `list`
* etc.
* Separator
* `--`
* ID Ranges
* `<id>[-&ltid>][,<id>[-&ltid>]...]`
* UUID
* `<uuid>`
* Everything Else
* `<word>`
* `'<word> <word> ...'`
## New Command Line Rules
Certain command line constructs will no longer be supported, and this is imposed by the new rules:
1. Each command line argument may contain only one instance of one argument type, unless that type is `<word>`.
task add project:Home +tag Repair the thing # Good
task add project:Home +tag 'Repair the thing' # Good
task add 'project:Home +tag Repair the thing' # Bad
Putting two arguments into one quoted arg makes that arg a `<word>`.
2. If an argument type contains spaces, it must either be quoted or escaped.
task add project:'Home & Garden' ... # Good
task add 'project:Home & Garden' ... # Good
task add project:Home\ \&\ Garden ... # Good
task add project:Home' & 'Garden ... # Good
task add project:Home \& Garden ... # Bad
The parser will not combine multiple arguments, for example:
task '/one two/' list # Good
task /one two/ list # Bad
task /'one two'/ list # Bad, unless ' is part of the pattern
3. By default, *no* calculations are made, unless the `:=` eval operator is used, and if so, the whole argument may need to be quoted or escaped to satisfy Rule 1.
task add project:3.project+x # Literal
task add project:=3.project+x # DOM reference + concatenation
4. Bare word search terms are no longer supported.
Use the pattern type argument instead.
task /foo/ list # Good
task foo list # Bad
5. Expressions must be a series of arguments, not a quoted string.
task urgency \< 5.0 list # Good
task 'urgency < 5.0 list' # Bad
## Other Changes
Aside from the command line parser, there are other changes needed:
- Many online documents will need to be modified.
- Filters will be automatically parenthesized, so that every command line will now looke like:
task [overrides] [(cli-filter)] [(context-filter)] [(report-filter)] command [modifications]
- There will be more errors when the command line is not understood.
- Ambiguous ISO date formats are dropped.
YYYYMMDD # Bad
YYYY-MM-DD # Good
hhmmss # Bad
hh:mm:ss # Good
- The tutorial videos will be even more out of date, and will be replaced by a large number of smaller demo 'movies'.

392
doc/devel/rfcs/client.md Normal file
View File

@@ -0,0 +1,392 @@
---
title: "Taskwarrior - Creating a Taskserver Client"
---
# Creating a Taskserver Client
A Taskserver client is a todo-list manager.
It may be as simple as a program that captures a single task, as complex as Taskwarrior, or anything in between.
It can be a mobile client, a web application, or any other type of program.
This document describes how such a client would interact with the server.
A client to the Taskserver is a program that manages a task list, and wishes to exchange data with the server so that the task list may be shared.
In order to do this, a client must store tasks locally, upload local changes, download remote changes, and apply remote changes to the local tasks.
The client must consider that there may be no network connectivity, or no desire by the user to synchronize.
The client will need proper credentials to talk to the server.
## Requirements
In this document, we adopt the convention discussed in Section 1.3.2 of [RFC1122](https://tools.ietf.org/html/rfc1122#page-16) of using the capitalized words MUST, REQUIRED, SHOULD, RECOMMENDED, MAY, and OPTIONAL to define the significance of each particular requirement specified in this document.
In brief: "MUST" (or "REQUIRED") means that the item is an absolute requirement of the specification; "SHOULD" (or "RECOMMENDED") means there may exist valid reasons for ignoring this item, but the full implications should be understood before doing so; and "MAY" (or "OPTIONAL") means that this item is optional, and may be omitted without careful consideration.
## Taskserver Account
A Taskserver account must be created.
This process creates a storage area, and generates the necessary credentials.
## Credentials
A Taskserver client needs the following credentials in order to communicate with a server:
- Server address and port
- Organization name
- User name
- Password
- Certificate
- Key
The server address and port are the network location of the server.
An example of this value is:
foo.example.com:53589
In addition to a DNS name, this can be an IPv4 or IPv6 address.
The organization name is an arbitrary grouping, and is typically 'PUBLIC', reflecting the individual nature of server accounts.
Future capabilities will provide functionality that support groups of users, called an organization.
The user name is the full name.
This will be the name used to identify other users in an organization, in a future release.
Example 'John Doe'.
The password is a text string generated by the server at account creation time.
It should be considered a secret.
The certificate is an X.509 PEM file generated by the server at account creation time.
This is used for authentication.
It should be considered a secret.
The key is an X.509 PEM file generated by the server at account creation time.
This is used for encryption.
It should be considered a secret.
These credentials need to be stored on the client, and used during the sync operation.
## Description of a Taskserver Client
This section describes how a client might behave in order to facilitate integration with the Taskserver.
## Encryption
The Taskserver only communicates using encryption.
Therefore all user data is encrypted while in transit.
The Taskserver currently uses [GnuTLS](https://gnutls.org) to support this encryption, and therefore supports the following protocols:
- SSL 3.0
- TLS 1.0
- TLS 1.1
- TLS 1.2
The client may use any library that supports the above.
## Configuration
The client needs to store configuration, which matches the credentials needed for Taskserver communication.
See section 2.1 "Credentials".
The credentials may not be modified by the user without losing server access.
The server:port data may need to be changed automatically following a redirect response from the server.
See section 5 "Server Errors".
## Local Storage
The client needs to store task data locally.
The client will need to be able to find tasks by their UUID and overwrite them.
Uploaded and downloaded task changes will use the [Taskwarrior Data Interchange Format](/docs/design/task).
## Local Changes
Whenever local data is modified, that change MUST be synced with the server.
But this does not have to occur immediately, in fact the client SHOULD NOT assume connectivity at any time.
A client SHOULD NOT also assume that the server is available.
If the server is not available, the local changes should be retained, and the sync operation repeated later.
Ideally the client will give the user full control over sync operations.
Automatically syncing after all local modifications is not recommended.
If a client performs too many sync operations, the server MAY revoke the certificate.
Effectively, the client should maintain a separate list of tasks changed since the last successful sync operation.
Note that tasks have a "modified" attribute, which should be updated whenever a change is made.
This attribute contributes to conflict resolution on the server.
## Remote Changes
When a server sends remote changes to a client, in the response to a sync request, the changes have already been merged by the server, and therefore the client should simply store them intact.
Based on the UUID in the task, the client can determine whether a task is new (and should be added to the local list of tasks), or whether it represents a modification (and should overwrite it's existing entry).
The client MUST NOT perform any merges.
## Sync Key
Whenever a sync is performed, the server responds by sending a sync key and any remote changes.
The sync key is important, and should be included in the next sync request.
The client is REQUIRED to store the sync key in every server response message.
If a client omits the sync key in a sync message, the response will be a complete set of all tasks and modifications.
## Data Integrity
Although a task is guaranteed to contain at least 'entry', 'description' and 'uuid' attributes, it may also contain other known fields, and unknown user-defined fields.
An example might be an attribute named 'estimate'.
If a task is received via sync that contains an attribute named 'estimate', then a client has the responsibility of preserving the attribute intact.
If that data is shown, then it is assumed to be of type 'string', which is the format used by JSON for all values.
Conversely, if a client wishes to add a custom attribute, it is guaranteed that the server and other clients will preserve that attribute.
Using this rule, two clients of differing capabilities can exchange data and still maintain custom attributes.
This is a requirement.
Any client that does not obey this requirement is broken.
## Synchronizing
Synchronizing with the Taskserver consists of a single transaction.
Once an encrypted connection is made with the server, the client MUST compose a [sync request message](/docs/design/request).
This message includes credentials and local changes.
The response message contains status and remote changes, which MUST be stored locally.
## Establishing Encrypted Connection
All communication with the Taskserver is encrypted using the certificate and key provided to each user.
Using the 'server' configuration setting, establish a connection.
## Sync Request
See [sync request message](/docs/design/request).
A sync request MUST contain a sync key if one was provided by a previous sync.
A sync request MUST contain a list of modified tasks, in JSON format (see [Task JSON](/docs/design/task)), if local modifications have been made.
## Sync Response
A sync response WILL contain a 'code' and 'status' header variable, WILL contain a sync key in the payload, and MAY contain a list of tasks from the server in JSON format (see [Task JSON](/docs/design/task)).
## Server Messages
There are cases when the server needs to inform the user of some condition.
This may be anticipated server downtime, for example.
The response message is typically not present, but may be present in the header, containing a string:
...
message: Scheduled maintenance 2013-07-14 08:00UTC for 10 minutes.
...
If such a message is returned by the server, it SHOULD be made available to the user.
This is a recommendation, not a requirement.
## Server Errors
The server may generate many errors (See [Protocol](/docs/design/protocol)), but the following is a list of the ones most in need of special handling:
- 200 Success
- 201 No change
- 301 Redirect
- 430 Access denied
- 431 Account suspended
- 432 Account terminated
- 5xx Error
The 200 indicates success, and that a change was recorded.
The 201 indicates success but no changes were necessary.
The 301 is a redirect message indicating that the client MUST re-request from a new server.
The 43x series messages are account-related.
Any 5xx series code is a server error of some kind.
All errors consist of a code and a status message:
code: 200
status: Success
## Examples
Here are examples of properly formatted request and response messages.
Note that the messages are indented for clarity in this document, but is not the case in a properly formatted message.
Also note that newline characters U+000D are not shown, but are implied by the separate lines.
Because some messages have trailing newline characters, the text is delimited by the 'cut' markers:
foo
The example above illustrates text consisting of:
U+0066 f
U+006F o
U+006F o
U+000D newline
U+000D newline
Note that these values are left unspecified, but should be clear from the context, and the [message format](/docs/design/request) spec:
<size>
<organization>
<user>
<password>
## First Sync
The first time a client syncs, there is (perhaps) no data to upload, and no sync key from a previous sync.
<size>type: sync
org: <organization>
user: <user>
key: <password>
client: task 2.3.0
protocol: v1
Note the double newline character separating header from payload, with an empty payload.
## Request: Sync No Data
Ordinarily when a client syncs, there is a sync key from the previous sync response to send.
This example shows a sync with no local changes, but a sync key from a previous sync.
<size>type: sync
org: <organization>
user: <user>
key: <password>
client: task 2.3.0
protocol: v1
2e4685f8-34bc-4f9b-b7ed-399388e182e1
## Request: Sync Data
This sync request shows a sync key from the previous sync, and a locally modified task.
<size>type: sync
org: <organization>
user: <user>
key: <password>
client: task 2.3.0
protocol: v1
2e4685f8-34bc-4f9b-b7ed-399388e182e1
{"description":"An example","uuid":"8ad2e3db-914d-4832-b0e6-72fa04f6e331",...}
## Response: No Data
If a sync results in no downloads to the client, the response will look like this.
<size>type: response
client: taskd 1.0.0
protocol: v1
code: 200
status: Ok
45da7110-1bcc-4318-d33e-12267a774e0f
Note that there is a sync key which must be stored and used in the next sync request, but there are no remote changes to store.
## Response: Remote Data
This shows a sync response providing a new sync key, and a remote change to two tasks.
<size>type: response
client: taskd 1.0.0
protocol: v1
code: 200
status: Ok
45da7110-1bcc-4318-d33e-12267a774e0f
{"description":"Test data","uuid":"8ad2e3db-914d-4832-b0e6-72fa04f6e331",...}
{"description":"Test data2","uuid":"3b6218f9-726a-44fc-aa63-889ff52be442",...}
Note that the sync key must be stored for the next sync request.
Note that the two changed tasks must be stored locally, and if the UUID in the tasks matches local tasks, then the local tasks must be overwritten.
## Response: Error
<size>type: response
client: taskd 1.0.0
protocol: v1
code: 431
status: Account suspended
Note the double newline character separating header from payload, with an empty payload.
## Response: Relocate
<size>type: response
client: taskd 1.0.0
protocol: v1
code: 301
status: Redirect
info:
Note the 'info' field will contain a ':' string that should be used for all future sync requests.
This indicates that a user account was moved to another server.
Note the double newline character separating header from payload, with an empty payload.
## Response: Message
Occasionally the server will need to convey a message, and will include an additional header variable containing that message.
The server [protocol](/docs/design/protocol) states that the message SHOULD be shown to the user.
This message will be used for system event messages, used rarely, and never used for advertising or promotion.
<size>type: response
client: taskd 1.0.0
protocol: v1
code: 200
status: Ok
message: Scheduled maintenance 2013-07-14 08:00UTC for 10 minutes.
45da7110-1bcc-4318-d33e-12267a774e0f
Note that the same message will likely be included in consecutive responses.
## Reference Implementation
The Taskserver 1.1.0 codebase contains a reference implementation of an SSL/TLS client and server program, which communicate text strings.
taskd.git/src/tls/Makefile # To build the example
taskd.git/src/tls/README # How to run the example
taskd.git/src/tls/TLSClient.cpp # TLS client code
taskd.git/src/tls/TLSClient.h
taskd.git/src/tls/TLSServer.cpp # TLS Server code
taskd.git/src/tls/TLSServer.h
taskd.git/src/tls/c.cpp # Client program
taskd.git/src/tls/s.cpp # Server program
taskd.git/src/tls/text.cpp # Text manipulation
taskd.git/src/tls/text.h # Text manipulation
The Taskwarrior codebase, version 2.4.0, is the reference implementation.
task.git/src/TLSClient.cpp # TLS client code
task.git/src/TLSClient.h
task.git/src/commands/CmdSync.cpp # Sync implementation
task.git/src/commands/CmdSync.h

249
doc/devel/rfcs/dom.md Normal file
View File

@@ -0,0 +1,249 @@
---
title: "Taskwarrior - Full DOM Support"
---
## Work in Progress
This design document is a work in progress, and subject to change.
Once finalized, the feature will be scheduled for an upcoming release.
# Full DOM Support
Taskwarrior currently supports DOM references that can access any stored data item.
The general forms supported are:
[ <id> | <uuid> ] <attribute> [ <part> ]
Examples include:
due
123.uuid
entry.month
123.annotations.0.entry.year
a87bc10f-931b-4558-a44a-e901a77db011.description
Additionally there are references for accessing configuration and system/program level items.
rc.<name>
context.program
context.args
context.width
context.height
system.version
system.os
While this is adequate for data retrieval, we have the possibility of extending it further to include data formats, higher-level constructs, and then to make use of DOM references in more locations.
This contributes to our goal of simplifying Taskwarrior.
## Proposed Format Support
When defining a custom report, the columns shown are defined like this:
report.x.columns=uuid.short,description.oneline ...
This syntax is:
<attribute> [ . <format> ]
If no `format` is specified, then `default` is assumed.
The `src/columns/ColΧ\*` objects are responsible for supporting and rendering these formats.
There is currently no consistency among these formats based on data type.
By incorporating formats into DOM references, we eliminate the need for a separate syntax for custom reports, and provide this:
123.due.iso
123.due.month.short
123.uuid.short
A standard set of formats per data type would be:
Type
Formats
Example
Numeric
default
`123 `
indicator
Based on `rc.<attribute>.indicator` which overrides `rc.numeric.indicator`.
json
`"<attribute>":"<value>"`
String
default
Buy milk
short
Feb
indicator
Based on `rc.<attribute>.indicator` which overrides `rc.string.indicator`.
json
`"<attribute>":"<value>"`
Date
default
Based on `rc.dateformat`
iso
2017-02-20T09:02:12
julian
2457805.12858
epoch
1234567890
age
2min
relative
-2min
remaining
0:02:04
countdown
0:02:04
indicator
Based on `rc.<attribute>.indicator` which overrides `rc.date.indicator`.
json
`"<attribute>":"<value>"`
Duration
default
1wk
iso
P1W
indicator
Based on `rc.<attribute>.indicator` which overrides `rc.duration.indicator`.
json
`"<attribute>":"<value>"`
There will also be a set of attribute-specific formats, similar to the currently supported set:
depends.list
depends.count
description.combined
description.desc
description.oneline
description.truncated
description.count
description.truncated_count
parent.default|long
parent.short
project.full
project.parent
project.indented
status.default|long
status.short
tags.default|list
tags.count
urgency.default|real
urgency.integer
uuid.default|long
uuid.short
Custom report sort criteria will also use DOM references.
This will be augmented by the `+`/`-` sort direction and `/` break indicator, which are not part of the DOM.
## High Level Construct Support
There need to be read-only DOM references that do not correspond directly to stored attributes.
Tasks have emergent properties represented by virtual tags, which will be accessible, in this case returning a `0` or `1`:
123.tags.OVERDUE
Using `rc.due` and the `due` attribute, the `OVERDUE` virtual tag is a combination of the two.
Other examples may include:
task.syncneeded
task.pending.count
task.hooks.installed
## Writable References
When a DOM reference refers to an attribute or RC setting, and does not extend further and reference a component or format, it may be writable.
For example:
rc.hooks # writable
123.description # writable
123.entry.month # not writable, not an attribute
## Data Interchange
The export command can be used to show a filtered set of tasks in JSON format, and this will also be available as a DOM format:
123.json
a87bc10f-931b-4558-a44a-e901a77db011.json
## RC File Support
The RC file (`~/.taskrc`) will support DOM references in values.
This will form a late-bound reference, which is evaluated at runtime, every time.
An example is to make two reports share the same description:
$ task config -- report.ls.description rc.report.list.description
This sets the description for the `ls` report to be a reference to the description of the `list` report.
This reference is not evaluated when the entry is written, but is evaluated every time the value is read, thus providing late-bound behavior.
Then if the description of the `list` report changes, so does that of the `ls` report automatically.
## Implementation Details
These notes list a series of anticipated changes to the codebase.
- The `src/columns/Col*` objects will implement type-specific and attribute-specific DOM support.
DOM reference lookup will defer to the column objects first.
- Some DOM references will be writable, permitting a `_set` command to complement the `_get` command.
- The `Config` object will recognize DOM references in values and perform lookup at read time.
This will require circularity detection.
- `src/DOM.cpp` will provide a memoized function to determine whether a DOM reference is valid.
- `src/DOM.cpp` will provide a function to obtain a DOM reference value, with supporting metadata (type, writable).

436
doc/devel/rfcs/plans.md Normal file
View File

@@ -0,0 +1,436 @@
---
title: "Plans"
---
There are many interconnected features and technologies in Taskwarrior, Taskserver, Tasksh and Timewarrior, each piece having it's own goals.
This matrix allows a simple reading of where things are, and where they are going.
This is a low-resolution time line.
It is subject to change.
It does not constitute a concrete plan.
This is an all-volunteer effort, and scheduling is difficult.
[Last updated 2016-08-08.]
<table class="table table-bordered table-striped">
<tr>
<th>Taskwarrior<br />Technology/Feature</th>
<th>
<span class="label label-success">2.5.1</span><br />
Current<br /><br />
Released 2016-02-24
</th>
<th>
<span class="label label-danger">2.6.0</span><br />
Next<br /><br />
2017
</th>
<th>
<span class="label label-info">2.x</span><br />
Future
</th>
</tr>
<tr>
<td>Core</td>
<td>
<a href="/docs/dom.html">DOM</a><br />
Filters<br />
Expressions<br />
Color Rules<br />
Custom Reports<br />
Annotations<br />
Tags / Virtual Tags<br />
<a href="/docs/context.html">Context</a><br />
</td>
<td>
<a href="/docs/design/recurrence.html">Recurrence</a><br />
Shared library<br />
<code>purge</code> command<br />
</td>
<td>
True Color
</td>
</tr>
<tr>
<td>API</td>
<td>
<a href="/docs/design/task.html">JSON</a><br />
Import<br />
Export<br />
<a href="/docs/hooks.html">Hooks</a><br />
<a href="/docs/hooks2.html">Hooks v2</a><br />
<a href="/docs/dom.html">DOM</a><br />
Helper commands<br />
</td>
<td>
</td>
<td>
<code>on-sync</code> hook<br />
Full DOM<br />
DOM access in rc<br />
<code>$ENV</code> access in rc<br />
Report columns as DOM refs<br />
</td>
</tr>
<tr>
<td>
Attributes<br />
<a href="/docs/udas.html">User Defined Attributes (UDA)</a>
</td>
<td>
<code>modified</code><br />
<code>priority</code> as a UDA<br />
</td>
<td>
<code>template</code><br />
<code>rtype</code><br />
Remove <code>mask</code><br />
Remove <code>imask</code><br />
Remove <code>parent</code><br />
</td>
<td>
<code>org</code><br />
<code>group</code><br />
</td>
</tr>
<tr>
<td>Reports</td>
<td>
Improved layouts<br />
Improved Themes
</td>
<td>
Daily, Weekly reports (history, ghistory)<br />
</td>
<td>
</td>
</tr>
<tr>
<td>Synchronization</td>
<td>
<code>task sync</code><br />
<code>task sync init</code> (all tasks)<br />
</td>
<td>
</td>
<td>
<code>task sync reset</code><br />
</td>
</tr>
<tr>
<td>TDB (task database)</td>
<td>
Local file locking<br />
Single file set<br />
Single user
</td>
<td>
</td>
<td>
Threaded file load<br />
Read-only mode
</td>
</tr>
<tr>
<td>I18N / L10N</td>
<td>
UTF-8 support<br />
<code>deu-DEU</code><br />
<code>eng-USA</code><br />
<code>epo-RUS</code><br />
<code>esp-ESP</code><br />
<code>fra-FRA</code><br />
<code>ita-ITA</code><br />
<code>pol-POL</code><br />
<code>por-PRT</code><br />
</td>
<td>
No I18N / L10N
</td>
<td>
Migrate to <a href="https://www.gnu.org/software/gettext/">gettext</a><br />
</td>
</tr>
<tr>
<td>Documentation</td>
<td>
man: task<br />
man: taskrc<br />
man: task-color<br />
man: task-sync<br />
youtube: various<br />
<a href="https://taskwarrior.org">taskwarrior.org</a><br />
taskwarrior.com: Support Site<br />
</td>
<td>
</td>
<td>
New video tutorials<br />
</td>
</tr>
<tr>
<td>Testing</td>
<td>
C++ tests<br />
Python tests<br />
Sync tests<br />
Parallel tests<br />
</td>
<td>
Migration to Flod2<br />
</td>
<td>
</td>
</tr>
<tr>
<td>Tool Chain</td>
<td>
GCC 4.7 / Clang 3.3<br />
C++11 support<br />
CMake<br />
</td>
<td>
GCC 4.9 / Clang 3.4<br />
Full C++11 support<br />
</td>
<td>
Full C++14 support<br />
Full C++17 support<br />
</td>
</tr>
</table>
<table class="table table-bordered table-striped">
<tr>
<th>Tasksh<br />Technology/Feature</th>
<th>
<span class="label label-success">1.1.0</span><br />
Current<br /><br />
Released 2016-09-05
</th>
<th>
<span class="label label-danger">1.2.0</span><br />
Next<br /><br />
2017
</th>
<th>
<span class="label label-info">1.x</span><br />
Future
</th>
</tr>
<tr>
<td>Core</td>
<td>
<a href="/docs/review.html">Review</a><br />
libreadline<br />
Shared library<br />
</td>
<td>
</td>
<td>
Pomodoro timer<br />
</td>
</tr>
<tr>
<td>Tool Chain</td>
<td>
CMake<br />
GCC 4.7 / Clang 3.3<br />
</td>
<td>
GCC 4.9 / Clang 3.4<br />
Full C++11 support<br />
</td>
<td>
Full C++14 support<br />
Full C++17 support<br />
</td>
</tr>
</table>
<table class="table table-bordered table-striped">
<tr>
<th>Taskserver<br />Technology/Feature</th>
<th>
<span class="label label-success">1.1.0</span><br />
Current<br /><br />
Released 2015-05-10
</th>
<th>
<span class="label label-danger">1.2.0</span><br />
Next<br /><br />
2017
</th>
<th>
<span class="label label-info">1.x</span><br />
Future
</th>
</tr>
<tr>
<td>Core</td>
<td>
Serial server
</td>
<td>
Shared library<br />
</td>
<td>
Threaded server
</td>
</tr>
<tr>
<td>Protocol</td>
<td>
v1
</td>
<td>
v1.1 - client reset request<br />
</td>
<td>
v1.2
</td>
</tr>
<tr>
<td>DB (Data Storage)</td>
<td>
</td>
<td>
</td>
<td>
GC
</td>
</tr>
<tr>
<td>Security</td>
<td>
Validation
</td>
<td>
</td>
<td>
UUID:Cert Verification<br />
Combined Certs
</td>
</tr>
<tr>
<td>Tool Chain</td>
<td>
GCC 4.7 / Clang 3.3<br />
CMake<br />
</td>
<td>
GCC 4.9 / Clang 3.4<br />
Full C++11 support<br />
</td>
<td>
Full C++14 support<br />
Full C++17 support<br />
</td>
</tr>
</table>
<table class="table table-bordered table-striped">
<tr>
<th>Timewarrior<br />Technology/Feature</th>
<th>
<span class="label label-success">1.0.0</span><br />
Current<br /><br />
Released 2016-08-20
</th>
<th>
<span class="label label-danger">1.1.0</span><br />
Next<br /><br />
2017
</th>
<th>
<span class="label label-info">1.x</span><br />
Future
</th>
</tr>
<tr>
<td>Core</td>
<td>
Shared library<br />
</td>
<td>
</td>
<td>
True Color
</td>
</tr>
<tr>
<td>Reports</td>
<td>
<code>summary</code> report<br />
<code>gaps</code> report<br />
<code>day</code> chart<br />
<code>week</code> chart<br />
<code>month</code> chart<br />
<code>totals.py</code> extension<br />
</td>
<td>
</td>
<td>
</td>
</tr>
<tr>
<td>Rules</td>
<td>
Simple configuration rules
</td>
<td>
</td>
<td>
Rule System<br />
</td>
</tr>
<tr>
<td>Integration</td>
<td>
Taskwarrior <code>on-modify</code> hook script
</td>
<td>
</td>
<td>
</td>
</tr>
<tr>
<td>Tool Chain</td>
<td>
CMake<br />
GCC 4.7 / Clang 3.3<br />
C++11 support<br />
</td>
<td>
GCC 4.9 / Clang 3.4<br />
Full C++11 support<br />
</td>
<td>
Full C++14 support<br />
Full C++17 support<br />
</td>
</tr>
</table>

171
doc/devel/rfcs/protocol.md Normal file
View File

@@ -0,0 +1,171 @@
---
title: "Taskwarrior - Sync Protocol"
---
# Sync Protocol
## Introduction
Taskwarrior data has typically been shared in several ways.
Those include SCM (source code management) systems, directory synchronizing software (such as DropBox), and by use of the 'push', 'pull' and 'merge' commands introduced in version 1.9.3.
While these methods work, they each have problems associated with the merging of data.
In the case of directory synchronizing software, there is no merging at all - just simple file overwrite, despite many people believing that the data is somehow combined and preserved.
The Taskserver is a solution.
It is an online/cloud storage and sync service for taskwarrior data.
It performs conflict-free data merging, and minimizes bandwidth use.
The Taskserver also provides multi-client access, so that a task added using a web client could be immediately viewed using a mobile client, or modified using taskwarrior.
Choice of clients is important - people have widely varying behaviors and tastes.
The Taskserver also provides multi-user access, which introduces new capabilities, such as list sharing and delegation.
These will require later modification to this protocol.
The Taskserver protocol will be implemented by the taskd project and first used in taskwarrior 2.3.0.
Other clients will follow.
## Requirements
In this document, we adopt the convention discussed in Section 1.3.2 of [RFC1122](https://tools.ietf.org/html/rfc1122#page-16) of using the capitalized words MUST, REQUIRED, SHOULD, RECOMMENDED, MAY, and OPTIONAL to define the significance of each particular requirement specified in this document.
In brief: "MUST" (or "REQUIRED") means that the item is an absolute requirement of the specification; "SHOULD" (or "RECOMMENDED") means there may exist valid reasons for ignoring this item, but the full implications should be understood before doing so; and "MAY" (or "OPTIONAL") means that this item is optional, and may be omitted without careful consideration.
## Link Level
The Taskserver protocol assumes a reliable data stream such as provided by TCP.
When TCP is used, a Taskserver listens on a single predetermined port *for the given client* only.
This means the server may be using multiple ports to serve distinct sets of clients.
This server is only an interface between programs and the task data.
It does not perform any user interaction or presentation-level functions.
## Transactions
Each transaction is a single incoming message, with a single response message.
All communication therefore consists of a single 'send', followed by a single 'receive', then termination.
There are no sessions, and no continuously open connections.
The message format is described in the [Taskserver Message Format](/docs/design/request) document.
## Responsibilities of the Server
The server will maintain a set of transactions, in the original sequence, punctuated by sync keys which are UUIDs.
Each sync key represents a non- trivial sync operation by a client.
Each transaction is a [JSON-formatted task](/docs/design/task), followed by a newline (\\n) character.
The result is a single file that contains interleaved lines of two types: tasks and sync keys.
This design allows the server to maintain a set of deltas such that multiple clients may request a minimal set of changes since their last sync.
## Responsibilities of the Client
This describes how Taskwarrior implements sync.
All modifications to tasks (add, modify, done, delete \...) are recorded in the form of a fully-composed [JSON-formatted task](/docs/design/task).
The formatted task is added to a local backlog.data file.
If a task is modified a second time, it is added again to the backlog.data file - the lines are not combined.
Each task SHALL have a 'modified' date attribute that will help resolve conflicts.
On sync:
* Send a 'sync' type message with the entire contents of the backlog.data, unmodified, as the message payload.
* Receive one of the following response codes:
* 201: This means 'no change', and there is no further action to be taken.
* 200: This means 'success', and the message payload contains a set of tasks and a sync key:
* The formatted tasks are to be stored as-is.
These tasks will either be appended to the client data or will overwrite existing client data, based on the UUID of the task.
No merge logic is necessary.
* The sync key will be written to the backlog.data file, overwriting the previous contents, such that it will now contain only one line.
* 301: Redirect to : found in the 'info' response header, will force the client to resubmit the request to the new server.
* 3xx, 4xx, 5xx: The 'status' field contains an error message.
* If the response contained any error or warning, the error should be shown to the user.
This provides an opportunity for the server to announce downtime, or relocation.
If no sync key is sent, the server cannot provide an incremental delta, and so will send all task data, which should be stored as above.
This should be the case for a client making its first sync call.
If an unrecognized attribute is present in the task data, the client MUST preserve the attribute unmodified, and assume it is of type 'string'.
This permits individual clients to augment the task data without other clients stripping it meaningful data.
This is how UDAs (user defined attributes) are handled.
## Extensions
This protocol was designed so that extensions to the protocol will take the form of additional message types and status codes.
## Summary of Response Codes
Status responses indicate the server's response to the last command received from the client.
The codes consist of a 3 digit numeric code.
The first digit of the response broadly indicates the success, failure, or progress of the previous command (based generally on [RFC640](https://tools.ietf.org/html/rfc640) [RFC821](https://tools.ietf.org/html/rfc821)):
| 1yz | Positive Preliminary reply |
| 2yz | Positive Completion reply |
| 3yz | Positive Intermediate reply |
| 4yz | Transient Negative Completion reply |
| 5yz | Permanent Negative Completion reply |
The next digit in the code indicates the response category:
| x0z | Syntax |
| x1z | Information (e.g., help) |
| x2z | Connections |
| x3z | Authentication |
| x4z | Unspecified as yet |
| x5z | Taskd System (\...) |
| x8z | Nonstandard (private implementation) extensions |
A summary of all status response are:
| 200 | Success |
| 201 | No change |
| 300 | Deprecated message type. This message will not be supported in future Taskserver releases. |
| 301 | Redirect. Further requests should be made to the specified server/port. |
| 302 | Retry. The client is requested to wait and retry the same request. The wait time is not specified, and further retry responses are possible. |
| 400 | Malformed data |
| 401 | Unsupported encoding |
| 420 | Server temporarily unavailable |
| 421 | Server shutting down at operator request |
| 430 | Access denied |
| 431 | Account suspended |
| 432 | Account terminated |
| 500 | Syntax error in request |
| 501 | Syntax error, illegal parameters |
| 502 | Not implemented |
| 503 | Command parameter not implemented |
| 504 | Request too big |
## Security Considerations
All communication with the Taskserver uses SSL 3.0 or TLS 1.0, 1.1 or 1.2.
Encryption is mandatory.
Data is never transmitted in plain text.
## Limitations and Guidelines
Some limitations exists to reduce bandwidth and load on the server.
They are:
- A client may only connect to a single server.
Synchronization among a set of servers is not supported.
- A client should attempt to minimize data bandwidth usage by maintaining a local data store, and properly using sync keys.
- A client should minimize data transfers by limiting the frequency of sync requests.

View File

@@ -0,0 +1,195 @@
---
title: "Taskwarrior - Recurrence"
---
# Draft
This is a draft design document.
Your [feedback](mailto:support@taskwarrior.org?Subject=Feedback) is welcomed.
Recurrence
----------
Recurrence needs an overhaul to improve weaknesses and add new features.
# Terminology
- The hidden 'parent' task is called the template.
- Synthesis is the name for the generation of new recurring task instances when necessary.
- The synthesized tasks are called instances.
- The index is the zero-based monotonically increasing number of the instance.
- Drift is the accumulated errors in time that cause a due date to slowly change for each recurring task.
# Criticism of Current Implementation
- The `mask` attribute grows unbounded.
- Only strict recurrence cycles are supported.
The example of mowing the lawn is that you want to mow the lawn every seven days, but when you are four days late mowing the lawn, the next mowing should be in seven days, not in three.
- Intances generated on one machine and then synced, may collide with equivalent unsynced instances tasks on another device, because the UUIDs are different.
- You cannot `wait` a recurring task and have that wait period propagate to all other child tasks.
- Task instances cannot individually expire.
# Proposals
## Proposal: Eliminate `mask`, `imaѕk` Attributes
The `mask` attribute in the template is replaced by `last`, which indicates the most recent instance index synthesized.
Because instances are never synthesized out of order, we only need to store the most recent index.
The `imask` attribute in the instance is no longer needed.
## Proposal: Rename `parent` to `template`
The name `parent` implies subtasks, and confuses those who inspect the internals.
The value remains the UUID of the template.
This frees up the namespace for future use with subtasks.
## Proposal: New 'rtype' attribute
To indicate the flavor of recurrence, support the following values:
* `periodic` - Instances are created on a regular schedule.
Example: send birthday flowers.
It must occur on a regular schedule, and doesn't matter if you were late last year.
This is the default value.
* `chained` - Instances are created back to back, so when one instance ends, the next begins, with the same recurrence.
Example: mow the lawn.
If you mow two days late, the next instance is not two days early to compensate.
## Proposal: Use relative offsets
The delta between `wait` and `due` date in the template should be reflected in the delta between `wait` and `due` date in the instance.
Similarly, 'scheduled' must be handled the same way.
## Proposal: On load, auto-upgrade legacy tasks
Upgrade template:
- Add `rtype:periodic`
- Add `last:N` where `N` is the length of `mask`
- Delete `mask`
Upgrade instance:
- Rename `parent` to `template`
- Delete `imask`
- Update `wait` if not set to: `wait:due + (template.due - template.wait)`
- Update `scheduled` if not set to: `scheduled:due + (template.due - template.scheduled)`
## Proposal: Deleting a chained instance
Deleting a `rtype:chained` instance causes the next chained instance to be synthesized.
This gives the illusion that the due date is simply pushed out to `(now + template.recur)`.
## Proposal: Modification Propagation
TBD
## Proposal: Exotic Dates
Expand date specifications to use pattern phrases:
- `4th thursday in November`
- `4th thursday of November`
- `Friday before easter`
- `next Tuesday`
- `last Tuesday`
- `last July`
- `weekend`
- `3 days before eom`
- `in the morning`
- `4pm`
- `noon`
- `midnight`
Got suggestions?
## Proposal: User-Defined Week Start
TBD
# Implementation
## Implementation: Adding a new `periodic` template
When adding a new periodic template:
task add ... due:D recur:R wait:D-1wk scheduled:D-1wk until:U
Creates:
template.uuid: NEW_UUID
template.description: ...
template.entry: now
template.modified: now
template.due: D
template.recur: R (stored in raw form, ie 'P14D')
template.wait: D-1wk
template.scheduled: D-1wk
template.until: U
template.rtype: periodic
template.last:
Creating the Nth instance (index N):
Clone instance from template.
instance.uuid: NEW_UUID
instance.modified: now
instance.due: template.due + (N * template.recur)
instance.wait: instance.due + (template.due - template.wait)
instance.scheduled: instance.due + (template.due - template.scheduled)
instance.start:
template.last: N
## Implementation: Adding a new `chained` template
When adding a new chained template:
task add ... due:D recur:R wait:D-1wk scheduled:D-1wk until:U rtype:chained
Creates:
template.uuid: NEW_UUID
template.description: ...
template.entry: now
template.modified: now
template.due: D
template.recur: R (stored in raw form, ie 'P14D')
template.wait: D-1wk
template.scheduled: D-1wk
template.until: U
template.rtype: chained
Creating the Nth instance (index N):
Clone instance from template.
instance.uui d: NEW_UUID
instance.mod ified: now
instance.due : instance[N-1].end + template.recur
instance.wai t: instance.due + (template.due - template.wait)
instance.sch eduled: instance.due + (template.due - template.scheduled)
instance.sta rt:
Chained tasks do not obey `rc.recurrence.limit`, and show only one pending task
at a time.
## Implementation: Special handling for months
Certain recurrence periods are inexact:
- P1M
- P1Y
- P1D
When the recurrence period is `P1M` the number of days in a month varies and causes drift.
When the recurrence period is `P1Y` the number of days in a year varies and causes drift.
When the recurrence period is `P1D` the number of hours in a day varies due to daylight savings, and causes drift.
Drift should be avoided by carefully implementing:
instance.due: template.due + (N * template.recur)

198
doc/devel/rfcs/request.md Normal file
View File

@@ -0,0 +1,198 @@
---
title: "Taskwarrior - Request"
---
# Taskserver Message Format
The Taskserver accepts and emits only messages.
These messages look somewhat like email, as defined in [RFC821](https://tools.ietf.org/html/rfc821), [RFC2822](https://tools.ietf.org/html/rfc2822).
The message format allows for data, metadata, and extensibility.
This combination allows the Taskserver to accommodate current and future needs.
This document describes the message format, and the supported message types.
## Requirements
In this document, we adopt the convention discussed in Section 1.3.2 of [RFC1122](https://tools.ietf.org/html/rfc1122#page-16) of using the capitalized words MUST, REQUIRED, SHOULD, RECOMMENDED, MAY, and OPTIONAL to define the significance of each particular requirement specified in this document.
In brief: "MUST" (or "REQUIRED") means that the item is an absolute requirement of the specification; "SHOULD" (or "RECOMMENDED") means there may exist valid reasons for ignoring this item, but the full implications should be understood before doing so; and "MAY" (or "OPTIONAL") means that this item is optional, and may be omitted without careful consideration.
## Encoding
All messages are UTF8-encoded text.
## Message Format
This format is based on [RFC2822](https://tools.ietf.org/html/rfc2822), 'Internet Message Format'.
Here is an example of the format:
<SIZE>
name: value
name2: value2
payload
There are three sections.
The first is the size, which is a 4-byte, big- Endian, binary byte count of the length of the message, including the 4 bytes for the size.
The header section is a set of name/value pairs separated by newline characters (U+000D).
The name is separated from the value by ': ' (colon U+003A, space U+0020) The header section is terminated by two consecutive newline (U+000D) characters.
All text is UTF8-encoded.
The payload section is arbitrary, and message type-specific.
However, it is still UTF8-encoded text.
## Message Requirements
Messages SHALL contain particular headers.
Those are:
- type
- protocol
- client
The 'type' value is what determines the interpretation of the payload.
The 'protocol' value should be 'v1', or any subsequently published protocol version.
The 'client' represent the client identifier, so that any special cases can be handled.
For example, an emergency fix that is client version-specific could be released, to support users that have not updated their client, or perhaps the client has not released a fix.
The form of the 'version' value is:
<product identifier> <version number>
As an example:
taskwarrior 2.3.0
DO NOT spoof any other software using this client value.
If another client is spoofed, then patches addressing protocol errors may break working software.
## Auth Data
Every request from the client SHALL contain "auth" information, which involves these header entries:
org: <organization>
user: <user>
key: <key>
The user and org fields uniquely identify a user.
The key field is generated when a new server account is set up.
It is a shared secret, equivalent to a password, and should be protected.
Authentication failure can result in these errors:
- 430 Authentication failed
- 431 Account suspended
## Status Data
Every response from the Taskserver SHALL contain status data:
code: <code>
status: <status text>
The code is a numeric status indicator defined in the [Sync Protocol](/docs/design/protocol).
## Payload Data
Payload data is optional, arbitrary and message type dependent.
It is always UTF8-encoded text.
## Message Types
The Taskserver supports several message types, thus providing a set of primitives for use by clients.
It is expected that the number of supported ticket types will increase over time.
## Sync Message
The "sync" message always originates from the client, but the response will contain data from the server.
A sync is therefore a single request with a single response.
The "sync" message type MUST contain the following headers:
- type
- org
- user
- key
- client
- protocol
The "sync" message payload has this format:
<uuid>
<JSON task 1>
<JSON task 2>
...
<JSON task N>
Here is an example of a sync message:
<size>type: sync
org: <organization>
user: <user>
key: <key>
client: task 2.3.0
protocol: v1
2e4685f8-34bc-4f9b-b7ed-399388e182e1
{"description":"Test data","entry":"20130602T002341Z","status":"pending"}
The request contains the proper auth section, and the body contains the current sync key followed by a newline characters (U+000D), then a list of JSON-formatted tasks \[2\] each separated by a newline character (U+000D).
An example response message might be:
<size>type: response
client: taskd 1.0.0
protocol: v1
code: 200
status: Ok
45da7110-1bcc-4318-d33e-12267a774e0f
The status indicates success, and the payload contains zero remote task modifications, followed by a sync key.
## Statistics Message
The message format іs simply:
<size>type: statistics
org: <Organization>
user: <User>
key: <Key>
client: taskd 1.0.0
protocol: v1
There is no payload.
An example response message might be:
<size>type: response
client: taskd 1.0.0
protocol: v1
code: 200
status: Ok
average request bytes: 0
average response bytes: 0
average response time: 0.000000
errors: 0
idle: 1.000000
maximum response time: 0.000000
total bytes in: 0
total bytes out: 0
tps: 0.000000
transactions: 1
uptime: 28
There is no payload, and the results are in the header variables.
Note that the statistics gathered by the server are growing, which means new values are occasionally added to the response message.
Existing values will not be removed.

240
doc/devel/rfcs/rules.md Normal file
View File

@@ -0,0 +1,240 @@
---
title: "Taskwarrior - Rule System"
---
## Work in Progress
This design document is a work in progress, and subject to change.
Once finalized, the feature will be scheduled for an upcoming release.
# Rule System
The rule system is a framework that supports highly configurable features, with runtime evaluation, DOM access and an internal API.
Implementing a rule system meets the goal of shrinking and stabilizing the product core, while adding new features, and enabling many more.
## Required Enhancements
To prepare for a Rules System, various subsystems must first be enhanced:
- DOM references need to be unambiguous, and will all have the `dom.` prefix.
- DOM references need to be able to access any Taskwarrior data, in any
- Custom reports will change from referencing `<column>[.<format>]` to simply
`<domref>`
- RC file syntax needs to be enhanced, so support rule definitions, which are
multi-line blocks that are indentation-sensitive
- RC file syntax will support two ways of specifying the same data:
a.b.c=...
a:
b:
c=...
- RC file syntax will allow the use of environment variables inline:
name=${TERM}
include ${HOME}/.taskrc_local
- The `Variant` object will migrate to `libshared`
- The expression evaluator `Eval` object will migrate to `libshared`
- The column objects will gain a more structured base class, and will serve as
providers for DOM references
- The 'exec' command will be able to run a rule, if the reference is correct
- Taskwarrior will store state data in a new `state.data` file
- `Config` object needs to use the `rat` parser, to tackle the more complex
syntax
- The RC file will support environment variable expansion, where `${NAME}`
will be replaced by its corresponding value at launch time
At that point, the rules system can be implemented in `libshared`, and will use a pluggable architecture to allow its integration into several projects.
## DOM Enhancements
DOM references will be enhanced, with many more references supported.
All DOM references will begin with `dom.`, yielding unambiguous references.
References will have a type.
Types will support sub-references (`<date>.<month>`, `<tags>.<N>`, `<annotation>.<description>`), and display formats included.
dom . [<id> .] <attribute> [. <sub-reference>] . <format>
dom . 123 . entry . year . yyyy
dom . 123 . entry
dom . 123 . tags
dom . 123 . tags . count
dom . 123 . tags . 1
In addition to direct attribute access, DOM references will also support tw references beyond the current set: dom.rc.<name>
dom.cli.args
dom.terminal.width
dom.terminal.height
dom.system.version
dom.system.oѕ
And will also support higher-level constructs that do not directly correlate to attributes, for example:
dom.active Boolean indicator of any active tasks
dom.synced Boolean indicator of the need to sync
dom.rc.path String path of .taskrc file (or override)
dom.data.path String path of data directory
dom.hooks.path String path of hooks directory
Finally, access to state:
dom.state.program
dom.state.sync.last
dom.state.sync.configured
dom.state.run.last
dom.state.context
## RC Syntax Changes
The current configuration system supports only two different forms of syntax:
<name> = [ <value> ]
include <file>
A rule is a new form of syntax that consists of the rule keyword, a name, optional trigger, followed by indented actions in the form of API calls and flow control.
For example:
rule myRule() on_launch:
# Some code here
A rule definition will appear in the RC file, alongside all the existing settings.
The rule syntax will require a blank line to terminate the rule definition, the result being that the RC file should be quite readable, although it will look like Python.
## Hook Scripts
While this functionality can also be implemented using hook scripts, rules will run in-process, and therefore do not require external interpreters to be launched every time.
This creates the potential to run faster than a hook script.
For complex processing, hook scripts will be the preferred mechanism, but as the rules system matures, rules will be made to run more quickly.
With adequate performance, a rule will be the preferred implementation over a hook script.
This is not expected to be the case at first.
Hook scripts are not likely to be extended beyond their current form, and with greater DOM access and a growing API, rules should be able to supplant most hook script use cases.
## Rule Triggers
The set of supported rule types will include:
* `on_launch` - Triggered on program launch.
* `on_add` - Triggered when a task is added.
A context task will be provided.
The rule can modify the task, and approve or reject it.
* `on_modify` - Triggered when a task is modified.
A before and after context task will be provided.
The rule can modify the task, and approve or reject it.
* `on_exit` - Triggered on program exit.
* `color` - Triggered when colors are being determined.
* `virtual tag` - Defines a new virtual tag.
* `format` - Triggered when an attribute needs formatting, defines are new format.
More rules types will be added for more capabilities in future releases.
## API
The API is a simple set of actions that may be taken by a rule.
* `debug(<string>)` - Displays the string in debug mode only and continues processing.
* `warn(<string>)` - Displays the string as a warning continues processing.
* `error(<string>)` - Displays the string as an error and terminates processing.
* `exec(<binary> [ <args> ... ])` - Executes the external program and passes arguments to it.
If the program exits with non-zero status, it is treated as an error.
* `return <value>` - Provides a result value for the rule, when necessary.
This is a very limited set at first, and more API calls will be added to support capabilities in future releases.
## Grammar
The grammar closely tracks that of Python.
Blocks are indented consistently.
* `if <condition>: ... else: ...` - The condition is a full Algebraic expression, and supports none of the command line conveniences.
Terms must be combined with logical operators.
The condition is an expression that is evaluated and converted to a Boolean value.
* `for <name> in <collection>:` - There is no native type for a collection, but there are DOM references (`tags` \...) that reference collections.
This provides a way to iterate.
* `set <name> = <expression>` - Writes to a named type.
The name may be a writable DOM object (`dom...`) or temporary variable storage (`tmp...`).
Writing to a read-only DOM reference is an error.
* `<function>([<args>])` - A function is either a rule or an API call.
Calling an undefined function is an error.
## Examples
Here are some example rules which illustrate the syntax and API.
The replacement for the nag feature:
rule Nag(before, after) on-modify:
if before.urgency < tasks.max.urgency:
warn You have more urgent tasks
if after.status == 'completed' and before.urgency < (dom.urgency.max - 2.0):
warn 'You have more urgent tasks!'
Correct commonly misspelled word:
rule CorrectSpelling(task) on_add:
set task.description = substitute(task.description, 'teh', 'the')
Abbreviation expansion:
rule ExpandAbbreviation(task) on_modify:
set task.description = substitute(task.description, '/TW-\d+/', 'https:\/\/github.com\/GothenburgBitFactory\/taskwarrior\/issues\/\1')
Warn on missing project:
rule WarnOnMissingProject(task) on_add:
if task.project == :
warn(Project not specified)
Color rule:
rule ColorizeDue(task) color:
if task.due > now:
if task.due < (now + 5d):
return dom.rc.color.due
else:
return dom.rc.color.due.later
Policy:
rule policyProject(task) on_add:
if task.project == '':
if rc.default.project == '':
error('You must specify a project')
set task.project = rc.default.project

242
doc/devel/rfcs/sync.md Normal file
View File

@@ -0,0 +1,242 @@
---
title: "Taskwarrior - Taskserver Sync Algorithm"
---
# Taskserver Sync Algorithm
This document describes how task changes are merged by the Taskserver.
It does not describe [the protocol](/docs/design/protocol) used by the Taskserver.
The Taskserver merges tasks from multiple sources, resulting in conflict- free syncing of data.
The algorithm used to achieve this is simple and effective, paralleling what SCM systems do to perform a rebase.
## Requirements
In this document, we adopt the convention discussed in Section 1.3.2 of
[RFC1122](https://tools.ietf.org/html/rfc1122#page-16) of using the capitalized words MUST, REQUIRED, SHOULD, RECOMMENDED, MAY, and OPTIONAL to define the significance of each particular requirement specified in this document.
In brief: "MUST" (or "REQUIRED") means that the item is an absolute requirement of the specification; "SHOULD" (or "RECOMMENDED") means there may exist valid reasons for ignoring this item, but the full implications should be understood before doing so; and "MAY" (or "OPTIONAL") means that this item is optional, and may be omitted without careful consideration.
## Problem Definition
The sync algorithm considers a single task, with multiple changes occurring in two separate locations that must be resolved.
The two locations are the local machine and the server.
This results in two parallel change sequences.
Examples using multiple clients collapse down to the simple two-branch case because the clients are merged serially.
## Change Sequence
A sequence of changes to the same task is represented as:
T0 --> T1 --> T2
Although all examples are of the two-branch variety, some involve trivial branches.
Going through these examples will illustrate the algorithm.
First the legend:
T0 Represents the original task, the base.
T1 Represents the task with a non-trivial set of changes.
T2 Represents the task with further changes.
## Deltas
The transition from T0 \--\> T1 can be seen as a transform applied to T0, resulting in T1.
That transform is the delta (d1) between T0 and T1, which is a subtractive term:
d1 = (T1 - T0)
Therefore:
T0 --> T1 = T0 + d1
= T0 + (T1 - T0)
This states that the transition from T0 to T1 is the application of a delta to the original, T0, which results in T1.
Applying this to the whole change sequence yields:
T0 --> T1 --> T2 = T0 + d1 + d2
= T0 + (T1 - T0) + (T2 - T1)
## Use Case Classification
Because clients sync requests are processed serially, there is no need to consider the multiple client cases.
This means there is only ever the case with two parallel change sequences = the two branch case.
## Two Branch Case
The two branch case represents changes made to the same task in two locations, resulting in two deltas that must be applied to the same base.
T0 --> T1
T0 --> T2
This reduces to a base with two deltas, but the order in which the deltas are applied is important.
For example:
T0 + d1 + d2 =/= T0 + d2 + d1
The application of deltas is not commutative, except in the trivial case where the two deltas are identical, or the deltas do not overlap.
The deltas therefore need to be applied in the correct sequence.
Tasks have metadata that indicates the last modified time, which dictates the sequence.
Assuming d1 occurred before d2, this neatly collapses down to a single branch sequence:
T0 + d1 + d2 = T3
Note that the result in this case is T3, because it will be neither T1 nor T2, unless the deltas are identical.
## Two Branch, Multiple Changes Case
The two branch case can be complicated by multiple changes per branch:
T0 --> T1 --> T3 --> T5
T0 --> T2 --> T4
Note that the numbers were chosen to represent the order in which the changes were made.
First a list of deltas is generated:
T0 --> T1 = d1
T1 --> T3 = d3
T3 --> T5 = d5
T0 --> T2 = d2
T0 --> T4 = d4
d1, d3, d5, d2, d4
Then the deltas are sorted by modified time:
d1, d2, d3, d4, d5
Then epplied to the base, yielding T6:
T0 + d1 + d2 + d3 + d4 +d5 = T6
## Two Branch Case Example
Suppose the base task looks like this:
T0 project:ONE due:tomorrow priority:H +tag1 Original description
The first branch looks like this:
T1 project:TWO due:23rd priority:H +tag1 Original description
The second branch looks like this:
T2 project:ONE due:tomorrow priority:H +tag1 Modified description
Delta d1 is:
T0 project:ONE due:tomorrow priority:H +tag1 Original description
T1 project:TWO due:23rd priority:H +tag1 Original description
----------------------------------------------------------------------
d1 project:TWO due:23rd
Delta d2 is:
T0 project:ONE due:tomorrow priority:H +tag1 Original description
T2 project:ONE due:tomorrow priority:H +tag1 Modified description
----------------------------------------------------------------------
d2 Modified description
If d1 occurred before d2, the result is:
T3 = T0 + d1 + d2
= T0 + (project:TWO due:23rd) + (Modified description)
T3 = project:TWO due:23rd priority:H +tag1 Modified description
## Use Cases
A range of illustrated use cases, from the trivial to the complex will show the algorithm in use.
## Use Case 1: New Local Task
Initial state:
Server: -
Client: T0
The server has no data, and so T0 is stored.
The result is now:
Server: T0
Client: T0
## Use Case 2: Local Change
Initial state:
Server: T0
Client: T0 --> T1
The server resolves the change:
T0 --> T1 = T0 + d1
= T1
T1 is stored.
The result is now:
Server: T0 --> T1
Client: T1
## Use Case 3: Local and Remote Change
Initial state:
Server: T0 --> T1
Client: T0 --> T2
This is the two branch case, and the deltas are generated:
T0 --> T1 = T0 + d1
T0 --> T2 = T0 + d2
The order of change is determine to be d1, d2, yielding T3:
T3 = T0 + d1 + d2
T3 is stored on the server, and returned to the client.
The result is now:
Server: T0 --> T1 --> T2 --> T3
Client: T3
## Use Case 4: Multiple Local and Remote Changes
Initial state:
Server: T0 --> T1 --> T3
Client: T0 --> T2 --> T4
This is the two branch case, and the deltas are generated:
T0 --> T1 = T0 + d1
T1 --> T3 = T0 + d3
T0 --> T2 = T0 + d2
T2 --> T4 = T0 + d4
d1, d3, d2, d4
The order of change is determine to be d1, d2, d3, d4, yielding T5:
T5 = T0 + d1 + d2 + d3 + d4
T5 is stored on the server, and returned to the client.
The result is now:
Server: T0 --> T1 --> T2 --> T3 --> T4 --> T5
Client: T5

468
doc/devel/rfcs/task.md Normal file
View File

@@ -0,0 +1,468 @@
---
title: "Taskwarrior - Taskwarrior JSON Format"
---
# Taskwarrior JSON Format
When Taskwarrior exchanges data, it uses [JSON](https://www.json.org/).
This document describes the structure and semantics for tasks exported from Taskwarrior, imported to Taskwarrior, or synced with the Taskserver.
Any client of the Taskserver will need to communicate task information.
This document describes the format of a single task.
It does not describe the communication and sync protocol between client and server.
This document is subject to change.
The data attributes are also subject to change.
## Requirements
In this document, we adopt the convention discussed in Section 1.3.2 of [RFC1122](https://tools.ietf.org/html/rfc1122#page-16) of using the capitalized words MUST, REQUIRED, SHOULD, RECOMMENDED, MAY, and OPTIONAL to define the significance of each particular requirement specified in this document.
In brief: "MUST" (or "REQUIRED") means that the item is an absolute requirement of the specification; "SHOULD" (or "RECOMMENDED") means there may exist valid reasons for ignoring this item, but the full implications should be understood before doing so; and "MAY" (or "OPTIONAL") means that this item is optional, and may be omitted without careful consideration.
## General Format
The format is JSON, specifically a JSON object as a single line of text, terminated by a newline (U+000D).
The JSON looks like this:
{"description":"One two three","status":"pending", ... }
While this is not a valid task (there are missing fields), the format is illustrated.
All attribute names are quoted with " (U+0022).
A name will always have a corresponding value, and if a value is blank, then the name/value pair is omitted from the line.
Newline characters are not permitted within the value, meaning that a task consists of a single line of text.
All data is UTF8.
## Data Types
There are five data types used in the task format.
## Data Type: String
Strings may consist of any UTF8 encoded characters.
## Data Type: Fixed String
A fixed string is one value from a set of acceptable values, such as a priority level, where the values may only be "", "L", "M" or "H".
## Data Type: UUID
A UUID is a 32-hex-character lower case string, formatted in this way:
xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
An example:
296d835e-8f85-4224-8f36-c612cad1b9f8
## Data Type: Integer
Integers are rendered in a simple fashion:
123
## Data Type: Date
Dates are rendered in ISO 8601 combined date and time in UTC format using the template:
YYYYMMDDTHHMMSSZ
An example:
20120110T231200Z
No other formats are supported.
## Data Type: Duration
Duration values represent a time period.
They take the form:
[[<sign>] <number>] <unit>
Some examples include:
- -3days
- annual
- 4hrs
The supported units are:
- annual
- biannual
- bimonthly
- biweekly
- biyearly
- daily
- days
- day
- d
- fortnight
- hours
- hour
- hrs
- hr
- h
- minutes
- mins
- min
- monthly
- months
- month
- mnths
- mths
- mth
- mos
- mo
- quarterly
- quarters
- qrtrs
- qtrs
- qtr
- q
- seconds
- secs
- sec
- s
- semiannual
- sennight
- weekdays
- weekly
- weeks
- week
- wks
- wk
- w
- yearly
- years
- year
- yrs
- yr
- y
Note that some values lack precision, for example "2q" means two quarters, or half a year.
Note that not all combinations of number and unit make sense, for example "3annual" makes no sense, but evaluates to "3years".
## The Attributes
Here are the standard attributes that may comprise a task:
| Name | Type |
|--------------|---------|
| status | String |
| uuid | UUID |
| entry | Date |
| description | String |
| start | Date |
| end | Date |
| due | Date |
| until | Date |
| wait | Date |
| modified | Date |
| scheduled | Date |
| recur | String |
| mask | String |
| imask | Integer |
| parent | UUID |
| project | String |
| priority | String |
| depends | String |
| tags * | String |
| annotation * | String |
| (UDA) | ? |
\* Both tags and annotations are lists of strings and objects.
Any UDA fields are assumed to be of type string.
There are other forms, which are conditional upon the state of a task:
| Status Value | Pending | Deleted | Completed | Waiting | Recurring Parent | Recurring Child |
|--------------|---------|---------|-----------|---------|------------------|-----------------|
| status | Reqd | Reqd | Reqd | Reqd | Reqd | Reqd |
| uuid | Reqd | Reqd | Reqd | Reqd | Reqd | Reqd |
| entry | Reqd | Reqd | Reqd | Reqd | Reqd | Reqd |
| description | Reqd | Reqd | Reqd | Reqd | Reqd | Reqd |
| start | Opt | Opt | Opt | Opt | Opt | Opt |
| end | | Reqd | Reqd | | | |
| due | Opt | Opt | Opt | Opt | Reqd | Opt |
| until | Opt | Opt | Opt | Opt | Opt | Opt |
| scheduled | Opt | Opt | Opt | Opt | Opt | Opt |
| wait | | | | Reqd | | |
| recur | | | | | Reqd | Reqd |
| mask | | | | | Intrn | |
| imask | | | | | | Intrn |
| parent | | | | | | Reqd |
| annotation | Opt | Opt | Opt | Opt | Opt | Opt |
| project | Opt | Opt | Opt | Opt | Opt | Opt |
| tags | Opt | Opt | Opt | Opt | Opt | Opt |
| priority | Opt | Opt | Opt | Opt | Opt | Opt |
| depends | Opt | Opt | Opt | Opt | Opt | Opt |
| modified | Intrn | Intrn | Intrn | Intrn | Intrn | Intrn |
| UDA | Opt | Opt | Opt | Opt | Opt | Opt |
(Legend: Reqd = required, Opt = optional, Intrn = Internally generated)
All tasks have four required fields.
There are other states in which a task may exist, and the requirements change.
At a minimum, a valid task contains:
- uuid
- status
- entry
- description
*Deleted* - A deleted task MUST also have "status":"deleted", an "end" date and a "modified" date.
*Completed* - A completed task MUST also have "status":"completed", an "end" date and a "modified" date.
*Waiting* - A waiting task MUST also have "status":"waiting" and a "wait" date.
The task is hidden from the user, until that "wait" date has passed, whereupon the status reverts to "pending", and the "wait" date is removed.
*Recurring Parent* - When a recurring task is entered, it MUST have "status":"recurring", a "recur" period and a "due" date.
It MAY also have an "until" date.
Recurring parent tasks are hidden from the user.
*Recurring Child* - A recurring child task is not created by the user, but is cloned from the recurring parent task by the Taskserver.
It may be modified by the user.
On completion, there is special handling to be done.
See section 3.11.
## Additional Attributes
There MAY be other fields than those listed above in a task definition.
Such fields MUST be preserved intact by any client, which means that if a task is downloaded that contains an unrecognized field, that field MUST not be modified, and MUST continue to exist in the task..
User Defined Attributes (UDAs) are additional fields.
## Attribute Details
The individual fields convey important information about a task, and in some cases work only in collusion with other fields.
All such details are listed here.
## Attribute: status
The status field describes the state of the task, which may ONLY be one of these literal strings:
"status":"pending"
"status":"deleted"
"status":"completed"
"status":"waiting"
"status":"recurring"
A pending task is a task that has not yet been completed or deleted.
This is the typical state for a task.
A deleted task is one that has been removed from the pending state, and MUST have an "end" field specified.
Given the required "entry" and "end" field, it can be determined how long the task was pending.
A completed task is one that has been removed from the pending state by completion, and MUST have an "end" field specified.
Given the required "entry" and "end" fields, it can be determine how long the task was pending.
A waiting task is ostensibly a pending task that has been hidden from typical view, and MUST have a "wait" field containing the date when the task is automatically returned to the pending state.
If a client sees a task that is in the waiting state, and the "wait" field is earlier than the current date and time, the client MUST remove the "wait" field and set the "status" field to "pending".
A recurring task is essentially a parent template task from which child tasks are cloned.
The parent remains hidden from view, and contains a "mask" field that represents the recurrences.
Each cloned child task has an "imask" field that indexes into the parent "mask" field, as well as a "parent" field that lists the UUID of the parent.
## Attribute: uuid
When a task is created, it MUST be assigned a new UUID by the client.
Once assigned, a UUID field MUST NOT be modified.
UUID fields are permanent.
## Attribute: entry
When a task is created, it MUST be assigned an "entry" date by the client.
This is the creation date of the task.
## Attribute: description
When a task is created, it MUST have a "description" field value, which contains UTF8 characters.
A "description" field may not contain newline characters, but may contain other characters, properly escaped.
See <https://json.org> for details.
## Attribute: start
To indicate that a task is being worked on, it MAY be assigned a "start" field.
Such a task is then considered Active.
## Attribute: end
When a task is deleted or completed, is MUST be assigned an "end" field.
It is not valid for a task to have an "end" field unless the status is also "completed" or "deleted".
If a completed task is restored to the "pending" state, the "end" field is removed.
## Attribute: due
A task MAY have a "due" field, which indicates when the task should be completed.
## Attribute: until
A recurring task MAY have an "until" field, which is the date after which no more recurring tasks should be generated.
At that time, the parent recurring task is set to "completed".
## Attribute: wait
A task MAY have a "wait" field date, in conjunction with a "status" of "waiting".
A waiting task is one that is not typically shown on reports until it is past the wait date.
An example of this is a birthday reminder.
A task may be entered for a birthday reminder in 10 months time, but can have a "wait" date 9 months from now, which means the task remains hidden until 1 month before the due date.
This prevents long-term tasks from cluttering reports until they become relevant.
## Attribute: recur
The "recur" field is for recurring tasks, and specifies the period between child tasks, in the form of a duration value.
The value is kept in the raw state (such as "3wks") as a string, so that it may be evaluated each time it is needed.
## Attribute: mask
A parent recurring task has a "mask" field that is an array of child status indicators.
Suppose a task is created that is due every week for a month.
The "mask" field will look like:
"----"
This mask has four slots, indicating that there are four child tasks, and each slot indicates, in this case, that the child tasks are pending ("-").
The possible slot indicators are:
* `-` - Pending
* `+` - Completed
* `X` - Deleted
* `W` - Waiting
Suppose the first three tasks has been completed, the mask would look like this:
"+++-"
If there were only three indicators in the mask:
"+-+"
This would indicate that the second task is pending, the first and third are complete, and the fourth has not yet been generated.
## Attribute: imask
Child recurring tasks have an "imask" field instead of a "mask" field like their parent.
The "imask" field is a zero-based integer offset into the "mask" field of the parent.
If a child task is completed, one of the changes that MUST occur is to look up the parent task, and using "imask" set the "mask" of the parent to the correct indicator.
This prevents recurring tasks from being generated twice.
## Attribute: parent
A recurring task instance MUST have a "parent" field, which is the UUID of the task that has "status" of "recurring".
This linkage between tasks, established using "parent", "mask" and "imask" is used to track the need to generate more recurring tasks.
## Attribute: annotation\_\...
Annotations are strings with timestamps.
Each annotation itself has an "entry" field and a "description" field, similar to the task itself.
Annotations form an array named "annotations".
For example (lines broken for clarity):
"annotations":[
{"entry":"20120110T234212Z","description":"Remember to get the mail"},
{"entry":"20120110T234559Z","description":"Pay the bills"}
]
## Attribute: project
A project is a single string.
For example:
"project":"Personal Taxes"
Note that projects receive special handling, so that when a "." (U+002E) is used, it implies a hierarchy, which means the following two projects:
"Home.Kitchen"
"Home.Garden"
are both considered part of the "Home" project.
## Attribute: tags
The "tags" field is an array of string, where each string is a single word containing no spaces.
For example:
"tags":["home","garden"]
## Attribute: priority
The "priority" field, if present, MAY contain one of the following strings:
"priority":"H"
"priority":"M"
"priority":"L"
These represent High, Medium and Low priorities.
An absent priority field indicates no priority.
## Attribute: depends
The "depends" field is a string containing a comma-separated unique set of UUIDs.
If task 2 depends on task 1, then it is task 1 that must be completed first.
Task 1 is considered a "blocking" tasks, and task 2 is considered a "blocked" task.
For example:
"depends":",, ..."
Note that in a future version of this specification, this will be changed to a JSON array of strings, like the "tags" field.
## Attribute: modified
A task MUST have a "modified" field set if it is modified.
This field is of type "date", and is used as a reference when merging tasks.
## Attribute: scheduled
A task MAY have a "scheduled" field, which indicates when the task should be available to start.
A task that has passed its "scheduled" data is said to be "ready".
## User Defined Attributes
A User Defined Attribute (UDA) is a field that is defined via configuration.
Given that the configuration is not present in the JSON format of a task, any fields that are not recognized are to be treated as UDAs.
This means that if a task contains a UDA, unless the meaning of it is understood, it MUST be preserved.
UDAs may have one of four types: string, numeric, date and duration.

View File

@@ -0,0 +1,29 @@
---
title: "Taskwarrior - Work Week Support"
---
## Work in Progress
This design document is a work in progress, and subject to change.
Once finalized, the feature will be scheduled for an upcoming release.
# Work Week Support
Taskwarrior supports the idea that a week starts on either a Sunday or a Monday, as determined by configuration.
This was added eight years ago, simply for display purposes in the `calendar` report.
Since then its use has propagated and it influences the `sow` date reference.0
Further requests have been made to make this more flexible, so that the notion of 'weekend' can be defined.
Furthermore, the idea that every week has a weekend has also been questioned.
It has become clear that a `weekstart` setting, and the notion of a weekend are no longer useful.
## Proposed Support
One option is to allow the user to completely define a work week in the following way:
workweek=1,2,3,4,5
With Sunday as day zero, this states that the work week is the typical Monday - Friday.
From this setting, the meaning of `soww` and `eoww` can be determined, as well as `recur:weekday`.

BIN
doc/devel/rfcs/year.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

4
doc/man/.gitignore vendored
View File

@@ -1,4 +0,0 @@
task-color.5
task-sync.5
task.1
taskrc.5

View File

@@ -8,14 +8,18 @@ It should be mentioned that Taskwarrior is aware of whether its output is going
to a terminal, or to a file or through a pipe. When Taskwarrior output goes to
a terminal, color is desirable, but consider the following command:
.nf
$ task list > file.txt
.fi
Do we really want all those color control codes in the file? Taskwarrior
assumes that you do not, and temporarily sets color to 'off' while generating
the output. This explains the output from the following command:
.nf
$ task show | grep '^color '
color off
.fi
it always returns 'off', no matter what the setting, because the output is being
sent to a pipe.
@@ -23,20 +27,26 @@ sent to a pipe.
If you wanted those color codes, you can override this behavior by setting the
_forcecolor variable to on, like this:
.nf
$ task config _forcecolor on
$ task config | grep '^color '
color on
.fi
or by temporarily overriding it like this:
.nf
$ task rc._forcecolor=on config | grep '^color '
color on
.fi
.SH AVAILABLE COLORS
Taskwarrior has a 'color' command that will show all the colors it is capable of
displaying. Try this:
.nf
$ task color
.fi
The output cannot be replicated here in a man page, but you should see a set of
color samples. How many you see depends on your terminal program's ability to
@@ -48,7 +58,9 @@ You should at least see the Basic colors and Effects - if you do, then you have
.SH 16-COLOR SUPPORT
The basic color support is provided through named colors:
.nf
black, red, blue, green, magenta, cyan, yellow, white
.fi
Foreground color (for text) is simply specified as one of the above colors, or
not specified at all to use the default terminal text color.
@@ -56,37 +68,49 @@ not specified at all to use the default terminal text color.
Background color is specified by using the word 'on', and one of the above
colors. Some examples:
.nf
green # green text, default background color
green on yellow # green text, yellow background
on yellow # default text color, yellow background
.fi
These colors can be modified further, by making the foreground bold, or by
making the background bright. Some examples:
.nf
bold green
bold white on bright red
on bright cyan
.fi
The order of the words is not important, so the following are equivalent:
.nf
bold green
green bold
.fi
But the 'on' is important - colors before the 'on' are foreground, and colors
after 'on' are background.
There is an additional 'underline' attribute that may be used:
.nf
underline bold red on black
.fi
And an 'inverse' attribute:
.nf
inverse red
.fi
Taskwarrior has a command that helps you visualize these color combinations.
Try this:
.nf
$ task color underline bold red on black
.fi
You can use this command to see how the various color combinations work. You
will also see some sample colors displayed, like the ones above, in addition to
@@ -103,11 +127,13 @@ Using 256 colors follows the same form, but the names are different, and some
colors can be referenced in different ways. First there is by color ordinal,
which is like this:
.nf
color0
color1
color2
...
color255
.fi
This gives you access to all 256 colors, but doesn't help you much. This range
is a combination of 8 basic colors (color0 - color7), then 8 brighter variations
@@ -119,31 +145,43 @@ be addressed via RGB values from 0 to 5 for each component color. A value of 0
means none of this component color, and a value of 5 means the most intense
component color. For example, a bright red is specified as:
.nf
rgb500
.fi
And a darker red would be:
.nf
rgb300
.fi
Note that the three digits represent the three component values, so in this
example the 5, 0 and 0 represent red=5, green=0, blue=0. Combining intense red
with no green and no blue yields red. Similarly, blue and green are:
.nf
rgb005
rgb050
.fi
Another example - bright yellow - is a mix of bright red and bright green, but
no blue component, so bright yellow is addressed as:
.nf
rgb550
.fi
A soft pink would be addressed as:
.nf
rgb515
.fi
See if you agree, by running:
.nf
$ task color black on rgb515
.fi
You may notice that the large color block is represented as 6 squares. All
colors in the first square have a red value of 0. All colors in the 6th square
@@ -163,7 +201,9 @@ will be disappointed, perhaps even appalled.
There is some limited color mapping - for example, if you were to specify this
combination:
.nf
red on gray3
.fi
you are mixing a 16-color and 256-color specification. Taskwarrior will map red
to color1, and proceed. Note that red and color1 are not quite the same tone.
@@ -175,7 +215,9 @@ colors, but there is still underline available.
Taskwarrior will show examples of all defined colors used in your .taskrc, or
theme, if you run this command:
.nf
$ task color legend
.fi
This gives you an example of each of the colors, so you can see the effect,
without necessarily creating a set of tasks that meet each of the rule criteria.
@@ -185,20 +227,26 @@ Taskwarrior supports colorization rules. These are configuration values that
specify a color, and the conditions under which that color is used. By example,
let us add a few tasks:
.nf
$ task add project:Home priority:H pay the bills (1)
$ task add project:Home clean the rug (2)
$ task add project:Garden clean out the garage (3)
.fi
We can add a color rule that uses a blue background for all tasks in the Home
project:
.nf
$ task config color.project.Home 'on blue'
.fi
We use quotes around 'on blue' because there are two words, but they represent
one value in the .taskrc file. Now suppose we wish to use a bold yellow text
color for all cleaning work:
.nf
$ task config color.keyword.clean 'bold yellow'
.fi
Now what happens to task 2, which belongs to project Home (blue background), and
is also a cleaning task (bold yellow foreground)? The colors are combined, and
@@ -219,7 +267,9 @@ color blending.
The precedence for the color rules is determined by the configuration
variable 'rule.precedence.color', which by default contains:
.nf
deleted,completed,active,keyword.,tag.,project.,overdue,scheduled,due.today,due,blocked,blocking,recurring,tagged,uda.
.fi
These are just the color rules with the 'color.' prefix removed. The
rule 'color.deleted' has the highest precedence, and 'color.uda.' the lowest.
@@ -228,7 +278,7 @@ The keyword rule shown here as 'keyword.' corresponds to a wildcard pattern,
meaning 'color.keyword.*', or in other words all the keyword rules.
There is also 'color.project.none', 'color.tag.none' and
'color.uda.priority.none' to specifically represent missing data.
\[aq]color.uda.priority.none' to specifically represent missing data.
.SH THEMES
Taskwarrior supports themes. What this really means is that with the ability to
@@ -238,50 +288,38 @@ be included.
To get a good idea of what a color theme looks like, try adding this entry to
your .taskrc file:
.RS
include dark-256.theme
.RE
.nf
include dark-256.theme
.fi
You can use any of the standard Taskwarrior themes:
.RS
dark-16.theme
.br
dark-256.theme
.br
dark-blue-256.theme
.br
dark-gray-256.theme
.br
dark-green-256.theme
.br
dark-red-256.theme
.br
dark-violets-256.theme
.br
dark-yellow-green.theme
.br
light-16.theme
.br
light-256.theme
.br
solarized-dark-256.theme
.br
solarized-light-256.theme
.br
dark-default-16.theme
.br
dark-gray-blue-256.theme
.br
no-color.theme
.RE
.nf
dark-16.theme
dark-256.theme
dark-blue-256.theme
dark-gray-256.theme
dark-green-256.theme
dark-red-256.theme
dark-violets-256.theme
dark-yellow-green.theme
light-16.theme
light-256.theme
solarized-dark-256.theme
solarized-light-256.theme
dark-default-16.theme
dark-gray-blue-256.theme
no-color.theme
.fi
Bear in mind that if you are using a terminal with a dark background, you will
see better results using a dark theme.
You can also see how the theme will color the various tasks with the command:
.nf
$ task color legend
.fi
Better yet, create your own, and share it. We will gladly host the theme file
on <https://taskwarrior.org>.

View File

@@ -1,51 +1,195 @@
.TH task-sync 5 2016-02-24 "${PACKAGE_STRING}" "User Manuals"
.SH NAME
task-sync \- A discussion and tutorial for the various task(1) data
synchronization capabilities.
task-sync \- A discussion and tutorial for the various
.BR task (1)
data synchronization capabilities.
.SH INTRODUCTION
Taskwarrior has several sync options, both external and built in. If you wish
to sync your data, choose one method only; mixing methods is going to lead to
problems. Each of the methods discussed have their own strengths.
.SH ALTERNATIVES
There are three alternatives for syncing data, which are:
1) Version control systems, such as git, hg, svn
Taskwarrior can synchronize your tasks to a server. This has a few benefits:
.br
2) File sharing systems, such as DropBox, Google Drive
- Makes your tasks accessible from multiple systems, called "replicas".
.br
3) Using the Taskserver and the 'sync' command
.SH OPTION 1: VERSION CONTROL SYSTEMS
There are several good, distributed VCS systems (git, hg, ...) and centralized
VCS systems (svn, cvs ...), and they all function in a similar fashion for our
purposes.
Setup is straightforward. You place your .task directory under revision
control. You then need to perform a regular commit/push/pull/update to make
sure that the data is propagated when needed. You can even do this using shell
scripts so that every task command is preceded by a 'pull' and followed by
a 'push'.
Strengths:
- Provides a backup of your tasks.
.br
- Good data transport mechanisms
.br
- Secure transport options
- Saves disk space.
Weaknesses:
.br
- You need proficiency with VCS tools
.br
- You will need to manually resolve conflicts frequently
.br
- You need to provide the mechanism for making sure copies are up to date
For example, you might want a replica of your tasks on your laptop and on your phone.
NOTE: A side-effect of synchronization is that once changes have been
synchronized, they cannot be undone. This means that each time synchronization
is run, it is no longer possible to undo previous operations.
.SH MANAGING SYNCHRONIZATION
.SS Adding a Replica
To add a new replica, configure a new, empty replica identically to
the existing replica, and run `task sync`.
.SS When to Synchronize
For synchronization to a server, a common solution is to run
.nf
$ task sync
.fi
periodically, such as via
.BR cron (8) .
.SH CONFIGURATION
Taskwarrior provides several options for synchronizing your tasks:
- To a server specifically designed to handle Taskwarrior data.
+ To a cloud storage provider. Currently only GCP is supported.
- To a local, on-disk file.
For most of these, you will need an encryption secret used to encrypt and
decrypt your tasks. This can be any secret string, and must match for all
replicas sharing tasks.
.nf
$ task config sync.encryption_secret <encryption_secret>
.fi
Tools such as
.BR pwgen (1)
can generate suitable secret values.
.SS Sync Server
To synchronize your tasks to a sync server, you will need the following
information from the server administrator:
.br
- The server's URL (such as "https://tw.example.com/path")
.br
- A client ID ("client_id") identifying your tasks
Configure Taskwarrior with these details:
.nf
$ task config sync.server.url <url>
$ task config sync.server.client_id <client_id>
.fi
Note that the URL must include the scheme, such as 'http://' or 'https://'.
$ task config sync.server.origin <origin>
Is a deprecated synonym for "sync.server.url".
.SS Google Cloud Platform
To synchronize your tasks to GCP, use the GCP Console to create a new project,
and within that project a new Cloud Storage bucket. The default settings for
the bucket are adequate.
Authenticate to the project with:
.nf
$ gcloud config set project $PROJECT_NAME
$ gcloud auth application-default login
.fi
Then configure Taskwarrior with:
.nf
$ task config sync.gcp.bucket <bucket-name>
.fi
However you can bring your own service account credentials if your
`application-default` is already being used by some other application
To begin, navigate to the "IAM and Admin" section in the Navigation Menu, then select "Roles."
On the top menu bar within the "Roles" section, click "CREATE ROLE."
Provide an appropriate name and description for the new role.
Add permissions to your new role using the filter "Service:storage" (not the "Filter permissions by role" input box).
Select the following permissions:
- storage.buckets.create
- storage.buckets.get
- storage.buckets.update
- storage.objects.create
- storage.objects.delete
- storage.objects.get
- storage.objects.list
- storage.objects.update
Create your new role.
On the left sidebar, navigate to "Service accounts."
On the top menu bar within the "Service accounts" section, click "CREATE SERVICE ACCOUNT."
Provide an appropriate name and description for the new service account.
Select the role you just created and complete the service account creation process.
Now, in the Service Account dashboard, click into the new service account and select "keys" on the top menu bar.
Click on "ADD KEY" to create and download a new key (a JSON key).
Then configure Taskwarrior with:
.nf
$ task config sync.gcp.bucket <bucket-name>
$ task config sync.gcp.credential_path <absolute-path-to-downloaded-credentials>
.fi
.SS Local Synchronization
In order to take advantage of synchronization's side effect of saving disk
space without setting up a remote server, it is possible to sync tasks locally.
To configure local sync:
.nf
$ task config sync.local.server_dir /path/to/sync
.fi
The default configuration is to sync to a database in the task directory
("data.location").
.SH RUNNING TASKCHAMPION-SYNC-SERVER
The TaskChampion sync server is an HTTP server supporting multiple users.
Users are identified by a client ID, and users with different client IDs are
entirely independent. Task data is encrypted by Taskwarrior, and the sync
server never sees un-encrypted data.
The server is developed in
https://github.com/GothenburgBitFactory/taskchampion-sync-server.
.SS Adding a New User
To add a new user to the server, invent a new client ID with a tool like
`uuidgen` or an online UUID generator. There is no need to configure the server
for this new client ID: the sync server will automatically create a new user
whenever presented with a new client ID. Supply the ID, along with the
URL, to the user for inclusion in their Taskwarrior config. The user should
invent their own "encryption_secret".
.SH AVOIDING DUPLICATE RECURRING TASKS
If you run multiple clients that sync to the same server, you will need to run
this command on your primary client (the one you use most often):
.nf
$ task config recurrence on
.fi
And on the other clients, run:
.nf
$ task config recurrence off
.fi
This protects you against the effects of a sync/duplication bug.
.SH ALTERNATIVE: FILE SHARING SERVICES
.SH OPTION 2: FILE SHARING SERVICES
There are many file sharing services, such as DropBox, Amazon S3, Google Drive,
SkyDrive and more. This technique involves storing your .task directory in a
shared directory under the control of the file hosting services.
@@ -59,7 +203,9 @@ modifying the same task on two machines, without an intervening sync.
Setup simply involves creating the directory and modifying your data.location
configuration variable like this:
.nf
$ task config data.location /path/to/shared/directory
.fi
Strengths:
.br
@@ -74,78 +220,6 @@ Weaknesses:
- Tasks are not properly merged
.SH OPTION 3: TASKSERVER
The Taskserver was designed for this purpose to be secure, fast and conflict-
free, allowing data interchange between assorted Taskwarrior clients, and
tolerant of network connectivity problems.
There is a 'sync' command built in to Taskwarrior (provided the GnuTLS library
is installed), and with a server account and client configuration, syncing is
done on demand.
Setup is a matter of creating an account on a Taskserver (see your Taskserver
provider or operate your own - see
https://taskwarrior.org/docs/taskserver/setup.html)
Once you have an account, you'll receive a certificate, key, and credentials.
You'll need to put the certificate and key somewhere like this:
$ cp <name>.cert.pem ~/.task
$ cp <name>.key.pem ~/.task
Then you configure Taskwarrior, using the provided details:
$ task config taskd.certificate ~/.task/<name>.cert.pem
$ task config taskd.key ~/.task/<name>.key.pem
$ task config taskd.credentials <organization>/<name>/<UUID>
$ task config taskd.server <server domain>:<port>
If you are using a private server, you are likely also using a self-signed
certificate, which means you will need one of the following additional entries:
$ task config taskd.ca ~/.task/ca.cert.pem
The CA (Certificate Authority) will be used to verify the server certificate.
After setup, you run a one-time sync initialization, like this:
$ task sync init
This will make sure your client and the server are properly in sync to begin
with. From this point on, you never run the 'initialize' command again, just
go about your business, and when you want to sync, run this:
$ task sync
You'll see a summary of how many tasks were uploaded and downloaded. You can
safely run the command as often as you like. When there are no changes to sync,
nothing happens. If you do not have connectivity, your task changes accumulate
so that when you next run 'sync' with proper connectivity, the changes are
properly handled, in the right order.
If you run multiple clients that sync to the same server, you will need to run
this command on your primary client (the one you use most often):
$ task config recurrence on
And on the other clients, run:
$ task config recurrence off
This protects you against the effects of a sync/duplication bug.
Strengths:
.br
- Secure communication
.br
- Minimal bandwidth
.br
- Tolerates connectivity outage
Weaknesses:
.br
- You need to manage your own server, or gain access to a hosted server.
.SH "CREDITS & COPYRIGHTS"
Copyright (C) 2006 \- 2021 T. Babej, P. Beckingham, F. Hernandez.

View File

@@ -24,18 +24,24 @@ descriptors), project groups, etc.
The <filter> consists of zero or more search criteria that select tasks. For
example, to list all pending tasks belonging to the 'Home' project:
.nf
task project:Home list
.fi
You can specify multiple filter terms, each of which further restricts the
result:
.nf
task project:Home +weekend garden list
.fi
This example applies three filters: the 'Home' project, the 'weekend' tag, and
the description or annotations must contain the character sequence 'garden'.
In this example, 'garden' is translated internally to:
.nf
description.contains:garden
.fi
as a convenient shortcut. The 'contains' here is an attribute modifier, which
is used to exert more control over the filter than simply absence or presence.
@@ -45,24 +51,30 @@ Note that a filter may have zero terms, which means that all tasks apply to the
command. This can be dangerous, and this special case is confirmed, and
cannot be overridden. For example, this command:
.nf
task modify +work
This command has no filter, and will modify all tasks. Are you sure? (yes/no)
.fi
will add the 'work' tag to all tasks, but only after confirmation.
More filter examples:
.nf
task <command> <mods>
task 28 <command> <mods>
task +weekend <command> <mods>
task +bills due.by:eom <command> <mods>
task project:Home due.before:today <command> <mods>
task ebeeab00-ccf8-464b-8b58-f7f2d606edfb <command> <mods>
.fi
By default filter elements are combined with an implicit 'and' operator,
but 'or' and 'xor' may also be used, provided parentheses are included:
.nf
task '( /[Cc]at|[Dd]og/ or /[0-9]+/ )' <command> <mods>
.fi
The parentheses isolate the logical term from any default command filter or
implicit report filter which would be combined with an implicit 'and'.
@@ -71,10 +83,12 @@ A filter may target specific tasks using ID or UUID numbers. To specify
multiple tasks use one of these forms (space-separated list of ID numbers,
UUID numbers or ID ranges):
.nf
task 1 2 3 delete
task 1-3 info
task 1 2-5 19 modify pri:H
task 4-7 ebeeab00-ccf8-464b-8b58-f7f2d606edfb info
.fi
Note that it may be necessary to properly escape special characters as well as
quotes in order to avoid their special meanings in the shell. See also the
@@ -85,11 +99,13 @@ section 'SPECIFYING DESCRIPTIONS' for more information.
The <mods> consist of zero or more changes to apply to the selected tasks, such
as:
.nf
task <filter> <command> project:Home
task <filter> <command> +weekend +garden due:tomorrow
task <filter> <command> Description/annotation text
task <filter> <command> /from/to/ <- replace first match
task <filter> <command> /from/to/g <- replace all matches
.fi
.SH SUBCOMMANDS
@@ -188,6 +204,7 @@ wish to save it, or pipe it to another command or script to convert it to
another format. You'll find these example scripts online at
<https://taskwarrior.org/tools/>:
.nf
export-csv.pl
export-sql.py
export-xml.py
@@ -198,6 +215,7 @@ another format. You'll find these example scripts online at
export-ical.pl
export-xml.pl
export-yad.pl
.fi
.TP
.B task <filter> ghistory.annual
@@ -243,12 +261,16 @@ Applies the filter then extracts only the task IDs and presents them as
a space-separated list. This is useful as input to a task command, to achieve
this:
.nf
task $(task project:Home ids) modify priority:H
.fi
This example first gets the IDs for the project:Home filter, then sets
the priority to H for each of those tasks. This can also be achieved directly:
.nf
task project:Home modify priority:H
.fi
This command is mainly of use to external scripts.
@@ -258,7 +280,9 @@ Applies the filter on all tasks (even deleted and completed tasks)
then extracts only the task UUIDs and presents them as a space-separated list.
This is useful as input to a task command, to achieve this:
.nf
task $(task project:Home status:completed uuids) modify status:pending
.fi
This example first gets the UUIDs for the project:Home and status:completed
filters, then makes each of those tasks pending again.
@@ -385,8 +409,10 @@ if import is to be used in automated workflows. See taskrc(5).
For importing other file formats, the standard task release comes with a
few example scripts, such as:
.nf
import-todo.sh.pl
import-yaml.pl
.fi
.TP
.B task log <mods>
@@ -432,14 +458,20 @@ parses and evaluates the expression given on the command line.
Examples:
.nf
task calc 1 + 1
2
.fi
.nf
task calc now + 8d
2015-03-26T18:06:57
.fi
.nf
task calc eom
2015-03-31T23:59:59
.fi
.TP
.B task config [<name> [<value> | '']]
@@ -447,16 +479,22 @@ Add, modify and remove settings directly in the Taskwarrior configuration.
This command either modifies the 'name' setting with a new value of 'value',
or adds a new entry that is equivalent to 'name=value':
.nf
task config name value
.fi
This command sets a blank value. This has the effect of suppressing any
default value:
.nf
task config name ''
.fi
Finally, this command removes any 'name=...' entry from the .taskrc file:
.nf
task config name
.fi
.TP
.B task context <name>
@@ -464,7 +502,9 @@ Sets the currently active context. See the CONTEXT section.
Example:
.nf
task context work
.fi
.TP
.B task context delete <name>
@@ -473,7 +513,9 @@ set as active, it will be unset.
Example:
.nf
task context delete work
.fi
.TP
.B task context define <name> <filter>
@@ -482,9 +524,11 @@ does not affect the currently set context, just adds a new context definition.
Examples:
.nf
task context define work project:Work
task context define home project:Home or +home
task context define superurgent due:today and +urgent
.fi
.TP
.B task context list
@@ -506,11 +550,10 @@ are important. Running this command generates a summary of similar information
that should accompany a bug report.
It includes compiler, library and software information. It does not include
any personal information, other than the location and size of your task data
files.
any personal information, other than the location of your task data.
This command also performs a diagnostic scan of your data files looking for
common problems, such as duplicate UUIDs.
This command also performs a diagnostic scan of your data looking for common
problems, such as duplicate UUIDs.
.TP
.B task execute <external command>
@@ -547,21 +590,21 @@ Shows statistics of the tasks defined by the filter. Is affected by the context.
Shows a report of aggregated task status by project. Is affected by the context.
.TP
.B task sync [init]
.B task sync
The sync command synchronizes data with the Taskserver, if configured.
The init subcommand should only ever be run once, and only on one client, because
it sends all data to the Taskserver. This allows all the subsequent sync commands
to only send small deltas.
Note: If you use multiple sync clients, make sure this setting (which is the default)
is on your primary client:
.nf
recurrence=on
.fi
and on all other clients (this is not the default):
.nf
recurrence=off
.fi
This is a workaround to avoid a recurrence bug that duplicates recurring tasks.
@@ -621,7 +664,9 @@ by third-party applications.
Reports a unique set of attribute values. For example, to see all the active
projects:
.nf
task +PENDING _unique project
.fi
.TP
.B task <filter> _uuids
@@ -668,6 +713,7 @@ Shows the UUIDs and descriptions of matching tasks.
Accesses and displays the DOM reference(s). Used to extract individual values
from tasks, or the system. Supported DOM references are:
.nf
rc.<name>
tw.syncneeded
tw.program
@@ -683,6 +729,7 @@ from tasks, or the system. Supported DOM references are:
system.os
<id>.<attribute>
<uuid>.<attribute>
.fi
Note that the 'rc.<name>' reference may need to be escaped using '--' to prevent
the reference from being interpreted as an override.
@@ -693,8 +740,10 @@ missing value, the command exits with 1.
Additionally, some components of the attributes of particular types may be
extracted by DOM references.
.nf
$ task _get 2.due.year
2015
.fi
For a full list of supported attribute-specific DOM references, consult
the online documentation at:
@@ -704,14 +753,16 @@ the online documentation at:
.TP
.B ID
Tasks can be specified uniquely by IDs, which are simply the indexes of the
tasks in the data file. The ID of a task may therefore change, but only when
a command is run that displays IDs. When modifying tasks, it is safe to
rely on the last displayed ID. Always run a report to check you have the right
ID for a task. IDs can be given to task as a sequence, for example,
.br
.B
Tasks can be specified uniquely by IDs, which are the indexes of the "working
set" of tasks (mostly pending and recurrent tasks). The ID of a task may
therefore change, but only when a report that displays IDs is run. When
modifying tasks, it is safe to rely on the last displayed ID. Always run a
report to check you have the right ID for a task. IDs can be given to task as a
sequence, for example:
.nf
task 1,4-10,19 delete
.fi
.TP
.B +tag|-tag
@@ -722,15 +773,18 @@ Certain tags (called 'special tags'), can be used to affect the way tasks are
treated. For example, if a task has the special tag 'nocolor', then it is
exempt from all color rules. The supported special tags are:
.nf
+nocolor Disable color rules processing for this task
+nonag Completion of this task suppresses all nag messages
+nocal This task will not appear on the calendar
+next Elevates task so it appears on 'next' report
.fi
There are also virtual tags, which represent task metadata in tag form. These
tags do not exist, but can be used to filter tasks. The supported virtual tags
are:
.nf
ACTIVE Matches if the task is started
ANNOTATED Matches if the task has annotations
BLOCKED Matches if the task is blocked
@@ -738,7 +792,7 @@ are:
CHILD Matches if the task has a parent (deprecated in 2.6.0)
COMPLETED Matches if the task has completed status
DELETED Matches if the task has deleted status
DUE Matches if the task is due
DUE Matches if the task is due within the next 7 days (See rc.due)
INSTANCE Matches if the task is a recurrent instance
LATEST Matches if the task is the newest added task
MONTH Matches if the task is due this month
@@ -762,6 +816,7 @@ are:
WEEK Matches if the task is due this week
YEAR Matches if the task is due this year
YESTERDAY Matches if the task was due sometime yesterday
.fi
.\" If you update the above list, update src/commands/CmdInfo.cpp and src/commands/CmdTags.cpp as well.
@@ -773,6 +828,10 @@ add or remove a virtual tag.
.B project:<project-name>
Specifies the project to which a task is related to.
.TP
.B status:pending|deleted|completed|waiting|recurring
Specifies the state of the task.
.TP
.B priority:H|M|L or priority:
Specifies High, Medium, Low and no priority for a task.
@@ -819,6 +878,10 @@ by '-', the specified tasks are removed from the dependency list.
.B entry:<entry-date>
For report purposes, specifies the date that a task was created.
.TP
.B modified:<modified-date>
Specifies the most recent modification date.
.SH ATTRIBUTE MODIFIERS
Attribute modifiers improve filters. Supported modifiers are:
@@ -859,9 +922,9 @@ calculated attributes:
For example:
.RS
task due.before:eom priority.not:L list
.RE
.nf
task due.before:eom priority.not:L list
.fi
The
.I before
@@ -881,15 +944,21 @@ The
modifier is the same as 'before', except it also includes the moment in
question. For example:
.nf
task add test due:eoy
.fi
will be found when using the inclusive filter 'by':
.nf
task due.by:eoy
.fi
but not when the non-inclusive filter 'before' is used:
.nf
task due.before:eoy
.fi
this applies equally to other named dates such as 'eom', 'eod', etc; the
modifier compares using '<=' rather than '<' like 'before' does.
@@ -898,8 +967,10 @@ The
.I none
modifier requires that the attribute does not have a value. For example:
.nf
task priority: list
task priority.none: list
.fi
are equivalent, and list tasks that do not have a priority.
@@ -921,8 +992,10 @@ The
.I has
modifier is used to search for a substring, such as:
.nf
task description.has:foo list
task foo list
.fi
These are equivalent and will return any task that has 'foo' in the description
or annotations.
@@ -937,13 +1010,17 @@ The
.I startswith
modifier matches against the left, or beginning of an attribute, such that:
.nf
task project.startswith:H list
task project:H list
.fi
are equivalent and will match any project starting with 'H'. Matching all
projects not starting with 'H' is done with:
.nf
task project.not:H list
.fi
The
.I endswith
@@ -954,7 +1031,9 @@ The
modifier requires that the attribute contain the whole word specified, such
that this:
.nf
task description.word:bar list
.fi
Will match the description 'foo bar baz' but does not match 'dog food'.
@@ -968,15 +1047,19 @@ modifier.
You can use the following operators in filter expressions:
.nf
and or xor ! Logical operators
< <= = == != !== >= > Relational operators
( ) Precedence
.fi
For example:
.nf
task due.before:eom priority.not:L list
task '( due < eom or priority != L )' list
task '! ( project:Home or project:Garden )' list
.fi
The
.I =
@@ -1000,32 +1083,44 @@ Note that the parentheses are required when using a logical operator other than
the 'and' operator. The reason is that some reports contain filters that must
be combined with the command line. Consider this example:
.nf
task project:Home or project:Garden list
.fi
While this looks correct, it is not. The 'list' report contains a filter of:
.nf
task show report.list.filter
Config Variable Value
----------------- --------------
report.list.filter status:pending
.fi
Which means the example is really:
.nf
task status:pending project:Home or project:Garden list
.fi
The implied 'and' operator makes it:
.nf
task status:pending and project:Home or project:Garden list
.fi
This is a precedence error - the 'and' and 'or' need to be grouped using
parentheses, like this:
.nf
task status:pending and ( project:Home or project:Garden ) list
.fi
The original example therefore must be entered as:
.nf
task '( project:Home or project:Garden )' list
.fi
This includes quotes to escape the parentheses, so that the shell doesn't
interpret them and hide them from Taskwarrior.
@@ -1033,11 +1128,13 @@ interpret them and hide them from Taskwarrior.
There is redundancy between operators, attribute modifiers and other syntactic
sugar. For example, the following are all equivalent:
.nf
task foo list
task /foo/ list
task description.contains:foo list
task description.has:foo list
task 'description ~ foo' list
.fi
.SH SPECIFYING DATES AND FREQUENCIES
@@ -1051,102 +1148,93 @@ configuration variable
.RS
.TP
Exact specification
task ... due:7/14/2008
.nf
task ... due:7/14/2008
.fi
.TP
ISO-8601
task ... due:2013-03-14T22:30:00Z
.nf
task ... due:2013-03-14T22:30:00Z
.fi
.TP
Relative wording
task ... due:now
.br
task ... due:today
.br
task ... due:yesterday
.br
task ... due:tomorrow
.nf
task ... due:now
task ... due:today
task ... due:yesterday
task ... due:tomorrow
.fi
.TP
Day number with ordinal
task ... due:23rd
.br
task ... due:3wks
.br
task ... due:1day
.br
task ... due:9hrs
.nf
task ... due:23rd
task ... due:3wks
task ... due:1day
task ... due:9hrs
.fi
.TP
Start of next (work) week (Monday), calendar week (Sunday or Monday), month, quarter and year
.br
task ... due:sow
.br
task ... due:soww
.br
task ... due:socw
.br
task ... due:som
.br
task ... due:soq
.br
task ... due:soy
.nf
task ... due:sow
task ... due:soww
task ... due:socw
task ... due:som
task ... due:soq
task ... due:soy
.fi
.TP
End of current (work) week (Friday), calendar week (Saturday or Sunday), month, quarter and year
.br
task ... due:eow
.br
task ... due:eoww
.br
task ... due:eocw
.br
task ... due:eom
.br
task ... due:eoq
.br
task ... due:eoy
.nf
task ... due:eow
task ... due:eoww
task ... due:eocw
task ... due:eom
task ... due:eoq
task ... due:eoy
.fi
.TP
At some point or later
.br
task ... wait:later
.br
task ... wait:someday
.nf
task ... wait:later
task ... wait:someday
.fi
This sets the wait date to 12/30/9999.
.TP
Next occurring weekday
task ... due:fri
.nf
task ... due:fri
.fi
.TP
Predictable holidays
task ... due:goodfriday
.br
task ... due:easter
.br
task ... due:eastermonday
.br
task ... due:ascension
.br
task ... due:pentecost
.br
task ... due:midsommar
.br
task ... due:midsommarafton
.br
task ... due:juhannus
.nf
task ... due:goodfriday
task ... due:easter
task ... due:eastermonday
task ... due:ascension
task ... due:pentecost
task ... due:midsommar
task ... due:midsommarafton
task ... due:juhannus
.fi
.RE
.SS FREQUENCIES
Recurrence periods. Taskwarrior supports several ways of specifying the
.I frequency
of recurring tasks.
of recurring tasks. Note that frequencies can be abbreviated.
.RS
.TP
daily, day, 1da, 2da, ...
daily, day, 1day, 1days, 2day, 2days, 1da, 2da, ...
Every day or a number of days.
.TP
@@ -1187,7 +1275,8 @@ Context is a user-defined query, which is automatically applied to all commands
that filter the task list and to commands that create new tasks (add, log). For
example, any report command will have its result affected by the current
active context. Here is a list of the commands that are affected:
.IP
.nf
add
burndown
count
@@ -1206,33 +1295,44 @@ active context. Here is a list of the commands that are affected:
stop
summary
tags
.fi
All other commands are NOT affected by the context.
.nf
$ task list
ID Age Project Description Urg
1 2d Sport Run 5 miles 1.42
2 1d Home Clean the dishes 1.14
.fi
.nf
$ task context home
Context 'home' set. Use 'task context none' to remove.
.fi
.nf
$ task list
ID Age Project Description Urg
2 1d Home Clean the dishes 1.14
Context 'home' set. Use 'task context none' to remove.
.fi
Task list got automatically filtered for project:Home.
.nf
$ task add Vaccuum the carpet
Created task 3.
Context 'home' set. Use 'task context none' to remove.
.fi
.nf
$ task list
ID Age Project Description Urg
2 1d Home Clean the dishes 1.14
3 5s Home Vaccuum the carpet 1.14
Context 'home' set. Use 'task context none' to remove.
.fi
Note that the newly added task "Vaccuum the carpet" has "project:Home" set
automatically.
@@ -1243,22 +1343,28 @@ new context's name to the 'context' command.
To unset any context, use the 'none' subcommand.
.nf
$ task context none
Context unset.
.fi
.nf
$ task list
ID Age Project Description Urg
1 2d Sport Run 5 miles 1.42
2 1d Home Clean the dishes 1.14
3 7s Home Vaccuum the carpet 1.14
.fi
Context can be defined using the 'define' subcommand, specifying both the name
of the new context, and it's assigned filter.
.nf
$ task context define home project:Home
Are you sure you want to add 'context.home.read' with a value of 'project:Home'? (yes/no) yes
Are you sure you want to add 'context.home.write' with a value of 'project:Home'? (yes/no) yes
Context 'home' successfully defined.
.fi
Note that you were separately prompted to set the 'read' and 'write' context.
This allows you to specify contexts that only work for reporting commands or
@@ -1266,13 +1372,16 @@ only for commands that create tasks.
To remove the definition, use the 'delete' subcommand.
.nf
$ task context delete home
Are you sure you want to remove 'context.home.read'? (yes/no) yes
Are you sure you want to remove 'context.home.write'? (yes/no) yes
Context 'home' deleted.
.fi
To check what is the currently active context, use the 'show' subcommand.
.nf
$ task context show
Context 'home' with
@@ -1280,13 +1389,16 @@ To check what is the currently active context, use the 'show' subcommand.
* write filter: '+home'
is currently applied.
.fi
Contexts can store arbitrarily complex filters.
.nf
$ task context define family project:Family or +paul or +nancy
Are you sure you want to add 'context.family.read' with a value of 'project:Family or +paul or +nancy'? (yes/no) yes
Are you sure you want to add 'context.family.write' with a value of 'project:Family or +paul or +nancy'? (yes/no) no
Context 'family' successfully defined.
.fi
Contexts are permanent, and the currently set context name is stored in the
"context" configuration variable. The context definition is stored in the
@@ -1299,13 +1411,17 @@ filter as writeable context. The reason for this decision is that the complex
filter in the example does not directly translate to a modification. In fact,
if such a context is used as a writeable context, the following happens:
.nf
$ task add Call Paul
Created task 4.
Context 'family' set. Use 'task context none' to remove.
.fi
.nf
$ task 4 list
ID Age Project Tags Description Urg
4 9min Family nancy paul or or Call Paul 0
.fi
There is no clear mapping between the complex filter used and the modifications
@@ -1314,16 +1430,20 @@ operators being present in the description. Taskwarrior does not try to guess
the user intention here, and instead, the user is expected to set the
"context.<name>.write" variable to make their intention explicit, for example:
.nf
$ task config context.family.write project:Family
Are you sure you want to change the value of 'context.family.write' from 'project:Family or +paul or +nancy' to 'project:Family'? (yes/no) yes
Config file /home/tbabej/.config/task/taskrc modified.
.fi
.nf
$ task context
Name Type Definition Active
family read project:Family or +paul or +nancy yes
write project:Family yes
home read +home no
write +home no
.fi
Note how read and write contexts differ for context "family", while for context
"home" they stay the same.
@@ -1332,77 +1452,77 @@ In addition, every configuration parameter can be overridden for the current
context, by specifying context.<name>.rc.<parameter>. For example, if the default
command for the family context should be displaying the family_report:
.nf
$ task config context.family.rc.default.command family_report
.fi
.SH COMMAND ABBREVIATION
All Taskwarrior commands may be abbreviated as long as a unique prefix is used,
for example:
.RS
$ task li
.RE
.nf
$ task li
.fi
is an unambiguous abbreviation for
.RS
$ task list
.RE
.nf
$ task list
.fi
but
.RS
$ task l
.RE
.nf
$ task l
.fi
could be list, ls or long.
Note that you can restrict the minimum abbreviation size using the configuration
setting:
.RS
abbreviation.minimum=3
.RE
.nf
abbreviation.minimum=3
.fi
.SH SPECIFYING DESCRIPTIONS
Some task descriptions need to be escaped because of the shell and the special
meaning of some characters to the shell. This can be done either by adding
quotes to the description or escaping the special character:
.RS
$ task add "quoted ' quote"
.br
$ task add escaped \\' quote
.RE
.nf
$ task add "quoted ' quote"
$ task add escaped \\' quote
.fi
The argument \-\- (a double dash) tells Taskwarrior to treat all other args
as description:
.RS
$ task add -- project:Home needs scheduling
.RE
.nf
$ task add -- project:Home needs scheduling
.fi
In other situations, the shell sees spaces and breaks up arguments. For
example, this command:
.RS
$ task 123 modify /from this/to that/
.RE
.nf
$ task 123 modify /from this/to that/
.fi
is broken up into several arguments, which is corrected with quotes:
.RS
$ task 123 modify "/from this/to that/"
.RE
.nf
$ task 123 modify "/from this/to that/"
.fi
It is sometimes necessary to force the shell to pass quotes to Taskwarrior
intact, so you can use:
.RS
$ task add project:\\'Three Word Project\\' description
.RE
.nf
$ task add project:\\'Three Word Project\\' description
.fi
Taskwarrior supports Unicode using only the UTF8 encoding, with no Byte Order
Marks in the data files.
Taskwarrior supports Unicode using only the UTF8 encoding.
.SH CONFIGURATION FILE AND OVERRIDE OPTIONS
Taskwarrior stores its configuration in a file in the user's home directory:
@@ -1453,21 +1573,13 @@ will check if $XDG_CONFIG_HOME/task/taskrc exists and attempt to read it
.TP
~/.task
The default directory where task stores its data files. The location
can be configured in the configuration variable 'data.location', or
overridden with the TASKDATA environment variable..
The default directory where task stores its data. The location can be
configured in the configuration variable 'data.location', or overridden with
the TASKDATA environment variable.
.TP
~/.task/pending.data
The file that contains the tasks that are not yet done.
.TP
~/.task/completed.data
The file that contains the completed ("done") tasks.
.TP
~/.task/undo.data
The file that contains information needed by the "undo" command.
~/.task/taskchampion.sqlite3
The database file.
.SH "CREDITS & COPYRIGHTS"
Copyright (C) 2006 \- 2021 T. Babej, P. Beckingham, F. Hernandez.

View File

@@ -18,43 +18,43 @@ obtains its configuration data from a file called
.I .taskrc
\&. This file is normally located in the user's home directory:
.RS
$HOME/.taskrc
.RE
.nf
$HOME/.taskrc
.fi
The default location can be overridden using the
.I rc:
attribute when running task:
.RS
$ task rc:<directory-path>/.taskrc ...
.RE
.nf
$ task rc:<directory-path>/.taskrc ...
.fi
or using the TASKRC environment variable:
.RS
$ TASKRC=/tmp/.taskrc task ...
.RE
.nf
$ TASKRC=/tmp/.taskrc task ...
.fi
Additionally, if no ~/.taskrc exists, taskwarrior will check if the XDG_CONFIG_HOME environment variable is defined:
.RS
$ XDG_CONFIG_HOME=~/.config task ...
.RE
.nf
$ XDG_CONFIG_HOME=~/.config task ...
.fi
Individual options can be overridden by using the
.I rc.<name>:
attribute when running task:
.RS
$ task rc.<name>:<value> ...
.RE
.nf
$ task rc.<name>:<value> ...
.fi
or
.RS
$ task rc.<name>=<value> ...
.RE
.nf
$ task rc.<name>=<value> ...
.fi
If
.B Taskwarrior
@@ -65,9 +65,9 @@ file in the user's home directory.
The .taskrc file follows a very simple syntax defining name/value pairs:
.RS
<name> = <value>
.RE
.nf
<name> = <value>
.fi
There may be whitespace around <name>, '=' and <value>, and it is ignored.
Whitespace within the <value> is left intact.
@@ -77,11 +77,11 @@ Values support UTF8 as well as JSON encoding, such as \\uNNNN.
Note that Taskwarrior is flexible about the values used to represent Boolean
items. You can use "1" to enable, anything else is interpreted as disabled.
The values "on", "yes", "y" and "true" are currently supported but deprecated.
The values "on", "yes", "y" and "true" are also supported.
.RS
include <file>
.RE
.nf
include <file>
.fi
There may be whitespace around 'include' and <file>. The file may be an
absolute or relative path, and the special character '~' is expanded to mean
@@ -95,9 +95,9 @@ respect to the following directories (listed in order of precedence):
Note that environment variables are also expanded in paths (and any other
taskrc variables).
.RS
# <comment>
.RE
.nf
# <comment>
.fi
A comment consists of the character '#', and extends from the '#' to the end
of the line. There is no way to comment a multi-line block. There may be
@@ -108,9 +108,9 @@ that makes use of every default. The contents of the .taskrc file therefore
represent overrides of the default values. To remove a default value completely
there must be an entry like this:
.RS
<name> =
.RE
.nf
<name> =
.fi
This entry overrides the default value with a blank value.
@@ -118,28 +118,28 @@ This entry overrides the default value with a blank value.
You can edit your .taskrc file by hand if you wish, or you can use the 'config'
command. To permanently set a value in your .taskrc file, use this command:
.RS
$ task config nag "You have more urgent tasks."
.RE
.nf
$ task config nag "You have more urgent tasks."
.fi
To delete an entry, use this command:
.RS
$ task config nag
.RE
.nf
$ task config nag
.fi
Taskwarrior will then use the default value. To explicitly set a value to
blank, and therefore avoid using the default value, use this command:
.RS
$ task config nag ""
.RE
.nf
$ task config nag ""
.fi
Taskwarrior will also display all your settings with this command:
.RS
$ task show
.RE
.nf
$ task show
.fi
and in addition, will also perform a check of all the values in the file,
warning you of anything it finds amiss.
@@ -149,20 +149,19 @@ The .taskrc can include other files containing configuration settings by using t
.B include
statement:
.RS
include <path/to/the/configuration/file/to/be/included>
.RE
.nf
include <path/to/the/configuration/file/to/be/included>
.fi
By using include files you can divide your main configuration file into several
ones containing just the relevant configuration data like colors, etc.
There are two excellent uses of includes in your .taskrc, shown here:
.RS
include holidays.en-US.rc
.br
include dark-16.theme
.RE
.nf
include holidays.en-US.rc
include dark-16.theme
.fi
This includes two standard files that are distributed with Taskwarrior, which
define a set of US holidays, and set up a 16-color theme to use, to color the
@@ -173,7 +172,7 @@ These environment variables override defaults, but not command-line arguments.
.TP
.B TASKDATA=~/.task
This overrides the default path for the Taskwarrior data files.
This overrides the default path for the Taskwarrior data.
.TP
.B TASKRC=~/.taskrc
@@ -197,7 +196,7 @@ Valid variable names and their default values are:
.TP
.B data.location=$HOME/.task
This is a path to the directory containing all the Taskwarrior files. By
This is a path to the directory containing all the Taskwarrior data. By
default, it is set up to be ~/.task, for example: /home/paul/.task
Note that you can use the
@@ -211,19 +210,17 @@ Note that the TASKDATA environment variable overrides this setting.
This is a path to the hook scripts directory. By default it is ~/.task/hooks.
.TP
.B locking=1
Determines whether to use file locking when accessing the pending.data and
completed.data files. Defaults to "1". Solaris users who store the data
files on an NFS mount may need to set locking to "0". Note that there is
danger in setting this value to "0" - another program (or another instance of
task) may write to the task.pending file at the same time.
.B gc=1
Can be used to temporarily suspend rebuilding, so that task IDs don't change.
Note that this should be used in the form of a command line override (task
rc.gc=0 ...), and not permanently used in the .taskrc file, as this
significantly affects performance in the long term.
.TP
.B gc=1
Can be used to temporarily suspend garbage collection (gc), so that task IDs
don't change. Note that this should be used in the form of a command line
override (task rc.gc=0 ...), and not permanently used in the .taskrc file,
as this significantly affects performance in the long term.
.B purge.on-sync=0
If set, old tasks will be purged automatically after each synchronization.
Tasks are identified as "old" when they have status "Deleted" and have not
been modified for 180 days.
.TP
.B hooks=1
@@ -241,6 +238,13 @@ rc.data.location or TASKDATA override) is missing. Default value is '0'.
Determines whether to use ioctl to establish the size of the window you are
using, for text wrapping.
.TP
.B limit:25
Specifies the desired number of tasks a report should show, if a positive
integer is given. The value 'page' may also be used, and will limit the
report output to as many lines of text as will fit on screen. Default value
is '25'.
.TP
.B defaultwidth=80
The width of output used when auto-detection support is not available. Defaults
@@ -292,12 +296,14 @@ is most readily parsed and used by shell scripts.
Alternatively, you can specify a comma-separated list of verbosity tokens that
control specific occasions when output is generated. This list may contain:
.nf
blank Inserts extra blank lines in output, for clarity
header Messages that appear before report output (this includes .taskrc/.task overrides and the "[task next]" message)
footnote Messages that appear after report output (mostly status messages and change descriptions)
label Column labels on tabular reports
new-id Provides feedback on any new task with IDs (and UUIDs for new tasks with ID 0, such as new completed tasks).
new-uuid Provides feedback on any new task with UUIDs. Overrides new-id. Useful for automation.
news Reminds to read new release highlights until the user runs "task news".
affected Reports 'N tasks affected' and similar
edit Used the verbose template for the 'edit' command
special Feedback when applying special tags
@@ -308,6 +314,7 @@ control specific occasions when output is generated. This list may contain:
override Notification when configuration options are overridden
recur Notification when a new recurring task instance is created
default Notifications about taskwarrior choosing to perform a default action.
.fi
The tokens "affected", "new-id", "new-uuid", "project", "override" and "recur"
imply "footnote".
@@ -319,14 +326,20 @@ and the "nothing" setting is equivalent to none of the tokens being specified.
Here are the shortcut equivalents:
.nf
verbose=on
verbose=blank,header,footnote,label,new-id,affected,edit,special,project,sync,filter,override,recur
verbose=blank,header,footnote,label,new-id,news,affected,edit,special,project,sync,filter,override,recur
.fi
.nf
verbose=0
verbose=blank,label,new-id,edit
.fi
.nf
verbose=nothing
verbose=
.fi
Those additional comments are sent to the standard error for header, footnote
and project. The others are sent to standard output.
@@ -495,13 +508,6 @@ weekly recurring task is added with a due date of tomorrow, and recurrence.limit
is set to 2, then a report will list 2 pending recurring tasks, one for tomorrow,
and one for a week from tomorrow.
.TP
.B undo.style=side
When the 'undo' command is run, Taskwarrior presents a before and after
comparison of the data. This can be in either the 'side' style, which compares
values side-by-side in a table, or 'diff' style, which uses a format similar to
the 'diff' command.
.TP
.B abbreviation.minimum=2
Minimum length of any abbreviated command/value. This means that "ve", "ver",
@@ -516,7 +522,7 @@ debug output can be useful. It can also help explain how the command line is
being parsed, but the information is displayed in a developer-friendly, not a
user-friendly way.
Turning debug on automatically sets debug.hooks=1, debug.parser=1 and debug.tls=2
Turning debug on automatically sets debug.hooks=1 and debug.parser=1
if they do not already have assigned values. Defaults to "0".
.TP
@@ -531,11 +537,6 @@ Level 1 shows the final parse tree.
Level 2 shows the parse tree from all phases of the parse.
Level 3 shows expression evaluation details.
.TP
.B debug.tls=0
Controls the GnuTLS diagnostic level. For 'sync' debugging. Level 0 means no
diagnostics. Level 9 is the highest. Level 2 is a good setting for debugging.
.TP
.B obfuscate=0
When set to '1', will replace all report text with 'xxx'.
@@ -582,51 +583,29 @@ are formatted according to dateformat.
The default value is the ISO-8601 standard: Y-M-D. The string can contain the
characters:
.RS
.RS
m minimal-digit month, for example 1 or 12
.br
d minimal-digit day, for example 1 or 30
.br
y two-digit year, for example 09 or 12
.br
D two-digit day, for example 01 or 30
.br
M two-digit month, for example 01 or 12
.br
Y four-digit year, for example 2009 or 2015
.br
a short name of weekday, for example Mon or Wed
.br
A long name of weekday, for example Monday or Wednesday
.br
b short name of month, for example Jan or Aug
.br
B long name of month, for example January or August
.br
v minimal-digit week, for example 3 or 37
.br
V two-digit week, for example 03 or 37
.br
h minimal-digit hour, for example 3 or 21
.br
n minimal-digit minutes, for example 5 or 42
.br
s minimal-digit seconds, for example 7 or 47
.br
H two-digit hour, for example 03 or 21
.br
N two-digit minutes, for example 05 or 42
.br
S two-digit seconds, for example 07 or 47
.br
J three-digit Julian day, for example 023 or 365
.br
j Julian day, for example 23 or 365
.br
w Week day, for example 0 for Monday, 5 for Friday
.RE
.RE
.nf
m minimal-digit month, for example 1 or 12
d minimal-digit day, for example 1 or 30
y two-digit year, for example 09 or 12
D two-digit day, for example 01 or 30
M two-digit month, for example 01 or 12
Y four-digit year, for example 2009 or 2015
a short name of weekday, for example Mon or Wed
A long name of weekday, for example Monday or Wednesday
b short name of month, for example Jan or Aug
B long name of month, for example January or August
v minimal-digit week, for example 3 or 37
V two-digit week, for example 03 or 37
h minimal-digit hour, for example 3 or 21
n minimal-digit minutes, for example 5 or 42
s minimal-digit seconds, for example 7 or 47
H two-digit hour, for example 03 or 21
N two-digit minutes, for example 05 or 42
S two-digit seconds, for example 07 or 47
J three-digit Julian day, for example 023 or 365
j Julian day, for example 23 or 365
w Week day, for example 0 for Monday, 5 for Friday
.fi
.RS
The characters 'v', 'V', 'a' and 'A' can only be used for formatting printed
@@ -638,37 +617,24 @@ The string may also contain other characters to act as spacers, or formatting.
Examples for other values of dateformat:
.RE
.RS
.RS
.br
d/m/Y would use for input and output 24/7/2009
.br
yMD would use for input and output 090724
.br
M-D-Y would use for input and output 07-24-2009
.RE
.RE
.nf
d/m/Y would use for input and output 24/7/2009
yMD would use for input and output 090724
M-D-Y would use for input and output 07-24-2009
.fi
.RS
Examples for other values of dateformat.report:
.RE
.RS
.RS
.br
a D b Y (V) would emit "Fri 24 Jul 2009 (30)"
.br
A, B D, Y would emit "Friday, July 24, 2009"
.br
wV a Y-M-D would emit "w30 Fri 2009-07-24"
.br
yMD.HN would emit "110124.2342"
.br
m/d/Y H:N would emit "1/24/2011 10:42"
.br
a D b Y H:N:S would emit "Mon 24 Jan 2011 11:19:42"
.RE
.RE
.nf
a D b Y (V) would emit "Fri 24 Jul 2009 (30)"
A, B D, Y would emit "Friday, July 24, 2009"
wV a Y-M-D would emit "w30 Fri 2009-07-24"
yMD.HN would emit "110124.2342"
m/d/Y H:N would emit "1/24/2011 10:42"
a D b Y H:N:S would emit "Mon 24 Jan 2011 11:19:42"
.fi
.RS
Undefined fields are put to their minimal valid values (1 for month and day and
@@ -677,14 +643,10 @@ field that is set. Otherwise, they are set to the corresponding values of
"now". For example:
.RE
.RS
.RS
.br
8/1/2013 with m/d/Y implies August 1, 2013 at midnight (inferred)
.br
8/1 20:40 with m/d H:N implies August 1, 2013 (inferred) at 20:40
.RE
.RE
.nf
8/1/2013 with m/d/Y implies August 1, 2013 at midnight (inferred)
8/1 20:40 with m/d H:N implies August 1, 2013 (inferred) at 20:40
.fi
.TP
.B date.iso=1
@@ -778,28 +740,19 @@ Holidays are entered either directly in the .taskrc file or via an include file
that is specified in .taskrc. For single-day holidays the name and the date is
required to be given:
.RS
.RS
.br
holiday.towel.name=Day of the towel
.br
holiday.towel.date=20100525
.RE
.RE
.nf
holiday.towel.name=Day of the towel
holiday.towel.date=20100525
.fi
For holidays that span a range of days (i.e. vacation), you can use a start date
and an end date:
.RS
.RS
.br
holiday.sysadmin.name=System Administrator Appreciation Week
.br
holiday.sysadmin.start=20100730
.br
holiday.sysadmin.end=20100805
.RE
.RE
.nf
holiday.sysadmin.name=System Administrator Appreciation Week
holiday.sysadmin.start=20100730
holiday.sysadmin.end=20100805
.fi
.RS
Dates are to be entered according to the setting in the dateformat.holiday
@@ -812,24 +765,17 @@ Easter (easter), Easter Monday (eastermonday), Ascension (ascension), Pentecost
(pentecost). The date for these holidays is the given keyword:
.RE
.RS
.RS
.br
holiday.eastersunday.name=Easter
.br
holiday.eastersunday.date=easter
.RE
.RE
.nf
holiday.eastersunday.name=Easter
holiday.eastersunday.date=easter
.fi
Note that the Taskwarrior distribution contains example holiday files that can
be included like this:
.RS
.RS
.br
include holidays.en-US.rc
.RE
.RE
.nf
include holidays.en-US.rc
.fi
.SS DEPENDENCIES
@@ -917,10 +863,9 @@ Task is deleted.
.RS
To disable a coloration rule for which there is a default, set the value to
nothing, for example:
.RS
.B color.tagged=
.RE
.RE
.nf
color.tagged=
.fi
.RS
By default, colors produced by rules blend. This has the advantage of
@@ -1097,6 +1042,9 @@ yellow bars.
.RS
Colors used by the undo command, to indicate the values both before and after
a change that is to be reverted.
Currently not supported.
.RE
.TP
@@ -1255,30 +1203,23 @@ default.command=next
Provides a default command that is run every time Taskwarrior is invoked with no
arguments. For example, if set to:
.RS
.RS
default.command=project:foo list
.RE
.RE
.nf
default.command=project:foo list
.fi
.RS
then Taskwarrior will run the "project:foo list" command if no command is
specified. This means that by merely typing
.RE
.RS
.RS
$ task
.br
[task project:foo list]
.br
\&
.br
ID Project Pri Description
1 foo H Design foo
2 foo Build foo
.RE
.RE
.nf
$ task
[task project:foo list]
ID Project Pri Description
1 foo H Design foo
2 foo Build foo
.fi
.SS REPORTS
@@ -1317,12 +1258,16 @@ specified by using the column ids post-fixed by a "+" for ascending sort order
or a "-" for descending sort order. The sort IDs are separated by commas.
For example:
.nf
report.list.sort=due+,priority-,start.active-,project+
.fi
Additionally, after the "+" or "-", there can be a solidus "/" which indicates
that there are breaks after the column values change. For example:
.nf
report.minimal.sort=project+/,description+
.fi
This sort order now specifies that there is a listing break between each
project. A listing break is simply a blank line, which provides a visual
@@ -1527,58 +1472,6 @@ context.home.rc.default.command=home_report
These configuration settings are used to connect and sync tasks with the task
server.
.TP
.B taskd.server=<host>:<port>
.RS
Specifies the hostname and port of the Taskserver. Hostname may be an IPv4 or
IPv6 address, or domain. Port is an integer.
.RE
.TP
.B taskd.credentials=<organization>/<user>/<key>
.RS
User identification for the Taskserver, which includes a private key.
.RE
.TP
.B taskd.certificate=<path>
.RS
Specifies the path to the client certificate used for identification with the
Taskserver.
.RE
.TP
.B taskd.key=<path>
.RS
Specifies the path to the client key used for encrypted communication with the
Taskserver.
.RE
.TP
.B taskd.ca=<path>
.RS
Specifies the path to the CA certificate in the event that your Taskserver is
using a self-signed certificate. Optional.
.RE
.TP
.B taskd.trust=strict|ignore hostname|allow all
.RS
This settings allows you to override the trust level when server certificates
are validated. With "allow all", the server certificate is trusted
automatically. With "ignore hostname", the server certificate is verified but
the hostname is ignored. With "strict", the server certificate is verified.
Default is "strict", which requires full validation.
.RE
.TP
.B taskd.ciphers=NORMAL
Override of the cipher selection. The set of ciphers used by TLS may be
controlled by both server and client. There must be some overlap between
client and server supported ciphers, or communication cannot occur.
Default is "NORMAL". See GnuTLS documentation for full details.
.RE
.SH "CREDITS & COPYRIGHTS"
Copyright (C) 2006 \- 2021 T. Babej, P. Beckingham, F. Hernandez.

View File

@@ -0,0 +1,99 @@
###############################################################################
#
# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included
# in all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
#
# https://www.opensource.org/licenses/mit-license.php
#
###############################################################################
# Theme author: Adrian Galilea @adriangalilea
rule.precedence.color=deleted,completed,active,keyword.,tag.,project.,overdue,scheduled,due.today,due,blocked,blocking,recurring,tagged,uda.
# General decoration
color.label=
color.label.sort=
color.alternate=on gray2
color.header=rgb013
color.footnote=rgb013
color.warning=rgb520
color.error=red
color.debug=blue
# Task state
color.completed=
color.deleted=
color.active=rgb553
color.recurring=bright rgb535
color.scheduled=
color.until=
color.blocked=gray10
color.blocking=on rgb002
# Project
color.project.none=
# Priority
color.uda.priority.H=rgb435
color.uda.priority.L=gray15
# Tags
color.tag.next=rgb253
color.tag.none=
color.tagged=
# Due
color.due=
color.due.today=rgb125
color.overdue=bold inverse
# Report: burndown
color.burndown.pending=on rgb103
color.burndown.started=on rgb214
color.burndown.done=on gray4
# Report: history
color.history.add=color0 on rgb105
color.history.done=color0 on rgb205
color.history.delete=color0 on rgb305
# Report: summary
color.summary.bar=white on rgb104
color.summary.background=white on rgb001
# Command: calendar
color.calendar.due=color0 on rgb325
color.calendar.due.today=color0 on rgb404
color.calendar.holiday=color15 on rgb102
color.calendar.overdue=color0 on color5
color.calendar.scheduled=
color.calendar.today=color15 on rgb103
color.calendar.weekend=gray12 on gray3
color.calendar.weeknumber=rgb104
# Command: sync
color.sync.added=gray4
color.sync.changed=rgb214
color.sync.rejected=rgb103
# Command: undo
color.undo.before=rgb103
color.undo.after=rgb305

View File

@@ -86,6 +86,7 @@ color.calendar.due=white on red
color.calendar.due.today=bold white on red
color.calendar.holiday=black on bright yellow
color.calendar.overdue=black on bright red
color.calendar.scheduled=
color.calendar.today=bold white on bright blue
color.calendar.weekend=white on bright black
color.calendar.weeknumber=bold blue
@@ -98,4 +99,3 @@ color.sync.rejected=red
# Command: undo
color.undo.after=green
color.undo.before=red

View File

@@ -82,6 +82,7 @@ color.summary.bar=black on rgb141
color.calendar.due.today=color15 on color1
color.calendar.due=color0 on color1
color.calendar.holiday=color0 on color11
color.calendar.scheduled=
color.calendar.overdue=color0 on color9
color.calendar.today=color15 on rgb013
color.calendar.weekend=on color235
@@ -95,4 +96,3 @@ color.sync.rejected=color9
# Command: undo
color.undo.after=color2
color.undo.before=color1

View File

@@ -83,6 +83,7 @@ color.calendar.due.today=color0 on color252
color.calendar.due=color0 on color249
color.calendar.holiday=color255 on rgb013
color.calendar.overdue=color0 on color255
color.calendar.scheduled=
color.calendar.today=color0 on rgb115
color.calendar.weekend=on color235
color.calendar.weeknumber=rgb015
@@ -95,4 +96,3 @@ color.sync.rejected=rgb004
# Command: undo
color.undo.after=rgb035
color.undo.before=rgb013

View File

@@ -83,6 +83,7 @@ color.calendar.due=on gray8
color.calendar.due.today=black on gray15
color.calendar.holiday=black on gray20
color.calendar.overdue=gray2 on gray10
color.calendar.scheduled=
color.calendar.today=bold white
color.calendar.weekend=on gray2
color.calendar.weeknumber=gray6
@@ -95,4 +96,3 @@ color.sync.rejected=gray5 on gray23
# Command: undo
color.undo.before=white on black
color.undo.after=black on white

View File

@@ -83,6 +83,7 @@ color.calendar.due=color0 on gray10
color.calendar.due.today=color0 on gray15
color.calendar.holiday=color15 on rgb005
color.calendar.overdue=color0 on gray20
color.calendar.scheduled=
color.calendar.today=underline black on color15
color.calendar.weekend=on gray4
color.calendar.weeknumber=gray10
@@ -95,4 +96,3 @@ color.sync.rejected=gray23
# Command: undo
color.undo.before=rgb013
color.undo.after=rgb035

View File

@@ -83,6 +83,7 @@ color.calendar.due.today=color0 on color225
color.calendar.due=color0 on color249
color.calendar.holiday=rgb151 on rgb020
color.calendar.overdue=color0 on color255
color.calendar.scheduled=
color.calendar.today=color0 on rgb151
color.calendar.weekend=on color235
color.calendar.weeknumber=rgb010

View File

@@ -83,6 +83,7 @@ color.calendar.due.today=color0 on color252
color.calendar.due=color0 on color249
color.calendar.holiday=rgb522 on rgb300
color.calendar.overdue=color0 on color255
color.calendar.scheduled=
color.calendar.today=color0 on rgb511
color.calendar.weekend=on color235
color.calendar.weeknumber=rgb100
@@ -95,4 +96,3 @@ color.sync.rejected=rgb200
# Command: undo
color.undo.after=rgb511
color.undo.before=rgb200

View File

@@ -83,6 +83,7 @@ color.calendar.due=color0 on rgb325
color.calendar.due.today=color0 on rgb404
color.calendar.holiday=color15 on rgb102
color.calendar.overdue=color0 on color5
color.calendar.scheduled=
color.calendar.today=color15 on rgb103
color.calendar.weekend=gray12 on gray3
color.calendar.weeknumber=rgb104
@@ -95,4 +96,3 @@ color.sync.rejected=rgb103
# Command: undo
color.undo.before=rgb103
color.undo.after=rgb305

View File

@@ -83,6 +83,7 @@ color.calendar.due=color0 on rgb440
color.calendar.due.today=color0 on rgb430
color.calendar.holiday=rgb151 on rgb020
color.calendar.overdue=color0 on rgb420
color.calendar.scheduled=
color.calendar.today=color15 on rgb110
color.calendar.weekend=on color235
color.calendar.weeknumber=rgb110
@@ -95,4 +96,3 @@ color.sync.rejected=rgb110
# Command: undo
color.undo.before=rgb021
color.undo.after=rgb042

View File

@@ -83,6 +83,7 @@ color.calendar.due=on bright green
color.calendar.due.today=blue on bright yellow
color.calendar.holiday=on yellow
color.calendar.overdue=on bright red
color.calendar.scheduled=
color.calendar.today=blue
color.calendar.weekend=on white
color.calendar.weeknumber=blue
@@ -95,4 +96,3 @@ color.sync.rejected=red
# Command: undo
color.undo.before=yellow
color.undo.after=green

View File

@@ -65,7 +65,7 @@ color.due.today=on rgb353
color.overdue=on rgb544
# Report: burndown
color.burndown.pending=on rgb411
color.burndown.pending=on rgb411
color.burndown.started=on rgb550
color.burndown.done=on rgb151
@@ -83,6 +83,7 @@ color.calendar.due=on rgb343
color.calendar.due.today=on rgb353
color.calendar.holiday=color0 on rgb530
color.calendar.overdue=on rgb533
color.calendar.scheduled=
color.calendar.today=rgb005
color.calendar.weekend=on gray21
color.calendar.weeknumber=gray16
@@ -95,4 +96,3 @@ color.sync.rejected=red
# Command: undo
color.undo.before=yellow
color.undo.after=green

View File

@@ -86,6 +86,7 @@ color.calendar.due=
color.calendar.due.today=
color.calendar.holiday=
color.calendar.overdue=
color.calendar.scheduled=
color.calendar.today=
color.calendar.weekend=
color.calendar.weeknumber=
@@ -98,4 +99,3 @@ color.sync.rejected=
# Command: undo
color.undo.after=
color.undo.before=

View File

@@ -6,4 +6,3 @@ do
echo $locale
../../scripts/add-ons/update-holidays.pl --locale $locale --file holidays.${locale}.rc
done

View File

@@ -100,6 +100,7 @@ color.calendar.due=color0 on color9
color.calendar.due.today=color0 on color1
color.calendar.holiday=color0 on color3
color.calendar.overdue=color0 on color5
color.calendar.scheduled=
color.calendar.today=color0 on color4
color.calendar.weekend=on color0
color.calendar.weeknumber=color4
@@ -112,4 +113,3 @@ color.sync.rejected=color13
# Command: undo
color.undo.after=color2
color.undo.before=color1

View File

@@ -100,6 +100,7 @@ color.calendar.due=color7 on color9
color.calendar.due.today=color7 on color1
color.calendar.holiday=color7 on color3
color.calendar.overdue=color7 on color5
color.calendar.scheduled=
color.calendar.today=color7 on color4
color.calendar.weekend=on color7
color.calendar.weeknumber=color14
@@ -112,4 +113,3 @@ color.sync.rejected=color13
# Command: undo
color.undo.after=color2
color.undo.before=color1

View File

@@ -1,57 +1,17 @@
version: '3'
services:
test-centos7:
test-fedora40:
build:
context: .
dockerfile: test/docker/centos7
dockerfile: test/docker/fedora40
network_mode: "host"
security_opt:
- label=type:container_runtime_t
tty: true
test-centos8:
test-fedora39:
build:
context: .
dockerfile: test/docker/centos8
network_mode: "host"
security_opt:
- label=type:container_runtime_t
tty: true
test-fedora32:
build:
context: .
dockerfile: test/docker/fedora32
network_mode: "host"
security_opt:
- label=type:container_runtime_t
tty: true
test-fedora33:
build:
context: .
dockerfile: test/docker/fedora33
network_mode: "host"
security_opt:
- label=type:container_runtime_t
tty: true
test-fedora34:
build:
context: .
dockerfile: test/docker/fedora34
network_mode: "host"
security_opt:
- label=type:container_runtime_t
tty: true
test-fedora35:
build:
context: .
dockerfile: test/docker/fedora35
network_mode: "host"
security_opt:
- label=type:container_runtime_t
tty: true
test-ubuntu1804:
build:
context: .
dockerfile: test/docker/ubuntu1804
dockerfile: test/docker/fedora39
network_mode: "host"
security_opt:
- label=type:container_runtime_t
@@ -64,26 +24,10 @@ services:
security_opt:
- label=type:container_runtime_t
tty: true
test-ubuntu2104:
test-ubuntu2204:
build:
context: .
dockerfile: test/docker/ubuntu2104
network_mode: "host"
security_opt:
- label=type:container_runtime_t
tty: true
test-ubuntu2110:
build:
context: .
dockerfile: test/docker/ubuntu2110
network_mode: "host"
security_opt:
- label=type:container_runtime_t
tty: true
test-debianstable:
build:
context: .
dockerfile: test/docker/debianstable
dockerfile: test/docker/ubuntu2204
network_mode: "host"
security_opt:
- label=type:container_runtime_t
@@ -96,18 +40,10 @@ services:
security_opt:
- label=type:container_runtime_t
tty: true
test-gentoo:
test-opensuse:
build:
context: .
dockerfile: test/docker/gentoo
network_mode: "host"
security_opt:
- label=type:container_runtime_t
tty: true
test-opensuse15:
build:
context: .
dockerfile: test/docker/opensuse15
dockerfile: test/docker/opensuse
network_mode: "host"
security_opt:
- label=type:container_runtime_t

42
docker/task.dockerfile Normal file
View File

@@ -0,0 +1,42 @@
FROM ubuntu:22.04 AS base
FROM base AS builder
ENV DEBIAN_FRONTEND noninteractive
RUN apt-get update && \
apt-get install -y \
build-essential \
cmake \
curl \
git \
libgnutls28-dev \
uuid-dev
# Setup language environment
ENV LC_ALL en_US.UTF-8
ENV LANG en_US.UTF-8
ENV LANGUAGE en_US.UTF-8
# Add source directory
ADD .. /root/code/
WORKDIR /root/code/
# Setup Rust
RUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs > rustup.sh && \
sh rustup.sh -y --profile minimal --default-toolchain stable --component rust-docs
# Build Taskwarrior
RUN git clean -dfx && \
git submodule init && \
git submodule update && \
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release . && \
cmake --build build -j 8
FROM base AS runner
# Install Taskwarrior
COPY --from=builder /root/code/build/src/task /usr/local/bin
# Initialize Taskwarrior
RUN ( echo "yes" | task ) || true

3
misc/README.md Normal file
View File

@@ -0,0 +1,3 @@
# misc/
This directory contains bits and bobs that do not belong elsewhere.

View File

@@ -25,4 +25,3 @@ Using a solarized light terminal, run the following:
Note that for the solarized themes, the terminal color palette needs to be set
to specific colors.

View File

@@ -30,4 +30,3 @@ task rc:x add Deleted_1
task rc:x 14 mod depends:13
task rc:x 15 delete

View File

@@ -1,3 +0,0 @@
*.data
*.rc
export.json

View File

@@ -1,6 +1,9 @@
cmake_minimum_required (VERSION 3.0)
cmake_minimum_required (VERSION 3.22)
add_custom_target (performance ./run_perf
configure_file(compare_runs.py compare_runs.py COPYONLY)
configure_file(load load)
configure_file(run_perf run_perf)
add_custom_target (performance ${CMAKE_BINARY_DIR}/performance/run_perf
DEPENDS task_executable
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/performance)
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/performance)

View File

@@ -29,10 +29,13 @@ def parse_perf(input):
tests[command] = []
# Parse concatenated run_perf output
for i in re.findall("^ - task %s\.\.\.\n"
"Perf task ([^ ]+) ([^ ]+) ([^ ]+) (.+)$"
% command, input, re.MULTILINE):
info = i[0:3] + ({k:v for k, v in (i.split(":") for i in i[-1].split())},)
for i in re.findall(
"^ - task %s\\.\\.\\.\n"
"Perf task ([^ ]+) ([^ ]+) ([^ ]+) (.+)$" % command,
input,
re.MULTILINE,
):
info = i[0:3] + ({k: v for k, v in (i.split(":") for i in i[-1].split())},)
pt = TaskPerf(*info)
tests[command].append(pt)
return tests
@@ -61,8 +64,14 @@ with open(sys.argv[2], "r") as fh:
tests_cur = parse_perf(fh.read())
best_cur = get_best(tests_cur)
print("Previous: %s (%s)" % (tests_prev[COMMANDS[0]][0].version, tests_prev[COMMANDS[0]][0].commit))
print("Current: %s (%s)" % (tests_cur[COMMANDS[0]][0].version, tests_cur[COMMANDS[0]][0].commit))
print(
"Previous: %s (%s)"
% (tests_prev[COMMANDS[0]][0].version, tests_prev[COMMANDS[0]][0].commit)
)
print(
"Current: %s (%s)"
% (tests_cur[COMMANDS[0]][0].version, tests_cur[COMMANDS[0]][0].commit)
)
for test in COMMANDS:
print("# %s:" % test)
@@ -76,7 +85,9 @@ for test in COMMANDS:
else:
percentage = "0%"
pad = max(map(len, (k, best_prev[test][k], best_cur[test][k], diff, percentage)))
pad = max(
map(len, (k, best_prev[test][k], best_cur[test][k], diff, percentage))
)
out[0] += " %s" % k.rjust(pad)
out[1] += " %s" % best_prev[test][k].rjust(pad)
out[2] += " %s" % best_cur[test][k].rjust(pad)

View File

@@ -14,7 +14,7 @@ if (open my $fh, '>', 'perf.rc')
close $fh;
}
my $filename = 'sample-text.txt';
my $filename = '${CMAKE_SOURCE_DIR}/performance/sample-text.txt';
open(my $fh, '<:encoding(UTF-8)', $filename)
or die "Could not open file '$filename' $!";
@@ -31,18 +31,18 @@ while (my $line = <$fh>)
if ($. % 20 == 19)
{
my $anno_id = $id - 1;
qx{../src/task rc:perf.rc rc.gc=off $anno_id annotate $line};
qx{${CMAKE_BINARY_DIR}/src/task rc:perf.rc rc.gc=off $anno_id annotate $line};
print "[$.] task rc:perf.rc rc.gc=off $anno_id annotate $line\n" if $?;
}
elsif ($. % 4 == 1)
{
qx{../src/task rc:perf.rc rc.gc=off add $line};
qx{${CMAKE_BINARY_DIR}/src/task rc:perf.rc rc.gc=off add $line};
print "[$.] task rc:perf.rc rc.gc=off add $line\n" if $?;
++$id;
}
else
{
qx{../src/task rc:perf.rc rc.gc=off log $line};
qx{${CMAKE_BINARY_DIR}/src/task rc:perf.rc rc.gc=off log $line};
print "[$.] task rc:perf.rc rc.gc=off log $line\n" if $?;
}
}

View File

@@ -1,22 +1,22 @@
#! /bin/bash
echo 'Performance: setup'
rm -f ./pending.data ./completed.data ./undo.data ./backlog.data perf.rc
if [[ -e data/pending.data && -e data/completed.data ]]
rm -f ./taskchampion.sqlite3
if [[ -e ./data/taskchampion.sqlite3 ]]
then
echo ' - Using existing data'
echo ' - Using existing data.'
cp data/* .
else
echo ' - This step will take several minutes'
echo ' - Loading data. This step will take several minutes.'
./load
mkdir -p data
cp *.data perf.rc data
cp taskchampion.sqlite3 perf.rc data
fi
# Allow override.
if [[ -z $TASK ]]
then
TASK=../src/task
TASK=${CMAKE_BINARY_DIR}/src/task
fi
# Run benchmarks.
@@ -45,9 +45,8 @@ $TASK rc.debug:1 rc:perf.rc export >/dev/null 2>&1
$TASK rc.debug:1 rc:perf.rc export 2>&1 >export.json | grep "Perf task"
echo ' - task import...'
rm -f ./pending.data ./completed.data ./undo.data ./backlog.data
$TASK rc.debug:1 rc:perf.rc import export.json 2>&1 | grep "Perf task"
rm -f ./taskchampion.sqlite3
$TASK rc.debug:1 rc:perf.rc import ${CMAKE_SOURCE_DIR}/performance/export.json 2>&1 | grep "Perf task"
echo 'End'
exit 0

View File

@@ -3963,7 +3963,7 @@ GLOUCESTER Give me the letter, sir.
EDMUND I shall offend, either to detain or give it. The contents, as in part I understand them, are to blame.
GLOUCESTER Lets see, lets see.
EDMUND I hope, for my brothers justification, he wrote this but as an essay or taste of my virtue.
GLOUCESTER This policy and reverence of age makes the world bitter to the best of our times, keeps our fortunes from us till our oldness cannot relish them. I begin to find an idle and fond bondage in the oppression of aged tyranny, who sways, not as it hath power, but as it is suffered. Come to me, that of this I may speak more. If our father would sleep till I waked him, you should enjoy half his revenue for ever, and live the beloved of your brother,
GLOUCESTER This policy and reverence of age makes the world bitter to the best of our times, keeps our fortunes from us till our oldness cannot relish them. I begin to find an idle and fond bondage in the oppression of aged tyranny, who sways, not as it hath power, but as it is suffered. Come to me, that of this I may speak more. If our father would sleep till I waked him, you should enjoy half his revenue for ever, and live the beloved of your brother,
EDMUND It was not brought me, my lord, theres the cunning of it, I found it thrown in at the casement of my closet.
GLOUCESTER You know the character to be your brothers?
EDMUND If the matter were good, my lord, I durst swear it were his, but, in respect of that, I would fain think it were not.

View File

@@ -1,4 +1,4 @@
cmake_minimum_required (VERSION 3.0)
cmake_minimum_required (VERSION 3.22)
install (DIRECTORY bash fish vim hooks
DESTINATION ${TASK_DOCDIR}/scripts)
install (FILES zsh/_task
@@ -8,4 +8,3 @@ install (DIRECTORY add-ons
FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE
GROUP_READ GROUP_EXECUTE
WORLD_READ WORLD_EXECUTE)

View File

@@ -221,4 +221,3 @@ if (open my $fh, '>:utf8', $file)
exit 0;
################################################################################

View File

@@ -123,6 +123,10 @@ function __fish.task.need_to_complete.config
contains (__fish.task.current.command) 'config' 'show'
end
function __fish.task.need_to_complete.context
contains (__fish.task.current.command) 'context'
end
function __fish.task.need_to_complete.filter
__fish.task.before_command
end
@@ -217,6 +221,10 @@ function __fish.task.list.config
task _config
end
function __fish.task.list.context
task _context
end
function __fish.task.list.depends
__fish.task.list.id with_description
end
@@ -287,8 +295,9 @@ end
function __fish.task.list.tag
set -l tags (task _tags)
printf -- '+%s\n' $tags
printf -- '-%s\n' $tags
printf '+%s\n' $tags
# compatibility, older fish won't allow - in format
printf ' %s\n' $tags | tr ' ' '-'
end
function __fish.task.list.task
@@ -346,10 +355,10 @@ end
# static variables that won't changes even when taskw's data is modified
set __fish_task_static_commands_with_desc (__fish.task.zsh commands | sort | string collect)
set __fish_task_static_commands (echo -e $__fish_task_static_commands_with_desc | cut -d ' ' -f 1 | string collect)
set __fish_task_static_command_mods (printf -- '%s\n' 'add' 'annotate' 'append' 'delete' 'done' 'duplicate' 'log' 'modify' 'prepend' 'start' 'stop' | string collect)
set __fish_task_static_mod (printf -- '%s\n' 'before' 'after' 'over' 'under' 'none' 'is' 'isnt' 'has' 'hasnt' 'startswith' 'endswith' 'word' 'noword' | string collect)
set __fish_task_static_status (printf -- '%s\tstatus\n' 'pending' 'completed' 'deleted' 'waiting' | string collect)
set __fish_task_static_priority (printf -- '%s\n' 'H\tHigh' 'M\tMiddle' 'L\tLow' | string collect)
set __fish_task_static_command_mods (printf '%s\n' 'add' 'annotate' 'append' 'delete' 'done' 'duplicate' 'log' 'modify' 'prepend' 'start' 'stop' | string collect)
set __fish_task_static_mod (printf '%s\n' 'before' 'after' 'over' 'under' 'none' 'is' 'isnt' 'has' 'hasnt' 'startswith' 'endswith' 'word' 'noword' | string collect)
set __fish_task_static_status (printf '%s\tstatus\n' 'pending' 'completed' 'deleted' 'waiting' | string collect)
set __fish_task_static_priority (printf '%s\n' 'H\tHigh' 'M\tMiddle' 'L\tLow' | string collect)
set __fish_task_static_freq 'daily:Every day' \
'day:Every day' \
@@ -364,17 +373,17 @@ set __fish_task_static_freq 'daily:Every day' \
'yearly:Every year' \
'biannual:Every two years' \
'biyearly:Every two years'
set __fish_task_static_freq (printf -- '%s\n' $__fish_task_static_freq | sed 's/:/\t/' | string collect)
set __fish_task_static_freq (printf '%s\n' $__fish_task_static_freq | sed 's/:/\t/' | string collect)
set __fish_task_static_freq_numeric 'd:days' \
'w:weeks' \
'q:quarters' \
'y:years'
set __fish_task_static_freq_numeric (printf -- '%s\n' $__fish_task_static_freq_numeric | sed 's/:/\t/' | string collect)
set __fish_task_static_freq_numeric (printf '%s\n' $__fish_task_static_freq_numeric | sed 's/:/\t/' | string collect)
set __fish_task_static_freq_numeric 'd:days' \
'w:weeks' \
'q:quarters' \
'y:years'
set __fish_task_static_freq_numeric (printf -- '%s\n' $__fish_task_static_freq_numeric | sed 's/:/\t/' | string collect)
set __fish_task_static_freq_numeric (printf '%s\n' $__fish_task_static_freq_numeric | sed 's/:/\t/' | string collect)
set __fish_task_static_dates 'today:Today' \
'yesterday:Yesterday' \
'tomorrow:Tomorrow' \
@@ -406,7 +415,7 @@ set __fish_task_static_dates 'today:Today' \
'midsommarafton:Midsommarafton' \
'later:Later' \
'someday:Some Day'
set __fish_task_static_dates (printf -- '%s\n' $__fish_task_static_dates | sed 's/:/\t/' | string collect)
set __fish_task_static_dates (printf '%s\n' $__fish_task_static_dates | sed 's/:/\t/' | string collect)
set __fish_task_static_reldates 'hrs:n hours' \
'day:n days' \
# '1st:first' \
@@ -414,7 +423,7 @@ set __fish_task_static_reldates 'hrs:n hours' \
# '3rd:third' \
# 'th:4th, 5th, etc.' \
'wks:weeks'
set __fish_task_static_reldates (printf -- '%s\n' $__fish_task_static_reldates | sed 's/:/\t/' | string collect)
set __fish_task_static_reldates (printf '%s\n' $__fish_task_static_reldates | sed 's/:/\t/' | string collect)
# the followings are actually not used for autocomplete, but to retrieve friendly description that aren't present in internal command
set __fish_task_static_attr_desc_keys 'description' 'status' 'project' \
'priority' 'due' 'recur' \
@@ -429,6 +438,7 @@ set __fish_task_static_attr_desc_vals 'Task description text' 'Status of task -
# fish's auto-completion when multiple `complete` have supplied with '-k' flag, the last will be displayed first
__fish.task.complete config
__fish.task.complete context
__fish.task.complete attr_value
__fish.task.complete attr_name
__fish.task.complete tag

View File

@@ -24,4 +24,3 @@ Expected Permissions
Interface
Each hook script has a unique interface. This is documented in the example
scripts here.

View File

@@ -22,9 +22,8 @@ SHADOW_FILE=$(task _get rc.shadow.file)
# rc.detection=off Disables terminal size detection
# rc.gc=off Disables GC, thus not changing IDs unexpectedly
# rc.color=off Disable color in the shadow file
# rc.locking=off Disable file locking, to prevent race condition
# rc.hooks=off Disable hooks, to prevent race condition
task $SHADOW_COMMAND rc.detection=off rc.gc=off rc.color=off rc.locking=off rc.hooks=off > $SHADOW_FILE 2>/dev/null
task $SHADOW_COMMAND rc.detection=off rc.gc=off rc.color=off rc.hooks=off > $SHADOW_FILE 2>/dev/null
if [[ $? != 0 ]]
then
echo Could not create $SHADOW_FILE
@@ -33,4 +32,3 @@ fi
echo Shadow file $SHADOW_FILE updated.
exit 0

View File

@@ -14,4 +14,3 @@ echo 'on-launch'
# - 0: JSON ignored, non-JSON is feedback.
# - non-0: JSON ignored, non-JSON is error.
exit 0

View File

@@ -1,34 +0,0 @@
# Dockerfile for containers to perform PR review in
# Use with make as follows: make RELEASE=v2.5.1 reproduce
FROM centos:8
RUN dnf update -y
RUN yum install epel-release -y
RUN dnf install python38 vim git gcc gcc-c++ cmake make gnutls-devel libuuid-devel libfaketime sudo man gdb -y
RUN useradd warrior
RUN echo warrior ALL=NOPASSWD:ALL > /etc/sudoers.d/warrior
USER warrior
WORKDIR /home/warrior/
# Setup taskwarrior
# The purpose is to speed up subsequent re-installs due to Docker layer caching
RUN git clone https://github.com/GothenburgBitFactory/taskwarrior.git
WORKDIR /home/warrior/taskwarrior/
RUN git submodule init
# Install the given release
ARG RELEASE
RUN git checkout $RELEASE
RUN git submodule update --init
RUN cmake -DCMAKE_BUILD_TYPE=debug .
RUN make -j8
RUN sudo make install
# Set the PS1 variable
ENV PS1="[\u@\H \W]\$ "
WORKDIR /home/warrior
RUN task rc.confirmation=0 _ids || : # Generate default taskrc

View File

@@ -1,46 +0,0 @@
# Dockerfile for containers to perform PR review in
# Use with make as follows: make PR=1234 review
FROM centos:8
RUN dnf update -y
RUN yum install epel-release -y
RUN dnf install python38 git gcc gcc-c++ cmake make gnutls-devel libuuid-devel libfaketime sudo man -y
RUN useradd warrior
RUN echo warrior ALL=NOPASSWD:ALL > /etc/sudoers.d/warrior
USER warrior
WORKDIR /home/warrior/
# Setup taskwarrior
# The purpose is to speed up subsequent re-installs due to Docker layer caching
RUN git clone https://github.com/GothenburgBitFactory/taskwarrior.git
WORKDIR /home/warrior/taskwarrior/
RUN git submodule init
RUN git submodule update
RUN cmake -DCMAKE_BUILD_TYPE=debug .
RUN make -j8
RUN sudo make install
# Use specified PR's branch, if provided
ARG PR
RUN if [[ ! -z $PR ]]; then \
git fetch origin refs/pull/${PR}/head:pr-${PR}; \
git checkout pr-${PR}; fi
# Use specified libshared PR's branch, if provided
ARG LIBPR
WORKDIR /home/warrior/taskwarrior/src/libshared/
RUN if [[ ! -z $LIBPR ]]; then \
git fetch origin refs/pull/${LIBPR}/head:libpr-${LIBPR}; \
git checkout libpr-${LIBPR}; fi
# Install taskwarrior
WORKDIR /home/warrior/taskwarrior/
RUN cmake -DCMAKE_BUILD_TYPE=debug .
RUN make -j8
RUN sudo make install
WORKDIR /home/warrior
RUN task rc.confirmation=0 _ids || : # Generate default taskrc

View File

@@ -1,4 +1,4 @@
" Vim support file to detect Taskwarrior data and configuration files and
" Vim support file to detect Taskwarrior data and configuration files and
" single task edits
"
" Maintainer: John Florian <jflorian@doubledog.org>

View File

@@ -38,12 +38,15 @@ syn match taskrcGoodKey '^\s*\V_forcecolor='he=e-1
syn match taskrcGoodKey '^\s*\Vabbreviation.minimum='he=e-1
syn match taskrcGoodKey '^\s*\Vactive.indicator='he=e-1
syn match taskrcGoodKey '^\s*\Valias.\S\{-}='he=e-1
syn match taskrcGoodKey '^\s*\Vallow.empty.filter='he=e-1
syn match taskrcGoodKey '^\s*\Vavoidlastcolumn='he=e-1
syn match taskrcGoodKey '^\s*\Vbulk='he=e-1
syn match taskrcGoodKey '^\s*\Vburndown.cumulative='he=e-1
syn match taskrcGoodKey '^\s*\Vcalendar.details='he=e-1
syn match taskrcGoodKey '^\s*\Vcalendar.details.report='he=e-1
syn match taskrcGoodKey '^\s*\Vcalendar.holidays='he=e-1
syn match taskrcGoodKey '^\s*\Vcalendar.legend='he=e-1
syn match taskrcGoodKey '^\s*\Vcalendar.monthsperline='he=e-1
syn match taskrcGoodKey '^\s*\Vcalendar.offset='he=e-1
syn match taskrcGoodKey '^\s*\Vcalendar.offset.value='he=e-1
syn match taskrcGoodKey '^\s*\Vcolor='he=e-1
@@ -58,10 +61,13 @@ syn match taskrcGoodKey '^\s*\Vcolor.calendar.due='he=e-1
syn match taskrcGoodKey '^\s*\Vcolor.calendar.due.today='he=e-1
syn match taskrcGoodKey '^\s*\Vcolor.calendar.holiday='he=e-1
syn match taskrcGoodKey '^\s*\Vcolor.calendar.overdue='he=e-1
syn match taskrcGoodKey '^\s*\Vcolor.calendar.scheduled='he=e-1
syn match taskrcGoodKey '^\s*\Vcolor.calendar.today='he=e-1
syn match taskrcGoodKey '^\s*\Vcolor.calendar.weekend='he=e-1
syn match taskrcGoodKey '^\s*\Vcolor.calendar.weeknumber='he=e-1
syn match taskrcGoodKey '^\s*\Vcolor.completed='he=e-1
syn match taskrcGoodKey '^\s*\Vcolor.debug='he=e-1
syn match taskrcGoodKey '^\s*\Vcolor.deleted='he=e-1
syn match taskrcGoodKey '^\s*\Vcolor.due='he=e-1
syn match taskrcGoodKey '^\s*\Vcolor.due.today='he=e-1
syn match taskrcGoodKey '^\s*\Vcolor.error='he=e-1
@@ -70,6 +76,8 @@ syn match taskrcGoodKey '^\s*\Vcolor.header='he=e-1
syn match taskrcGoodKey '^\s*\Vcolor.history.add='he=e-1
syn match taskrcGoodKey '^\s*\Vcolor.history.delete='he=e-1
syn match taskrcGoodKey '^\s*\Vcolor.history.done='he=e-1
syn match taskrcGoodKey '^\s*\Vcolor.label='he=e-1
syn match taskrcGoodKey '^\s*\Vcolor.label.sort='he=e-1
syn match taskrcGoodKey '^\s*\Vcolor.overdue='he=e-1
syn match taskrcGoodKey '^\s*\Vcolor.uda.priority.H='he=e-1
syn match taskrcGoodKey '^\s*\Vcolor.uda.priority.L='he=e-1
@@ -85,11 +93,16 @@ syn match taskrcGoodKey '^\s*\Vcolor.tagged='he=e-1
syn match taskrcGoodKey '^\s*\Vcolor.undo.after='he=e-1
syn match taskrcGoodKey '^\s*\Vcolor.undo.before='he=e-1
syn match taskrcGoodKey '^\s*\Vcolor.until='he=e-1
syn match taskrcGoodKey '^\s*\Vcolor.warning='he=e-1
syn match taskrcGoodKey '^\s*\Vcolor.\(tag\|project\|keyword\|uda\).\S\{-}='he=e-1
syn match taskrcGoodKey '^\s*\Vcolumn.padding='he=e-1
syn match taskrcGoodKey '^\s*\Vcomplete.all.tags='he=e-1
syn match taskrcGoodKey '^\s*\Vconfirmation='he=e-1
syn match taskrcGoodKey '^\s*\Vcontext='he=e-1
syn match taskrcGoodKey '^\s*\Vcontext.\S\{-}.\(read\|write\)='he=e-1
syn match taskrcGoodKey '^\s*\Vcontext.\S\{-}.rc.\S\{-}='he=e-1
syn match taskrcGoodKey '^\s*\Vdata.location='he=e-1
syn match taskrcGoodKey '^\s*\Vdate.iso='he=e-1
syn match taskrcGoodKey '^\s*\Vdateformat='he=e-1
syn match taskrcGoodKey '^\s*\Vdateformat.annotation='he=e-1
syn match taskrcGoodKey '^\s*\Vdateformat.edit='he=e-1
@@ -97,7 +110,8 @@ syn match taskrcGoodKey '^\s*\Vdateformat.holiday='he=e-1
syn match taskrcGoodKey '^\s*\Vdateformat.info='he=e-1
syn match taskrcGoodKey '^\s*\Vdateformat.report='he=e-1
syn match taskrcGoodKey '^\s*\Vdebug='he=e-1
syn match taskrcGoodKey '^\s*\Vdebug.tls='he=e-1
syn match taskrcGoodKey '^\s*\Vdebug.hooks='he=e-1
syn match taskrcGoodKey '^\s*\Vdebug.parser='he=e-1
syn match taskrcGoodKey '^\s*\Vdefault.command='he=e-1
syn match taskrcGoodKey '^\s*\Vdefault.due='he=e-1
syn match taskrcGoodKey '^\s*\Vdefault.priority='he=e-1
@@ -112,11 +126,15 @@ syn match taskrcGoodKey '^\s*\Vdetection='he=e-1
syn match taskrcGoodKey '^\s*\Vdisplayweeknumber='he=e-1
syn match taskrcGoodKey '^\s*\Vdom='he=e-1
syn match taskrcGoodKey '^\s*\Vdue='he=e-1
syn match taskrcGoodKey '^\s*\Veditor='he=e-1
syn match taskrcGoodKey '^\s*\Vexit.on.missing.db='he=e-1
syn match taskrcGoodKey '^\s*\Vexpressions='he=e-1
syn match taskrcGoodKey '^\s*\Vextensions='he=e-1
syn match taskrcGoodKey '^\s*\Vfontunderline='he=e-1
syn match taskrcGoodKey '^\s*\Vgc='he=e-1
syn match taskrcGoodKey '^\s*\Vpurge.on-sync='he=e-1
syn match taskrcGoodKey '^\s*\Vhooks='he=e-1
syn match taskrcGoodKey '^\s*\Vhooks.location='he=e-1
syn match taskrcGoodKey '^\s*\Vhyphenate='he=e-1
syn match taskrcGoodKey '^\s*\Vindent.annotation='he=e-1
syn match taskrcGoodKey '^\s*\Vindent.report='he=e-1
@@ -125,24 +143,31 @@ syn match taskrcGoodKey '^\s*\Vjournal.time='he=e-1
syn match taskrcGoodKey '^\s*\Vjournal.time.start.annotation='he=e-1
syn match taskrcGoodKey '^\s*\Vjournal.time.stop.annotation='he=e-1
syn match taskrcGoodKey '^\s*\Vjson.array='he=e-1
syn match taskrcGoodKey '^\s*\Vlimit='he=e-1
syn match taskrcGoodKey '^\s*\Vlist.all.projects='he=e-1
syn match taskrcGoodKey '^\s*\Vlist.all.tags='he=e-1
syn match taskrcGoodKey '^\s*\Vlocale='he=e-1
syn match taskrcGoodKey '^\s*\Vlocking='he=e-1
syn match taskrcGoodKey '^\s*\Vnag='he=e-1
syn match taskrcGoodKey '^\s*\Vnews.version='he=e-1
syn match taskrcGoodKey '^\s*\Vobfuscate='he=e-1
syn match taskrcGoodKey '^\s*\Vprint.empty.columns='he=e-1
syn match taskrcGoodKey '^\s*\Vrecurrence='he=e-1
syn match taskrcGoodKey '^\s*\Vrecurrence.confirmation='he=e-1
syn match taskrcGoodKey '^\s*\Vrecurrence.indicator='he=e-1
syn match taskrcGoodKey '^\s*\Vrecurrence.limit='he=e-1
syn match taskrcGoodKey '^\s*\Vregex='he=e-1
syn match taskrcGoodKey '^\s*\Vreport.\S\{-}.\(description\|columns\|labels\|sort\|filter\|dateformat\|annotations\)='he=e-1
syn match taskrcGoodKey '^\s*\Vreport.\S\{-}.\(description\|columns\|context\|labels\|sort\|filter\|dateformat\|annotations\)='he=e-1
syn match taskrcGoodKey '^\s*\Vreserved.lines='he=e-1
syn match taskrcGoodKey '^\s*\Vrow.padding='he=e-1
syn match taskrcGoodKey '^\s*\Vrule.color.merge='he=e-1
syn match taskrcGoodKey '^\s*\Vrule.precedence.color='he=e-1
syn match taskrcGoodKey '^\s*\Vsearch.case.sensitive='he=e-1
syn match taskrcGoodKey '^\s*\Vsummary.all.projects='he=e-1
syn match taskrcGoodKey '^\s*\Vsugar='he=e-1
syn match taskrcGoodKey '^\s*\Vsync.\(server.\(url\|origin\|client_id\|encryption_secret\)\|local.server_dir\)='he=e-1
syn match taskrcGoodKey '^\s*\Vtag.indicator='he=e-1
syn match taskrcGoodKey '^\s*\Vtaskd.\(server\|credentials\|certificate\|key\|ca\|trust\|ciphers\)='he=e-1
syn match taskrcGoodKey '^\s*\Vuda.\S\{-}.\(default\|type\|label\|values\)='he=e-1
syn match taskrcGoodKey '^\s*\Vundo.style='he=e-1
syn match taskrcGoodKey '^\s*\Vuda.\S\{-}.\(default\|type\|label\|values\|indicator\)='he=e-1
syn match taskrcGoodKey '^\s*\Vurgency.active.coefficient='he=e-1
syn match taskrcGoodKey '^\s*\Vurgency.age.coefficient='he=e-1
syn match taskrcGoodKey '^\s*\Vurgency.age.max='he=e-1
@@ -159,6 +184,9 @@ syn match taskrcGoodKey '^\s*\Vurgency.scheduled.coefficient='he=e-1
syn match taskrcGoodKey '^\s*\Vurgency.tags.coefficient='he=e-1
syn match taskrcGoodKey '^\s*\Vurgency.uda.\S\{-}.coefficient='he=e-1
syn match taskrcGoodKey '^\s*\Vurgency.waiting.coefficient='he=e-1
syn match taskrcGoodKey '^\s*\Vurgency.user.tag.\S\{-}.coefficient='he=e-1
syn match taskrcGoodKey '^\s*\Vurgency.user.project.\S\{-}.coefficient='he=e-1
syn match taskrcGoodKey '^\s*\Vurgency.user.keyword.\S\{-}.coefficient='he=e-1
syn match taskrcGoodKey '^\s*\Vurgency.inherit='he=e-1
syn match taskrcGoodKey '^\s*\Vverbose='he=e-1
syn match taskrcGoodKey '^\s*\Vweekstart='he=e-1

View File

@@ -31,7 +31,7 @@ _task_filter() {
local word=$'[^\0]#\0'
# projects
local _task_projects=($(task _projects))
local _task_projects=($(task rc.hooks=0 _projects))
local task_projects=(
/"$word"/
":values:task projects:compadd -a _task_projects"
@@ -157,7 +157,7 @@ _task_filter() {
local uda_name uda_label uda_values
local -a udas_spec
task _udas | while read uda_name; do
uda_label="$(task _get rc.uda."$uda_name".label)"
uda_label="$(task rc.hooks=0 _get rc.uda."$uda_name".label)"
# TODO: we could have got the values of every uda and try to complete that
# but that can become extremly slow with a lot of udas
#uda_values=(${(@s:,:)"$(task _get rc.uda."$uda_name".values)"})
@@ -167,8 +167,8 @@ _task_filter() {
_regex_words -t ':' default 'task attributes' "${_task_all_attributes[@]}"
local task_attributes=("$reply[@]")
local _task_tags=($(task _tags))
local _task_config=($(task _config))
local _task_tags=($(task rc.hooks=0 _tags))
local _task_config=($(task rc.hooks=0 _config))
local _task_modifiers=(
'before'
'after'
@@ -213,12 +213,12 @@ _task_filter() {
# id-only completion
(( $+functions[_task_ids] )) ||
_task_ids() {
local _ids=( ${(f)"$(task _zshids)"} )
local _ids=( ${(f)"$(task rc.hooks=0 _zshids)"} )
_describe 'task ids' _ids
}
(( $+functions[_task_aliases] )) ||
_task_aliases() {
local _aliases=( ${(f)"$(task _aliases)"} )
local _aliases=( ${(f)"$(task rc.hooks=0 _aliases)"} )
_describe 'task aliases' _aliases
}
@@ -230,7 +230,7 @@ _task_subcommands() {
local cmd category desc
local lastcategory=''
# The list is sorted by category, in the right order.
local _task_zshcmds=( ${(f)"$(task _zshcommands)"} sentinel:sentinel:sentinel )
local _task_zshcmds=( ${(f)"$(task rc.hooks=0 _zshcommands)"} sentinel:sentinel:sentinel )
for _zshcmd in "$_task_zshcmds[@]"; do
# Parse out the three fields
cmd=${_zshcmd%%:*}
@@ -254,7 +254,7 @@ _task_subcommands() {
## contexts
(( $+functions[_task_context] )) ||
_task_context() {
local _contexts=(${(f)"$(task _context)"})
local _contexts=(${(f)"$(task rc.hooks=0 _context)"})
_describe 'task contexts' _contexts
}
@@ -264,7 +264,7 @@ _task_default() {
local cmd ret=1
integer i=1
local _task_cmds=($(task _commands; task _aliases))
local _task_cmds=($(task rc.hooks=0 _commands; task _aliases))
while (( i < $#words ))
do
cmd="${_task_cmds[(r)$words[$i]]}"

Some files were not shown because too many files have changed in this diff Show More