Taskwarrior <-> * bi-directional synchronization tool - this is now deprecated, use syncall instead
Project description
taskwarrior-syncall
Description
taskwarrior-syncall
is your one-stop software to bi-directionally synchronize
a variety of services with taskwarrior. Each synchronization comes with its own
executable which handles the synchronization between that particular service and
taskwarrior. Note that the name is taskwarrior
-specific but it's not tied to
taskwarrior; You can synchronize items/tasks etc. from two arbitrary sides,
given that you implement the corresponding synchronization
sides.
At the moment the list of supported synchronization combinations is the following:
Description | Executable | |
---|---|---|
README | Taskwarrior ⬄ Google Calendar | tw-gcal-sync |
README | Taskwarrior ⬄ Notion Checkboxes | tw-notion-sync |
README | Taskwarrior ⬄ Google Keep Checkboxes | tw-gkeep-sync |
README | Taskwarrior ⬄ Asana Tasks | tw-asana-sync |
Overall, each of the above should support bi-directional synchronization
between the said services. This means that on an addition, modification, or
deletion of an item on one side, a corresponding addition, modification or
deletion of the counterpart item will occur on the other side so that the two
sides are eventually in sync. All services also support dependency resolution
and a few different synchronization strategies so that, on conflict, the user
can specify whether to always select the change from side A (AlwaysFirstRS
),
the change from side B (AlwaysSecondRS
), the most recent change of the two
(MostRecentRS
), or the least (LeastRecentRS
).
By the end of the run, it should show you a summary of what's been done, like the following.
Google Keep
-----------
* Items created: 3
* Items updated: 2
* Items deleted: 1
Taskwarrior
-----------
* Items created: 1
* Items updated: 2
* Items deleted: 0
Refer to the corresponding README for the list above for instructions specific to the synchronization with that particular service. Before jumping to that though, please complete the installation instructions below.
Sample Usage Instructions
Here's the CLI help page for the synchronizations available.
tw_gcal_sync --help
Usage: tw_gcal_sync [OPTIONS]
Synchronize calendars from your Google Calendar with filters from
Taskwarrior.
The list of TW tasks is determined by a combination of TW tags and a TW
project while the calendar in GCal should be provided by their name. if it
doesn't exist it will be crated
Options:
-c, --gcal-calendar TEXT Name of the Google Calendar to sync (will be
created if not there)
--google-secret FILE Override the client secret used for the
communication with the Google APIs
--oauth-port INTEGER Port to use for OAuth Authentication with
Google Applications
-t, --taskwarrior-tags TEXT Taskwarrior tags to sync
-p, --tw-project TEXT Taskwarrior project to sync
--list-combinations List the available named TW<->Google
Calendar combinations
-r, --resolution_strategy [MostRecentRS|LeastRecentRS|AlwaysFirstRS|AlwaysSecondRS]
Resolution strategy to use during conflicts
-b, --combination TEXT Name of an already saved TW<->Google
Calendar combination
-s, --save-as TEXT Save the given TW<->Google Calendar filters
combination using a specified custom name.
-v, --verbose
--version Show the version and exit.
--help Show this message and exit.
tw_gcal_sync --help
Usage: tw_gcal_sync [OPTIONS]
Synchronize calendars from your Google Calendar with filters from
Taskwarrior.
The list of TW tasks is determined by a combination of TW tags and a TW
project while the calendar in GCal should be provided by their name. if it
doesn't exist it will be crated
Options:
-c, --gcal-calendar TEXT Name of the Google Calendar to sync (will be
created if not there)
--google-secret FILE Override the client secret used for the
communication with the Google APIs
--oauth-port INTEGER Port to use for OAuth Authentication with
Google Applications
-t, --taskwarrior-tags TEXT Taskwarrior tags to sync
-p, --tw-project TEXT Taskwarrior project to sync
--list-combinations List the available named TW<->Google
Calendar combinations
-r, --resolution_strategy [MostRecentRS|LeastRecentRS|AlwaysFirstRS|AlwaysSecondRS]
Resolution strategy to use during conflicts
-b, --combination TEXT Name of an already saved TW<->Google
Calendar combination
-s, --save-as TEXT Save the given TW<->Google Calendar filters
combination using a specified custom name.
-v, --verbose
--version Show the version and exit.
--help Show this message and exit.
tw_gkeep_sync --help
Usage: tw_gkeep_sync [OPTIONS]
Synchronize Notes from your Google Keep with filters from Taskwarrior.
The list of TW tasks is determined by a combination of TW tags and a TW
project while the note in GKeep should be specified using their full name.
if it doesn't exist it will be created.
This service will create TaskWarrior tasks with the specified filter for
each one of the checkboxed items in the specified Google Keep note and will
create Google Keep items for each one of the tasks in the Taskwarrior
filter. You have to first "Show checkboxes" in the Google Keep Note in order
to use it with this service.
Options:
-k, --gkeep-note TEXT Full title of the Google Keep Note to
synchronize - Make sure you enable the
checkboxes
--user, --user-pass-path TEXT Path in the UNIX password manager to fetch
the Google username from
--passwd, --passwd-pass-path TEXT
Path in the UNIX password manager to fetch
the Google password from
-t, --taskwarrior-tags TEXT Taskwarrior tags to sync
-p, --tw-project TEXT Taskwarrior project to sync
--list-combinations List the available named TW<->Google Keep
combinations
-r, --resolution_strategy [MostRecentRS|LeastRecentRS|AlwaysFirstRS|AlwaysSecondRS]
Resolution strategy to use during conflicts
-b, --combination TEXT Name of an already saved TW<->Google Keep
combination
-s, --save-as TEXT Save the given TW<->Google Keep filters
combination using a specified custom name.
-v, --verbose
--version Show the version and exit.
--help Show this message and exit.
tw_asana_sync --help
Usage: tw_asana_sync [OPTIONS]
Options:
--token, --token-pass-path TEXT
Path in the UNIX password manager to fetch
-w, --asana-workspace-gid TEXT Asana workspace GID used to filter tasks
-W, --asana-workspace-name TEXT
Asana workspace name used to filter tasks
--list-asana-workspaces List the available Asana workspaces
-t, --taskwarrior-tags TEXT Taskwarrior tags to sync
-p, --tw-project TEXT Taskwarrior project to sync
-r, --resolution_strategy [MostRecentRS|LeastRecentRS|AlwaysFirstRS|AlwaysSecondRS]
Resolution strategy to use during conflicts
-b, --combination TEXT Name of an already saved TW<->Asana
combination
--list-combinations List the available named TW<->Asana
combinations
-s, --save-as TEXT Save the given TW<->Asana filters
combination using a specified custom name.
-v, --verbose
--version Show the version and exit.
--help Show this message and exit.
Installation instructions
Requirements
- Taskwarrior - Installation instructions -
Tested with
2.6.1
, should work with>=2.6
. - Python version >=
3.8
Installation Options
You have to specify at least one extra. To do so use the []
syntax in pip:
# for installing integration with google (e.g. Google Keep / Calendar) and Notion
pip3 install taskwarrior-syncall[notion,google]
-
PyPI (may not contain latest version):
pip3 install --user --upgrade taskwarrior-syncall[notion,google,gkeep]
-
Github:
pip3 install --user "taskwarrior-syncall[google] @ git+https://github.com/bergercookie/taskwarrior-syncall"
-
Download and install
devel
branch locally - bleeding edgegit clone https://github.com/bergercookie/taskwarrior-syncall cd taskwarrior-syncall git checkout devel pip3 install --user --upgrade .
-
Setup using poetry - handy for local development and for isolation of dependencies:
git clone https://github.com/bergercookie/taskwarrior-syncall poetry install # get an interactive shell poetry shell # now the executables of all the services should be in your PATH for the # current shell and you can also edit the source code without further # re-installation ...
Mechanics / Automatic synchronization
To achieve synchronization between two arbitrary services, we use a push-pull
mechanism which is far easier and less troublesome than an automatic
synchronization solution. This means that you have to explicitly call the
executable for the synchronization you want to achieve. If you want to automate
this, consider adding a cron
job or a systemd
timer.
crontab -e
...
# Add the following to sync every 10' - modify the arguments according to your
# preferences and according to the instructions of the corresponding executable
# for example for `tw_gcal_sync`:
#
# See output and potential errors in your system logs (e.g., `/var/log/syslog`)
*/10 * * * * tw_gcal_sync -c "TW Reminders" -t "remindme"
FAQ
How do I reset the synchronization and start it from scratch?
-
Remove the combination file that corresponds to your synchronization. For example, if you're executing synchronization of
Google Keep
withTaskwarrior
, like the following, your combination name istestnote__None__test_tag
.tw_gkeep_sync -t test_tag -k "testnote"
The executable also mentions the combination name at the end of the run.
... 14:00:03.41 | INFO | Flushing data to remote Google Keep... 14:00:04.32 | SUCCESS | Sync completed successfully. You can now use the -b/--combination option to refer to this particular combination tw_gkeep_sync --combination testnote__None__test_tag
For this combination, on Linux, remove
~/.config/taskwarrior_syncall/testnote__None__test_tag.yaml
. -
Remove the section for your combination in the
<sideA_sideB_configs.yaml>
configuration file under the~/.config/taskwarrior_syncall/
directory.This section will have the same name as the combination file deleted in the earlier step and will look like this:
--- testnote__None__test_tag: gkeep_note: testnote tw_project: null tw_tags: !!python/tuple - test_tag
-
Remove the items of one of the sides. Keep e.g. the items from the Google Keep note and delete the tasks of the tag/project you are using for synchronization.
-
Rerun synchronization from scratch to populate the one side with the items of the other side.
I want to synchronize more than a single (Notion page / TW filter), (Google Calendar / TW filter) etc. combination.
See combinations.md.
Tab Completion
All synchronization executables support tab auto-completion for their options
for bash
, zsh
and fish
. You can find them under completions/
Miscellaneous
Self Promotion
If you find this tool useful, please star it on Github
TODO List
See ISSUES list for the things that I'm currently either working on or interested in implementing in the near future. In case there's something you are interesting in working on, don't hesitate to either ask for clarifications or just do it and directly make a PR.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file taskwarrior_syncall-1.3.3.tar.gz
.
File metadata
- Download URL: taskwarrior_syncall-1.3.3.tar.gz
- Upload date:
- Size: 44.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.3.2 CPython/3.10.0 Linux/5.15.0-1030-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 63b8c555dac0a23548d929740f23ce9713afc2669a5f6886fc85fb56e005d059 |
|
MD5 | 5aebf4d9b23ba865a4ecda1ed2473e3f |
|
BLAKE2b-256 | d6e5f1c26a8a8933b5b339705572adea3a6cdc11ef0197d61719f1d0666f8354 |
File details
Details for the file taskwarrior_syncall-1.3.3-py3-none-any.whl
.
File metadata
- Download URL: taskwarrior_syncall-1.3.3-py3-none-any.whl
- Upload date:
- Size: 51.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.3.2 CPython/3.10.0 Linux/5.15.0-1030-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 92f62fdc8f9f4772498a217213d20b2c89164c157b87ba2d29c2cac36f18e5c5 |
|
MD5 | e35a87e7c891f38e4f8a37149cc97b29 |
|
BLAKE2b-256 | 6fa3765ce84c1fc52d6f8192ec21042f7b3406fc9623312afb01e2ca66bf8d94 |