Compare commits

..

1 Commits

Author SHA1 Message Date
Federico Hernandez
848012bf68 Bumped version number to 2.5.2 2016-02-24 23:41:59 +01:00
729 changed files with 67970 additions and 53379 deletions

View File

@@ -1,6 +0,0 @@
[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
]

View File

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

View File

@@ -1,20 +0,0 @@
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

@@ -1,24 +0,0 @@
// 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

@@ -1,59 +0,0 @@
#!/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

View File

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

View File

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

1
.github/FUNDING.yml vendored
View File

@@ -1 +0,0 @@
github: GothenburgBitFactory

View File

@@ -1,18 +0,0 @@
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

@@ -1,12 +0,0 @@
#### To report a bug...
* What command(s) did you run?
* What did you expect to happen?
* What actually happened?
* Paste the output of the ```task diag``` command.
#### To request a feature...
* 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/)

View File

@@ -1,82 +0,0 @@
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.81.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
cargo-metadata:
runs-on: ubuntu-latest
name: "Cargo Metadata"
steps:
- uses: actions/checkout@v4
- uses: actions-rs/toolchain@v1
with:
profile: minimal
components: rustfmt
toolchain: stable
override: true
- name: "Check metadata"
run: ".github/workflows/metadata-check.sh"

View File

@@ -1,57 +0,0 @@
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: Create lowercase repository name
run: |
GHCR_REPOSITORY="${{ github.repository_owner }}"
echo "REPOSITORY=${GHCR_REPOSITORY,,}" >> ${GITHUB_ENV}
- 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.repository_owner }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and push Taskwarrior Docker image
id: build-and-push
uses: docker/build-push-action@v6.10.0
with:
context: .
file: "./docker/task.dockerfile"
push: true
tags: ${{ env.REGISTRY }}/${{ env.REPOSITORY }}/task:${{ github.ref_name }}
- name: Sign the published Docker image
env:
COSIGN_EXPERIMENTAL: "true"
run: cosign sign ${{ env.REGISTRY }}/${{ env.REPOSITORY }}/task@${{ steps.build-and-push.outputs.digest }}

View File

@@ -1,32 +0,0 @@
#! /bin/bash
# Check the 'cargo metadata' for various requirements
set -e
META=$(mktemp)
trap 'rm -rf -- "${META}"' EXIT
cargo metadata --locked --format-version 1 > "${META}"
get_msrv() {
local package="${1}"
jq -r '.packages[] | select(.name == "'"${package}"'") | .rust_version' "${META}"
}
check_msrv() {
local taskchampion_msrv=$(get_msrv taskchampion)
local taskchampion_lib_msrv=$(get_msrv taskchampion-lib)
echo "Found taskchampion MSRV ${taskchampion_msrv}"
echo "Found taskchampion-lib MSRV ${taskchampion_lib_msrv}"
if [ "${taskchampion_msrv}" != "${taskchampion_lib_msrv}" ]; then
echo "Those MSRVs should be the same (or taskchampion-lib should be greater, in which case adjust this script)"
exit 1
else
echo "✓ MSRVs are at the same version."
fi
}
check_msrv

View File

@@ -1,30 +0,0 @@
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

View File

@@ -1,20 +0,0 @@
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,174 +0,0 @@
## 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.
# This should match the MSRV in `src/taskchampion-cpp/Cargo.toml`.
toolchain: "1.81.0" # MSRV
override: true
- uses: actions-rs/cargo@v1.0.3
with:
command: test
tests:
needs: coverage
strategy:
fail-fast: false
matrix:
include:
- name: "Fedora 40"
runner: ubuntu-latest
dockerfile: fedora40
- name: "Fedora 41"
runner: ubuntu-latest
dockerfile: fedora41
- name: "Debian Testing"
runner: ubuntu-latest
dockerfile: debiantesting
- name: "Ubuntu 20.04"
runner: ubuntu-latest
dockerfile: ubuntu2004
- name: "Ubuntu 22.04"
runner: ubuntu-latest
dockerfile: ubuntu2204
- name: "OpenSUSE Tumbleweed (Rolling)"
runner: ubuntu-latest
dockerfile: opensuse
- name: "Archlinux Base (Rolling)"
runner: ubuntu-latest
dockerfile: arch
runs-on: ${{ matrix.runner }}
continue-on-error: ${{ matrix.continue-on-error == true }}
steps:
- uses: actions/checkout@v4
- name: Build ${{ matrix.name }}
env:
DOCKER_REGISTRY: docker.pkg.github.com
DOCKER_CACHE_IMAGE: docker.pkg.github.com/${{ github.repository }}/taskwarrior_cache
GITHUB_USER: ${{ github.actor }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
CONTAINER: ${{ matrix.dockerfile }}
run: docker compose build test-${{ env.CONTAINER }}
- name: Test ${{ matrix.name }}
run: docker compose run test-${{ env.CONTAINER }}
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
CONTAINER: ${{ matrix.dockerfile }}

20
.gitignore vendored
View File

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

6
.gitmodules vendored
View File

@@ -1,6 +0,0 @@
[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

View File

@@ -1,19 +0,0 @@
# 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.6
hooks:
- id: clang-format
types_or: [c++, c]
- repo: https://github.com/psf/black
rev: 24.10.0
hooks:
- id: black

64
AUTHORS
View File

@@ -3,7 +3,6 @@ contributions of the following people:
Paul Beckingham (Principal Author) Paul Beckingham (Principal Author)
Federico Hernandez (Principal Author) Federico Hernandez (Principal Author)
Tomas Babej (Principal Author)
David J Patrick (Designer) David J Patrick (Designer)
John Florian (Contributing Author) John Florian (Contributing Author)
Cory Donnelly (Contributing Author) Cory Donnelly (Contributing Author)
@@ -14,6 +13,7 @@ contributions of the following people:
Louis-Claude Canon (Contributing Author) Louis-Claude Canon (Contributing Author)
Scott Kostyshak (Contributing Author) Scott Kostyshak (Contributing Author)
Renato Alves (Contributing Author) Renato Alves (Contributing Author)
Tomas Babej (Contributing Author)
The following submitted code, packages or analysis, and deserve special thanks: The following submitted code, packages or analysis, and deserve special thanks:
@@ -126,38 +126,7 @@ The following submitted code, packages or analysis, and deserve special thanks:
Sunil Joshi Sunil Joshi
Misty De Meo Misty De Meo
Kent R. Spillner Kent R. Spillner
Konstantin Vorobyev Konstantin
Tom Sydney Kerckhove
Lynoure Braakman
Sebastien Badia
Ran Benita
Vladimir
Zachary Manning
jrabbit
Jelle van der Waa
Flavio Poletti
Antonio Huete Jimenez
Lukas Barth
Øyvind A. Holm
Paul J. Fenwick
Michael Neumann
Mark Scannell
buhtz
Tiago Matias
Simon Ruderich
Kirill Bobyrev
Simon Désaulniers
Janik Rabe
mrossinek
taiyu-len
Chad Phillips
Lionel Miller
Florian Heiderich
Anthony VB
Julien Rabinow
Daniel Mowitz
Scott Mcdermott
Bharatvaj
Thanks to the following, who submitted detailed bug reports and excellent Thanks to the following, who submitted detailed bug reports and excellent
suggestions: suggestions:
@@ -305,6 +274,7 @@ suggestions:
James Cline James Cline
Ryan Ryan
Simon W. Jackson Simon W. Jackson
Sebastien Badia
Michale Meier Michale Meier
Svetoslav Trochev Svetoslav Trochev
Marc Cornellà Marc Cornellà
@@ -318,31 +288,3 @@ suggestions:
pawprint pawprint
Reg Reg
Yaroslav Molochko Yaroslav Molochko
Michael Meier
Slaven ʙanovic
Ellington Santos
george js
E. Manuel Cerr'on Angeles
Andrew
bjonnh
OKOMper
eldios
Eli
Sergey Trofimov
eezewaek
Hubert Toullec
Eric Hymowitz
Dan Callahan
Martin Strunz
Kai HTML
Marc Richter
rjc
php-coder
Martin F. Krafft
tom-doerr
ad-si
coaxial
Arvedui
reportaman
Pablo Vizcay
Jake C.

View File

@@ -1,43 +1,103 @@
cmake_minimum_required (VERSION 3.22) cmake_minimum_required (VERSION 2.8)
enable_testing() set(CMAKE_LEGACY_CYGWIN_WIN32 0) # Remove when CMake >= 2.8.4 is required
set (CMAKE_EXPORT_COMPILE_COMMANDS ON)
project (task
VERSION 3.3.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 (CheckFunctionExists)
include (CheckStructHasMember) include (CheckStructHasMember)
set (HAVE_CMAKE true) set (HAVE_CMAKE true)
include (CXXSniffer) project (task)
set (PROJECT_VERSION "2.5.2")
OPTION (ENABLE_WASM "Enable 'wasm' support" OFF) OPTION (ENABLE_SYNC "Enable 'task sync' support" ON)
if (ENABLE_WASM) if (ENABLE_SYNC)
message ("Enabling WASM support.") set (USE_GNUTLS ON CACHE BOOL "Build gnutls support." FORCE)
set(CMAKE_EXECUTABLE_SUFFIX ".js") else (ENABLE_SYNC)
endif (ENABLE_WASM) 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 git submodules") message ("CMAKE_SYSTEM_NAME ${CMAKE_SYSTEM_NAME}")
if (EXISTS ${CMAKE_SOURCE_DIR}/src/libshared/src AND EXISTS ${CMAKE_SOURCE_DIR}/src/taskchampion-cpp/corrosion)
message ("-- Found git submodules") include (CheckCXXCompilerFlag)
else (EXISTS ${CMAKE_SOURCE_DIR}/src/libshared/src)
message ("-- Cloning git submodules") # NOTE: If we are to actually use C++11 features, we should either require
execute_process (COMMAND git submodule update --init # a compiler that supports the -std=c++11 flag or check for the
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}) # features used.
endif (EXISTS ${CMAKE_SOURCE_DIR}/src/libshared/src AND EXISTS ${CMAKE_SOURCE_DIR}/src/taskchampion-cpp/corrosion) # Relying on -std=c++0x or even -std=gnu++0x is highly volatile.
CHECK_CXX_COMPILER_FLAG("-std=c++11" _HAS_CXX11)
CHECK_CXX_COMPILER_FLAG("-std=c++0x" _HAS_CXX0X)
CHECK_CXX_COMPILER_FLAG("-std=gnu++0x" _HAS_GNU0X)
if (_HAS_CXX11)
set (_CXX11_FLAGS "-std=c++11")
elseif (_HAS_CXX0X)
message (WARNING "Enabling -std=c++0x draft compile flag. Your compiler does not support the standard '-std=c++11' option. Consider upgrading.")
set (_CXX11_FLAGS "-std=c++0x")
elseif (_HAS_GNU0X)
message (WARNING "Enabling -std=gnu++0x draft compile flag. Your compiler does not support the standard '-std=c++11' option. Consider upgrading.")
set (_CXX11_FLAGS "-std=gnu++0x")
else (_HAS_CXX11)
message (FATAL_ERROR "C++11 support missing. Try upgrading your C++ compiler. If you have a good reason for using an outdated compiler, please let us know at support@taskwarrior.org.")
endif (_HAS_CXX11)
if (${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang")
set (_CXX11_FLAGS "${_CXX11_FLAGS} -stdlib=libc++")
endif (${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang")
if (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
set (LINUX true)
elseif (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
set (DARWIN true)
elseif (${CMAKE_SYSTEM_NAME} MATCHES "kFreeBSD")
set (KFREEBSD true)
elseif (${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD")
set (FREEBSD true)
elseif (${CMAKE_SYSTEM_NAME} MATCHES "OpenBSD")
set (OPENBSD true)
elseif (${CMAKE_SYSTEM_NAME} MATCHES "NetBSD")
set (NETBSD true)
elseif (${CMAKE_SYSTEM_NAME} MATCHES "SunOS")
set (SOLARIS true)
elseif (${CMAKE_SYSTEM_NAME} STREQUAL "GNU")
set (GNUHURD true)
elseif (${CMAKE_SYSTEM_NAME} STREQUAL "CYGWIN")
set (CYGWIN true)
# NOTE: Not setting -std=gnu++0x leads to compile errors even with
# GCC 4.8.3, and debugging those leads to insanity. Adding this
# workaround instead of fixing Cygwin.
set (_CXX11_FLAGS "-std=gnu++0x")
else (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
set (UNKNOWN true)
endif (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
set (CMAKE_CXX_FLAGS "${_CXX11_FLAGS} ${CMAKE_CXX_FLAGS}")
set (CMAKE_CXX_FLAGS "-Wall -Wsign-compare -Wreturn-type ${CMAKE_CXX_FLAGS}")
if (NETBSD)
# Since readline, etc likely to be in /usr/pkg/lib, not standard library
# Otherwise will remove links during install
set (CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
endif (NETBSD)
if (FREEBSD)
SET (TASK_MAN1DIR man/man1 CACHE STRING "Installation directory for man pages, section 1")
SET (TASK_MAN5DIR man/man5 CACHE STRING "Installation directory for man pages, section 5")
else (FREEBSD)
SET (TASK_MAN1DIR share/man/man1 CACHE STRING "Installation directory for man pages, section 1")
SET (TASK_MAN5DIR share/man/man5 CACHE STRING "Installation directory for man pages, section 5")
endif (FREEBSD)
SET (TASK_DOCDIR share/doc/task CACHE STRING "Installation directory for doc files")
SET (TASK_RCDIR "${TASK_DOCDIR}/rc" CACHE STRING "Installation directory for configuration files")
SET (TASK_BINDIR bin CACHE STRING "Installation directory for the binary")
message ("-- Looking for SHA1 references") message ("-- Looking for SHA1 references")
if (EXISTS ${CMAKE_SOURCE_DIR}/.git/index) if (EXISTS ${CMAKE_SOURCE_DIR}/.git/index)
set (HAVE_COMMIT true) set (HAVE_COMMIT true)
execute_process (COMMAND git log -1 --pretty=format:%h --no-show-signature execute_process (COMMAND git log -1 --pretty=format:%h
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
OUTPUT_VARIABLE COMMIT) OUTPUT_VARIABLE COMMIT)
configure_file ( ${CMAKE_SOURCE_DIR}/commit.h.in configure_file ( ${CMAKE_SOURCE_DIR}/commit.h.in
@@ -47,25 +107,25 @@ endif (EXISTS ${CMAKE_SOURCE_DIR}/.git/index)
set (PACKAGE "${PROJECT_NAME}") set (PACKAGE "${PROJECT_NAME}")
set (VERSION "${PROJECT_VERSION}") set (VERSION "${PROJECT_VERSION}")
set (PACKAGE_BUGREPORT "support@gothenburgbitfactory.org") set (PACKAGE_BUGREPORT "support@taskwarrior.org")
set (PACKAGE_NAME "${PACKAGE}") set (PACKAGE_NAME "${PACKAGE}")
set (PACKAGE_TARNAME "${PACKAGE}") set (PACKAGE_TARNAME "${PACKAGE}")
set (PACKAGE_VERSION "${VERSION}") set (PACKAGE_VERSION "${VERSION}")
set (PACKAGE_STRING "${PACKAGE} ${VERSION}") set (PACKAGE_STRING "${PACKAGE} ${VERSION}")
if (FREEBSD OR DRAGONFLY) if (USE_GNUTLS)
SET (TASK_MAN1DIR man/man1 CACHE STRING "Installation directory for man pages, section 1") message ("-- Looking for GnuTLS")
SET (TASK_MAN5DIR man/man5 CACHE STRING "Installation directory for man pages, section 5") find_package (GnuTLS)
else (FREEBSD OR DRAGONFLY) if (GNUTLS_FOUND)
SET (TASK_MAN1DIR share/man/man1 CACHE STRING "Installation directory for man pages, section 1") set (HAVE_LIBGNUTLS true)
SET (TASK_MAN5DIR share/man/man5 CACHE STRING "Installation directory for man pages, section 5") set (TASK_INCLUDE_DIRS ${TASK_INCLUDE_DIRS} ${GNUTLS_INCLUDE_DIR})
endif (FREEBSD OR DRAGONFLY) set (TASK_LIBRARIES ${TASK_LIBRARIES} ${GNUTLS_LIBRARIES})
SET (TASK_DOCDIR share/doc/task CACHE STRING "Installation directory for doc files") endif (GNUTLS_FOUND)
SET (TASK_RCDIR "${TASK_DOCDIR}/rc" CACHE STRING "Installation directory for configuration files") endif (USE_GNUTLS)
SET (TASK_BINDIR bin CACHE STRING "Installation directory for the binary")
# rust libs require these if (ENABLE_SYNC AND NOT GNUTLS_FOUND)
set (TASK_LIBRARIES dl pthread) 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)
check_function_exists (timegm HAVE_TIMEGM) check_function_exists (timegm HAVE_TIMEGM)
check_function_exists (get_current_dir_name HAVE_GET_CURRENT_DIR_NAME) check_function_exists (get_current_dir_name HAVE_GET_CURRENT_DIR_NAME)
@@ -99,41 +159,22 @@ else (HAVE_UUID_UNPARSE_LOWER)
message ("-- Found libuuid, using internal uuid_unparse_lower") message ("-- Found libuuid, using internal uuid_unparse_lower")
endif (HAVE_UUID_UNPARSE_LOWER) endif (HAVE_UUID_UNPARSE_LOWER)
if (HAIKU) # Set the package language.
# search for socket() in libnetwork on Haiku if (LANGUAGE)
message("-- Looking for libnetwork") set (PACKAGE_LANGUAGE ${LANGUAGE})
find_library (NETWORK_LIBRARY NAMES network) else (LANGUAGE)
if (NETWORK_LIBRARY) set (PACKAGE_LANGUAGE 1)
set (TASK_LIBRARIES ${TASK_LIBRARIES} ${NETWORK_LIBRARY}) endif (LANGUAGE)
else (NETWORK_LIBRARY)
message(FATAL_ERROR "-- libnetwork not found.")
endif (NETWORK_LIBRARY)
endif (HAIKU)
if (SOLARIS) set (LANGUAGE_ENG_USA 1)
# accept() is in libsocket according to its manpage set (LANGUAGE_ESP_ESP 2)
message("-- Looking for libsocket") set (LANGUAGE_DEU_DEU 3)
find_library (SOCKET_LIBRARY NAMES socket) set (LANGUAGE_FRA_FRA 4)
if (SOCKET_LIBRARY) set (LANGUAGE_ITA_ITA 5)
set (TASK_LIBRARIES ${TASK_LIBRARIES} ${SOCKET_LIBRARY}) set (LANGUAGE_POR_PRT 6)
else (SOCKET_LIBRARY) set (LANGUAGE_EPO_RUS 7)
message(FATAL_ERROR "-- libsocket not found.") set (LANGUAGE_POL_POL 8)
endif (SOCKET_LIBRARY) set (LANGUAGE_JPN_JPN 9)
# inet_ntop() is in libnsl according to its manpage
message("-- Looking for libnsl")
find_library (NSL_LIBRARY NAMES nsl)
if (NSL_LIBRARY)
set (TASK_LIBRARIES ${TASK_LIBRARIES} ${NSL_LIBRARY})
else (NSL_LIBRARY)
message(FATAL_ERROR "-- libnsl not found.")
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") message ("-- Configuring cmake.h")
configure_file ( configure_file (
@@ -142,18 +183,17 @@ configure_file (
add_subdirectory (src) add_subdirectory (src)
add_subdirectory (src/commands) add_subdirectory (src/commands)
add_subdirectory (src/taskchampion-cpp)
add_subdirectory (src/columns) add_subdirectory (src/columns)
add_subdirectory (doc) add_subdirectory (doc)
add_subdirectory (scripts) add_subdirectory (scripts)
if (EXISTS ${CMAKE_SOURCE_DIR}/test) if (EXISTS ${CMAKE_SOURCE_DIR}/test)
add_subdirectory (test EXCLUDE_FROM_ALL) add_subdirectory (test EXCLUDE_FROM_ALL)
endif (EXISTS ${CMAKE_SOURCE_DIR}/test) endif (EXISTS ${CMAKE_SOURCE_DIR}/test)
if (EXISTS ${CMAKE_SOURCE_DIR}/performance) if (EXISTS performance)
add_subdirectory (performance EXCLUDE_FROM_ALL) add_subdirectory (performance EXCLUDE_FROM_ALL)
endif (EXISTS ${CMAKE_SOURCE_DIR}/performance) endif (EXISTS performance)
set (doc_FILES ChangeLog README.md INSTALL AUTHORS COPYING LICENSE) set (doc_FILES NEWS ChangeLog README.md INSTALL AUTHORS COPYING LICENSE)
foreach (doc_FILE ${doc_FILES}) foreach (doc_FILE ${doc_FILES})
install (FILES ${doc_FILE} DESTINATION ${TASK_DOCDIR}) install (FILES ${doc_FILE} DESTINATION ${TASK_DOCDIR})
endforeach (doc_FILE) endforeach (doc_FILE)
@@ -162,6 +202,9 @@ endforeach (doc_FILE)
set (CPACK_SOURCE_GENERATOR "TGZ") set (CPACK_SOURCE_GENERATOR "TGZ")
set (CPACK_SOURCE_PACKAGE_FILE_NAME ${PACKAGE_NAME}-${PACKAGE_VERSION}) set (CPACK_SOURCE_PACKAGE_FILE_NAME ${PACKAGE_NAME}-${PACKAGE_VERSION})
set (CPACK_SOURCE_IGNORE_FILES "build" "test" "misc/*" "performance" "swp$" "src/lex$" "task-.*.tar.gz" set (CPACK_SOURCE_IGNORE_FILES "CMakeCache" "CMakeFiles" "CPackConfig" "CPackSourceConfig"
"commit.h" "cmake.h$" "\\\\.gitmodules" "src/libshared/\\\\.git" ".github/" ".*\\\\.gitignore$" "docker-compose.yml" "\\\\.git/") "_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"
"/\\\\.gitignore" "/\\\\.git/" "swp$" "src/lex$")
include (CPack) include (CPack)

View File

@@ -1,6 +1,6 @@
Taskwarrior - a command line task list manager. Taskwarrior - a command line task list manager.
Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez. Copyright 2006 - 2016, Paul Beckingham, Federico Hernandez.
Permission is hereby granted, free of charge, to any person obtaining a copy Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal of this software and associated documentation files (the "Software"), to deal
@@ -20,4 +20,4 @@ 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 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE. SOFTWARE.
https://www.opensource.org/licenses/mit-license.php http://www.opensource.org/licenses/mit-license.php

3272
Cargo.lock generated

File diff suppressed because it is too large Load Diff

View File

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

509
ChangeLog
View File

@@ -1,487 +1,3 @@
------ current release ---------------------------
- Sync now supports AWS S3 as a backend.
- A new `task import-v2` command allows importing Taskwarrior-2.x
data files directly.
3.3.0 -
Thanks to the following people for contributions to this release:
- Chongyun Lee
- David Tolnay
- Dustin J. Mitchell
- Felix Schurk
- geoffpaulsen
- Kalle Kietäväinen
- Kursat Aktas
- Scott Mcdermott
- Thomas Lauf
------ old releases ------------------------------
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` (#3654).
- 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
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"
Thanks to Andreas Kalex and Reg for reporting.
- TW #2648 xdg-open is not available on Mac OS-X
Thanks to chapterjson for reporting.
- TW #2655 The bulk removal of depends: and tags: is ignored
Thanks to angelus2014 for reporting.
- TW #2664 Tag exclusion should be detected as invalid write context
Thanks to bentwitthold for reporting.
- TW #2671 The value of soww named date is incorrect
Thanks to Lennart Kill for reporting.
- TW #2689 Corruption of the depends attribute upon syncing with taskd 1.1.0
Thanks to Klaus Ethgen for reporting, Dusting J. Mitchell for
contributing.
- TW #2707 Assigning dependencies via ID ranges
Thanks to jaker-dotcom for reporting.
- TW #2748 Recurring report does not include parent tasks
Thanks to Klaus Ethgen for reporting.
2.6.1 (2021-10-19) - a696b6b155f9c8af87a6a496c0d298c58e6fe369
- TW #2619 Fish autocompletion fails when completing tag removal
Thanks to Alexandre Provencio for reporting, Tin Lai and Alexandre
Provencio for contributing.
- TW #2620 Old-style context definition should only be interpreted as read
context.
Thanks to bongoman and Tom Dörr for reporting.
- TW #2622 Tags and dependencies appear as orphaned UDAs.
Thanks to Scott Mcdermott for reporting.
- TW #2626 Waiting report lists deleted and/or completed tasks.
Thanks to Don Harper for reporting.
- TW #2629 New-style context definition should take precedence over old-style
even if the new-style is an empty string.
Thanks to Denis Kasak for reporting.
- TW #2632 Cannot build on Cygwin
Thanks to Michael Esemplare for contributing.
- TW #2639 Unable to use ranges for some tasks with IDs above 1000.
Thanks to Manuel Haussmann for reporting.
2.6.0 (2021-10-03) - 8174287f917a3b24c19a6601ba36fca9bdaa78c9
- TW #1654 "Due" parsing behaviour seems inconsistent
Thanks to Jim B for reporting.
- TW #1788 When deleting recurring task all tasks, including completed tasks,
are marked as deleted
Thanks to Alan Young for reporting.
- TW #1804 Importing malformed annotation (without entry timestamp) causes
segmentation fault.
Thanks to David Badura for reporting.
- TW #1840 Countdown (date format) is not working properly
Thanks to Eric Hymowitz for reporting, Sebastian Uharek for
contributing.
- TW #1847 Allow including files relative to $PREFIX/share/
Thanks to Georg Sauthoff for suggesting, oxalica for contributing.
- TW #1896 Parser cannot handle empty parentheses
- TW #1908 Cannot create task with explicit description 'start ....'
Thanks to Matt Chun-Lum for reporting.
- TW #1911 Support holidays longer then 1 day
Thanks to Daniel Mowitz for contributing.
- TW #1913 Project names with dashes and attribute names fail to parse
Thanks to Yanick Champoux for reporting.
- TW #1914 Non-cumulative burndown report
Thanks to Daniel Mowitz for contributing.
- TW #1938 Missing annotation on import if entry is duplicated
Thanks to Florian for reporting.
- TW #1945 Support of environment variables for configuration options
Thanks to Sebastian Uharek for contributing.
- TW #1953 Setting rc.verbose=new-uuid override works only if given as first argument
Thanks to Paul Fenwick for reporting.
- TW #1955 Adding tasks in context.
Thanks to Jean-Francois Joly, Matt Smith for suggesting.
- TW #1960 Fixed bug with double escaped single quotes.
Thanks to Ben Kelly for reporting, Sebastian Uharek for
contributing.
- TW #2004 "shell" should not be expand to "exec tasksh"
Thanks to Arvedui for reporting.
- TW #2007 Compute number of current tasks correctly
Thanks to Janik Rabe for contributing.
- TW #2017 Support 64-bit datetime values
Thanks to Evgeniy Vasilev for suggesting.
- TW #2023 Layout breaks if report does not fit in the available width
Thanks to Adrian Sieber and Kaushik Gopal for reporting.
- TW #2060 Review timestamp is displayed as unix time, not formatted
Thanks to JavaZauber for reporting.
- TW #2093 wrong order under projects command
Thanks to Beka, Max Rossmannek for reporting.
- TW #2101 Numeric UDA values above 2,147,483,647 overflow without warning
Thanks to Adam Monsen for reporting.
- TW #2136 Configuration options can be overwritten for current context
Thanks to Sebastian Uharek for contributing.
- TW #2160 Upper-case named dates are not supported
Thanks to Scott Kostyshak for reporting, Max Rossmannek for
contributing.
- TW #2163 Nagging computation should be based on the urgency before completion
Thanks to korrat for contributing.
- TW #2208 Support highlighting dates with scheduled tasks in calendar
Thanks to justf0rfun for suggesting, Sebastian Uharek for
contributing.
- TW #2247 Configuration override rc.verbose:off not respected
Thanks to Vignesh Prabhu for reporting.
- TW #2257 UDA string fields can't start with certain keywords
Thanks to Michael Russell for reporting.
- TW #2283 Support multi-line annotations in task edit without JSON encoding
Thanks to Jochen Sprickerhof for contributing.
- TW #2287 Speed up fish autocompletion and more completion options.
Thanks to Tin Lai for contributing.
- TW #2290 Support moving the config file to XDG_CONFIG_HOME
Thanks to Julien Rabinow for contributing.
- TW #2292 CmdEdit: Interruption should remove lock file
Thanks to Martin Michlmayr for reporting, indev12 for contributing.
- TW #2333 Width determination of Unicode characters now works for up to
Unicode 12 (from Unicode 5). Emojis are correctly displayed.
Thanks to Adam Monsen for reporting.
- TW #2373 Year 2038 Problem
Thanks to Stephan Rieche for reporting.
- TW #2386 Filtering project:someday broken
Thanks to FRebbel for reporting.
- TW #2388 Filtering for attribute values with spaces is broken
Thanks to angelus2014 for reporting.
- TW #2389 For certain terminal widths, annotations with utf-8 chars can lead
task to hang
Thanks to arooni for reporting.
- TW #2390 Regression: Relative dates should be implicitly anchored around 'now'
Thanks to Dominik Russo for reporting.
- TW #2392 Filtering for project-names containing hyphen and zero-leading number
Thanks to Nicola Chiapolini for reporting.
- TW #2393 Highlight due dates for waiting tasks in the calendar
Thanks to emkamau for reporting.
- TW #2403 Undefined symbols (with -DBUILD_SHARED_LIBS=ON)
Thanks to Jan Palus for contributing.
- TW #2422 "eow" and "eonw" seem to use different week day as reference
Thanks to bgravato for reporting.
- TW #2428 The "edit" command should respect "bulk" configuration option
Thanks to Evan Edmond for reporting.
- TW #2442 Bulk completions generate nagging message even if highest urgency
task was completed
Thanks to Daniel Mowitz for contributing.
- TW #2451 Command task $month doesn't behave correctly
Thanks to Matias Laporte for reporting.
- TW #2502 Two GCC warnings on 2.6.0.
Thanks to Scott Kostyshak for reporting.
- TW #2503 Warn against executing an empty execute command.
Thanks to heinrichat for reporting.
- TW #2514 Duration values can be mis-reported in the task info output
Thanks to reportaman for reporting.
- TW #2519 Named date eod should be last minute of today and not first of
tomorrow.
Thanks to Pablo Vizcay for reporting.
- TW #2530 Taskwarrior 2.5.3 time based filtering regression
Thanks to Matthias Tafelmeier for reporting.
- TW #2532 Show number of tasks to be modified in bulk updates
Thanks to jaker-dotcom for suggesting, Sebastian Uharek for
contributing.
- TW #2536 Feature: inclusive range-end attribute modifier 'by' so 'end of'
named dates can be filtered inclusively
Thanks to Scott Mcdermott for contributing.
- TW #2549 Write context with complex expressions should not be allowed
Thanks to Sebastian Fricke for reporting.
- TW #2550 Write context skipped if description contains an identifier
Thanks to Sebastian Fricke for reporting.
- TW #2554 Remove the waiting state, and consider any task with wait>now to be
waiting
Thanks to Dustin J. Mitchell for contributing.
- TW #2560 Add report.<name>.context configuration variable
Thanks to Jake C for suggesting.
- TW #2461 The legend in calendar does not respect the calendar.holidays setting
- TW #2569 The `json.depends.array` configuration option is now ignored.
Dependencies are always represented as an array in JSON output.
Thanks to Dustin J. Mitchell for contributing.
- TW #2575 Support exporting given report as JSON, including sort order
Thanks to Dheepak Krishnamurthy for contributing.
- TW #2580 Importing malformed JSON task crashes TW
Thanks to bharatvaj for contributing.
- TW #2581 Config entry with a trailing comment cannot be modified
2.5.3 (2021-01-05) - 2f47226f91f0b02f7617912175274d9eed85924f
- #2375 task hangs then dies when certain tasks are present in a report
Thanks to Max Rossmannek, Tomáš Janoušek and Chad Phillips.
2.5.2 (2020-12-05) - b0c17d11639dc6e783befd89c8508f2abb9b4287
- TD-64 sync conflict deleted all annotations of the task
Thanks to Markus Beppler, Konstantin Vorobyev
- TI-91 Timewarrior does not compile on DragonFly
Thanks to Michael Neumann
- TW #1 URL formating
Thanks to buhtz
- TW #2 Update to markdown and rename DEVELOPER to DEVELOPER.md
Thanks to Lynoure Braakman
- TW-54/#115 Reduce output for timesheet
Thanks to Aikido guy
- TW-61 Extract only tasks with annotations
Thanks to Aikido Guy
- TW-213 Align countdown column on boundary between number and text.
Thanks to Eric Fluger
- TW-1572 Alternative approach to urgency inheritance
Thanks to Jens Erat, Wim Schuermann
- TW-1667 hooks: upon failure indicate which hook failed
Thanks to Daniel Shahaf
- TW-1785 Purge command to remove deleted tasks
Thanks to Paul Beckingham
- TW-1772 Implementation of circular dependency detection is inefficient
Thanks to Michael Meier
- TW-1778 Unicode strings are truncated in task description
Thanks to Andrew, bjonnh, OKOMPer, Vladimir
- TW-1788 Closing a reopened task does not update the end time
Thanks to Ralph Bean
- TW-1791 taskrc(5) manpage: spurious "pri." in rule.precedence.color
Thanks to Sebastien Badia
- TW-1792 The info command uses '0' to reference dependencies on non-
pending tasks.
- TW-1795 Calendar underline on Day padding
Thanks to Renato Alves
- TW-1805 project:ide is not allowed
Thanks to Slaven ʙanovic
- TW-1807 dateformat lacks a flag to display day of week
Thanks to Ellington Santos
- TW-1813 Range filter doesn't work
Thanks to george js
- TW-1820 Install with -DLANGUAGE=2 flag not work.
Thanks to E. Manuel Cerr'on Angeles
- TW-1823 Incorrect unicode text wrapping / justifying.
Thanks to Sergey Trofimov
- TW-1827 Extract annotations from a task
Thanks to Ryan
- TW-1855 "Well-known" CA certificates not properly auto-loaded
Thanks to Flavio Poletti
- TW-1857 Change Task::get call to the more efficient Task::has
Thanks to Zachary Manning
- TW1858 Change signature for dependencyGetBlocked
- TW-1859 Change signature of Task::getTags
- TW-1860 Change signature of Task::getAnnotations
- TW-1861 Truncated description when adding annotation
Thanks to eezewaek
- TW-1869 segmentation fault (on unusual installation)
Thanks to Eric Hymowitz
- TW-1873 Specify different path to extensions/hooks directory
Thanks to Eli
- TW-1877 task done, task edit, task is now pending
Thanks to Eric Hymowitz
- TW-1878 uuids subcommand produces a space-delimited list, not comma-delimited
Thanks to Scott Kostyshak
- TW-1881 Missing last character(s) in Description field
Thanks to Hubert Toullec
- TW-1881 default.scheduled seems not to work
Thanks to Onion
- TW-1885 Task Sync does not send TLS SNI headers
Thanks to Dan Callahan
- TW-1903 grammar error -- There are 1 local changes.
Thanks to Eric Hymowitz
- TW-1906/#1919 sync sub-command is missing from task(1) manual page
Thanks to rjc
- TW-1910 unreachable statement
Thanks to Martin Strunz
- TW-1917/#1930 "above" does a string comparison, even when the value is numeric
Thanks to Dirk Deimeke
- TW-1930 Typo in help
Thanks to Kai HTML
- TW-1935 Separate verbosity category for rc overrides
Thanks to Paul J. Fenwick
- TW-1936 Tweak tests to have fuller TAP compliance
Thanks to Paul J. Fenwick
- TW-1938 Adjust behaviour of new-uuid and new-id verbosity levels
Thanks to Paul J. Fenwick
- TW-1947 "urgency.over" filter seems to not work correct
Thanks to Marc Richter
- TW #1964 task burndown shows extra brackets #1964
Thanks to php-coder
- TW #1966 Tests: Don't hardcode errno constants #1966
Thanks to Jakub Wilk
- TW #1973 Don't nag when no tasks are READY
Thanks to Martin F. Krafft
- TW #1986 [Nit] Update DEVELOPER.md after migration to Github
Thanks to Kirill Bobyrev
- TW #1922 Can't find export scripts
Thanks to tom-doerr
- TW #2020 reserved.lines is not affecting the burndown height
Thanks to ad₋si
- TW #2047 Exiting the task editor with an error code doesn't remove the lock file
Thanks to coaxial
- TW #2051 doc/man: ready tasks sorted with started tasks 1st
Thanks to Simon Désaulniers
- TW #2053 Do not set CMP0037 on CMake 3.11.0 and above
Thanks to Janik Rabe
- #2077 Change taskrc override priority, respect verbose override, refactor.
Thanks to taiyu-len
- #2108 CmdHistory: repeat unit if a larger unit changes
Thanks to Janik Rabe
- #2132 JSON encode/decode string UDAs
Thanks to Chad Phillips
- #2176 How to get the full list of tags ?
Thanks to Adrien Lemaire
- #2091 duration of task is set to a wrong and extremely big value
Thanks to Wray Zheng
- Added 'juhannus' as a synonym for 'midsommarafton'
Thanks to Lynoure Braakman
- Deprecated the 'DUETODAY' virtual tag, which is a synonym for the 'TODAY'
virtual tag.
- Removed deprecated 'alias._query' setting.
- Fixed ambiguity in the esp-ESP localization
Thanks to Fidel Mato
- Deprecated the 'new-uuid' verbosity option, since its functionality can be
removed by merging with 'new-id'.
- Correct a false-positive warning when a due date is removed and a wait is
added.
- Added 'QUARTER' virtual tag.
- Fixed unquoted glob in bash completion script
Thanks to Ran Benita
- Deprecated use of alternate Boolean configuration settings. Use values "0" for
off, and "1" for on. Avoid used of "on", "off", "true", "t", "false", "f",
"yes", "y", "no", "n".
- Fixed test harness for Python 3.x.
Thanks to jrabbit
- Improved certificate validation diagnostics
Thanks to Jelle van der Waa
- Improved portability for SunOS-like OSes.
Thanks to Antonio Huete Jimenez
- Updated the 'timesheet' command with a more compact report that accepts a
filter, and has a default filter showing the last four weeks of completed and
started tasks.
- Added 'history.weekly', 'history.daily', 'ghistory.weekly', 'ghistory.daily'
report variations, with code refactoring.
Thanks to Lukas Barth
- New DOM references: annotations.count, tw.syncneeded, tw.program, tw.args,
tw.width, tw.height, tw.version.
- The message telling you to sync now indicates how many local changes will be
synced.
- Removed compile-time language settings and I18N.
- Workaround for alias grep=rg in fish
Thanks to Lionel Miller.
- Do not set CMP0037 on CMake 3.11.0 and above
Thanks to Janik Rabe
2.5.1 (2016-02-24) 8b4ae3b54b44dfbd00b96cdd6dceb8dfe7cc1ea0 2.5.1 (2016-02-24) 8b4ae3b54b44dfbd00b96cdd6dceb8dfe7cc1ea0
- TD-104 Unrecognized taskwarrior file format - TD-104 Unrecognized taskwarrior file format
@@ -592,6 +108,8 @@ Thanks to the following people for contributions to this release:
- The 'run_all' script was not correctly using exit code 0 when all tests pass - The 'run_all' script was not correctly using exit code 0 when all tests pass
(thanks to Gordon Ball). (thanks to Gordon Ball).
------ current release ---------------------------
2.5.0 (2015-10-21) dd5968a61b1fab258b38879cfdbb7d67f1bcd550 2.5.0 (2015-10-21) dd5968a61b1fab258b38879cfdbb7d67f1bcd550
- TW-20 Task edit loses annotation precision, causing journal updating code - TW-20 Task edit loses annotation precision, causing journal updating code
@@ -650,7 +168,7 @@ Thanks to the following people for contributions to this release:
- TW-1488 You have more urgent tasks (thanks to Stefan Betz, Denis Kasak). - TW-1488 You have more urgent tasks (thanks to Stefan Betz, Denis Kasak).
- TW-1496 Translation manuals are outdated/miss information (thanks to Jens - TW-1496 Translation manuals are outdated/miss information (thanks to Jens
Erat). Erat).
- TW-1499 Invalid due date produces jump to beginning of the unix epoch (thanks - TW-1499 Invalid due date produces jump to beggining of the unix epoch (thanks
to Tomas Babej). to Tomas Babej).
- TW-1511 Project titles not properly parsed if they contain hyphens (thanks to - TW-1511 Project titles not properly parsed if they contain hyphens (thanks to
Leon Feng, Blake Sweeney, Dylan Mikus). Leon Feng, Blake Sweeney, Dylan Mikus).
@@ -704,7 +222,7 @@ Thanks to the following people for contributions to this release:
John Reeder). John Reeder).
- TW-1630 "Due" parsing behavior seems inconsistent (thanks to Jim B). - TW-1630 "Due" parsing behavior seems inconsistent (thanks to Jim B).
- TW-1632 Japanese translation for Taskwarrior(150713) (thanks to ribbon). - TW-1632 Japanese translation for Taskwarrior(150713) (thanks to ribbon).
- TW-1634 due.not:<date> excludes only tasks scheduled at midnight (thanks to - TW-1634 due.not:<date> excludes only tasks scheduled at mitnight (thanks to
Tomas Babej). Tomas Babej).
- TW-1635 Running "task anystringatall" does not filter anything (thanks to - TW-1635 Running "task anystringatall" does not filter anything (thanks to
Tomas Babej). Tomas Babej).
@@ -805,6 +323,8 @@ Thanks to the following people for contributions to this release:
added. added.
- When GC is turned off, disable the query shortcuts, which no longer apply. - When GC is turned off, disable the query shortcuts, which no longer apply.
------ old releases ------------------------------
2.4.4 (2015-05-10) df49aaba126484b668c41d3ff9301f8d8ec49987 2.4.4 (2015-05-10) df49aaba126484b668c41d3ff9301f8d8ec49987
- TW-69 wait dates relative to due date (thanks to John Florian). - TW-69 wait dates relative to due date (thanks to John Florian).
@@ -915,7 +435,7 @@ Thanks to the following people for contributions to this release:
Babej). Babej).
- TW-1505 completely ignore mis-named hook scripts (thanks to Tomas Babej, - TW-1505 completely ignore mis-named hook scripts (thanks to Tomas Babej,
David Patrick). David Patrick).
- TW-1509 Hooks modifications performed on sync not syncing back (thanks to - TW-1509 Hooks modifications performed on sync not sycning back (thanks to
Tomas Babej). Tomas Babej).
- TW-1510 Task can save empty value in the data backlog (thanks to Tomas Babej). - TW-1510 Task can save empty value in the data backlog (thanks to Tomas Babej).
- TW-1517 Hook performance should be measured individually for each hook (thanks - TW-1517 Hook performance should be measured individually for each hook (thanks
@@ -1023,7 +543,7 @@ Thanks to the following people for contributions to this release:
"Description ( Information)". "Description ( Information)".
- TW-248 Substitute text doesn't work with forward slash (thanks to Jostein - TW-248 Substitute text doesn't work with forward slash (thanks to Jostein
Berntsen). Berntsen).
- TW-249 Report filters don't allow parentheses (thanks to Philipp Woelfel). - TW-249 Report filters don't allow parantheses (thanks to Philipp Woelfel).
- TW-250 Opening parenthesis in description gets padded in task 2.0.0 bet 2 - TW-250 Opening parenthesis in description gets padded in task 2.0.0 bet 2
(thanks to Michelle Crane). (thanks to Michelle Crane).
- TW-251 extra spaces added after ( and / (thanks to Andy Spiegl). - TW-251 extra spaces added after ( and / (thanks to Andy Spiegl).
@@ -1298,7 +818,7 @@ Bugs
.taskrc file (thanks to Haitham Gad). .taskrc file (thanks to Haitham Gad).
- #1247 Tests now create a local dir, rather than use the insecure /tmp dir - #1247 Tests now create a local dir, rather than use the insecure /tmp dir
(thanks to Jakub Wilk). (thanks to Jakub Wilk).
- #1248 Merge tests no longer connect to taskwarrior.org (thank to Jakub Wilk). - #1248 Merge tests no longer connect to takwarrior.org (thank to Jakub Wilk).
- #1249 Build system now recognizes GNU/Hurd and GNU/kFreeBSD (thanks to Jakub - #1249 Build system now recognizes GNU/Hurd and GNU/kFreeBSD (thanks to Jakub
Wilk). Wilk).
- #1263 The 'waiting' report properly lists only pending tasks with a wait date - #1263 The 'waiting' report properly lists only pending tasks with a wait date
@@ -1364,7 +884,7 @@ Features
- Stop consider new tasks after quitting a bulk change. - Stop consider new tasks after quitting a bulk change.
- Removed deprecated 'fg:' and 'bg:' attributes. - Removed deprecated 'fg:' and 'bg:' attributes.
- The 'diagnostics' command now reports libuuid details. - The 'diagnostics' command now reports libuuid details.
- New characters for parsing and formatting dates ('n', 's' and 'v'). - New characters for parsing and formating dates ('n', 's' and 'v').
- Virtual tags (BLOCKED, UNBLOCKED, BLOCKING, DUE, DUETODAY, OVERDUE, TODAY, - Virtual tags (BLOCKED, UNBLOCKED, BLOCKING, DUE, DUETODAY, OVERDUE, TODAY,
ACTIVE, SCHEDULED, CHILD, UNTIL, WAITING and ANNOTATED). ACTIVE, SCHEDULED, CHILD, UNTIL, WAITING and ANNOTATED).
- New 'modified' attribute, which contains the most recent modification date, - New 'modified' attribute, which contains the most recent modification date,
@@ -1626,7 +1146,7 @@ Bugs
- All holiday files have been renamed to include a locale, rather than just a - All holiday files have been renamed to include a locale, rather than just a
country code. For example: holidays.en-US.rc. country code. For example: holidays.en-US.rc.
- Now ships with an add-on script, update-holidays.pl, which contacts - Now ships with an add-on script, update-holidays.pl, which contacts
https://holidata.net, and brings the installed holiday files up to date. http://holidata.net, and brings the installed holiday files up to date.
- Extension system now controlled by the 'extensions' configuration variable. - Extension system now controlled by the 'extensions' configuration variable.
- HTML export in the form of an external scripts export-html.pl. - HTML export in the form of an external scripts export-html.pl.
- Two additional solarized theme files, solarized-dark-256.theme and - Two additional solarized theme files, solarized-dark-256.theme and
@@ -1830,7 +1350,7 @@ Bugs
Michelle Crane). Michelle Crane).
- Fixed bug #823, so that recurring task change propagations are now always - Fixed bug #823, so that recurring task change propagations are now always
confirmed (thanks to Miguel de Val Borro). confirmed (thanks to Miguel de Val Borro).
- Fixed bug #824, which caused problems when completing recurring tasks (thanks - Fixed bug #824, which caused probles when completing recurring tasks (thanks
to Matt Kraai). to Matt Kraai).
- Fixed bug #831, which prevented some date fields from being properly parsed. - Fixed bug #831, which prevented some date fields from being properly parsed.
- Fixed bug #835, which prevented hierarchical projects from being recognized. - Fixed bug #835, which prevented hierarchical projects from being recognized.
@@ -1909,7 +1429,7 @@ Bugs
(thanks to Michal Vyskocil). (thanks to Michal Vyskocil).
- Fixed problem where update-holidays.pl did not properly handle UTF8 JSON - Fixed problem where update-holidays.pl did not properly handle UTF8 JSON
data. data.
- Fixed problem where update-holidays.pl did not use the YYYYMMDD date format. - Fixed problem where update-holidays.pl did not use the YYYYMMDD date foramt.
- Fixed problem where urgency was not properly calculated for waiting tasks. - Fixed problem where urgency was not properly calculated for waiting tasks.
- Fixed problem where 'project' was not supported as a verbosity token (thanks - Fixed problem where 'project' was not supported as a verbosity token (thanks
to Adam Gibbins). to Adam Gibbins).
@@ -2423,7 +1943,7 @@ Bugs
- Supports 'rc.name:value' for a command line override to .taskrc data - Supports 'rc.name:value' for a command line override to .taskrc data
(thanks to Federico Hernandez). (thanks to Federico Hernandez).
- Removed obsolete DEVELOPERS file. The online support forums at - Removed obsolete DEVELOPERS file. The online support forums at
https://taskwarrior.org will provide better information. http://taskwarrior.org will provide better information.
- Fixed bug that kept some deleted tasks showing up on the calendar report - Fixed bug that kept some deleted tasks showing up on the calendar report
(thanks to Federico Hernandez). (thanks to Federico Hernandez).
- Now asks the user to confirm large changes if configuration variable - Now asks the user to confirm large changes if configuration variable
@@ -2860,3 +2380,4 @@ regular usage to determine which features were needed or unnecessary.]
- Usage. - Usage.
------ start ----------------------------------- ------ start -----------------------------------

168
DEVELOPER Normal file
View File

@@ -0,0 +1,168 @@
How to Build Taskwarrior
Satisfy the Requirements:
- gcc 4.7 or later, clang 3.3 or later or equivalent. This is because C++11
is now used.
- libuuid
- gnutls (optional)
- python 2.7 or 3 (optional, for running the test suite)
Obtain and build code:
$ git clone https://git.tasktools.org/scm/tm/task.git task.git
$ cd task.git
$ git checkout 2.5.0 # Latest dev branch
$ cmake -DCMAKE_BUILD_TYPE=debug . # debug or release. Default: neither.
$ make VERBOSE=1 # Shows details
Running Test Suite:
$ cd tests
$ 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@taskwarrior.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 codebase. It is for anyone looking for a way to start contributing.
While this is biased towards developers, anyone can contribute, and everyone
is encouraged to do so. Here are many ways to contribute that may not be
immediately obvious to you:
- 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. Many great ideas,
suggestions, testing and discussions have taken place there. It is also
the quickest way to get help, or confirm a bug.
- Join https://answers.tasktools.org and help us by asking, answering and
voting on questions and answers, directly helping those who ask, and
helping future users who search for existing answers.
- 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 codebase, and includes all web sites, and all
are available using git.
- 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, but this is one of
the largest ways you can contribute. 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.
- Donate some server time to the testing effort, by participating in the
continuous integration of all changes, with our Flod software. See this
page for an example: http://central.tasktools.org. Ask us about running a
Flod satellite, we're always looking for exotic platforms to test on.
- 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.
Next are some specific areas that need attention.
New Code Needs
This is code that needs to be written.
- Need an external script that can locate and correct duplicate UUIDs in the
data file, as found by 'task diag'. This should check to see if there is
a suitable UUID generator installed. This should also be careful to
properly handle recurring tasks.
- Take a look at:
https://bug.tasktools.org/browse/EX
This 'extension' release is a collection of all the requested features that
lie outside of the core product, and will be implemented as external scripts
by anyone who wishes to participate.
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'.
2. Regression tests that ensure certain bugs are fixed and stay fixed. These
tests are named bug.NNN.t where NNN refers to the bug number. While it is
not worth creating tests for small fixes like typos, it is for changes to
the logic.
3. 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.
4. 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://bug.tasktools.org) 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.
- Test regex support.
- Need unit tests for each bug in the issue list that is marked with the
'needsTest' label.
Note that all new unit tests should follow the test/template.t standard.
Work in Progress
Things that are currently in flux, which is another way of saying leave it
alone while it is being worked on.
- All columns/Col*::validate methods.
- New columns/Col*::modify methods.
Current Codebase Condition
'master' branch:
- 2.4.4 Current release, locked.
'2.5.0' branch:
- Current development branch no plans yet.
---
2015-09-07 Updated for 2.5.0

View File

@@ -1 +0,0 @@
See [Developing Taskwarrior](./doc/devel/contrib/README.md).

210
EXPOSITION Normal file
View File

@@ -0,0 +1,210 @@
Startup
On startup, main creates a global Context object, then calls the
Context::initialize and Context::run methods.
Context is a large object that holds all task information, both in terms of
the task data, and intermediate run-time data. Having one global Context
object means we don't have 50 global variables. Context is therefore just a
big global bucket of data.
Context::initialize sets up all the data and processes the command line. The
initialization process is a big chicken-and-egg problem, because the command
line depends on configuration (aliases) and the command line can force a
reload of configuration (rc:foo). This is solved by look-ahead: the command
line is scanned for 'rc:xxx' and 'rc.data.location:xxx' arguments, then later
for overrides.
The Context::run method handles all the debug output and exceptions. Its
main purpose is to set up exception handling and call Context::dispatch.
Command Line Parsing
Command line parsing is difficult because of all the ambiguity. The solution
is to make multiple passes over the command line. For example, the command
determines whether subsequent arguments are interpreted as part of a filter or
set of modifications.
The CLI2 object is fed command line arguments, then through a succession of
calls builds and annotates a parse tree. To help with this, the Lexer is
used to break up strings into tokens.
Dispatch
Dispatch is simple: once the command line is parsed, the command is used to
look up a command object, then a call is made to the Command::execute method.
Context stores an associative map of command object pointers indexed by a
string. This means the 'done' string is an index to the CmdDone object that
implements the functionality.
Command Objects
Every task command is implemented by a command object. The command object
provides metadata, usage and one-line help in addition to the ::execute method
that implements the command. The Command base class implements common
functionality.
Column Objects
There is a 1:1 correspondence between attributes stored in the data files and
the columns that may be reported. These are represented by column objects,
which are responsible for validating input, measuring space needed according
to various formats, and for rendering data for reports. There is a
ColDescription object that inherits from a Column base class.
TDB2
The TDB2 object is a layered, transactioned I/O manager. Its purpose is to
isolate code from file I/O, locking and parsing details. It is also
responsible for minimizing reads, writes and parsing of data files.
All input is assumed to be UTF8. All stored data is UTF8.
GC
Garbage Collection is the process that moves tasks between the pending.data
and completed.data files. It is also responsible for waking tasks out of the
wait state.
Every command that displays task IDs will cause a GC to be run first, which
minimizes the number of changes necessary to the task IDs. This means that
when a report shows task IDs, those IDs will remain valid while subsequent
write commands are issued. The next report run may show different IDs.
Minimizing the size of pending.data is important for performance, because it
is the file that is accessed most.
Files
The data files used are all kept in the rc.data.location directory, which
defaults to ~/.task. The files are:
pending.data
completed.data
undo.data
backlog.data
The pending.data file aspires to contain only pending, waiting and recurring
tasks, but this is only correct after a GC, and before any tasks are modified.
This file tends to be relatively stable in size, reflecting the length of the
task list.
The completed.data file accumulates data over time, and grows unbounded.
The undo.data file accumulates changes over time, and grows unbounded. It
provides all the necessary metadata to support the 'undo' command.
The backlog.data file contains an accumulated set of changes that have not
been transmitted to Taskserver. It grows unbounded between 'sync' commands.
Filter
A filter is simply a set of command line arguments, but is only a subset of
the complete command line. These arguments are extracted from the parse tree
according to whether the command found is a read or write command.
There is a Filter::subset method for applying a filter to a set of tasks,
yielding a result set. It does this by creating an expression from the
parse tree using the Eval object, then evaluating the expression for each task,
such that the result set contains only tasks for which the expression evaluates
to Boolean true.
Eval & Variant
The Eval class evaluates expressions, provided in string form, using the
Variant class to represent data elements. Variant implements all operators
for all Variant types.
Sorting
Sorting is performed on a set of tasks. More specifically, the list that is
sorted is a set of numeric indexes to tasks that are stored in a separate
list. This minimizes the amount of data copying involved to just integers
rather than Task objects, but at the expense of one level of indirection.
Memory fragmentation is a bigger problem than the performance of vector
indexing.
The actual sorting is performed by std::stable_sort, but the compare function
is custom.
Render
There are two rendering objects, ViewTask and ViewText. These both have the
same tabular grid rendering capabilities. ViewText maintains a 2D vector of
strings to contain the data to be rendered, so it is used for things like the
help command output. ViewTask does not copy data, but assumes all data is
stored externally in a vector of Tasks, which minimizes data copying.
ViewTask contains projection data in the form of a set of Column objects that
represent the X axis. The Y axis is represented by a vector of tasks.
The rendering process is complex. It involves dynamically setting column
widths based on (1) available terminal width, (2) the columns to be included
in the output, (3) ability to wrap text for certain columns and (4) the size
of the data to be rendered, which involves added complexity when UTF8 is used.
The Column objects determine minimum width for a column and the maximum width
which then allows ViewT* to make choices.
Test Suite
A strong and diverse test suite is critical to the successful release of any
software. With the complex command set and its myriad permutations, a test
suite is the only way to ensure quality levels, and guarantee that big changes
are robust.
It is intended that the test suite continues growing, mostly feature tests.
The test are mostly written in Python. Some tests are written in C++ and all
tests generate TAP output.
There are currently about 8,000 unit tests, that take only a few seconds to
run on a multi-core machine.
Taskwarrior uses flod software to automate continuous integration across many
platforms. Code changes are automatically detected, propagated, built and
tested on a variety of participating platforms. Grid testing results are here:
http://central.tasktools.org/
When making code changes, it is important that the test suite be run to verify
that functionality was not broken.
Debugging
The 'rc.debug=on' override provides the following additional information which
is useful during debugging:
- Timing of various components (used to generate the data for the charts at
http://tasktools.org/performance).
- Data load times.
- Terminal size, color capabilities.
- Command line parse tree.
- TDB2 layer and I/O information.
Additionally, there are other settings (see 'man taskrc' for full details) that
may also be helpful: 'rc.hooks=on|off', 'rc.debug.parser=0|1|2|3',
'rc.debug.hooks=0|1|2', 'rc.debug.tls=0|1|2|3...'.
Patches
Patches are encouraged and welcomed. Either attach them to the appropriate
Jira issue, or send them 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.
- Doesn't introduce dependencies.
- Is accompanied by unit tests, where appropriate, written in Python.
- Is accompanied by documentation changes, where appropriate.
- Conforms to the prevailing coding standards - in other words, it should
fit right 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.
---

118
INSTALL
View File

@@ -8,33 +8,32 @@ source.
Dependencies Dependencies
------------ ------------
You will need the CMake 3.0+ build system installed in order to build Taskwarrior You will need the CMake build system installed in order to build Taskwarrior
from source. More information on CMake can be obtained at https://cmake.org from source. More information on cmake can be obtained at http://cmake.org
You will also need: You will also need:
- make - make
You will need a C++ compiler that supports full C++17, which includes: You will need a C++ compiler that supports full C++11, which includes:
- gcc 7.1 (released 2017-05-02) - gcc 4.7 (released 2012-03-23)
- clang 5.0 (released 2017-09-07) - clang 3.3 (released 2013-01-07)
You will need the following libraries: You will need the following libraries:
- libuuid (not needed for OSX) - 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.81.0
Basic Installation Basic Installation
------------------ ------------------
Briefly, these shell commands will unpack, build and install Taskwarrior: Briefly, these shell commands will unpack, build and install Taskwarrior:
$ tar xzf task-X.Y.Z.tar.gz [1] $ tar xzf task-X.Y.Z.tar.gz [1]
$ cd task-X.Y.Z [2] $ cd task-X.Y.Z [2]
$ cmake -S . -B build -DCMAKE_BUILD_TYPE=Release . [3] $ cmake -DCMAKE_BUILD_TYPE=release . [3]
$ cmake --build build [4] $ make [4]
$ sudo cmake --install build [5] $ sudo make install [5]
$ cd .. ; rm -r task-X.Y.Z [6] $ cd .. ; rm -r task-X.Y.Z [6]
These commands are explained below: These commands are explained below:
@@ -89,10 +88,39 @@ get absolute installation directories:
CMAKE_INSTALL_PREFIX/TASK_MAN1DIR /usr/local/share/man/man1 CMAKE_INSTALL_PREFIX/TASK_MAN1DIR /usr/local/share/man/man1
CMAKE_INSTALL_PREFIX/TASK_MAN5DIR /usr/local/share/man/man5 CMAKE_INSTALL_PREFIX/TASK_MAN5DIR /usr/local/share/man/man5
The following variables control aspects of the build process:
SYSTEM_CORROSION - Use system provided corrosion instead of vendored version "sync" command
ENABLE_TLS_NATIVE_ROOTS - Use the system's TLS root certificates --------------
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".
Localizations
-------------
To make use of a translation, specify a language number, as found in cmake.h:
$ cmake -DLANGUAGE=2 .
Currently the defined languages are:
eng_USA 1
esp_ESP 2
deu_DEU 3
fra_FRA 4
ita_ITA 5
por_PRT 6
epo_RUS 7
pol_POL 8
jpn-JPN 9
Uninstallation Uninstallation
@@ -115,43 +143,6 @@ If Taskwarrior will not build on your system, first take a look at the Operating
System notes below. If this doesn't help, then go to the Troubleshooting System notes below. If this doesn't help, then go to the Troubleshooting
section, which includes instructions on how to contact us for help. section, which includes instructions on how to contact us for help.
Offline Build Notes
-------------------
It is common for packaging systems (e.g. NixOS, FreeBSD Ports Collection, pkgsrc, etc)
to disable networking during builds. This restriction requires all distribution files
to be prepositioned after checksum verification as a prerequisite for the build. The
following steps have been successful in allowing Taskwarrior to be built in this
environment:
1. Extract all crates in a known location, e.g. ${WRKDIR}/cargo-crates
This includes crates needed for corrosion (search for Cargo.lock files)
2. Create .cargo-checksum.json for each crate
For example:
printf '{"package":"%s","files":{}}' $(sha256 -q ${DISTDIR}/rayon-core-1.12.1.tar.gz) \
> ${WRKDIR}/cargo-crates/rayon-core-1.12.1/.cargo-checksum.json
3. Create a custom config.toml file
For example, ${WRKDIR}/.cargo/config.toml
[source.cargo]
directory = '${WRKDIR}/cargo-crates'
[source.crates-io]
replace-with = 'cargo'
4. After running cmake, configure cargo
For example:
cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} ${CARGO_ENV} \
/usr/local/bin/cargo update \
--manifest-path ${WRKDIR}/.cargo/config.toml \
--verbose
5. Set CARGO_HOME in environment
For example
CARGO_HOME=${WRKDIR}/.cargo
The build and installation steps should be the same as a standard build
at this point.
Operating System Notes Operating System Notes
---------------------- ----------------------
@@ -170,10 +161,10 @@ Darwin, 32bit
cmake -DCMAKE_C_FLAGS=-m32 -DCMAKE_CXX_FLAGS=-m32 -DCMAKE_EXE_LINKER_FLAGS=-m32 . cmake -DCMAKE_C_FLAGS=-m32 -DCMAKE_CXX_FLAGS=-m32 -DCMAKE_EXE_LINKER_FLAGS=-m32 .
See: See:
https://taskwarrior.org/issues/817 http://taskwarrior.org/issues/817
https://stackoverflow.com/questions/3261909/build-32bit-on-64-bit-linux-using-a-configure-script http://stackoverflow.com/questions/3261909/build-32bit-on-64-bit-linux-using-a-configure-script
https://stackoverflow.com/questions/2617508/cmake-gcc-cuda-and-m32-wtf http://stackoverflow.com/questions/2617508/cmake-gcc-cuda-and-m32-wtf
https://stackoverflow.com/questions/6077414/cmake-how-to-set-the-ldflags-in-cmakelists-txt http://stackoverflow.com/questions/6077414/cmake-how-to-set-the-ldflags-in-cmakelists-txt
OpenBSD OpenBSD
@@ -185,16 +176,8 @@ OpenBSD
and build normally. and build normally.
See: https://github.com/GothenburgBitFactory/taskwarrior/issues/1605 See: https://bug.tasktools.org/browse/TW-1579
WASM
Using the Emscripten compiler, you can achieve it like this:
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"
This will produce an optimized WASM with a main() that is callable multiple times.
Troubleshooting Troubleshooting
--------------- ---------------
@@ -209,7 +192,8 @@ CMake with no reported problems, and the build will fail later. This is
almost always because CMake is mistaken about some assumption. almost always because CMake is mistaken about some assumption.
If a build does not succeed, please send the contents of the 'CMakeCache.txt' If a build does not succeed, please send the contents of the 'CMakeCache.txt'
and 'CMakeFiles/CMakeOutput.log' files to support@gothenburgbitfactory.org. and 'CMakeFiles/CMakeOutput.log' files to support@taskwarrior.org, or post a
message in the support forums at taskwarrior.org along with the information.
If CMake runs but Taskwarrior does not build, please send the contents of the If CMake runs but Taskwarrior does not build, please send the contents of the
above files as well as a transcript from the build, which is not written to a above files as well as a transcript from the build, which is not written to a

View File

@@ -1,8 +1,6 @@
The MIT License Taskwarrior - a command line task list manager.
https://www.opensource.org/licenses/mit-license.php Copyright 2006 - 2016, Paul Beckingham, Federico Hernandez.
Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
Permission is hereby granted, free of charge, to any person obtaining a copy Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal of this software and associated documentation files (the "Software"), to deal
@@ -21,3 +19,5 @@ 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, 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 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE. SOFTWARE.
http://www.opensource.org/licenses/mit-license.php

61
NEWS Normal file
View File

@@ -0,0 +1,61 @@
New Features in Taskwarrior 2.5.1
- As a bug-fix, code cleanup and performance release, new features are
limited to only small tweaks.
- The 'help' command now takes a 'usage' argument, which displays only the
command usage.
New Commands in Taskwarrior 2.5.1
- None.
New Configuration Options in Taskwarrior 2.5.1
- New 'relative' column format for 'date' type columns does what 'remaining'
and 'countdown' do, but in one format.
Newly Deprecated Features in Taskwarrior 2.5.1
-
Removed Features in 2.5.1
- There is no longer a 16-color default configuration for some platforms,
making all platforms 256-color.
- The configuration setting 'burndown.bias' is no longer used.
- The algorithm used to estimate completion on the 'burndown' reports has
been replaced by something less icky. Estimates are now based on the net
completion rate after the peak number of pending tasks.
- The unused 'dom' and 'shell.prompt' configuration settings were removed.
Known Issues
- https://bug.tasktools.org/
Taskwarrior has been built and tested on the following configurations:
* OS X
* Fedora
* Ubuntu
* Debian
* Arch
* FreeBSD
* Cygwin
---
While Taskwarrior has undergone testing, bugs are sure to remain. If you
encounter a bug, please enter a new issue at:
https://bug.tasktools.org
Or you can also report the issue in the forums at:
https://answers.tasktools.org
Or just send a message to:
support@taskwarrior.org
Thank you.

View File

@@ -1,80 +1,47 @@
<div align="center"> # Disclaimer during ongoing development
<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) We want to discourage you from using the development version of Taskwarrior.
[![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/)
[![Gurubase](https://img.shields.io/badge/Gurubase-Ask%20Taskwarrior%20Guru-006BFF)](https://gurubase.io/g/taskwarrior)
</br>
</div>
## Taskwarrior The development branch is a work in progress and may not pass all quality tests,
![OS-X downloads](https://img.shields.io/homebrew/installs/dy/task?label=OS-X%20downloads) therefore it may harm your data. We do not guarantee proper or even adequate
![Github downloads](https://img.shields.io/github/downloads/GothenburgBitFactory/taskwarrior/total?label=Github%20downloads) functionality, performance or timely fixes.
![Linux downloads](https://img.shields.io/badge/Linux%20downloads-unknown-gray)
Taskwarrior is a command line task list management utility with a [multitude of We welcome bug reports from beta- and release-level software, but generally not
features](https://taskwarrior.org/docs/), developed as a portable open source project development versions. If you are undaunted by this, please:
with an active and quite vast [ecosystem of tools, hooks and
extensions](https://taskwarrior.org/tools/).
## Install - Make proper backups.
[![Arch](https://img.shields.io/archlinux/v/extra/x86_64/task)](https://archlinux.org/packages/extra/x86_64/task/) - Expect broken and missing functionality.
[![Debian](https://img.shields.io/debian/v/task/testing)](https://packages.debian.org/search?keywords=task&searchon=names&suite=all&section=all) - Be aware that using the development branch involves risks.
[![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)
[![Ubuntu](https://img.shields.io/ubuntu/v/task)](https://packages.ubuntu.com/search?keywords=task&searchon=names&suite=hirsute&section=all)
Taskwarrior is packaged on a wide range of [Linux/Unix systems, Mac OS and ---
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](doc/devel/contrib). Thank you for taking a look at Taskwarrior!
## Documentation Taskwarrior is a GTD, todo list, task management, command line utility with a
multitude of features. It is a portable, well supported and very active Open
Source project. Taskwarrior has binary distributions, online documentation,
demonstration movies, and you'll find all the details at:
The [online documentation](https://taskwarrior.org/docs), downloads, news and http://taskwarrior.org
more are available on our website, [taskwarrior.org](https://taskwarrior.org).
## Community At the site you'll find online documentation, downloads, news and more.
[![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. 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.
Best place to ask questions is our [discussions forum on For support options, take a look at:
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. http://taskwarrior.org/support
See [Contributing to Taskwarrior](doc/devel/contrib) for more details.
## Contributing Please send your code patches to:
[![Contributors](https://img.shields.io/github/contributors/GothenburgBitFactory/taskwarrior)](https://github.com/GothenburgBitFactory/taskwarrior/graphs/contributors)
[![Milestone progress](https://img.shields.io/github/milestones/progress/GothenburgBitFactory/taskwarrior/26?label=current%20milestone%20issues)](https://github.com/GothenburgBitFactory/taskwarrior/milestone/26)
[![Good first issus](https://img.shields.io/github/issues/GothenburgBitFactory/taskwarrior/good%20first%20issue)](https://github.com/GothenburgBitFactory/taskwarrior/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22)
Your contributions are especially welcome. support@taskwarrior.org
Whether it comes in the form of code patches, ideas, discussion, bug reports, encouragement or criticism, your input is needed.
See further development documentation in [`doc/devel`](./doc/devel).
## Sponsoring Consider joining bug.tasktools.org, answers.tasktools.org and participating in
[![GitHub Sponsors](https://img.shields.io/github/sponsors/GothenburgBitFactory?color=green)](https://github.com/sponsors/GothenburgBitFactory/) the future of Taskwarrior.
Taskwarrior is a result of work of mostly small group of volunteers, and has been in development since 2006. ---
If you are a happy Taskwarrior user, please consider [sponsoring us through Taskwarrior is released under the MIT license. For details check the LICENSE
Github Sponsors](https://github.com/sponsors/GothenburgBitFactory/). file.
Every sponsorship matters, as it directly increases the number of hours core
developers can contribute to the project and makes the project more sustainable.
## License
Taskwarrior is released under the MIT license.
For details check the [LICENSE](LICENSE) file.

View File

@@ -1,13 +0,0 @@
# Security
To report a vulnerability, please contact Dustin via signal, [`djmitche.78`](https://signal.me/#eu/2T98jpkMAzvFL2wg3OkZnNrfhk1DFfu6eqkMEPqcAuCsLZPVk39A67rp4khmrMNF).
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

@@ -17,6 +17,18 @@
/* Installation details */ /* Installation details */
#define TASK_RCDIR "${CMAKE_INSTALL_PREFIX}/${TASK_RCDIR}" #define TASK_RCDIR "${CMAKE_INSTALL_PREFIX}/${TASK_RCDIR}"
/* Localization */
#define PACKAGE_LANGUAGE ${PACKAGE_LANGUAGE}
#define LANGUAGE_ENG_USA ${LANGUAGE_ENG_USA}
#define LANGUAGE_ESP_ESP ${LANGUAGE_ESP_ESP}
#define LANGUAGE_FRA_FRA ${LANGUAGE_FRA_FRA}
#define LANGUAGE_DEU_DEU ${LANGUAGE_DEU_DEU}
#define LANGUAGE_ITA_ITA ${LANGUAGE_ITA_ITA}
#define LANGUAGE_POR_PRT ${LANGUAGE_POR_PRT}
#define LANGUAGE_EPO_RUS ${LANGUAGE_EPO_RUS}
#define LANGUAGE_POL_POL ${LANGUAGE_POL_POL}
#define LANGUAGE_JPN_JPN ${LANGUAGE_JPN_JPN}
/* git information */ /* git information */
#cmakedefine HAVE_COMMIT #cmakedefine HAVE_COMMIT
@@ -31,13 +43,15 @@
#cmakedefine FREEBSD #cmakedefine FREEBSD
#cmakedefine OPENBSD #cmakedefine OPENBSD
#cmakedefine NETBSD #cmakedefine NETBSD
#cmakedefine DRAGONFLY
#cmakedefine HAIKU #cmakedefine HAIKU
#cmakedefine SOLARIS #cmakedefine SOLARIS
#cmakedefine KFREEBSD #cmakedefine KFREEBSD
#cmakedefine GNUHURD #cmakedefine GNUHURD
#cmakedefine UNKNOWN #cmakedefine UNKNOWN
/* Found the GnuTLS library */
#cmakedefine HAVE_LIBGNUTLS
/* Found tm_gmtoff */ /* Found tm_gmtoff */
#cmakedefine HAVE_TM_GMTOFF #cmakedefine HAVE_TM_GMTOFF
@@ -58,3 +72,4 @@
/* Undefine this to eliminate the execute command */ /* Undefine this to eliminate the execute command */
#define HAVE_EXECUTE 1 #define HAVE_EXECUTE 1

View File

@@ -1,42 +0,0 @@
message ("-- Configuring C++17")
message ("-- System: ${CMAKE_SYSTEM_NAME}")
include (CheckCXXCompilerFlag)
CHECK_CXX_COMPILER_FLAG("-std=c++17" _HAS_CXX17)
if (_HAS_CXX17)
set (CMAKE_CXX_STANDARD 17)
set (CMAKE_CXX_EXTENSIONS OFF)
else (_HAS_CXX17)
message (FATAL_ERROR "C++17 support missing. Try upgrading your C++ compiler. If you have a good reason for using an outdated compiler, please let us know at support@gothenburgbitfactory.org.")
endif (_HAS_CXX17)
if (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
set (LINUX true)
elseif (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
set (DARWIN true)
set (_CXX14_FLAGS "${_CXX14_FLAGS} -stdlib=libc++")
elseif (${CMAKE_SYSTEM_NAME} MATCHES "kFreeBSD")
set (KFREEBSD true)
elseif (${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD")
set (FREEBSD true)
elseif (${CMAKE_SYSTEM_NAME} MATCHES "OpenBSD")
set (OPENBSD true)
elseif (${CMAKE_SYSTEM_NAME} MATCHES "NetBSD")
set (NETBSD true)
elseif (${CMAKE_SYSTEM_NAME} MATCHES "DragonFly")
set (DRAGONFLY true)
elseif (${CMAKE_SYSTEM_NAME} MATCHES "SunOS")
set (SOLARIS true)
elseif (${CMAKE_SYSTEM_NAME} STREQUAL "GNU")
set (GNUHURD true)
elseif (${CMAKE_SYSTEM_NAME} STREQUAL "CYGWIN")
set (CYGWIN true)
set (CMAKE_CXX_EXTENSIONS ON)
else (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
set (UNKNOWN true)
endif (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
set (CMAKE_CXX_FLAGS "${_CXX14_FLAGS} ${CMAKE_CXX_FLAGS}")
set (CMAKE_CXX_FLAGS "-Wall -Wextra -Wsign-compare -Wreturn-type ${CMAKE_CXX_FLAGS}")

View File

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

View File

@@ -1,9 +0,0 @@
# 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.

View File

@@ -1,16 +0,0 @@
# 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

@@ -1,8 +0,0 @@
# 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

@@ -1,13 +0,0 @@
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

@@ -1,19 +0,0 @@
# 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

@@ -1,106 +0,0 @@
# 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.
## Using a Custom Version of TaskChampion
To build against a different version of Taskchampion, modify the requirement in `src/taskchampion-cpp/Cargo.toml`.
To build from a local checkout, replace the version with a [path dependency](https://doc.rust-lang.org/cargo/reference/specifying-dependencies.html#specifying-path-dependencies), giving the path to the directory containing TaskChampion's `Cargo.toml`:
```toml
taskchampion = { path = "path/to/taskchampion" }
```

View File

@@ -1,68 +0,0 @@
# 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

@@ -1,26 +0,0 @@
# 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

@@ -1,18 +0,0 @@
# 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.

View File

@@ -1,18 +0,0 @@
# 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)

View File

@@ -1,154 +0,0 @@
---
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'.

View File

@@ -1,392 +0,0 @@
---
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

View File

@@ -1,249 +0,0 @@
---
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).

View File

@@ -1,436 +0,0 @@
---
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>

View File

@@ -1,171 +0,0 @@
---
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

@@ -1,195 +0,0 @@
---
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)

View File

@@ -1,198 +0,0 @@
---
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.

View File

@@ -1,240 +0,0 @@
---
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

View File

@@ -1,242 +0,0 @@
---
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

View File

@@ -1,468 +0,0 @@
---
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

@@ -1,29 +0,0 @@
---
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`.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

4
doc/man/.gitignore vendored Normal file
View File

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

View File

@@ -3,23 +3,46 @@
.SH NAME .SH NAME
task-color \- A color tutorial for the Taskwarrior command line todo manager. task-color \- A color tutorial for the Taskwarrior command line todo manager.
.SH SETUP
The first thing you need is a terminal program that supports color. All
terminal programs support color, but only a few support lots of colors. First
tell your terminal program to use color by specifying the TERM environment
variable like this:
TERM=xterm-color
In this example, xterm-color is used - a common value, and one that doesn't
require that you use xterm. This works for most setups. This setting belongs
in your shell profile (~/.bash_profile, ~/.bashrc, ~/.cshrc etc, depending on
which shell you use). If this is a new setting, you will need to either run
that profile script, or close and reopen the terminal window (which does the
same thing).
Now tell Taskwarrior that you want to use color. This is the default for
Taskwarrior, so the following step may be unnecessary.
$ task config color on
This command will make sure there is an entry in your ~/.taskrc file that looks
like:
color=on
Now Taskwarrior is ready.
.SH AUTOMATIC MONOCHROME .SH AUTOMATIC MONOCHROME
It should be mentioned that Taskwarrior is aware of whether its output is going 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 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: a terminal, color is desirable, but consider the following command:
.nf
$ task list > file.txt $ task list > file.txt
.fi
Do we really want all those color control codes in the file? Taskwarrior 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 assumes that you do not, and temporarily sets color to 'off' while generating
the output. This explains the output from the following command: the output. This explains the output from the following command:
.nf
$ task show | grep '^color ' $ task show | grep '^color '
color off color off
.fi
it always returns 'off', no matter what the setting, because the output is being it always returns 'off', no matter what the setting, because the output is being
sent to a pipe. sent to a pipe.
@@ -27,26 +50,20 @@ sent to a pipe.
If you wanted those color codes, you can override this behavior by setting the If you wanted those color codes, you can override this behavior by setting the
_forcecolor variable to on, like this: _forcecolor variable to on, like this:
.nf
$ task config _forcecolor on $ task config _forcecolor on
$ task config | grep '^color ' $ task config | grep '^color '
color on color on
.fi
or by temporarily overriding it like this: or by temporarily overriding it like this:
.nf
$ task rc._forcecolor=on config | grep '^color ' $ task rc._forcecolor=on config | grep '^color '
color on color on
.fi
.SH AVAILABLE COLORS .SH AVAILABLE COLORS
Taskwarrior has a 'color' command that will show all the colors it is capable of Taskwarrior has a 'color' command that will show all the colors it is capable of
displaying. Try this: displaying. Try this:
.nf
$ task color $ task color
.fi
The output cannot be replicated here in a man page, but you should see a set of 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 color samples. How many you see depends on your terminal program's ability to
@@ -58,9 +75,7 @@ You should at least see the Basic colors and Effects - if you do, then you have
.SH 16-COLOR SUPPORT .SH 16-COLOR SUPPORT
The basic color support is provided through named colors: The basic color support is provided through named colors:
.nf
black, red, blue, green, magenta, cyan, yellow, white black, red, blue, green, magenta, cyan, yellow, white
.fi
Foreground color (for text) is simply specified as one of the above colors, or 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. not specified at all to use the default terminal text color.
@@ -68,49 +83,37 @@ 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 Background color is specified by using the word 'on', and one of the above
colors. Some examples: colors. Some examples:
.nf
green # green text, default background color green # green text, default background color
green on yellow # green text, yellow background green on yellow # green text, yellow background
on yellow # default text color, yellow background on yellow # default text color, yellow background
.fi
These colors can be modified further, by making the foreground bold, or by These colors can be modified further, by making the foreground bold, or by
making the background bright. Some examples: making the background bright. Some examples:
.nf
bold green bold green
bold white on bright red bold white on bright red
on bright cyan on bright cyan
.fi
The order of the words is not important, so the following are equivalent: The order of the words is not important, so the following are equivalent:
.nf
bold green bold green
green bold green bold
.fi
But the 'on' is important - colors before the 'on' are foreground, and colors But the 'on' is important - colors before the 'on' are foreground, and colors
after 'on' are background. after 'on' are background.
There is an additional 'underline' attribute that may be used: There is an additional 'underline' attribute that may be used:
.nf
underline bold red on black underline bold red on black
.fi
And an 'inverse' attribute: And an 'inverse' attribute:
.nf
inverse red inverse red
.fi
Taskwarrior has a command that helps you visualize these color combinations. Taskwarrior has a command that helps you visualize these color combinations.
Try this: Try this:
.nf
$ task color underline bold red on black $ task color underline bold red on black
.fi
You can use this command to see how the various color combinations work. You 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 will also see some sample colors displayed, like the ones above, in addition to
@@ -127,13 +130,11 @@ 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, colors can be referenced in different ways. First there is by color ordinal,
which is like this: which is like this:
.nf
color0 color0
color1 color1
color2 color2
... ...
color255 color255
.fi
This gives you access to all 256 colors, but doesn't help you much. This range 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 is a combination of 8 basic colors (color0 - color7), then 8 brighter variations
@@ -145,43 +146,31 @@ 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 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: component color. For example, a bright red is specified as:
.nf
rgb500 rgb500
.fi
And a darker red would be: And a darker red would be:
.nf
rgb300 rgb300
.fi
Note that the three digits represent the three component values, so in this 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 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: with no green and no blue yields red. Similarly, blue and green are:
.nf
rgb005 rgb005
rgb050 rgb050
.fi
Another example - bright yellow - is a mix of bright red and bright green, but Another example - bright yellow - is a mix of bright red and bright green, but
no blue component, so bright yellow is addressed as: no blue component, so bright yellow is addressed as:
.nf
rgb550 rgb550
.fi
A soft pink would be addressed as: A soft pink would be addressed as:
.nf
rgb515 rgb515
.fi
See if you agree, by running: See if you agree, by running:
.nf
$ task color black on rgb515 $ task color black on rgb515
.fi
You may notice that the large color block is represented as 6 squares. All 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 colors in the first square have a red value of 0. All colors in the 6th square
@@ -201,9 +190,7 @@ will be disappointed, perhaps even appalled.
There is some limited color mapping - for example, if you were to specify this There is some limited color mapping - for example, if you were to specify this
combination: combination:
.nf
red on gray3 red on gray3
.fi
you are mixing a 16-color and 256-color specification. Taskwarrior will map red 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. to color1, and proceed. Note that red and color1 are not quite the same tone.
@@ -215,9 +202,7 @@ colors, but there is still underline available.
Taskwarrior will show examples of all defined colors used in your .taskrc, or Taskwarrior will show examples of all defined colors used in your .taskrc, or
theme, if you run this command: theme, if you run this command:
.nf
$ task color legend $ task color legend
.fi
This gives you an example of each of the colors, so you can see the effect, 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. without necessarily creating a set of tasks that meet each of the rule criteria.
@@ -227,26 +212,20 @@ Taskwarrior supports colorization rules. These are configuration values that
specify a color, and the conditions under which that color is used. By example, specify a color, and the conditions under which that color is used. By example,
let us add a few tasks: let us add a few tasks:
.nf
$ task add project:Home priority:H pay the bills (1) $ task add project:Home priority:H pay the bills (1)
$ task add project:Home clean the rug (2) $ task add project:Home clean the rug (2)
$ task add project:Garden clean out the garage (3) $ 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 We can add a color rule that uses a blue background for all tasks in the Home
project: project:
.nf
$ task config color.project.Home 'on blue' $ task config color.project.Home 'on blue'
.fi
We use quotes around 'on blue' because there are two words, but they represent 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 one value in the .taskrc file. Now suppose we wish to use a bold yellow text
color for all cleaning work: color for all cleaning work:
.nf
$ task config color.keyword.clean 'bold yellow' $ task config color.keyword.clean 'bold yellow'
.fi
Now what happens to task 2, which belongs to project Home (blue background), and 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 is also a cleaning task (bold yellow foreground)? The colors are combined, and
@@ -267,18 +246,17 @@ color blending.
The precedence for the color rules is determined by the configuration The precedence for the color rules is determined by the configuration
variable 'rule.precedence.color', which by default contains: 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. 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 These are just the color rules with the 'color.' prefix removed. The
rule 'color.deleted' has the highest precedence, and 'color.uda.' the lowest. rule 'color.due.today' is the highest precedence, and 'color.deleted' is the lowest.
The keyword rule shown here as 'keyword.' corresponds to a wildcard pattern, The keyword rule shown here as 'keyword.' corresponds to a wildcard pattern,
meaning 'color.keyword.*', or in other words all the keyword rules. meaning 'color.keyword.*', or in other words all the keyword rules. Similarly
for the 'color.tag.*' and 'color.project.*' rules.
There is also 'color.project.none', 'color.tag.none' and There is also 'color.project.none', 'color.tag.none' and 'color.pri.none' to
\[aq]color.uda.priority.none' to specifically represent missing data. specifically represent missing data.
.SH THEMES .SH THEMES
Taskwarrior supports themes. What this really means is that with the ability to Taskwarrior supports themes. What this really means is that with the ability to
@@ -286,70 +264,83 @@ include other files into the .taskrc file, different sets of color rules can
be included. be included.
To get a good idea of what a color theme looks like, try adding this entry to To get a good idea of what a color theme looks like, try adding this entry to
your .taskrc file: your .taskrc file (note that your installation may use a slightly different path
from the example):
.nf .RS
include dark-256.theme include ${CMAKE_INSTALL_PREFIX}/${TASK_RCDIR}/dark-256.theme
.fi .RE
You can use any of the standard Taskwarrior themes: You can use any of the standard Taskwarrior themes:
.nf .RS
dark-16.theme dark-16.theme
dark-256.theme .br
dark-blue-256.theme dark-256.theme
dark-gray-256.theme .br
dark-green-256.theme dark-blue-256.theme
dark-red-256.theme .br
dark-violets-256.theme dark-gray-256.theme
dark-yellow-green.theme .br
light-16.theme dark-green-256.theme
light-256.theme .br
solarized-dark-256.theme dark-red-256.theme
solarized-light-256.theme .br
dark-default-16.theme dark-violets-256.theme
dark-gray-blue-256.theme .br
no-color.theme dark-yellow-green.theme
.fi .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
Bear in mind that if you are using a terminal with a dark background, you will Bear in mind that if you are using a terminal with a dark background, you will
see better results using a dark theme. see better results using a dark theme.
You can also see how the theme will color the various tasks with the command: You can also see how the theme will color the various tasks with the command:
.nf
$ task color legend $ task color legend
.fi
Better yet, create your own, and share it. We will gladly host the theme file Better yet, create your own, and share it. We will gladly host the theme file
on <https://taskwarrior.org>. on <http://taskwarrior.org>.
.SH "CREDITS & COPYRIGHTS" .SH "CREDITS & COPYRIGHTS"
Copyright (C) 2006 \- 2021 T. Babej, P. Beckingham, F. Hernandez. Copyright (C) 2006 \- 2016 P. Beckingham, F. Hernandez.
Taskwarrior is distributed under the MIT license. See Taskwarrior is distributed under the MIT license. See
https://www.opensource.org/licenses/mit-license.php for more information. http://www.opensource.org/licenses/mit-license.php for more information.
.SH SEE ALSO .SH SEE ALSO
.BR task(1), .BR task(1),
.BR taskrc(5), .BR taskrc(5),
.BR task-sync(5) .BR task-sync(5)
For more information regarding Taskwarrior, see the following: For more information regarding Taskwarrior, the following may be referenced:
.TP .TP
The official site at The official site at
<https://taskwarrior.org> <http://taskwarrior.org>
.TP .TP
The official code repository at The official code repository at
<https://github.com/GothenburgBitFactory/taskwarrior> <https://git.tasktools.org/scm/tm/task.git>
.TP .TP
You can contact the project by emailing You can contact the project by writing an email to
<support@GothenburgBitFactory.org> <support@taskwarrior.org>
.SH REPORTING BUGS .SH REPORTING BUGS
.TP .TP
Bugs in Taskwarrior may be reported to the issue-tracker at Bugs in Taskwarrior may be reported to the issue-tracker at
<https://github.com/GothenburgBitFactory/taskwarrior/issues> <http://taskwarrior.org>

View File

@@ -1,273 +1,51 @@
.TH task-sync 5 2016-02-24 "${PACKAGE_STRING}" "User Manuals" .TH task-sync 5 2016-02-24 "${PACKAGE_STRING}" "User Manuals"
.SH NAME .SH NAME
task-sync \- A discussion and tutorial for the various task-sync \- A discussion and tutorial for the various task(1) data
.BR task (1) synchronization capabilities.
data synchronization capabilities.
.SH INTRODUCTION .SH INTRODUCTION
Taskwarrior has several sync options, external and internal. If you wish to
sync your data, choose one method only; mixing methods is only going to lead to
problems. Each of the methods discussed have their own strengths.
Taskwarrior can synchronize your tasks to a server. This has a few benefits: .SH ALTERNATIVES
There are three alternatives for syncing data, which are:
1) Version control systems, such as git, hg, svn
.br .br
- Makes your tasks accessible from multiple systems, called "replicas". 2) File hosting systems, such as DropBox
.br .br
- Provides a backup of your tasks. 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 ...), and they 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:
.br .br
- Saves disk space. - Good data transport mechanisms
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 .br
- The server's URL (such as "https://tw.example.com/path") - Secure transport options
Weaknesses:
.br .br
- A client ID ("client_id") identifying your tasks - 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
Configure Taskwarrior with these details:
.nf .SH OPTION 2: FILE HOSTING SERVICES
$ task config sync.server.url <url> There are many file hosting services, such as DropBox, Amazon S3, Google Drive,
$ 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 Amazon Web Services
To synchronize your tasks to AWS, select a region near you and use the AWS
console to create a new S3 bucket. The default settings for the bucket are
adequate.
You will also need an AWS IAM user with the following policy, where BUCKETNAME
is the name of the bucket. The same user can be configured for multiple
Taskwarrior clients.
.nf
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "TaskChampion",
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:GetObject",
"s3:ListBucket",
"s3:DeleteObject"
],
"Resource": [
"arn:aws:s3:::BUCKETNAME",
"arn:aws:s3:::BUCKETNAME/*"
]
}
]
}
.fi
To create such a user, create a new policy in the IAM console, select the JSON
option in the policy editor, and paste the policy. Click "Next" and give the
policy a name such as "TaskwarriorSync". Next, create a new user, with a name
of your choosing, select "Attach Policies Directly", and then choose the
newly-created policy.
You will need access keys configured for the new user. Find the user in the
user list, open the "Security Credentials" tab, then click "Create access key"
and follow the steps.
At this point, you can choose how to provide those credentials to Taskwarrior.
The simplest is to include them in the Taskwarrior configuration:
.nf
$ task config sync.aws.region <region>
$ task config sync.aws.bucket <bucket-name>
$ task config sync.aws.access_key_id <access-key-id>
$ task config sync.aws.secret_access_key <secret-access-key>
.fi
Alternatively, you can set up an AWS CLI profile, using a profile name of your
choosing such as "taskwarrior-creds":
.nf
$ aws configure --profile taskwarrior-creds
.fi
Enter the access key ID and secret access key. The default region and format
are not important. Then configure Taskwarrior with:
.nf
$ task config sync.aws.region <region>
$ task config sync.aws.bucket <bucket-name>
$ task config sync.aws.profile taskwarrior-creds
.fi
To use AWS's default credential sources, such as environment variables, the
default profile, or an instance profile, set
.nf
$ task config sync.aws.region <region>
$ task config sync.aws.bucket <bucket-name>
$ task config sync.aws.default_credentials true
.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
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 SkyDrive and more. This technique involves storing your .task directory in a
shared directory under the control of the file hosting services. shared directory under the control of the file hosting services.
@@ -280,11 +58,11 @@ modifying the same task on two machines, without an intervening sync.
Setup simply involves creating the directory and modifying your data.location Setup simply involves creating the directory and modifying your data.location
configuration variable like this: configuration variable like this:
.nf
$ task config data.location /path/to/shared/directory $ task config data.location /path/to/shared/directory
.fi
Strengths: Strengths:
.br
- Always secure
.br .br
- Good client support - Good client support
.br .br
@@ -297,32 +75,99 @@ Weaknesses:
- Tasks are not properly merged - 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
http://taskwarrior.org/docs/server_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.
Alternatively, you can override the cert verification process using:
$ task config taskd.trust 'allow all'
This is an insecure option that should be used with caution, because it directs
Taskwarrior to trust any certificate.
After setup, you run a one-time sync initialization, like this:
$ task sync initialize
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.
Strengths:
.br
- Always secure
.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" .SH "CREDITS & COPYRIGHTS"
Copyright (C) 2006 \- 2021 T. Babej, P. Beckingham, F. Hernandez. Copyright (C) 2006 \- 2016 P. Beckingham, F. Hernandez.
Taskwarrior is distributed under the MIT license. See Taskwarrior is distributed under the MIT license. See
https://www.opensource.org/licenses/mit-license.php for more information. http://www.opensource.org/licenses/mit-license.php for more information.
.SH SEE ALSO .SH SEE ALSO
.BR task(1), .BR task(1),
.BR taskrc(5), .BR taskrc(5),
.BR task-color(5), .BR task-color(5),
For more information regarding Taskwarrior, see the following: For more information regarding task, the following may be referenced:
.TP .TP
The official site at The official site at
<https://taskwarrior.org> <http://taskwarrior.org>
.TP .TP
The official code repository at The official code repository at
<https://github.com/GothenburgBitFactory/taskwarrior> <https://git.tasktools.org/scm/tm/task.git>
.TP .TP
You can contact the project by emailing You can contact the project by writing an email to
<support@GothenburgBitFactory.org> <support@taskwarrior.org>
.SH REPORTING BUGS .SH REPORTING BUGS
.TP .TP
Bugs in Taskwarrior may be reported to the issue-tracker at Bugs in task may be reported to the issue-tracker at
<https://github.com/GothenburgBitFactory/taskwarrior/issues> <http://taskwarrior.org>

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,8 +1,5 @@
Themes Themes
These scripts are a way to generate a little sample data, and show the color
themes. It is not intended for general use.
To generate samples of themes, first execute the 'setup' script to generate the To generate samples of themes, first execute the 'setup' script to generate the
sample data. Note that this data may need to be tweaked to include qualities sample data. Note that this data may need to be tweaked to include qualities
that need to be illustrated in theme sample. that need to be illustrated in theme sample.
@@ -25,3 +22,4 @@ Using a solarized light terminal, run the following:
Note that for the solarized themes, the terminal color palette needs to be set Note that for the solarized themes, the terminal color palette needs to be set
to specific colors. to specific colors.

View File

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

View File

@@ -1,99 +0,0 @@
###############################################################################
#
# 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

@@ -1,6 +1,6 @@
############################################################################### ###############################################################################
# #
# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez. # Copyright 2006 - 2016, Paul Beckingham, Federico Hernandez.
# #
# Permission is hereby granted, free of charge, to any person obtaining a copy # Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal # of this software and associated documentation files (the "Software"), to deal
@@ -20,7 +20,7 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE. # SOFTWARE.
# #
# https://www.opensource.org/licenses/mit-license.php # http://www.opensource.org/licenses/mit-license.php
# #
############################################################################### ###############################################################################
@@ -57,7 +57,7 @@ color.uda.priority.L=
# Tags # Tags
color.tag.next=bold yellow color.tag.next=bold yellow
color.tag.none= color.tag.none=
color.tagged= color.tagged=green
# Due # Due
color.due=red color.due=red
@@ -86,7 +86,6 @@ color.calendar.due=white on red
color.calendar.due.today=bold white on red color.calendar.due.today=bold white on red
color.calendar.holiday=black on bright yellow color.calendar.holiday=black on bright yellow
color.calendar.overdue=black on bright red color.calendar.overdue=black on bright red
color.calendar.scheduled=
color.calendar.today=bold white on bright blue color.calendar.today=bold white on bright blue
color.calendar.weekend=white on bright black color.calendar.weekend=white on bright black
color.calendar.weeknumber=bold blue color.calendar.weeknumber=bold blue
@@ -99,3 +98,4 @@ color.sync.rejected=red
# Command: undo # Command: undo
color.undo.after=green color.undo.after=green
color.undo.before=red color.undo.before=red

View File

@@ -1,6 +1,6 @@
############################################################################### ###############################################################################
# #
# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez. # Copyright 2006 - 2016, Paul Beckingham, Federico Hernandez.
# #
# Permission is hereby granted, free of charge, to any person obtaining a copy # Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal # of this software and associated documentation files (the "Software"), to deal
@@ -20,7 +20,7 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE. # SOFTWARE.
# #
# https://www.opensource.org/licenses/mit-license.php # http://www.opensource.org/licenses/mit-license.php
# #
############################################################################### ###############################################################################
@@ -57,7 +57,7 @@ color.uda.priority.M=color250
# Tags # Tags
color.tag.next=rgb440 color.tag.next=rgb440
color.tag.none= color.tag.none=
color.tagged= color.tagged=rgb031
# Due # Due
color.due.today=rgb400 color.due.today=rgb400
@@ -82,7 +82,6 @@ color.summary.bar=black on rgb141
color.calendar.due.today=color15 on color1 color.calendar.due.today=color15 on color1
color.calendar.due=color0 on color1 color.calendar.due=color0 on color1
color.calendar.holiday=color0 on color11 color.calendar.holiday=color0 on color11
color.calendar.scheduled=
color.calendar.overdue=color0 on color9 color.calendar.overdue=color0 on color9
color.calendar.today=color15 on rgb013 color.calendar.today=color15 on rgb013
color.calendar.weekend=on color235 color.calendar.weekend=on color235
@@ -96,3 +95,4 @@ color.sync.rejected=color9
# Command: undo # Command: undo
color.undo.after=color2 color.undo.after=color2
color.undo.before=color1 color.undo.before=color1

View File

@@ -1,6 +1,6 @@
############################################################################### ###############################################################################
# #
# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez. # Copyright 2006 - 2016, Paul Beckingham, Federico Hernandez.
# #
# Permission is hereby granted, free of charge, to any person obtaining a copy # Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal # of this software and associated documentation files (the "Software"), to deal
@@ -20,7 +20,7 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE. # SOFTWARE.
# #
# https://www.opensource.org/licenses/mit-license.php # http://www.opensource.org/licenses/mit-license.php
# #
############################################################################### ###############################################################################
@@ -57,7 +57,7 @@ color.uda.priority.M=rgb025
# Tags # Tags
color.tag.next=rgb550 color.tag.next=rgb550
color.tag.none= color.tag.none=
color.tagged= color.tagged=color246
# Due # Due
color.due.today=color252 color.due.today=color252
@@ -83,7 +83,6 @@ color.calendar.due.today=color0 on color252
color.calendar.due=color0 on color249 color.calendar.due=color0 on color249
color.calendar.holiday=color255 on rgb013 color.calendar.holiday=color255 on rgb013
color.calendar.overdue=color0 on color255 color.calendar.overdue=color0 on color255
color.calendar.scheduled=
color.calendar.today=color0 on rgb115 color.calendar.today=color0 on rgb115
color.calendar.weekend=on color235 color.calendar.weekend=on color235
color.calendar.weeknumber=rgb015 color.calendar.weeknumber=rgb015
@@ -96,3 +95,4 @@ color.sync.rejected=rgb004
# Command: undo # Command: undo
color.undo.after=rgb035 color.undo.after=rgb035
color.undo.before=rgb013 color.undo.before=rgb013

View File

@@ -1,6 +1,6 @@
############################################################################### ###############################################################################
# #
# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez. # Copyright 2006 - 2016, Paul Beckingham, Federico Hernandez.
# #
# Permission is hereby granted, free of charge, to any person obtaining a copy # Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal # of this software and associated documentation files (the "Software"), to deal
@@ -20,7 +20,7 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE. # SOFTWARE.
# #
# https://www.opensource.org/licenses/mit-license.php # http://www.opensource.org/licenses/mit-license.php
# #
############################################################################### ###############################################################################
@@ -83,7 +83,6 @@ color.calendar.due=on gray8
color.calendar.due.today=black on gray15 color.calendar.due.today=black on gray15
color.calendar.holiday=black on gray20 color.calendar.holiday=black on gray20
color.calendar.overdue=gray2 on gray10 color.calendar.overdue=gray2 on gray10
color.calendar.scheduled=
color.calendar.today=bold white color.calendar.today=bold white
color.calendar.weekend=on gray2 color.calendar.weekend=on gray2
color.calendar.weeknumber=gray6 color.calendar.weeknumber=gray6
@@ -96,3 +95,4 @@ color.sync.rejected=gray5 on gray23
# Command: undo # Command: undo
color.undo.before=white on black color.undo.before=white on black
color.undo.after=black on white color.undo.after=black on white

View File

@@ -1,6 +1,6 @@
############################################################################### ###############################################################################
# #
# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez. # Copyright 2006 - 2016, Paul Beckingham, Federico Hernandez.
# #
# Permission is hereby granted, free of charge, to any person obtaining a copy # Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal # of this software and associated documentation files (the "Software"), to deal
@@ -20,7 +20,7 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE. # SOFTWARE.
# #
# https://www.opensource.org/licenses/mit-license.php # http://www.opensource.org/licenses/mit-license.php
# #
############################################################################### ###############################################################################
@@ -83,7 +83,6 @@ color.calendar.due=color0 on gray10
color.calendar.due.today=color0 on gray15 color.calendar.due.today=color0 on gray15
color.calendar.holiday=color15 on rgb005 color.calendar.holiday=color15 on rgb005
color.calendar.overdue=color0 on gray20 color.calendar.overdue=color0 on gray20
color.calendar.scheduled=
color.calendar.today=underline black on color15 color.calendar.today=underline black on color15
color.calendar.weekend=on gray4 color.calendar.weekend=on gray4
color.calendar.weeknumber=gray10 color.calendar.weeknumber=gray10
@@ -96,3 +95,4 @@ color.sync.rejected=gray23
# Command: undo # Command: undo
color.undo.before=rgb013 color.undo.before=rgb013
color.undo.after=rgb035 color.undo.after=rgb035

View File

@@ -1,6 +1,6 @@
############################################################################### ###############################################################################
# #
# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez. # Copyright 2006 - 2016, Paul Beckingham, Federico Hernandez.
# #
# Permission is hereby granted, free of charge, to any person obtaining a copy # Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal # of this software and associated documentation files (the "Software"), to deal
@@ -20,7 +20,7 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE. # SOFTWARE.
# #
# https://www.opensource.org/licenses/mit-license.php # http://www.opensource.org/licenses/mit-license.php
# #
############################################################################### ###############################################################################
@@ -57,7 +57,7 @@ color.uda.priority.M=rgb030
# Tags # Tags
color.tag.next=rgb440 color.tag.next=rgb440
color.tag.none= color.tag.none=
color.tagged= color.tagged=color246
# Due # Due
color.due.today=color252 color.due.today=color252
@@ -83,7 +83,6 @@ color.calendar.due.today=color0 on color225
color.calendar.due=color0 on color249 color.calendar.due=color0 on color249
color.calendar.holiday=rgb151 on rgb020 color.calendar.holiday=rgb151 on rgb020
color.calendar.overdue=color0 on color255 color.calendar.overdue=color0 on color255
color.calendar.scheduled=
color.calendar.today=color0 on rgb151 color.calendar.today=color0 on rgb151
color.calendar.weekend=on color235 color.calendar.weekend=on color235
color.calendar.weeknumber=rgb010 color.calendar.weeknumber=rgb010

View File

@@ -1,6 +1,6 @@
############################################################################### ###############################################################################
# #
# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez. # Copyright 2006 - 2016, Paul Beckingham, Federico Hernandez.
# #
# Permission is hereby granted, free of charge, to any person obtaining a copy # Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal # of this software and associated documentation files (the "Software"), to deal
@@ -20,7 +20,7 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE. # SOFTWARE.
# #
# https://www.opensource.org/licenses/mit-license.php # http://www.opensource.org/licenses/mit-license.php
# #
############################################################################### ###############################################################################
@@ -57,7 +57,7 @@ color.uda.priority.M=rgb400
# Tags # Tags
color.tag.next=rgb511 color.tag.next=rgb511
color.tag.none= color.tag.none=
color.tagged= color.tagged=color246
# Due # Due
color.due.today=color252 color.due.today=color252
@@ -83,7 +83,6 @@ color.calendar.due.today=color0 on color252
color.calendar.due=color0 on color249 color.calendar.due=color0 on color249
color.calendar.holiday=rgb522 on rgb300 color.calendar.holiday=rgb522 on rgb300
color.calendar.overdue=color0 on color255 color.calendar.overdue=color0 on color255
color.calendar.scheduled=
color.calendar.today=color0 on rgb511 color.calendar.today=color0 on rgb511
color.calendar.weekend=on color235 color.calendar.weekend=on color235
color.calendar.weeknumber=rgb100 color.calendar.weeknumber=rgb100
@@ -96,3 +95,4 @@ color.sync.rejected=rgb200
# Command: undo # Command: undo
color.undo.after=rgb511 color.undo.after=rgb511
color.undo.before=rgb200 color.undo.before=rgb200

View File

@@ -1,6 +1,6 @@
############################################################################### ###############################################################################
# #
# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez. # Copyright 2006 - 2016, Paul Beckingham, Federico Hernandez.
# #
# Permission is hereby granted, free of charge, to any person obtaining a copy # Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal # of this software and associated documentation files (the "Software"), to deal
@@ -20,7 +20,7 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE. # SOFTWARE.
# #
# https://www.opensource.org/licenses/mit-license.php # http://www.opensource.org/licenses/mit-license.php
# #
############################################################################### ###############################################################################
@@ -57,7 +57,7 @@ color.uda.priority.L=rgb325
# Tags # Tags
color.tag.next= color.tag.next=
color.tag.none= color.tag.none=
color.tagged= color.tagged=rgb334
# Due # Due
color.due=rgb015 color.due=rgb015
@@ -83,7 +83,6 @@ color.calendar.due=color0 on rgb325
color.calendar.due.today=color0 on rgb404 color.calendar.due.today=color0 on rgb404
color.calendar.holiday=color15 on rgb102 color.calendar.holiday=color15 on rgb102
color.calendar.overdue=color0 on color5 color.calendar.overdue=color0 on color5
color.calendar.scheduled=
color.calendar.today=color15 on rgb103 color.calendar.today=color15 on rgb103
color.calendar.weekend=gray12 on gray3 color.calendar.weekend=gray12 on gray3
color.calendar.weeknumber=rgb104 color.calendar.weeknumber=rgb104
@@ -96,3 +95,4 @@ color.sync.rejected=rgb103
# Command: undo # Command: undo
color.undo.before=rgb103 color.undo.before=rgb103
color.undo.after=rgb305 color.undo.after=rgb305

View File

@@ -1,6 +1,6 @@
############################################################################### ###############################################################################
# #
# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez. # Copyright 2006 - 2016, Paul Beckingham, Federico Hernandez.
# #
# Permission is hereby granted, free of charge, to any person obtaining a copy # Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal # of this software and associated documentation files (the "Software"), to deal
@@ -20,7 +20,7 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE. # SOFTWARE.
# #
# https://www.opensource.org/licenses/mit-license.php # http://www.opensource.org/licenses/mit-license.php
# #
############################################################################### ###############################################################################
@@ -57,7 +57,7 @@ color.uda.priority.L=rgb010
# Tags # Tags
color.tag.next= color.tag.next=
color.tag.none= color.tag.none=
color.tagged= color.tagged=rgb342
# Due # Due
color.due=rgb440 color.due=rgb440
@@ -83,7 +83,6 @@ color.calendar.due=color0 on rgb440
color.calendar.due.today=color0 on rgb430 color.calendar.due.today=color0 on rgb430
color.calendar.holiday=rgb151 on rgb020 color.calendar.holiday=rgb151 on rgb020
color.calendar.overdue=color0 on rgb420 color.calendar.overdue=color0 on rgb420
color.calendar.scheduled=
color.calendar.today=color15 on rgb110 color.calendar.today=color15 on rgb110
color.calendar.weekend=on color235 color.calendar.weekend=on color235
color.calendar.weeknumber=rgb110 color.calendar.weeknumber=rgb110
@@ -96,3 +95,4 @@ color.sync.rejected=rgb110
# Command: undo # Command: undo
color.undo.before=rgb021 color.undo.before=rgb021
color.undo.after=rgb042 color.undo.after=rgb042

69
doc/rc/holidays.be-BY.rc Normal file
View File

@@ -0,0 +1,69 @@
###############################################################################
# International Holiday Data provided by Holidata.net
# http://holidata.net/be-BY/2015.json
# http://holidata.net/be-BY/2016.json
#
# Copyright 2006 - 2016, 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.
#
# http://www.opensource.org/licenses/mit-license.php
#
###############################################################################
holiday.be-BY1.name=Новы Год
holiday.be-BY1.date=20150101
holiday.be-BY2.name=Раство Хрыстова(праваслаўнае)
holiday.be-BY2.date=20150107
holiday.be-BY3.name=Міжнародны жаночы дзень
holiday.be-BY3.date=20150803
holiday.be-BY4.name=Пасха(праваслаўная)
holiday.be-BY4.date=20150420
holiday.be-BY5.name=Радуніца
holiday.be-BY5.date=20150421
holiday.be-BY6.name=Свята працы
holiday.be-BY6.date=20150501
holiday.be-BY7.name=Дзень Перамогі
holiday.be-BY7.date=20150509
holiday.be-BY8.name=Дзень незалежнаці
holiday.be-BY8.date=20150703
holiday.be-BY9.name=Дзень Кастрычніцкай рэвалюцыі
holiday.be-BY9.date=20151107
holiday.be-BY10.name=Раство Хрыстова(у заходніх хрысціян)
holiday.be-BY10.date=20151225
holiday.be-BY11.name=Новы Год
holiday.be-BY11.date=20160101
holiday.be-BY12.name=Раство Хрыстова(праваслаўнае)
holiday.be-BY12.date=20160107
holiday.be-BY13.name=Міжнародны жаночы дзень
holiday.be-BY13.date=20160803
holiday.be-BY14.name=Пасха(праваслаўная)
holiday.be-BY14.date=20160327
holiday.be-BY15.name=Радуніца
holiday.be-BY15.date=20160510
holiday.be-BY16.name=Свята працы
holiday.be-BY16.date=20160501
holiday.be-BY17.name=Дзень Перамогі
holiday.be-BY17.date=20160509
holiday.be-BY18.name=Дзень незалежнаці
holiday.be-BY18.date=20160703
holiday.be-BY19.name=Дзень Кастрычніцкай рэвалюцыі
holiday.be-BY19.date=20161107
holiday.be-BY20.name=Раство Хрыстова(у заходніх хрысціян)
holiday.be-BY20.date=20161225

View File

@@ -1,9 +1,9 @@
############################################################################### ###############################################################################
# International Holiday Data provided by Holidata.net # International Holiday Data provided by Holidata.net
# https://holidata.net/cs-CZ/2021.json # http://holidata.net/cs-CZ/2015.json
# https://holidata.net/cs-CZ/2022.json # http://holidata.net/cs-CZ/2016.json
# #
# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez. # Copyright 2006 - 2016, Paul Beckingham, Federico Hernandez.
# #
# Permission is hereby granted, free of charge, to any person obtaining a copy # Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal # of this software and associated documentation files (the "Software"), to deal
@@ -23,63 +23,59 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE. # SOFTWARE.
# #
# https://www.opensource.org/licenses/mit-license.php # http://www.opensource.org/licenses/mit-license.php
# #
############################################################################### ###############################################################################
holiday.cs-CZ1.name=Nový rok holiday.cs-CZ1.name=Nový rok
holiday.cs-CZ1.date=20210101 holiday.cs-CZ1.date=20150101
holiday.cs-CZ2.name=Den obnovy samostatného českého státu holiday.cs-CZ2.name=Den obnovy samostatnosti českého státu
holiday.cs-CZ2.date=20210101 holiday.cs-CZ2.date=20150101
holiday.cs-CZ3.name=Velký pátek holiday.cs-CZ3.name=Velikonoční pondělí
holiday.cs-CZ3.date=20210402 holiday.cs-CZ3.date=20150406
holiday.cs-CZ4.name=Velikonoční pondělí holiday.cs-CZ4.name=Svátek práce
holiday.cs-CZ4.date=20210405 holiday.cs-CZ4.date=20150501
holiday.cs-CZ5.name=Svátek práce holiday.cs-CZ5.name=Den vítězství
holiday.cs-CZ5.date=20210501 holiday.cs-CZ5.date=20150508
holiday.cs-CZ6.name=Den vítězství holiday.cs-CZ6.name=Den slovanských věrozvěstů
holiday.cs-CZ6.date=20210508 holiday.cs-CZ6.date=20150705
holiday.cs-CZ7.name=Den slovanských věrozvěstů Cyrila a Metoděje holiday.cs-CZ7.name=Den upálení mistra Jana Husa
holiday.cs-CZ7.date=20210705 holiday.cs-CZ7.date=20150706
holiday.cs-CZ8.name=Den upálení mistra Jana Husa holiday.cs-CZ8.name=Den české státnosti
holiday.cs-CZ8.date=20210706 holiday.cs-CZ8.date=20150928
holiday.cs-CZ9.name=Den české státnosti holiday.cs-CZ9.name=Den vzniku samostatného československého státu
holiday.cs-CZ9.date=20210928 holiday.cs-CZ9.date=20151028
holiday.cs-CZ10.name=Den vzniku samostatného československého státu holiday.cs-CZ10.name=Den boje za svobodu a demokracii
holiday.cs-CZ10.date=20211028 holiday.cs-CZ10.date=20151117
holiday.cs-CZ11.name=Den boje za svobodu a demokracii a Mezinárodní den studentstva holiday.cs-CZ11.name=Štědrý den
holiday.cs-CZ11.date=20211117 holiday.cs-CZ11.date=20151224
holiday.cs-CZ12.name=Štědrý den holiday.cs-CZ12.name=1. svátek vánoční
holiday.cs-CZ12.date=20211224 holiday.cs-CZ12.date=20151225
holiday.cs-CZ13.name=1. svátek vánoční holiday.cs-CZ13.name=2. svátek vánoční
holiday.cs-CZ13.date=20211225 holiday.cs-CZ13.date=20151226
holiday.cs-CZ14.name=2. svátek vánoční holiday.cs-CZ14.name=Nový rok
holiday.cs-CZ14.date=20211226 holiday.cs-CZ14.date=20160101
holiday.cs-CZ15.name=Nový rok holiday.cs-CZ15.name=Den obnovy samostatnosti českého státu
holiday.cs-CZ15.date=20220101 holiday.cs-CZ15.date=20160101
holiday.cs-CZ16.name=Den obnovy samostatného českého státu holiday.cs-CZ16.name=Velikonoční pondělí
holiday.cs-CZ16.date=20220101 holiday.cs-CZ16.date=20160328
holiday.cs-CZ17.name=Velký pátek holiday.cs-CZ17.name=Svátek práce
holiday.cs-CZ17.date=20220415 holiday.cs-CZ17.date=20160501
holiday.cs-CZ18.name=Velikonoční pondělí holiday.cs-CZ18.name=Den vítězství
holiday.cs-CZ18.date=20220418 holiday.cs-CZ18.date=20160508
holiday.cs-CZ19.name=Svátek práce holiday.cs-CZ19.name=Den slovanských věrozvěstů
holiday.cs-CZ19.date=20220501 holiday.cs-CZ19.date=20160705
holiday.cs-CZ20.name=Den vítězství holiday.cs-CZ20.name=Den upálení mistra Jana Husa
holiday.cs-CZ20.date=20220508 holiday.cs-CZ20.date=20160706
holiday.cs-CZ21.name=Den slovanských věrozvěstů Cyrila a Metoděje holiday.cs-CZ21.name=Den české státnosti
holiday.cs-CZ21.date=20220705 holiday.cs-CZ21.date=20160928
holiday.cs-CZ22.name=Den upálení mistra Jana Husa holiday.cs-CZ22.name=Den vzniku samostatného československého státu
holiday.cs-CZ22.date=20220706 holiday.cs-CZ22.date=20161028
holiday.cs-CZ23.name=Den české státnosti holiday.cs-CZ23.name=Den boje za svobodu a demokracii
holiday.cs-CZ23.date=20220928 holiday.cs-CZ23.date=20161117
holiday.cs-CZ24.name=Den vzniku samostatného československého státu holiday.cs-CZ24.name=Štědrý den
holiday.cs-CZ24.date=20221028 holiday.cs-CZ24.date=20161224
holiday.cs-CZ25.name=Den boje za svobodu a demokracii a Mezinárodní den studentstva holiday.cs-CZ25.name=1. svátek vánoční
holiday.cs-CZ25.date=20221117 holiday.cs-CZ25.date=20161225
holiday.cs-CZ26.name=Štědrý den holiday.cs-CZ26.name=2. svátek vánoční
holiday.cs-CZ26.date=20221224 holiday.cs-CZ26.date=20161226
holiday.cs-CZ27.name=1. svátek vánoční
holiday.cs-CZ27.date=20221225
holiday.cs-CZ28.name=2. svátek vánoční
holiday.cs-CZ28.date=20221226

View File

@@ -1,9 +1,9 @@
############################################################################### ###############################################################################
# International Holiday Data provided by Holidata.net # International Holiday Data provided by Holidata.net
# https://holidata.net/da-DK/2021.json # http://holidata.net/da-DK/2015.json
# https://holidata.net/da-DK/2022.json # http://holidata.net/da-DK/2016.json
# #
# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez. # Copyright 2006 - 2016, Paul Beckingham, Federico Hernandez.
# #
# Permission is hereby granted, free of charge, to any person obtaining a copy # Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal # of this software and associated documentation files (the "Software"), to deal
@@ -23,55 +23,51 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE. # SOFTWARE.
# #
# https://www.opensource.org/licenses/mit-license.php # http://www.opensource.org/licenses/mit-license.php
# #
############################################################################### ###############################################################################
holiday.da-DK1.name=Nytårsdag holiday.da-DK1.name=Nytårsdag
holiday.da-DK1.date=20210101 holiday.da-DK1.date=20150101
holiday.da-DK2.name=Skærtorsdag holiday.da-DK2.name=Skærtorsdag
holiday.da-DK2.date=20210401 holiday.da-DK2.date=20150402
holiday.da-DK3.name=Langfredag holiday.da-DK3.name=Langfredag
holiday.da-DK3.date=20210402 holiday.da-DK3.date=20150403
holiday.da-DK4.name=Påskedag holiday.da-DK4.name=Påskedag
holiday.da-DK4.date=20210404 holiday.da-DK4.date=20150405
holiday.da-DK5.name=Anden påskedag holiday.da-DK5.name=Anden påskedag
holiday.da-DK5.date=20210405 holiday.da-DK5.date=20150406
holiday.da-DK6.name=Store bededag holiday.da-DK6.name=Kristi himmelfartsdag
holiday.da-DK6.date=20210430 holiday.da-DK6.date=20150514
holiday.da-DK7.name=Kristi himmelfartsdag holiday.da-DK7.name=Pinsedag
holiday.da-DK7.date=20210513 holiday.da-DK7.date=20150524
holiday.da-DK8.name=Pinsedag holiday.da-DK8.name=Anden pinsedag
holiday.da-DK8.date=20210523 holiday.da-DK8.date=20150525
holiday.da-DK9.name=Anden pinsedag holiday.da-DK9.name=Grundlovsdag
holiday.da-DK9.date=20210524 holiday.da-DK9.date=20150605
holiday.da-DK10.name=Grundlovsdag holiday.da-DK10.name=Juledag
holiday.da-DK10.date=20210605 holiday.da-DK10.date=20151225
holiday.da-DK11.name=Juledag holiday.da-DK11.name=Anden juledag
holiday.da-DK11.date=20211225 holiday.da-DK11.date=20151226
holiday.da-DK12.name=Anden juledag holiday.da-DK12.name=Nytårsdag
holiday.da-DK12.date=20211226 holiday.da-DK12.date=20160101
holiday.da-DK13.name=Nytårsdag holiday.da-DK13.name=Skærtorsdag
holiday.da-DK13.date=20220101 holiday.da-DK13.date=20160324
holiday.da-DK14.name=Skærtorsdag holiday.da-DK14.name=Langfredag
holiday.da-DK14.date=20220414 holiday.da-DK14.date=20160325
holiday.da-DK15.name=Langfredag holiday.da-DK15.name=Påskedag
holiday.da-DK15.date=20220415 holiday.da-DK15.date=20160327
holiday.da-DK16.name=Påskedag holiday.da-DK16.name=Anden påskedag
holiday.da-DK16.date=20220417 holiday.da-DK16.date=20160328
holiday.da-DK17.name=Anden påskedag holiday.da-DK17.name=Kristi himmelfartsdag
holiday.da-DK17.date=20220418 holiday.da-DK17.date=20160505
holiday.da-DK18.name=Store bededag holiday.da-DK18.name=Pinsedag
holiday.da-DK18.date=20220513 holiday.da-DK18.date=20160515
holiday.da-DK19.name=Kristi himmelfartsdag holiday.da-DK19.name=Anden pinsedag
holiday.da-DK19.date=20220526 holiday.da-DK19.date=20160516
holiday.da-DK20.name=Grundlovsdag holiday.da-DK20.name=Grundlovsdag
holiday.da-DK20.date=20220605 holiday.da-DK20.date=20160605
holiday.da-DK21.name=Pinsedag holiday.da-DK21.name=Juledag
holiday.da-DK21.date=20220605 holiday.da-DK21.date=20161225
holiday.da-DK22.name=Anden pinsedag holiday.da-DK22.name=Anden juledag
holiday.da-DK22.date=20220606 holiday.da-DK22.date=20161226
holiday.da-DK23.name=Juledag
holiday.da-DK23.date=20221225
holiday.da-DK24.name=Anden juledag
holiday.da-DK24.date=20221226

View File

@@ -1,9 +1,9 @@
############################################################################### ###############################################################################
# International Holiday Data provided by Holidata.net # International Holiday Data provided by Holidata.net
# https://holidata.net/de-AT/2021.json # http://holidata.net/de-AT/2015.json
# https://holidata.net/de-AT/2022.json # http://holidata.net/de-AT/2016.json
# #
# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez. # Copyright 2006 - 2016, Paul Beckingham, Federico Hernandez.
# #
# Permission is hereby granted, free of charge, to any person obtaining a copy # Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal # of this software and associated documentation files (the "Software"), to deal
@@ -23,103 +23,103 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE. # SOFTWARE.
# #
# https://www.opensource.org/licenses/mit-license.php # http://www.opensource.org/licenses/mit-license.php
# #
############################################################################### ###############################################################################
holiday.de-AT1.name=Neujahr holiday.de-AT1.name=Neujahr
holiday.de-AT1.date=20210101 holiday.de-AT1.date=20150101
holiday.de-AT2.name=Heilige drei Könige holiday.de-AT2.name=Heilige drei Könige
holiday.de-AT2.date=20210106 holiday.de-AT2.date=20150106
holiday.de-AT3.name=Josef holiday.de-AT3.name=Josef (K, St, T, V)
holiday.de-AT3.date=20210319 holiday.de-AT3.date=20150319
holiday.de-AT4.name=Karfreitag holiday.de-AT4.name=Karfreitag
holiday.de-AT4.date=20210402 holiday.de-AT4.date=20150403
holiday.de-AT5.name=Ostersonntag holiday.de-AT5.name=Ostersonntag
holiday.de-AT5.date=20210404 holiday.de-AT5.date=20150405
holiday.de-AT6.name=Ostermontag holiday.de-AT6.name=Ostermontag
holiday.de-AT6.date=20210405 holiday.de-AT6.date=20150406
holiday.de-AT7.name=Staatsfeiertag holiday.de-AT7.name=Staatsfeiertag
holiday.de-AT7.date=20210501 holiday.de-AT7.date=20150501
holiday.de-AT8.name=Florian holiday.de-AT8.name=Florian (O)
holiday.de-AT8.date=20210504 holiday.de-AT8.date=20150504
holiday.de-AT9.name=Christi Himmelfahrt holiday.de-AT9.name=Christi Himmelfahrt
holiday.de-AT9.date=20210513 holiday.de-AT9.date=20150514
holiday.de-AT10.name=Pfingstsonntag holiday.de-AT10.name=Pfingstsonntag
holiday.de-AT10.date=20210523 holiday.de-AT10.date=20150524
holiday.de-AT11.name=Pfingstmontag holiday.de-AT11.name=Pfingstmontag
holiday.de-AT11.date=20210524 holiday.de-AT11.date=20150525
holiday.de-AT12.name=Fronleichnam holiday.de-AT12.name=Fronleichnam
holiday.de-AT12.date=20210603 holiday.de-AT12.date=20150604
holiday.de-AT13.name=Mariä Himmelfahrt holiday.de-AT13.name=Mariä Himmelfahrt
holiday.de-AT13.date=20210815 holiday.de-AT13.date=20150815
holiday.de-AT14.name=Rupert holiday.de-AT14.name=Rupert (S)
holiday.de-AT14.date=20210924 holiday.de-AT14.date=20150924
holiday.de-AT15.name=Tag der Volksabstimmung holiday.de-AT15.name=Tag der Volksabstimmung (K)
holiday.de-AT15.date=20211010 holiday.de-AT15.date=20151010
holiday.de-AT16.name=Nationalfeiertag holiday.de-AT16.name=Nationalfeiertag
holiday.de-AT16.date=20211026 holiday.de-AT16.date=20151026
holiday.de-AT17.name=Allerheiligen holiday.de-AT17.name=Allerheiligen
holiday.de-AT17.date=20211101 holiday.de-AT17.date=20151101
holiday.de-AT18.name=Martin holiday.de-AT18.name=Martin (B)
holiday.de-AT18.date=20211111 holiday.de-AT18.date=20151111
holiday.de-AT19.name=Leopold holiday.de-AT19.name=Leopold (W, N)
holiday.de-AT19.date=20211115 holiday.de-AT19.date=20151115
holiday.de-AT20.name=Mariä Empfängnis holiday.de-AT20.name=Mariä Empfängnis
holiday.de-AT20.date=20211208 holiday.de-AT20.date=20151208
holiday.de-AT21.name=Heiliger Abend holiday.de-AT21.name=Heiliger Abend
holiday.de-AT21.date=20211224 holiday.de-AT21.date=20151224
holiday.de-AT22.name=Christtag holiday.de-AT22.name=Christtag
holiday.de-AT22.date=20211225 holiday.de-AT22.date=20151225
holiday.de-AT23.name=Stefanitag holiday.de-AT23.name=Stefanitag
holiday.de-AT23.date=20211226 holiday.de-AT23.date=20151226
holiday.de-AT24.name=Silvester holiday.de-AT24.name=Silvester
holiday.de-AT24.date=20211231 holiday.de-AT24.date=20151231
holiday.de-AT25.name=Neujahr holiday.de-AT25.name=Neujahr
holiday.de-AT25.date=20220101 holiday.de-AT25.date=20160101
holiday.de-AT26.name=Heilige drei Könige holiday.de-AT26.name=Heilige drei Könige
holiday.de-AT26.date=20220106 holiday.de-AT26.date=20160106
holiday.de-AT27.name=Josef holiday.de-AT27.name=Josef (K, St, T, V)
holiday.de-AT27.date=20220319 holiday.de-AT27.date=20160319
holiday.de-AT28.name=Karfreitag holiday.de-AT28.name=Karfreitag
holiday.de-AT28.date=20220415 holiday.de-AT28.date=20160325
holiday.de-AT29.name=Ostersonntag holiday.de-AT29.name=Ostersonntag
holiday.de-AT29.date=20220417 holiday.de-AT29.date=20160327
holiday.de-AT30.name=Ostermontag holiday.de-AT30.name=Ostermontag
holiday.de-AT30.date=20220418 holiday.de-AT30.date=20160328
holiday.de-AT31.name=Staatsfeiertag holiday.de-AT31.name=Staatsfeiertag
holiday.de-AT31.date=20220501 holiday.de-AT31.date=20160501
holiday.de-AT32.name=Florian holiday.de-AT32.name=Florian (O)
holiday.de-AT32.date=20220504 holiday.de-AT32.date=20160504
holiday.de-AT33.name=Christi Himmelfahrt holiday.de-AT33.name=Christi Himmelfahrt
holiday.de-AT33.date=20220526 holiday.de-AT33.date=20160505
holiday.de-AT34.name=Pfingstsonntag holiday.de-AT34.name=Pfingstsonntag
holiday.de-AT34.date=20220605 holiday.de-AT34.date=20160515
holiday.de-AT35.name=Pfingstmontag holiday.de-AT35.name=Pfingstmontag
holiday.de-AT35.date=20220606 holiday.de-AT35.date=20160516
holiday.de-AT36.name=Fronleichnam holiday.de-AT36.name=Fronleichnam
holiday.de-AT36.date=20220616 holiday.de-AT36.date=20160526
holiday.de-AT37.name=Mariä Himmelfahrt holiday.de-AT37.name=Mariä Himmelfahrt
holiday.de-AT37.date=20220815 holiday.de-AT37.date=20160815
holiday.de-AT38.name=Rupert holiday.de-AT38.name=Rupert (S)
holiday.de-AT38.date=20220924 holiday.de-AT38.date=20160924
holiday.de-AT39.name=Tag der Volksabstimmung holiday.de-AT39.name=Tag der Volksabstimmung (K)
holiday.de-AT39.date=20221010 holiday.de-AT39.date=20161010
holiday.de-AT40.name=Nationalfeiertag holiday.de-AT40.name=Nationalfeiertag
holiday.de-AT40.date=20221026 holiday.de-AT40.date=20161026
holiday.de-AT41.name=Allerheiligen holiday.de-AT41.name=Allerheiligen
holiday.de-AT41.date=20221101 holiday.de-AT41.date=20161101
holiday.de-AT42.name=Martin holiday.de-AT42.name=Martin (B)
holiday.de-AT42.date=20221111 holiday.de-AT42.date=20161111
holiday.de-AT43.name=Leopold holiday.de-AT43.name=Leopold (W, N)
holiday.de-AT43.date=20221115 holiday.de-AT43.date=20161115
holiday.de-AT44.name=Mariä Empfängnis holiday.de-AT44.name=Mariä Empfängnis
holiday.de-AT44.date=20221208 holiday.de-AT44.date=20161208
holiday.de-AT45.name=Heiliger Abend holiday.de-AT45.name=Heiliger Abend
holiday.de-AT45.date=20221224 holiday.de-AT45.date=20161224
holiday.de-AT46.name=Christtag holiday.de-AT46.name=Christtag
holiday.de-AT46.date=20221225 holiday.de-AT46.date=20161225
holiday.de-AT47.name=Stefanitag holiday.de-AT47.name=Stefanitag
holiday.de-AT47.date=20221226 holiday.de-AT47.date=20161226
holiday.de-AT48.name=Silvester holiday.de-AT48.name=Silvester
holiday.de-AT48.date=20221231 holiday.de-AT48.date=20161231

View File

@@ -1,9 +1,9 @@
############################################################################### ###############################################################################
# International Holiday Data provided by Holidata.net # International Holiday Data provided by Holidata.net
# https://holidata.net/de-BE/2021.json # http://holidata.net/de-BE/2015.json
# https://holidata.net/de-BE/2022.json # http://holidata.net/de-BE/2016.json
# #
# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez. # Copyright 2006 - 2016, Paul Beckingham, Federico Hernandez.
# #
# Permission is hereby granted, free of charge, to any person obtaining a copy # Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal # of this software and associated documentation files (the "Software"), to deal
@@ -23,55 +23,55 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE. # SOFTWARE.
# #
# https://www.opensource.org/licenses/mit-license.php # http://www.opensource.org/licenses/mit-license.php
# #
############################################################################### ###############################################################################
holiday.de-BE1.name=Neujahr holiday.de-BE1.name=Neujahr
holiday.de-BE1.date=20210101 holiday.de-BE1.date=20150101
holiday.de-BE2.name=Ostern holiday.de-BE2.name=Ostern
holiday.de-BE2.date=20210404 holiday.de-BE2.date=20150405
holiday.de-BE3.name=Ostermontag holiday.de-BE3.name=Ostermontag
holiday.de-BE3.date=20210405 holiday.de-BE3.date=20150406
holiday.de-BE4.name=Tag der Arbeit holiday.de-BE4.name=Tag der Arbeit
holiday.de-BE4.date=20210501 holiday.de-BE4.date=20150501
holiday.de-BE5.name=Christi Himmelfahrt holiday.de-BE5.name=Christi Himmelfahrt
holiday.de-BE5.date=20210513 holiday.de-BE5.date=20150514
holiday.de-BE6.name=Pfingsten holiday.de-BE6.name=Pfingsten
holiday.de-BE6.date=20210523 holiday.de-BE6.date=20150524
holiday.de-BE7.name=Pfingstmontag holiday.de-BE7.name=Pfingstmontag
holiday.de-BE7.date=20210524 holiday.de-BE7.date=20150525
holiday.de-BE8.name=Nationalfeiertag holiday.de-BE8.name=Nationalfeiertag
holiday.de-BE8.date=20210721 holiday.de-BE8.date=20150721
holiday.de-BE9.name=Mariä Himmelfahrt holiday.de-BE9.name=Mariä Himmelfahrt
holiday.de-BE9.date=20210815 holiday.de-BE9.date=20150815
holiday.de-BE10.name=Allerheiligen holiday.de-BE10.name=Allerheiligen
holiday.de-BE10.date=20211101 holiday.de-BE10.date=20151101
holiday.de-BE11.name=Waffenstillstand holiday.de-BE11.name=Waffenstillstand
holiday.de-BE11.date=20211111 holiday.de-BE11.date=20151111
holiday.de-BE12.name=Weihnacht holiday.de-BE12.name=Weihnacht
holiday.de-BE12.date=20211225 holiday.de-BE12.date=20151225
holiday.de-BE13.name=Neujahr holiday.de-BE13.name=Neujahr
holiday.de-BE13.date=20220101 holiday.de-BE13.date=20160101
holiday.de-BE14.name=Ostern holiday.de-BE14.name=Ostern
holiday.de-BE14.date=20220417 holiday.de-BE14.date=20160527
holiday.de-BE15.name=Ostermontag holiday.de-BE15.name=Ostermontag
holiday.de-BE15.date=20220418 holiday.de-BE15.date=20160528
holiday.de-BE16.name=Tag der Arbeit holiday.de-BE16.name=Tag der Arbeit
holiday.de-BE16.date=20220501 holiday.de-BE16.date=20160501
holiday.de-BE17.name=Christi Himmelfahrt holiday.de-BE17.name=Christi Himmelfahrt
holiday.de-BE17.date=20220526 holiday.de-BE17.date=20160505
holiday.de-BE18.name=Pfingsten holiday.de-BE18.name=Pfingsten
holiday.de-BE18.date=20220605 holiday.de-BE18.date=20160515
holiday.de-BE19.name=Pfingstmontag holiday.de-BE19.name=Pfingstmontag
holiday.de-BE19.date=20220606 holiday.de-BE19.date=20160516
holiday.de-BE20.name=Nationalfeiertag holiday.de-BE20.name=Nationalfeiertag
holiday.de-BE20.date=20220721 holiday.de-BE20.date=20160721
holiday.de-BE21.name=Mariä Himmelfahrt holiday.de-BE21.name=Mariä Himmelfahrt
holiday.de-BE21.date=20220815 holiday.de-BE21.date=20160815
holiday.de-BE22.name=Allerheiligen holiday.de-BE22.name=Allerheiligen
holiday.de-BE22.date=20221101 holiday.de-BE22.date=20161101
holiday.de-BE23.name=Waffenstillstand holiday.de-BE23.name=Waffenstillstand
holiday.de-BE23.date=20221111 holiday.de-BE23.date=20161111
holiday.de-BE24.name=Weihnacht holiday.de-BE24.name=Weihnacht
holiday.de-BE24.date=20221225 holiday.de-BE24.date=20161225

View File

@@ -1,9 +1,9 @@
############################################################################### ###############################################################################
# International Holiday Data provided by Holidata.net # International Holiday Data provided by Holidata.net
# https://holidata.net/de-CH/2021.json # http://holidata.net/de-CH/2015.json
# https://holidata.net/de-CH/2022.json # http://holidata.net/de-CH/2016.json
# #
# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez. # Copyright 2006 - 2016, Paul Beckingham, Federico Hernandez.
# #
# Permission is hereby granted, free of charge, to any person obtaining a copy # Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal # of this software and associated documentation files (the "Software"), to deal
@@ -23,79 +23,79 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE. # SOFTWARE.
# #
# https://www.opensource.org/licenses/mit-license.php # http://www.opensource.org/licenses/mit-license.php
# #
############################################################################### ###############################################################################
holiday.de-CH1.name=Neujahrstag holiday.de-CH1.name=Neujahrstag
holiday.de-CH1.date=20210101 holiday.de-CH1.date=20150101
holiday.de-CH2.name=Berchtoldstag holiday.de-CH2.name=Berchtoldstag
holiday.de-CH2.date=20210102 holiday.de-CH2.date=20150102
holiday.de-CH3.name=Heilige Drei Könige holiday.de-CH3.name=Heilige Drei Könige
holiday.de-CH3.date=20210106 holiday.de-CH3.date=20150106
holiday.de-CH4.name=Josefstag holiday.de-CH4.name=Josefstag
holiday.de-CH4.date=20210319 holiday.de-CH4.date=20150319
holiday.de-CH5.name=Karfreitag holiday.de-CH5.name=Karfreitag
holiday.de-CH5.date=20210402 holiday.de-CH5.date=20150403
holiday.de-CH6.name=Ostersonntag holiday.de-CH6.name=Ostersonntag
holiday.de-CH6.date=20210404 holiday.de-CH6.date=20150405
holiday.de-CH7.name=Ostermontag holiday.de-CH7.name=Ostermontag
holiday.de-CH7.date=20210405 holiday.de-CH7.date=20150406
holiday.de-CH8.name=Tag der Arbeit holiday.de-CH8.name=Tag der Arbeit
holiday.de-CH8.date=20210501 holiday.de-CH8.date=20150501
holiday.de-CH9.name=Auffahrt holiday.de-CH9.name=Auffahrt
holiday.de-CH9.date=20210513 holiday.de-CH9.date=20150514
holiday.de-CH10.name=Pfingstsonntag holiday.de-CH10.name=Pfingstsonntag
holiday.de-CH10.date=20210523 holiday.de-CH10.date=20150524
holiday.de-CH11.name=Pfingstmontag holiday.de-CH11.name=Pfingstmontag
holiday.de-CH11.date=20210524 holiday.de-CH11.date=20150525
holiday.de-CH12.name=Fronleichnam holiday.de-CH12.name=Fronleichnam
holiday.de-CH12.date=20210603 holiday.de-CH12.date=20150604
holiday.de-CH13.name=Bundesfeier holiday.de-CH13.name=Bundesfeier
holiday.de-CH13.date=20210801 holiday.de-CH13.date=20150801
holiday.de-CH14.name=Mariä Himmelfahrt holiday.de-CH14.name=Mariä Himmelfahrt
holiday.de-CH14.date=20210815 holiday.de-CH14.date=20150815
holiday.de-CH15.name=Allerheiligen holiday.de-CH15.name=Allerheiligen
holiday.de-CH15.date=20211101 holiday.de-CH15.date=20151101
holiday.de-CH16.name=Mariä Empfängnis holiday.de-CH16.name=Mariä Empfängnis
holiday.de-CH16.date=20211208 holiday.de-CH16.date=20151208
holiday.de-CH17.name=Weihnachtstag holiday.de-CH17.name=Weihnachtstag
holiday.de-CH17.date=20211225 holiday.de-CH17.date=20151225
holiday.de-CH18.name=Stephanstag holiday.de-CH18.name=Stephanstag
holiday.de-CH18.date=20211226 holiday.de-CH18.date=20151226
holiday.de-CH19.name=Neujahrstag holiday.de-CH19.name=Neujahrstag
holiday.de-CH19.date=20220101 holiday.de-CH19.date=20160101
holiday.de-CH20.name=Berchtoldstag holiday.de-CH20.name=Berchtoldstag
holiday.de-CH20.date=20220102 holiday.de-CH20.date=20160102
holiday.de-CH21.name=Heilige Drei Könige holiday.de-CH21.name=Heilige Drei Könige
holiday.de-CH21.date=20220106 holiday.de-CH21.date=20160106
holiday.de-CH22.name=Josefstag holiday.de-CH22.name=Josefstag
holiday.de-CH22.date=20220319 holiday.de-CH22.date=20160319
holiday.de-CH23.name=Karfreitag holiday.de-CH23.name=Karfreitag
holiday.de-CH23.date=20220415 holiday.de-CH23.date=20160325
holiday.de-CH24.name=Ostersonntag holiday.de-CH24.name=Ostersonntag
holiday.de-CH24.date=20220417 holiday.de-CH24.date=20160327
holiday.de-CH25.name=Ostermontag holiday.de-CH25.name=Ostermontag
holiday.de-CH25.date=20220418 holiday.de-CH25.date=20160328
holiday.de-CH26.name=Tag der Arbeit holiday.de-CH26.name=Tag der Arbeit
holiday.de-CH26.date=20220501 holiday.de-CH26.date=20160501
holiday.de-CH27.name=Auffahrt holiday.de-CH27.name=Auffahrt
holiday.de-CH27.date=20220526 holiday.de-CH27.date=20160505
holiday.de-CH28.name=Pfingstsonntag holiday.de-CH28.name=Pfingstsonntag
holiday.de-CH28.date=20220605 holiday.de-CH28.date=20160515
holiday.de-CH29.name=Pfingstmontag holiday.de-CH29.name=Pfingstmontag
holiday.de-CH29.date=20220606 holiday.de-CH29.date=20160516
holiday.de-CH30.name=Fronleichnam holiday.de-CH30.name=Fronleichnam
holiday.de-CH30.date=20220616 holiday.de-CH30.date=20160526
holiday.de-CH31.name=Bundesfeier holiday.de-CH31.name=Bundesfeier
holiday.de-CH31.date=20220801 holiday.de-CH31.date=20160801
holiday.de-CH32.name=Mariä Himmelfahrt holiday.de-CH32.name=Mariä Himmelfahrt
holiday.de-CH32.date=20220815 holiday.de-CH32.date=20160815
holiday.de-CH33.name=Allerheiligen holiday.de-CH33.name=Allerheiligen
holiday.de-CH33.date=20221101 holiday.de-CH33.date=20161101
holiday.de-CH34.name=Mariä Empfängnis holiday.de-CH34.name=Mariä Empfängnis
holiday.de-CH34.date=20221208 holiday.de-CH34.date=20161208
holiday.de-CH35.name=Weihnachtstag holiday.de-CH35.name=Weihnachtstag
holiday.de-CH35.date=20221225 holiday.de-CH35.date=20161225
holiday.de-CH36.name=Stephanstag holiday.de-CH36.name=Stephanstag
holiday.de-CH36.date=20221226 holiday.de-CH36.date=20161226

View File

@@ -1,9 +1,9 @@
############################################################################### ###############################################################################
# International Holiday Data provided by Holidata.net # International Holiday Data provided by Holidata.net
# https://holidata.net/de-DE/2021.json # http://holidata.net/de-DE/2015.json
# https://holidata.net/de-DE/2022.json # http://holidata.net/de-DE/2016.json
# #
# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez. # Copyright 2006 - 2016, Paul Beckingham, Federico Hernandez.
# #
# Permission is hereby granted, free of charge, to any person obtaining a copy # Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal # of this software and associated documentation files (the "Software"), to deal
@@ -23,87 +23,83 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE. # SOFTWARE.
# #
# https://www.opensource.org/licenses/mit-license.php # http://www.opensource.org/licenses/mit-license.php
# #
############################################################################### ###############################################################################
holiday.de-DE1.name=Neujahr holiday.de-DE1.name=Neujahr
holiday.de-DE1.date=20210101 holiday.de-DE1.date=20150101
holiday.de-DE2.name=Heilige drei Könige holiday.de-DE2.name=Heilige drei Könige
holiday.de-DE2.date=20210106 holiday.de-DE2.date=20150106
holiday.de-DE3.name=Internationaler Frauentag holiday.de-DE3.name=Karfreitag
holiday.de-DE3.date=20210308 holiday.de-DE3.date=20150403
holiday.de-DE4.name=Karfreitag holiday.de-DE4.name=Ostern
holiday.de-DE4.date=20210402 holiday.de-DE4.date=20150405
holiday.de-DE5.name=Ostern holiday.de-DE5.name=Ostermontag
holiday.de-DE5.date=20210404 holiday.de-DE5.date=20150406
holiday.de-DE6.name=Ostermontag holiday.de-DE6.name=Erster Maifeiertag
holiday.de-DE6.date=20210405 holiday.de-DE6.date=20150501
holiday.de-DE7.name=Erster Maifeiertag holiday.de-DE7.name=Christi Himmelfahrt
holiday.de-DE7.date=20210501 holiday.de-DE7.date=20150514
holiday.de-DE8.name=Christi Himmelfahrt holiday.de-DE8.name=Pfingstsonntag
holiday.de-DE8.date=20210513 holiday.de-DE8.date=20150524
holiday.de-DE9.name=Pfingstsonntag holiday.de-DE9.name=Pfingstmontag
holiday.de-DE9.date=20210523 holiday.de-DE9.date=20150525
holiday.de-DE10.name=Pfingstmontag holiday.de-DE10.name=Fronleichnam
holiday.de-DE10.date=20210524 holiday.de-DE10.date=20150604
holiday.de-DE11.name=Fronleichnam holiday.de-DE11.name=Mariä Himmelfahrt
holiday.de-DE11.date=20210603 holiday.de-DE11.date=20150815
holiday.de-DE12.name=Mariä Himmelfahrt holiday.de-DE12.name=Tag der Deutschen Einheit
holiday.de-DE12.date=20210815 holiday.de-DE12.date=20151003
holiday.de-DE13.name=Tag der Deutschen Einheit holiday.de-DE13.name=Reformationstag
holiday.de-DE13.date=20211003 holiday.de-DE13.date=20151031
holiday.de-DE14.name=Reformationstag holiday.de-DE14.name=Allerheiligen
holiday.de-DE14.date=20211031 holiday.de-DE14.date=20151101
holiday.de-DE15.name=Allerheiligen holiday.de-DE15.name=Buß- und Bettag
holiday.de-DE15.date=20211101 holiday.de-DE15.date=20151118
holiday.de-DE16.name=Buß- und Bettag holiday.de-DE16.name=Heilig Abend
holiday.de-DE16.date=20211117 holiday.de-DE16.date=20151224
holiday.de-DE17.name=Heilig Abend holiday.de-DE17.name=Weihnachtstag
holiday.de-DE17.date=20211224 holiday.de-DE17.date=20151225
holiday.de-DE18.name=Weihnachtstag holiday.de-DE18.name=Zweiter Weihnachtstag
holiday.de-DE18.date=20211225 holiday.de-DE18.date=20151226
holiday.de-DE19.name=Zweiter Weihnachtstag holiday.de-DE19.name=Silvester
holiday.de-DE19.date=20211226 holiday.de-DE19.date=20151231
holiday.de-DE20.name=Silvester holiday.de-DE20.name=Neujahr
holiday.de-DE20.date=20211231 holiday.de-DE20.date=20160101
holiday.de-DE21.name=Neujahr holiday.de-DE21.name=Heilige drei Könige
holiday.de-DE21.date=20220101 holiday.de-DE21.date=20160106
holiday.de-DE22.name=Heilige drei Könige holiday.de-DE22.name=Karfreitag
holiday.de-DE22.date=20220106 holiday.de-DE22.date=20160325
holiday.de-DE23.name=Internationaler Frauentag holiday.de-DE23.name=Ostern
holiday.de-DE23.date=20220308 holiday.de-DE23.date=20160327
holiday.de-DE24.name=Karfreitag holiday.de-DE24.name=Ostermontag
holiday.de-DE24.date=20220415 holiday.de-DE24.date=20160328
holiday.de-DE25.name=Ostern holiday.de-DE25.name=Erster Maifeiertag
holiday.de-DE25.date=20220417 holiday.de-DE25.date=20160501
holiday.de-DE26.name=Ostermontag holiday.de-DE26.name=Christi Himmelfahrt
holiday.de-DE26.date=20220418 holiday.de-DE26.date=20160505
holiday.de-DE27.name=Erster Maifeiertag holiday.de-DE27.name=Pfingstsonntag
holiday.de-DE27.date=20220501 holiday.de-DE27.date=20160515
holiday.de-DE28.name=Christi Himmelfahrt holiday.de-DE28.name=Pfingstmontag
holiday.de-DE28.date=20220526 holiday.de-DE28.date=20160516
holiday.de-DE29.name=Pfingstsonntag holiday.de-DE29.name=Fronleichnam
holiday.de-DE29.date=20220605 holiday.de-DE29.date=20160526
holiday.de-DE30.name=Pfingstmontag holiday.de-DE30.name=Mariä Himmelfahrt
holiday.de-DE30.date=20220606 holiday.de-DE30.date=20160815
holiday.de-DE31.name=Fronleichnam holiday.de-DE31.name=Tag der Deutschen Einheit
holiday.de-DE31.date=20220616 holiday.de-DE31.date=20161003
holiday.de-DE32.name=Mariä Himmelfahrt holiday.de-DE32.name=Reformationstag
holiday.de-DE32.date=20220815 holiday.de-DE32.date=20161031
holiday.de-DE33.name=Tag der Deutschen Einheit holiday.de-DE33.name=Allerheiligen
holiday.de-DE33.date=20221003 holiday.de-DE33.date=20161101
holiday.de-DE34.name=Reformationstag holiday.de-DE34.name=Buß- und Bettag
holiday.de-DE34.date=20221031 holiday.de-DE34.date=20161116
holiday.de-DE35.name=Allerheiligen holiday.de-DE35.name=Heilig Abend
holiday.de-DE35.date=20221101 holiday.de-DE35.date=20161224
holiday.de-DE36.name=Buß- und Bettag holiday.de-DE36.name=Weihnachtstag
holiday.de-DE36.date=20221116 holiday.de-DE36.date=20161225
holiday.de-DE37.name=Heilig Abend holiday.de-DE37.name=Zweiter Weihnachtstag
holiday.de-DE37.date=20221224 holiday.de-DE37.date=20161226
holiday.de-DE38.name=Weihnachtstag holiday.de-DE38.name=Silvester
holiday.de-DE38.date=20221225 holiday.de-DE38.date=20161231
holiday.de-DE39.name=Zweiter Weihnachtstag
holiday.de-DE39.date=20221226
holiday.de-DE40.name=Silvester
holiday.de-DE40.date=20221231

View File

@@ -1,9 +1,9 @@
############################################################################### ###############################################################################
# International Holiday Data provided by Holidata.net # International Holiday Data provided by Holidata.net
# https://holidata.net/el-GR/2021.json # http://holidata.net/el-GR/2015.json
# https://holidata.net/el-GR/2022.json # http://holidata.net/el-GR/2016.json
# #
# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez. # Copyright 2006 - 2016, Paul Beckingham, Federico Hernandez.
# #
# Permission is hereby granted, free of charge, to any person obtaining a copy # Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal # of this software and associated documentation files (the "Software"), to deal
@@ -23,63 +23,63 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE. # SOFTWARE.
# #
# https://www.opensource.org/licenses/mit-license.php # http://www.opensource.org/licenses/mit-license.php
# #
############################################################################### ###############################################################################
holiday.el-GR1.name=Πρωτοχρονιά holiday.el-GR1.name=Πρωτοχρονιά
holiday.el-GR1.date=20210101 holiday.el-GR1.date=20150101
holiday.el-GR2.name=Θεοφάνεια holiday.el-GR2.name=Θεοφάνεια
holiday.el-GR2.date=20210106 holiday.el-GR2.date=20150106
holiday.el-GR3.name=Καθαρά Δευτέρα holiday.el-GR3.name=Καθαρά Δευτέρα
holiday.el-GR3.date=20210315 holiday.el-GR3.date=20150223
holiday.el-GR4.name=Ευαγγελισμός της Θεοτόκου και Εθνική Ημέρα Ανεξαρτησίας της Ελλάδας holiday.el-GR4.name=Ευαγγελισμός της Θεοτόκου και Εθνική Ημέρα Ανεξαρτησίας της Ελλάδας
holiday.el-GR4.date=20210325 holiday.el-GR4.date=20150325
holiday.el-GR5.name=Μεγάλη Παρασκευή holiday.el-GR5.name=Πρωτομαγιά
holiday.el-GR5.date=20210430 holiday.el-GR5.date=20150418
holiday.el-GR6.name=Μεγάλο Σάββατο holiday.el-GR6.name=Μεγάλη Παρασκευή
holiday.el-GR6.date=20210501 holiday.el-GR6.date=20150410
holiday.el-GR7.name=Πρωτομαγιά holiday.el-GR7.name=Μεγάλο Σάββατο
holiday.el-GR7.date=20210501 holiday.el-GR7.date=20150411
holiday.el-GR8.name=Πάσχα holiday.el-GR8.name=Πάσχα
holiday.el-GR8.date=20210502 holiday.el-GR8.date=20150412
holiday.el-GR9.name=Δευτέρα του Πάσχα holiday.el-GR9.name=Δευτέρα του Πάσχα
holiday.el-GR9.date=20210503 holiday.el-GR9.date=20150413
holiday.el-GR10.name=Δευτέρα του Αγίου Πνεύματος holiday.el-GR10.name=Δευτέρα του Αγίου Πνεύματος
holiday.el-GR10.date=20210621 holiday.el-GR10.date=20150601
holiday.el-GR11.name=Κοίμηση της Θεοτόκου holiday.el-GR11.name=Κοίμηση της Θεοτόκου
holiday.el-GR11.date=20210815 holiday.el-GR11.date=20150815
holiday.el-GR12.name=Ημέρα του ΌΧΙ holiday.el-GR12.name=Ημέρα του ΌΧΙ
holiday.el-GR12.date=20211028 holiday.el-GR12.date=20151028
holiday.el-GR13.name=Χριστούγεννα holiday.el-GR13.name=Χριστούγεννα
holiday.el-GR13.date=20211225 holiday.el-GR13.date=20151225
holiday.el-GR14.name=Επόμενη ημέρα Χριστουγέννων holiday.el-GR14.name=Επόμενη ημέρα Χριστουγέννων
holiday.el-GR14.date=20211226 holiday.el-GR14.date=20151226
holiday.el-GR15.name=Πρωτοχρονιά holiday.el-GR15.name=Πρωτοχρονιά
holiday.el-GR15.date=20220101 holiday.el-GR15.date=20160101
holiday.el-GR16.name=Θεοφάνεια holiday.el-GR16.name=Θεοφάνεια
holiday.el-GR16.date=20220106 holiday.el-GR16.date=20160106
holiday.el-GR17.name=Καθαρά Δευτέρα holiday.el-GR17.name=Καθαρά Δευτέρα
holiday.el-GR17.date=20220307 holiday.el-GR17.date=20160314
holiday.el-GR18.name=Ευαγγελισμός της Θεοτόκου και Εθνική Ημέρα Ανεξαρτησίας της Ελλάδας holiday.el-GR18.name=Ευαγγελισμός της Θεοτόκου και Εθνική Ημέρα Ανεξαρτησίας της Ελλάδας
holiday.el-GR18.date=20220325 holiday.el-GR18.date=20160325
holiday.el-GR19.name=Μεγάλη Παρασκευή holiday.el-GR19.name=Πρωτομαγιά
holiday.el-GR19.date=20220422 holiday.el-GR19.date=20160418
holiday.el-GR20.name=Μεγάλο Σάββατο holiday.el-GR20.name=Μεγάλη Παρασκευή
holiday.el-GR20.date=20220423 holiday.el-GR20.date=20160429
holiday.el-GR21.name=Πάσχα holiday.el-GR21.name=Μεγάλο Σάββατο
holiday.el-GR21.date=20220424 holiday.el-GR21.date=20160430
holiday.el-GR22.name=Δευτέρα του Πάσχα holiday.el-GR22.name=Πάσχα
holiday.el-GR22.date=20220425 holiday.el-GR22.date=20160501
holiday.el-GR23.name=Πρωτομαγιά holiday.el-GR23.name=Δευτέρα του Πάσχα
holiday.el-GR23.date=20220501 holiday.el-GR23.date=20160502
holiday.el-GR24.name=Δευτέρα του Αγίου Πνεύματος holiday.el-GR24.name=Δευτέρα του Αγίου Πνεύματος
holiday.el-GR24.date=20220613 holiday.el-GR24.date=20160620
holiday.el-GR25.name=Κοίμηση της Θεοτόκου holiday.el-GR25.name=Κοίμηση της Θεοτόκου
holiday.el-GR25.date=20220815 holiday.el-GR25.date=20160815
holiday.el-GR26.name=Ημέρα του ΌΧΙ holiday.el-GR26.name=Ημέρα του ΌΧΙ
holiday.el-GR26.date=20221028 holiday.el-GR26.date=20161028
holiday.el-GR27.name=Χριστούγεννα holiday.el-GR27.name=Χριστούγεννα
holiday.el-GR27.date=20221225 holiday.el-GR27.date=20161225
holiday.el-GR28.name=Επόμενη ημέρα Χριστουγέννων holiday.el-GR28.name=Επόμενη ημέρα Χριστουγέννων
holiday.el-GR28.date=20221226 holiday.el-GR28.date=20161226

119
doc/rc/holidays.en-AU.rc Normal file
View File

@@ -0,0 +1,119 @@
###############################################################################
# International Holiday Data provided by Holidata.net
# http://holidata.net/en-AU/2015.json
# http://holidata.net/en-AU/2016.json
#
# Copyright 2006 - 2016, 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.
#
# http://www.opensource.org/licenses/mit-license.php
#
###############################################################################
holiday.en-AU1.name=New Year's Day
holiday.en-AU1.date=20150101
holiday.en-AU2.name=Australia Day
holiday.en-AU2.date=20150126
holiday.en-AU3.name=Royal Hobart Regatta
holiday.en-AU3.date=20150209
holiday.en-AU4.name=Labour Day
holiday.en-AU4.date=20150302
holiday.en-AU5.name=Labour Day
holiday.en-AU5.date=20150309
holiday.en-AU6.name=Canberra Day
holiday.en-AU6.date=20150309
holiday.en-AU7.name=Eight Hours Day
holiday.en-AU7.date=20150309
holiday.en-AU8.name=Good Friday
holiday.en-AU8.date=20150403
holiday.en-AU9.name=Easter Saturday
holiday.en-AU9.date=20150404
holiday.en-AU10.name=Easter Sunday
holiday.en-AU10.date=20150405
holiday.en-AU11.name=Easter Monday
holiday.en-AU11.date=20150406
holiday.en-AU12.name=Anzac Day
holiday.en-AU12.date=20150425
holiday.en-AU13.name=May Day
holiday.en-AU13.date=20150504
holiday.en-AU14.name=Foundation Day
holiday.en-AU14.date=20150601
holiday.en-AU15.name=Queen's Birthday
holiday.en-AU15.date=20150608
holiday.en-AU16.name=Picnic Day
holiday.en-AU16.date=20150803
holiday.en-AU17.name=Bank Holiday
holiday.en-AU17.date=20150803
holiday.en-AU18.name=Queen's Birthday
holiday.en-AU18.date=20150928
holiday.en-AU19.name=Labour Day
holiday.en-AU19.date=20151005
holiday.en-AU20.name=Recreation Day
holiday.en-AU20.date=20151102
holiday.en-AU21.name=Christmas Day
holiday.en-AU21.date=20151225
holiday.en-AU22.name=Boxing Day
holiday.en-AU22.date=20151226
holiday.en-AU23.name=Proclamation Day
holiday.en-AU23.date=20151226
holiday.en-AU24.name=New Year's Day
holiday.en-AU24.date=20160101
holiday.en-AU25.name=Australia Day
holiday.en-AU25.date=20160126
holiday.en-AU26.name=Royal Hobart Regatta
holiday.en-AU26.date=20160208
holiday.en-AU27.name=Labour Day
holiday.en-AU27.date=20160307
holiday.en-AU28.name=Labour Day
holiday.en-AU28.date=20160314
holiday.en-AU29.name=Canberra Day
holiday.en-AU29.date=20160314
holiday.en-AU30.name=Eight Hours Day
holiday.en-AU30.date=20160314
holiday.en-AU31.name=Good Friday
holiday.en-AU31.date=20160325
holiday.en-AU32.name=Easter Saturday
holiday.en-AU32.date=20160326
holiday.en-AU33.name=Easter Monday
holiday.en-AU33.date=20160327
holiday.en-AU34.name=Anzac Day
holiday.en-AU34.date=20160425
holiday.en-AU35.name=May Day
holiday.en-AU35.date=20160502
holiday.en-AU36.name=Foundation Day
holiday.en-AU36.date=20160603
holiday.en-AU37.name=Queen's Birthday
holiday.en-AU37.date=20160613
holiday.en-AU38.name=Picnic Day
holiday.en-AU38.date=20160801
holiday.en-AU39.name=Bank Holiday
holiday.en-AU39.date=20160801
holiday.en-AU40.name=Queen's Birthday
holiday.en-AU40.date=20160926
holiday.en-AU41.name=Labour Day
holiday.en-AU41.date=20161003
holiday.en-AU42.name=Recreation Day
holiday.en-AU42.date=20161107
holiday.en-AU43.name=Christmas Day
holiday.en-AU43.date=20161225
holiday.en-AU44.name=Boxing Day
holiday.en-AU44.date=20161226
holiday.en-AU45.name=Proclamation Day
holiday.en-AU45.date=20161226

View File

@@ -1,9 +1,9 @@
############################################################################### ###############################################################################
# International Holiday Data provided by Holidata.net # International Holiday Data provided by Holidata.net
# https://holidata.net/en-CA/2021.json # http://holidata.net/en-CA/2015.json
# https://holidata.net/en-CA/2022.json # http://holidata.net/en-CA/2016.json
# #
# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez. # Copyright 2006 - 2016, Paul Beckingham, Federico Hernandez.
# #
# Permission is hereby granted, free of charge, to any person obtaining a copy # Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal # of this software and associated documentation files (the "Software"), to deal
@@ -23,83 +23,55 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE. # SOFTWARE.
# #
# https://www.opensource.org/licenses/mit-license.php # http://www.opensource.org/licenses/mit-license.php
# #
############################################################################### ###############################################################################
holiday.en-CA1.name=New Year's Day holiday.en-CA1.name=New Year's Day
holiday.en-CA1.date=20210101 holiday.en-CA1.date=20150101
holiday.en-CA2.name=Family Day holiday.en-CA2.name=Family Day
holiday.en-CA2.date=20210215 holiday.en-CA2.date=20150209
holiday.en-CA3.name=Louis Riel Day holiday.en-CA3.name=Good Friday
holiday.en-CA3.date=20210215 holiday.en-CA3.date=20150403
holiday.en-CA4.name=Islander Day holiday.en-CA4.name=Easter Monday
holiday.en-CA4.date=20210215 holiday.en-CA4.date=20150406
holiday.en-CA5.name=Good Friday holiday.en-CA5.name=Victoria Day
holiday.en-CA5.date=20210402 holiday.en-CA5.date=20150518
holiday.en-CA6.name=Easter Monday holiday.en-CA6.name=Canada Day
holiday.en-CA6.date=20210405 holiday.en-CA6.date=20150701
holiday.en-CA7.name=National Patriots' Day holiday.en-CA7.name=First Monday of August
holiday.en-CA7.date=20210524 holiday.en-CA7.date=20150803
holiday.en-CA8.name=Victoria Day holiday.en-CA8.name=Labour Day
holiday.en-CA8.date=20210524 holiday.en-CA8.date=20150907
holiday.en-CA9.name=National Holiday holiday.en-CA9.name=Thanksgiving Day
holiday.en-CA9.date=20210624 holiday.en-CA9.date=20151012
holiday.en-CA10.name=Canada Day holiday.en-CA10.name=Remembrance Day
holiday.en-CA10.date=20210701 holiday.en-CA10.date=20151111
holiday.en-CA11.name=August Civic Holiday holiday.en-CA11.name=Christmas Day
holiday.en-CA11.date=20210802 holiday.en-CA11.date=20151225
holiday.en-CA12.name=Saskatchewan Day holiday.en-CA12.name=Boxing Day
holiday.en-CA12.date=20210802 holiday.en-CA12.date=20151226
holiday.en-CA13.name=Heritage Day holiday.en-CA13.name=New Year's Day
holiday.en-CA13.date=20210802 holiday.en-CA13.date=20160101
holiday.en-CA14.name=New Brunswick Day holiday.en-CA14.name=Family Day
holiday.en-CA14.date=20210802 holiday.en-CA14.date=20160208
holiday.en-CA15.name=Labour Day holiday.en-CA15.name=Good Friday
holiday.en-CA15.date=20210906 holiday.en-CA15.date=20160325
holiday.en-CA16.name=Thanksgiving Day holiday.en-CA16.name=Easter Monday
holiday.en-CA16.date=20211011 holiday.en-CA16.date=20160328
holiday.en-CA17.name=Remembrance Day holiday.en-CA17.name=Victoria Day
holiday.en-CA17.date=20211111 holiday.en-CA17.date=20160523
holiday.en-CA18.name=Christmas Day holiday.en-CA18.name=Canada Day
holiday.en-CA18.date=20211225 holiday.en-CA18.date=20160701
holiday.en-CA19.name=Boxing Day holiday.en-CA19.name=First Monday of August
holiday.en-CA19.date=20211226 holiday.en-CA19.date=20160801
holiday.en-CA20.name=New Year's Day holiday.en-CA20.name=Labour Day
holiday.en-CA20.date=20220101 holiday.en-CA20.date=20160905
holiday.en-CA21.name=Family Day holiday.en-CA21.name=Thanksgiving Day
holiday.en-CA21.date=20220221 holiday.en-CA21.date=20161010
holiday.en-CA22.name=Louis Riel Day holiday.en-CA22.name=Remembrance Day
holiday.en-CA22.date=20220221 holiday.en-CA22.date=20161111
holiday.en-CA23.name=Islander Day holiday.en-CA23.name=Christmas Day
holiday.en-CA23.date=20220221 holiday.en-CA23.date=20161225
holiday.en-CA24.name=Good Friday holiday.en-CA24.name=Boxing Day
holiday.en-CA24.date=20220415 holiday.en-CA24.date=20161226
holiday.en-CA25.name=Easter Monday
holiday.en-CA25.date=20220418
holiday.en-CA26.name=National Patriots' Day
holiday.en-CA26.date=20220523
holiday.en-CA27.name=Victoria Day
holiday.en-CA27.date=20220523
holiday.en-CA28.name=National Holiday
holiday.en-CA28.date=20220624
holiday.en-CA29.name=Canada Day
holiday.en-CA29.date=20220701
holiday.en-CA30.name=August Civic Holiday
holiday.en-CA30.date=20220801
holiday.en-CA31.name=Saskatchewan Day
holiday.en-CA31.date=20220801
holiday.en-CA32.name=Heritage Day
holiday.en-CA32.date=20220801
holiday.en-CA33.name=New Brunswick Day
holiday.en-CA33.date=20220801
holiday.en-CA34.name=Labour Day
holiday.en-CA34.date=20220905
holiday.en-CA35.name=Thanksgiving Day
holiday.en-CA35.date=20221010
holiday.en-CA36.name=Remembrance Day
holiday.en-CA36.date=20221111
holiday.en-CA37.name=Christmas Day
holiday.en-CA37.date=20221225
holiday.en-CA38.name=Boxing Day
holiday.en-CA38.date=20221226

View File

@@ -1,9 +1,9 @@
############################################################################### ###############################################################################
# International Holiday Data provided by Holidata.net # International Holiday Data provided by Holidata.net
# https://holidata.net/en-GB/2021.json # http://holidata.net/en-GB/2015.json
# https://holidata.net/en-GB/2022.json # http://holidata.net/en-GB/2016.json
# #
# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez. # Copyright 2006 - 2016, Paul Beckingham, Federico Hernandez.
# #
# Permission is hereby granted, free of charge, to any person obtaining a copy # Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal # of this software and associated documentation files (the "Software"), to deal
@@ -23,47 +23,39 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE. # SOFTWARE.
# #
# https://www.opensource.org/licenses/mit-license.php # http://www.opensource.org/licenses/mit-license.php
# #
############################################################################### ###############################################################################
holiday.en-GB1.name=New Year's Day holiday.en-GB1.name=New Year's Day
holiday.en-GB1.date=20210101 holiday.en-GB1.date=20150101
holiday.en-GB2.name=Good Friday holiday.en-GB2.name=Good Friday
holiday.en-GB2.date=20210402 holiday.en-GB2.date=20150403
holiday.en-GB3.name=Easter Monday holiday.en-GB3.name=Easter Monday
holiday.en-GB3.date=20210405 holiday.en-GB3.date=20150406
holiday.en-GB4.name=Early May Bank Holiday holiday.en-GB4.name=Early May Bank Holiday
holiday.en-GB4.date=20210503 holiday.en-GB4.date=20150504
holiday.en-GB5.name=Spring Bank Holiday holiday.en-GB5.name=Spring Bank Holiday
holiday.en-GB5.date=20210531 holiday.en-GB5.date=20150525
holiday.en-GB6.name=August Bank Holiday holiday.en-GB6.name=August Bank Holiday
holiday.en-GB6.date=20210830 holiday.en-GB6.date=20150831
holiday.en-GB7.name=Christmas Day holiday.en-GB7.name=Christmas Day
holiday.en-GB7.date=20211225 holiday.en-GB7.date=20151225
holiday.en-GB8.name=Boxing Day holiday.en-GB8.name=Boxing Day
holiday.en-GB8.date=20211226 holiday.en-GB8.date=20151226
holiday.en-GB9.name=Christmas Day (observed) holiday.en-GB9.name=New Year's Day
holiday.en-GB9.date=20211227 holiday.en-GB9.date=20160101
holiday.en-GB10.name=Boxing Day (observed) holiday.en-GB10.name=Good Friday
holiday.en-GB10.date=20211228 holiday.en-GB10.date=20160325
holiday.en-GB11.name=New Year's Day holiday.en-GB11.name=Easter Monday
holiday.en-GB11.date=20220101 holiday.en-GB11.date=20160328
holiday.en-GB12.name=New Year's Day (observed) holiday.en-GB12.name=Early May Bank Holiday
holiday.en-GB12.date=20220103 holiday.en-GB12.date=20160502
holiday.en-GB13.name=Good Friday holiday.en-GB13.name=Spring Bank Holiday
holiday.en-GB13.date=20220415 holiday.en-GB13.date=20160530
holiday.en-GB14.name=Easter Monday holiday.en-GB14.name=August Bank Holiday
holiday.en-GB14.date=20220418 holiday.en-GB14.date=20160829
holiday.en-GB15.name=Early May Bank Holiday holiday.en-GB15.name=Christmas Day
holiday.en-GB15.date=20220502 holiday.en-GB15.date=20161225
holiday.en-GB16.name=Spring Bank Holiday holiday.en-GB16.name=Boxing Day
holiday.en-GB16.date=20220530 holiday.en-GB16.date=20161226
holiday.en-GB17.name=August Bank Holiday
holiday.en-GB17.date=20220829
holiday.en-GB18.name=Christmas Day
holiday.en-GB18.date=20221225
holiday.en-GB19.name=Boxing Day
holiday.en-GB19.date=20221226
holiday.en-GB20.name=Christmas Day (observed)
holiday.en-GB20.date=20221227

81
doc/rc/holidays.en-GL.rc Normal file
View File

@@ -0,0 +1,81 @@
###############################################################################
# International Holiday Data provided by Holidata.net
# http://holidata.net/en-GL/2015.json
# http://holidata.net/en-GL/2016.json
#
# Copyright 2006 - 2016, 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.
#
# http://www.opensource.org/licenses/mit-license.php
#
###############################################################################
holiday.en-GL1.name=New Year's Day
holiday.en-GL1.date=20150101
holiday.en-GL2.name=Epiphany
holiday.en-GL2.date=20150106
holiday.en-GL3.name=Maundy Thursday
holiday.en-GL3.date=20150402
holiday.en-GL4.name=Good Friday
holiday.en-GL4.date=20150303
holiday.en-GL5.name=Easter Monday
holiday.en-GL5.date=20150406
holiday.en-GL6.name=General Prayer Day
holiday.en-GL6.date=20150501
holiday.en-GL7.name=Ascension
holiday.en-GL7.date=20150514
holiday.en-GL8.name=Whit Monday
holiday.en-GL8.date=20150525
holiday.en-GL9.name=Ullortuneq
holiday.en-GL9.date=20150621
holiday.en-GL10.name=Christmas Eve
holiday.en-GL10.date=20151224
holiday.en-GL11.name=Christmas Day
holiday.en-GL11.date=20151225
holiday.en-GL12.name=St Stephen's Day
holiday.en-GL12.date=20151226
holiday.en-GL13.name=New Year's Eve
holiday.en-GL13.date=20151231
holiday.en-GL14.name=New Year's Day
holiday.en-GL14.date=20160101
holiday.en-GL15.name=Epiphany
holiday.en-GL15.date=20160106
holiday.en-GL16.name=Maundy Thursday
holiday.en-GL16.date=20160324
holiday.en-GL17.name=Good Friday
holiday.en-GL17.date=20160325
holiday.en-GL18.name=Easter Monday
holiday.en-GL18.date=20160428
holiday.en-GL19.name=General Prayer Day
holiday.en-GL19.date=20160422
holiday.en-GL20.name=Ascension
holiday.en-GL20.date=20160505
holiday.en-GL21.name=Whit Monday
holiday.en-GL21.date=20160516
holiday.en-GL22.name=Ullortuneq
holiday.en-GL22.date=20160621
holiday.en-GL23.name=Christmas Eve
holiday.en-GL23.date=20161224
holiday.en-GL24.name=Christmas Day
holiday.en-GL24.date=20161225
holiday.en-GL25.name=St Stephen's Day
holiday.en-GL25.date=20161226
holiday.en-GL26.name=New Year's Eve
holiday.en-GL26.date=20161231

95
doc/rc/holidays.en-HK.rc Normal file
View File

@@ -0,0 +1,95 @@
###############################################################################
# International Holiday Data provided by Holidata.net
# http://holidata.net/en-HK/2015.json
# http://holidata.net/en-HK/2016.json
#
# Copyright 2006 - 2016, 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.
#
# http://www.opensource.org/licenses/mit-license.php
#
###############################################################################
holiday.en-HK1.name=The first day of January
holiday.en-HK1.date=20150101
holiday.en-HK2.name=Lunar New Years Day
holiday.en-HK2.date=20150219
holiday.en-HK3.name=The second day of Lunar New Year
holiday.en-HK3.date=20150220
holiday.en-HK4.name=The third day of Lunar New Year
holiday.en-HK4.date=20150221
holiday.en-HK5.name=Good Friday
holiday.en-HK5.date=20150403
holiday.en-HK6.name=The day following Good Friday
holiday.en-HK6.date=20150404
holiday.en-HK7.name=The day following Ching Ming Festival
holiday.en-HK7.date=20150406
holiday.en-HK8.name=The day following Easter Monday
holiday.en-HK8.date=20150407
holiday.en-HK9.name=Labour Day
holiday.en-HK9.date=20150501
holiday.en-HK10.name=The Birthday of the Buddha
holiday.en-HK10.date=20150525
holiday.en-HK11.name=Tuen Ng Festival
holiday.en-HK11.date=20150620
holiday.en-HK12.name=Hong Kong Special Administrative Region Establishment Day
holiday.en-HK12.date=20150701
holiday.en-HK13.name=The day following the Chinese Mid-Autumn Festival
holiday.en-HK13.date=20150928
holiday.en-HK14.name=National Day
holiday.en-HK14.date=20151001
holiday.en-HK15.name=Chung Yeung Festival
holiday.en-HK15.date=20151021
holiday.en-HK16.name=Christmas Day
holiday.en-HK16.date=20151225
holiday.en-HK17.name=The first weekday after Christmas Day
holiday.en-HK17.date=20151226
holiday.en-HK18.name=The first day of January
holiday.en-HK18.date=20160101
holiday.en-HK19.name=Lunar New Years Day
holiday.en-HK19.date=20160208
holiday.en-HK20.name=The second day of Lunar New Year
holiday.en-HK20.date=20160209
holiday.en-HK21.name=The third day of Lunar New Year
holiday.en-HK21.date=20160210
holiday.en-HK22.name=Good Friday
holiday.en-HK22.date=20160325
holiday.en-HK23.name=The day following Good Friday
holiday.en-HK23.date=20160326
holiday.en-HK24.name=Ching Ming Festival
holiday.en-HK24.date=20160404
holiday.en-HK25.name=Labour Day
holiday.en-HK25.date=20160501
holiday.en-HK26.name=The Birthday of the Buddha
holiday.en-HK26.date=20160514
holiday.en-HK27.name=Tuen Ng Festival
holiday.en-HK27.date=20160609
holiday.en-HK28.name=Hong Kong Special Administrative Region Establishment Day
holiday.en-HK28.date=20160701
holiday.en-HK29.name=The day following the Chinese Mid-Autumn Festival
holiday.en-HK29.date=20160916
holiday.en-HK30.name=National Day
holiday.en-HK30.date=20161001
holiday.en-HK31.name=Chung Yeung Festival
holiday.en-HK31.date=20161010
holiday.en-HK32.name=Christmas Day
holiday.en-HK32.date=20161225
holiday.en-HK33.name=The first weekday after Christmas Day
holiday.en-HK33.date=20161226

103
doc/rc/holidays.en-IN.rc Normal file
View File

@@ -0,0 +1,103 @@
###############################################################################
# International Holiday Data provided by Holidata.net
# http://holidata.net/en-IN/2015.json
# http://holidata.net/en-IN/2016.json
#
# Copyright 2006 - 2016, 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.
#
# http://www.opensource.org/licenses/mit-license.php
#
###############################################################################
holiday.en-IN1.name=New Year's Day
holiday.en-IN1.date=20160101
holiday.en-IN2.name=Lohri
holiday.en-IN2.date=20160114
holiday.en-IN3.name=Pongal, Makar Sankranti
holiday.en-IN3.date=20160115
holiday.en-IN4.name=Guru Gobind Singh Jayanti
holiday.en-IN4.date=20160116
holiday.en-IN5.name=Republic Day
holiday.en-IN5.date=20160126
holiday.en-IN6.name=Vasant Panchami
holiday.en-IN6.date=20160212
holiday.en-IN7.name=Guru Ravidas Jayanti
holiday.en-IN7.date=20160222
holiday.en-IN8.name=Maha Shivaratri
holiday.en-IN8.date=20160307
holiday.en-IN9.name=Chhoti Holi, Holika Dahan
holiday.en-IN9.date=20160323
holiday.en-IN10.name=Holi
holiday.en-IN10.date=20160324
holiday.en-IN11.name=Good Friday
holiday.en-IN11.date=20160325
holiday.en-IN12.name=Easter
holiday.en-IN12.date=20160327
holiday.en-IN13.name=Gudi Padwa, Ugadi
holiday.en-IN13.date=20160408
holiday.en-IN14.name=Solar New Year, Baisakhi
holiday.en-IN14.date=20160413
holiday.en-IN15.name=Rama Navami
holiday.en-IN15.date=20160415
holiday.en-IN16.name=Hazarat Ali's Birthday
holiday.en-IN16.date=20160421
holiday.en-IN17.name=Buddha Purnima
holiday.en-IN17.date=20160521
holiday.en-IN18.name=Eid al-Fitr , Ramadan
holiday.en-IN18.date=20160707
holiday.en-IN19.name=Independence Day
holiday.en-IN19.date=20160815
holiday.en-IN20.name=Rakhi, Raksha Bandhan
holiday.en-IN20.date=20160818
holiday.en-IN21.name=Krishna Janmashtami
holiday.en-IN21.date=20160825
holiday.en-IN22.name=Ganesh Chaturthi
holiday.en-IN22.date=20160905
holiday.en-IN23.name=Onam, Eid al-Adha, Bakrid
holiday.en-IN23.date=20160913
holiday.en-IN24.name=Gandhi Jayanti
holiday.en-IN24.date=20161002
holiday.en-IN25.name=Durga Ashtami
holiday.en-IN25.date=20161009
holiday.en-IN26.name=Maha Navami
holiday.en-IN26.date=20161010
holiday.en-IN27.name=Dussehra, Madhvacharya Jayanti
holiday.en-IN27.date=20161011
holiday.en-IN28.name=Muharram
holiday.en-IN28.date=20161012
holiday.en-IN29.name=Valmiki Jayanti
holiday.en-IN29.date=20161016
holiday.en-IN30.name=Karwa Chauth
holiday.en-IN30.date=20161019
holiday.en-IN31.name=Diwali, Lakshmi Puja
holiday.en-IN31.date=20161030
holiday.en-IN32.name=Gowardhan Puja
holiday.en-IN32.date=20161031
holiday.en-IN33.name=Bhaiya Dooj
holiday.en-IN33.date=20161101
holiday.en-IN34.name=Chhath Puja
holiday.en-IN34.date=20161106
holiday.en-IN35.name=Guru Nanak Jayanti, Nehru Jayanti
holiday.en-IN35.date=20161114
holiday.en-IN36.name=Milad an-Nabi, Id-e-Milad
holiday.en-IN36.date=20161212
holiday.en-IN37.name=Christmas
holiday.en-IN37.date=20161225

View File

@@ -1,9 +1,9 @@
############################################################################### ###############################################################################
# International Holiday Data provided by Holidata.net # International Holiday Data provided by Holidata.net
# https://holidata.net/en-NZ/2021.json # http://holidata.net/en-NZ/2015.json
# https://holidata.net/en-NZ/2022.json # http://holidata.net/en-NZ/2016.json
# #
# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez. # Copyright 2006 - 2016, Paul Beckingham, Federico Hernandez.
# #
# Permission is hereby granted, free of charge, to any person obtaining a copy # Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal # of this software and associated documentation files (the "Software"), to deal
@@ -23,61 +23,47 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE. # SOFTWARE.
# #
# https://www.opensource.org/licenses/mit-license.php # http://www.opensource.org/licenses/mit-license.php
# #
############################################################################### ###############################################################################
holiday.en-NZ1.name=New Year's Day holiday.en-NZ1.name=New Year's Day
holiday.en-NZ1.date=20210101 holiday.en-NZ1.date=20150101
holiday.en-NZ2.name=Day after New Year's Day holiday.en-NZ2.name=Day after New Years Day
holiday.en-NZ2.date=20210104 holiday.en-NZ2.date=20150102
holiday.en-NZ3.name=Waitangi Day holiday.en-NZ3.name=Waitangi Day
holiday.en-NZ3.date=20210206 holiday.en-NZ3.date=20150206
holiday.en-NZ4.name=Waitangi Day (observed) holiday.en-NZ4.name=Good Friday
holiday.en-NZ4.date=20210208 holiday.en-NZ4.date=20150403
holiday.en-NZ5.name=Good Friday holiday.en-NZ5.name=Easter Monday
holiday.en-NZ5.date=20210402 holiday.en-NZ5.date=20150406
holiday.en-NZ6.name=Easter Monday holiday.en-NZ6.name=ANZAC Day
holiday.en-NZ6.date=20210405 holiday.en-NZ6.date=20150425
holiday.en-NZ7.name=ANZAC Day holiday.en-NZ7.name=Queen's Birthday
holiday.en-NZ7.date=20210425 holiday.en-NZ7.date=20150601
holiday.en-NZ8.name=ANZAC Day (observed) holiday.en-NZ8.name=Labour Day
holiday.en-NZ8.date=20210426 holiday.en-NZ8.date=20151026
holiday.en-NZ9.name=Queen's Birthday holiday.en-NZ9.name=Christmas Day
holiday.en-NZ9.date=20210607 holiday.en-NZ9.date=20151225
holiday.en-NZ10.name=Labour Day holiday.en-NZ10.name=Boxing Day
holiday.en-NZ10.date=20211025 holiday.en-NZ10.date=20151226
holiday.en-NZ11.name=Christmas Day holiday.en-NZ11.name=New Year's Day
holiday.en-NZ11.date=20211225 holiday.en-NZ11.date=20160101
holiday.en-NZ12.name=Boxing Day holiday.en-NZ12.name=Day after New Years Day
holiday.en-NZ12.date=20211226 holiday.en-NZ12.date=20160104
holiday.en-NZ13.name=Christmas Day (observed) holiday.en-NZ13.name=Waitangi Day
holiday.en-NZ13.date=20211227 holiday.en-NZ13.date=20160206
holiday.en-NZ14.name=Boxing Day (observed) holiday.en-NZ14.name=Good Friday
holiday.en-NZ14.date=20211228 holiday.en-NZ14.date=20160325
holiday.en-NZ15.name=New Year's Day holiday.en-NZ15.name=Easter Monday
holiday.en-NZ15.date=20220101 holiday.en-NZ15.date=20160328
holiday.en-NZ16.name=New Year's Day (observed) holiday.en-NZ16.name=ANZAC Day
holiday.en-NZ16.date=20220103 holiday.en-NZ16.date=20160425
holiday.en-NZ17.name=Day after New Year's Day holiday.en-NZ17.name=Queen's Birthday
holiday.en-NZ17.date=20220104 holiday.en-NZ17.date=20160606
holiday.en-NZ18.name=Waitangi Day holiday.en-NZ18.name=Labour Day
holiday.en-NZ18.date=20220206 holiday.en-NZ18.date=20161024
holiday.en-NZ19.name=Waitangi Day (observed) holiday.en-NZ19.name=Christmas Day
holiday.en-NZ19.date=20220207 holiday.en-NZ19.date=20161225
holiday.en-NZ20.name=Good Friday holiday.en-NZ20.name=Boxing Day
holiday.en-NZ20.date=20220415 holiday.en-NZ20.date=20161226
holiday.en-NZ21.name=Easter Monday
holiday.en-NZ21.date=20220418
holiday.en-NZ22.name=ANZAC Day
holiday.en-NZ22.date=20220425
holiday.en-NZ23.name=Queen's Birthday
holiday.en-NZ23.date=20220606
holiday.en-NZ24.name=Labour Day
holiday.en-NZ24.date=20221024
holiday.en-NZ25.name=Christmas Day
holiday.en-NZ25.date=20221225
holiday.en-NZ26.name=Boxing Day
holiday.en-NZ26.date=20221226
holiday.en-NZ27.name=Christmas Day (observed)
holiday.en-NZ27.date=20221227

View File

@@ -1,9 +1,9 @@
############################################################################### ###############################################################################
# International Holiday Data provided by Holidata.net # International Holiday Data provided by Holidata.net
# https://holidata.net/en-US/2021.json # http://holidata.net/en-US/2015.json
# https://holidata.net/en-US/2022.json # http://holidata.net/en-US/2016.json
# #
# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez. # Copyright 2006 - 2016, Paul Beckingham, Federico Hernandez.
# #
# Permission is hereby granted, free of charge, to any person obtaining a copy # Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal # of this software and associated documentation files (the "Software"), to deal
@@ -23,55 +23,51 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE. # SOFTWARE.
# #
# https://www.opensource.org/licenses/mit-license.php # http://www.opensource.org/licenses/mit-license.php
# #
############################################################################### ###############################################################################
holiday.en-US1.name=New Year's Day holiday.en-US1.name=New Year's Day
holiday.en-US1.date=20210101 holiday.en-US1.date=20150101
holiday.en-US2.name=Birthday of Martin Luther King, Jr. holiday.en-US2.name=Birthday of Martin Luther King, Jr.
holiday.en-US2.date=20210118 holiday.en-US2.date=20150119
holiday.en-US3.name=Washington's Birthday holiday.en-US3.name=Washington's Birthday
holiday.en-US3.date=20210215 holiday.en-US3.date=20150216
holiday.en-US4.name=Patriots' Day holiday.en-US4.name=Patriots' Day
holiday.en-US4.date=20210419 holiday.en-US4.date=20150420
holiday.en-US5.name=Memorial Day holiday.en-US5.name=Memorial Day
holiday.en-US5.date=20210531 holiday.en-US5.date=20150525
holiday.en-US6.name=Independence Day holiday.en-US6.name=Independence Day
holiday.en-US6.date=20210704 holiday.en-US6.date=20150704
holiday.en-US7.name=Labor Day holiday.en-US7.name=Labor Day
holiday.en-US7.date=20210906 holiday.en-US7.date=20150907
holiday.en-US8.name=Columbus Day holiday.en-US8.name=Columbus Day
holiday.en-US8.date=20211011 holiday.en-US8.date=20151012
holiday.en-US9.name=Veterans Day holiday.en-US9.name=Veterans Day
holiday.en-US9.date=20211111 holiday.en-US9.date=20151111
holiday.en-US10.name=Thanksgiving Day holiday.en-US10.name=Thanksgiving Day
holiday.en-US10.date=20211125 holiday.en-US10.date=20151126
holiday.en-US11.name=Christmas Day holiday.en-US11.name=Christmas Day
holiday.en-US11.date=20211225 holiday.en-US11.date=20151225
holiday.en-US12.name=New Year's Day holiday.en-US12.name=New Year's Day
holiday.en-US12.date=20220101 holiday.en-US12.date=20160101
holiday.en-US13.name=Birthday of Martin Luther King, Jr. holiday.en-US13.name=Birthday of Martin Luther King, Jr.
holiday.en-US13.date=20220117 holiday.en-US13.date=20160118
holiday.en-US14.name=Washington's Birthday holiday.en-US14.name=Washington's Birthday
holiday.en-US14.date=20220221 holiday.en-US14.date=20160215
holiday.en-US15.name=Patriots' Day holiday.en-US15.name=Patriots' Day
holiday.en-US15.date=20220418 holiday.en-US15.date=20160418
holiday.en-US16.name=Memorial Day holiday.en-US16.name=Memorial Day
holiday.en-US16.date=20220530 holiday.en-US16.date=20160530
holiday.en-US17.name=Independence Day holiday.en-US17.name=Independence Day
holiday.en-US17.date=20220704 holiday.en-US17.date=20160704
holiday.en-US18.name=Labor Day holiday.en-US18.name=Labor Day
holiday.en-US18.date=20220905 holiday.en-US18.date=20160905
holiday.en-US19.name=Columbus Day holiday.en-US19.name=Columbus Day
holiday.en-US19.date=20221010 holiday.en-US19.date=20161010
holiday.en-US20.name=Veterans Day holiday.en-US20.name=Veterans Day
holiday.en-US20.date=20221111 holiday.en-US20.date=20161111
holiday.en-US21.name=Thanksgiving Day holiday.en-US21.name=Thanksgiving Day
holiday.en-US21.date=20221124 holiday.en-US21.date=20161124
holiday.en-US22.name=Day after Thanksgiving holiday.en-US22.name=Christmas Day
holiday.en-US22.date=20221125 holiday.en-US22.date=20161225
holiday.en-US23.name=Christmas Eve
holiday.en-US23.date=20221224
holiday.en-US24.name=Christmas Day
holiday.en-US24.date=20221225

77
doc/rc/holidays.en-ZA.rc Normal file
View File

@@ -0,0 +1,77 @@
###############################################################################
# International Holiday Data provided by Holidata.net
# http://holidata.net/en-ZA/2015.json
# http://holidata.net/en-ZA/2016.json
#
# Copyright 2006 - 2016, 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.
#
# http://www.opensource.org/licenses/mit-license.php
#
###############################################################################
holiday.en-ZA1.name=New Year's Day
holiday.en-ZA1.date=20150101
holiday.en-ZA2.name=Human Rights Day
holiday.en-ZA2.date=20150321
holiday.en-ZA3.name=Good Friday
holiday.en-ZA3.date=20150403
holiday.en-ZA4.name=Family Day
holiday.en-ZA4.date=20150406
holiday.en-ZA5.name=Freedom Day
holiday.en-ZA5.date=20150427
holiday.en-ZA6.name=Workers' Day
holiday.en-ZA6.date=20150501
holiday.en-ZA7.name=Youth Day
holiday.en-ZA7.date=20150616
holiday.en-ZA8.name=National Women's Day
holiday.en-ZA8.date=20150809
holiday.en-ZA9.name=Heritage Day
holiday.en-ZA9.date=20150924
holiday.en-ZA10.name=Day of Reconciliation
holiday.en-ZA10.date=20151217
holiday.en-ZA11.name=Christmas Day
holiday.en-ZA11.date=20151225
holiday.en-ZA12.name=Day of Goodwill
holiday.en-ZA12.date=20151226
holiday.en-ZA13.name=New Year's Day
holiday.en-ZA13.date=20160101
holiday.en-ZA14.name=Human Rights Day
holiday.en-ZA14.date=20160321
holiday.en-ZA15.name=Good Friday
holiday.en-ZA15.date=20160325
holiday.en-ZA16.name=Family Day
holiday.en-ZA16.date=20160328
holiday.en-ZA17.name=Freedom Day
holiday.en-ZA17.date=20160427
holiday.en-ZA18.name=Workers' Day
holiday.en-ZA18.date=20160501
holiday.en-ZA19.name=Youth Day
holiday.en-ZA19.date=20160616
holiday.en-ZA20.name=National Women's Day
holiday.en-ZA20.date=20160809
holiday.en-ZA21.name=Heritage Day
holiday.en-ZA21.date=20160924
holiday.en-ZA22.name=Day of Reconciliation
holiday.en-ZA22.date=20161217
holiday.en-ZA23.name=Christmas Day
holiday.en-ZA23.date=20161225
holiday.en-ZA24.name=Day of Goodwill
holiday.en-ZA24.date=20161226

View File

@@ -1,9 +1,9 @@
############################################################################### ###############################################################################
# International Holiday Data provided by Holidata.net # International Holiday Data provided by Holidata.net
# https://holidata.net/es-CO/2021.json # http://holidata.net/es-CO/2015.json
# https://holidata.net/es-CO/2022.json # http://holidata.net/es-CO/2016.json
# #
# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez. # Copyright 2006 - 2016, Paul Beckingham, Federico Hernandez.
# #
# Permission is hereby granted, free of charge, to any person obtaining a copy # Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal # of this software and associated documentation files (the "Software"), to deal
@@ -23,83 +23,83 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE. # SOFTWARE.
# #
# https://www.opensource.org/licenses/mit-license.php # http://www.opensource.org/licenses/mit-license.php
# #
############################################################################### ###############################################################################
holiday.es-CO1.name=Año Nuevo holiday.es-CO1.name=Año Nuevo
holiday.es-CO1.date=20210101 holiday.es-CO1.date=20150101
holiday.es-CO2.name=Día de los Reyes Magos holiday.es-CO2.name=Día de los Reyes Magos
holiday.es-CO2.date=20210111 holiday.es-CO2.date=20150112
holiday.es-CO3.name=Día de San José holiday.es-CO3.name=Día de San José
holiday.es-CO3.date=20210322 holiday.es-CO3.date=20150323
holiday.es-CO4.name=Jueves Santo holiday.es-CO4.name=Jueves Santo
holiday.es-CO4.date=20210401 holiday.es-CO4.date=20150402
holiday.es-CO5.name=Viernes Santo holiday.es-CO5.name=Viernes Santo
holiday.es-CO5.date=20210402 holiday.es-CO5.date=20150403
holiday.es-CO6.name=Domingo de Pascua holiday.es-CO6.name=Domingo de Pascua
holiday.es-CO6.date=20210404 holiday.es-CO6.date=20150405
holiday.es-CO7.name=Día del Trabajo holiday.es-CO7.name=Día del Trabajo
holiday.es-CO7.date=20210501 holiday.es-CO7.date=20150501
holiday.es-CO8.name=La Ascensión del Señor holiday.es-CO8.name=La Ascensión del Señor
holiday.es-CO8.date=20210517 holiday.es-CO8.date=20150518
holiday.es-CO9.name=Corpus Christi holiday.es-CO9.name=Corpus Christi
holiday.es-CO9.date=20210607 holiday.es-CO9.date=20150608
holiday.es-CO10.name=El Sagrado Corazón de Jesús holiday.es-CO10.name=El Sagrado Corazón de Jesús
holiday.es-CO10.date=20210614 holiday.es-CO10.date=20150615
holiday.es-CO11.name=San Pedro y San Pablo holiday.es-CO11.name=San Pedro y San Pablo
holiday.es-CO11.date=20210705 holiday.es-CO11.date=20150629
holiday.es-CO12.name=Grito de Independencia holiday.es-CO12.name=Grito de Independencia
holiday.es-CO12.date=20210720 holiday.es-CO12.date=20150720
holiday.es-CO13.name=Batalla de Boyacá holiday.es-CO13.name=Batalla de Boyacá
holiday.es-CO13.date=20210807 holiday.es-CO13.date=20150807
holiday.es-CO14.name=Asunción de la Virgen holiday.es-CO14.name=Asunción de la Virgen
holiday.es-CO14.date=20210816 holiday.es-CO14.date=20150817
holiday.es-CO15.name=Día de la Raza holiday.es-CO15.name=Día de la Raza
holiday.es-CO15.date=20211018 holiday.es-CO15.date=20151012
holiday.es-CO16.name=Todos los Santos holiday.es-CO16.name=Todos los Santos
holiday.es-CO16.date=20211101 holiday.es-CO16.date=20151102
holiday.es-CO17.name=Independencia de Cartagena holiday.es-CO17.name=Independencia de Cartagena
holiday.es-CO17.date=20211115 holiday.es-CO17.date=20151116
holiday.es-CO18.name=Inmaculada Concepción holiday.es-CO18.name=Inmaculada Concepción
holiday.es-CO18.date=20211208 holiday.es-CO18.date=20151208
holiday.es-CO19.name=Navidad holiday.es-CO19.name=Navidad
holiday.es-CO19.date=20211225 holiday.es-CO19.date=20151225
holiday.es-CO20.name=Año Nuevo holiday.es-CO20.name=Año Nuevo
holiday.es-CO20.date=20220101 holiday.es-CO20.date=20160101
holiday.es-CO21.name=Día de los Reyes Magos holiday.es-CO21.name=Día de los Reyes Magos
holiday.es-CO21.date=20220110 holiday.es-CO21.date=20160111
holiday.es-CO22.name=Día de San José holiday.es-CO22.name=Día de San José
holiday.es-CO22.date=20220321 holiday.es-CO22.date=20160321
holiday.es-CO23.name=Jueves Santo holiday.es-CO23.name=Jueves Santo
holiday.es-CO23.date=20220414 holiday.es-CO23.date=20160324
holiday.es-CO24.name=Viernes Santo holiday.es-CO24.name=Viernes Santo
holiday.es-CO24.date=20220415 holiday.es-CO24.date=20160325
holiday.es-CO25.name=Domingo de Pascua holiday.es-CO25.name=Domingo de Pascua
holiday.es-CO25.date=20220417 holiday.es-CO25.date=20160326
holiday.es-CO26.name=Día del Trabajo holiday.es-CO26.name=Día del Trabajo
holiday.es-CO26.date=20220501 holiday.es-CO26.date=20160501
holiday.es-CO27.name=La Ascensión del Señor holiday.es-CO27.name=La Ascensión del Señor
holiday.es-CO27.date=20220530 holiday.es-CO27.date=20160509
holiday.es-CO28.name=Corpus Christi holiday.es-CO28.name=Corpus Christi
holiday.es-CO28.date=20220620 holiday.es-CO28.date=20160530
holiday.es-CO29.name=El Sagrado Corazón de Jesús holiday.es-CO29.name=El Sagrado Corazón de Jesús
holiday.es-CO29.date=20220627 holiday.es-CO29.date=20160606
holiday.es-CO30.name=San Pedro y San Pablo holiday.es-CO30.name=San Pedro y San Pablo
holiday.es-CO30.date=20220704 holiday.es-CO30.date=20160704
holiday.es-CO31.name=Grito de Independencia holiday.es-CO31.name=Grito de Independencia
holiday.es-CO31.date=20220720 holiday.es-CO31.date=20160720
holiday.es-CO32.name=Batalla de Boyacá holiday.es-CO32.name=Batalla de Boyacá
holiday.es-CO32.date=20220807 holiday.es-CO32.date=20160807
holiday.es-CO33.name=Asunción de la Virgen holiday.es-CO33.name=Asunción de la Virgen
holiday.es-CO33.date=20220815 holiday.es-CO33.date=20160815
holiday.es-CO34.name=Día de la Raza holiday.es-CO34.name=Día de la Raza
holiday.es-CO34.date=20221017 holiday.es-CO34.date=20161017
holiday.es-CO35.name=Todos los Santos holiday.es-CO35.name=Todos los Santos
holiday.es-CO35.date=20221107 holiday.es-CO35.date=20161107
holiday.es-CO36.name=Independencia de Cartagena holiday.es-CO36.name=Independencia de Cartagena
holiday.es-CO36.date=20221114 holiday.es-CO36.date=20161114
holiday.es-CO37.name=Inmaculada Concepción holiday.es-CO37.name=Inmaculada Concepción
holiday.es-CO37.date=20221208 holiday.es-CO37.date=20161208
holiday.es-CO38.name=Navidad holiday.es-CO38.name=Navidad
holiday.es-CO38.date=20221225 holiday.es-CO38.date=20161225

75
doc/rc/holidays.es-EC.rc Normal file
View File

@@ -0,0 +1,75 @@
###############################################################################
# International Holiday Data provided by Holidata.net
# http://holidata.net/es-EC/2015.json
# http://holidata.net/es-EC/2016.json
#
# Copyright 2006 - 2016, 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.
#
# http://www.opensource.org/licenses/mit-license.php
#
###############################################################################
holiday.es-EC1.name=Año Nuevo
holiday.es-EC1.date=20150101
holiday.es-EC2.name=Año Nuevo
holiday.es-EC2.date=20150102
holiday.es-EC3.name=Carnaval
holiday.es-EC3.date=20150216
holiday.es-EC4.name=Carnaval
holiday.es-EC4.date=20150217
holiday.es-EC5.name=Viernes Santo
holiday.es-EC5.date=20150403
holiday.es-EC6.name=Día del Trabajo
holiday.es-EC6.date=20150501
holiday.es-EC7.name=Batalla del Pichincha
holiday.es-EC7.date=20150524
holiday.es-EC8.name=Primer Grito de Independencia
holiday.es-EC8.date=20150810
holiday.es-EC9.name=Independencia de Guayaquil
holiday.es-EC9.date=20151009
holiday.es-EC10.name=Día de Difuntos
holiday.es-EC10.date=20151102
holiday.es-EC11.name=Independencia de Cuenca
holiday.es-EC11.date=20151103
holiday.es-EC12.name=Navidad
holiday.es-EC12.date=20151225
holiday.es-EC13.name=Año Nuevo
holiday.es-EC13.date=20160101
holiday.es-EC14.name=Carnaval
holiday.es-EC14.date=20160208
holiday.es-EC15.name=Carnaval
holiday.es-EC15.date=20160209
holiday.es-EC16.name=Viernes Santo
holiday.es-EC16.date=20160325
holiday.es-EC17.name=Día del Trabajo
holiday.es-EC17.date=20160501
holiday.es-EC18.name=Batalla del Pichincha
holiday.es-EC18.date=20160524
holiday.es-EC19.name=Primer Grito de Independencia
holiday.es-EC19.date=20160810
holiday.es-EC20.name=Independencia de Guayaquil
holiday.es-EC20.date=20161009
holiday.es-EC21.name=Día de Difuntos
holiday.es-EC21.date=20161102
holiday.es-EC22.name=Independencia de Cuenca
holiday.es-EC22.date=20161103
holiday.es-EC23.name=Navidad
holiday.es-EC23.date=20161225

View File

@@ -1,9 +1,9 @@
############################################################################### ###############################################################################
# International Holiday Data provided by Holidata.net # International Holiday Data provided by Holidata.net
# https://holidata.net/es-ES/2021.json # http://holidata.net/es-ES/2015.json
# https://holidata.net/es-ES/2022.json # http://holidata.net/es-ES/2016.json
# #
# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez. # Copyright 2006 - 2016, Paul Beckingham, Federico Hernandez.
# #
# Permission is hereby granted, free of charge, to any person obtaining a copy # Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal # of this software and associated documentation files (the "Software"), to deal
@@ -23,133 +23,59 @@
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE. # SOFTWARE.
# #
# https://www.opensource.org/licenses/mit-license.php # http://www.opensource.org/licenses/mit-license.php
# #
############################################################################### ###############################################################################
holiday.es-ES1.name=Año Nuevo holiday.es-ES1.name=Año Nuevo
holiday.es-ES1.date=20210101 holiday.es-ES1.date=20150101
holiday.es-ES2.name=Epifanía del Señor holiday.es-ES2.name=Día de los Reyes
holiday.es-ES2.date=20210106 holiday.es-ES2.date=20150106
holiday.es-ES3.name=Día de Andalucía holiday.es-ES3.name=Viernes Santo
holiday.es-ES3.date=20210301 holiday.es-ES3.date=20150403
holiday.es-ES4.name=Día de las Illes Balears holiday.es-ES4.name=Pascua
holiday.es-ES4.date=20210301 holiday.es-ES4.date=20150405
holiday.es-ES5.name=Estatuto de Autonomía de la Ciudad de Melilla holiday.es-ES5.name=Fiesta del Trabajo
holiday.es-ES5.date=20210313 holiday.es-ES5.date=20150501
holiday.es-ES6.name=San José holiday.es-ES6.name=Asunción de la Virgen
holiday.es-ES6.date=20210319 holiday.es-ES6.date=20150815
holiday.es-ES7.name=Jueves Santo holiday.es-ES7.name=Fiesta Nacional de España
holiday.es-ES7.date=20210401 holiday.es-ES7.date=20151012
holiday.es-ES8.name=Viernes Santo holiday.es-ES8.name=Dia de todos los Santos
holiday.es-ES8.date=20210402 holiday.es-ES8.date=20151101
holiday.es-ES9.name=Pascua holiday.es-ES9.name=Dia de la Constitución
holiday.es-ES9.date=20210404 holiday.es-ES9.date=20151206
holiday.es-ES10.name=Lunes de Pascua holiday.es-ES10.name=Inmaculada Concepción
holiday.es-ES10.date=20210405 holiday.es-ES10.date=20151208
holiday.es-ES11.name=Fiesta de Castilla y León holiday.es-ES11.name=Noche Buena
holiday.es-ES11.date=20210423 holiday.es-ES11.date=20151224
holiday.es-ES12.name=San Jorge / Día de Aragón holiday.es-ES12.name=Navidad
holiday.es-ES12.date=20210423 holiday.es-ES12.date=20151225
holiday.es-ES13.name=Fiesta del Trabajo holiday.es-ES13.name=Noche Vieja
holiday.es-ES13.date=20210501 holiday.es-ES13.date=20151231
holiday.es-ES14.name=Lunes siguiente al Día de la Comunidad de Madrid holiday.es-ES14.name=Año Nuevo
holiday.es-ES14.date=20210503 holiday.es-ES14.date=20160101
holiday.es-ES15.name=Día de las Letras Gallegas holiday.es-ES15.name=Día de los Reyes
holiday.es-ES15.date=20210517 holiday.es-ES15.date=20160106
holiday.es-ES16.name=Día de Castilla-La Mancha holiday.es-ES16.name=Viernes Santo
holiday.es-ES16.date=20210531 holiday.es-ES16.date=20160325
holiday.es-ES17.name=Corpus Christi holiday.es-ES17.name=Pascua
holiday.es-ES17.date=20210603 holiday.es-ES17.date=20160327
holiday.es-ES18.name=Día de la Región de Murcia holiday.es-ES18.name=Fiesta del Trabajo
holiday.es-ES18.date=20210609 holiday.es-ES18.date=20160501
holiday.es-ES19.name=Día de La Rioja holiday.es-ES19.name=Asunción de la Virgen
holiday.es-ES19.date=20210609 holiday.es-ES19.date=20160815
holiday.es-ES20.name=San Juan holiday.es-ES20.name=Fiesta Nacional de España
holiday.es-ES20.date=20210624 holiday.es-ES20.date=20161012
holiday.es-ES21.name=Fiesta del Sacrificio (Eidul Adha) holiday.es-ES21.name=Dia de todos los Santos
holiday.es-ES21.date=20210720 holiday.es-ES21.date=20161101
holiday.es-ES22.name=Fiesta del Sacrificio (Aid El Kebir) holiday.es-ES22.name=Dia de la Constitución
holiday.es-ES22.date=20210721 holiday.es-ES22.date=20161206
holiday.es-ES23.name=Santiago Apóstol / Día Nacional de Galicia holiday.es-ES23.name=Inmaculada Concepción
holiday.es-ES23.date=20210725 holiday.es-ES23.date=20161208
holiday.es-ES24.name=Día de las Instituciones de Cantabria holiday.es-ES24.name=Noche Buena
holiday.es-ES24.date=20210728 holiday.es-ES24.date=20161224
holiday.es-ES25.name=Asunción de la Virgen holiday.es-ES25.name=Navidad
holiday.es-ES25.date=20210815 holiday.es-ES25.date=20161225
holiday.es-ES26.name=Lunes siguiente a la Asunción de la Virgen holiday.es-ES26.name=Noche Vieja
holiday.es-ES26.date=20210816 holiday.es-ES26.date=20161231
holiday.es-ES27.name=Día de Ceuta
holiday.es-ES27.date=20210902
holiday.es-ES28.name=Día de Asturias
holiday.es-ES28.date=20210908
holiday.es-ES29.name=Día de Extremadura
holiday.es-ES29.date=20210908
holiday.es-ES30.name=Fiesta Nacional de Cataluña
holiday.es-ES30.date=20210911
holiday.es-ES31.name=La Bien Aparecida
holiday.es-ES31.date=20210915
holiday.es-ES32.name=Día de la Comunitat Valenciana
holiday.es-ES32.date=20211009
holiday.es-ES33.name=Fiesta Nacional de España
holiday.es-ES33.date=20211012
holiday.es-ES34.name=Todos los Santos
holiday.es-ES34.date=20211101
holiday.es-ES35.name=Día de la Constitución Española
holiday.es-ES35.date=20211206
holiday.es-ES36.name=Inmaculada Concepción
holiday.es-ES36.date=20211208
holiday.es-ES37.name=Natividad del Señor
holiday.es-ES37.date=20211225
holiday.es-ES38.name=Año Nuevo
holiday.es-ES38.date=20220101
holiday.es-ES39.name=Epifanía del Señor
holiday.es-ES39.date=20220106
holiday.es-ES40.name=Día de Andalucía
holiday.es-ES40.date=20220228
holiday.es-ES41.name=Estatuto de Autonomía de la Ciudad de Melilla
holiday.es-ES41.date=20220313
holiday.es-ES42.name=Viernes Santo
holiday.es-ES42.date=20220415
holiday.es-ES43.name=Pascua
holiday.es-ES43.date=20220417
holiday.es-ES44.name=Fiesta de Castilla y León
holiday.es-ES44.date=20220423
holiday.es-ES45.name=San Jorge / Día de Aragón
holiday.es-ES45.date=20220423
holiday.es-ES46.name=Fiesta del Trabajo
holiday.es-ES46.date=20220501
holiday.es-ES47.name=Fiesta de la Comunidad de Madrid
holiday.es-ES47.date=20220502
holiday.es-ES48.name=Día de las Letras Gallegas
holiday.es-ES48.date=20220517
holiday.es-ES49.name=Día de Canarias
holiday.es-ES49.date=20220530
holiday.es-ES50.name=Día de Castilla-La Mancha
holiday.es-ES50.date=20220531
holiday.es-ES51.name=Día de la Región de Murcia
holiday.es-ES51.date=20220609
holiday.es-ES52.name=Día de La Rioja
holiday.es-ES52.date=20220609
holiday.es-ES53.name=Santiago Apóstol / Día Nacional de Galicia
holiday.es-ES53.date=20220725
holiday.es-ES54.name=Asunción de la Virgen
holiday.es-ES54.date=20220815
holiday.es-ES55.name=Día de Asturias
holiday.es-ES55.date=20220908
holiday.es-ES56.name=Día de Extremadura
holiday.es-ES56.date=20220908
holiday.es-ES57.name=Fiesta Nacional de Cataluña
holiday.es-ES57.date=20220911
holiday.es-ES58.name=Día de la Comunitat Valenciana
holiday.es-ES58.date=20221009
holiday.es-ES59.name=Fiesta Nacional de España
holiday.es-ES59.date=20221012
holiday.es-ES60.name=Todos los Santos
holiday.es-ES60.date=20221101
holiday.es-ES61.name=Día de la Constitución Española
holiday.es-ES61.date=20221206
holiday.es-ES62.name=Inmaculada Concepción
holiday.es-ES62.date=20221208
holiday.es-ES63.name=Natividad del Señor
holiday.es-ES63.date=20221225

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