Compare commits

..

1 Commits

Author SHA1 Message Date
Federico Hernandez
462f27fce7 Changed epoch to be 12/22 for UTC 2009-08-18 14:34:17 +02:00
936 changed files with 31258 additions and 118913 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,2 +0,0 @@
[alias]
xtask = "run --package xtask --"

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 update && sudo apt install uuid-dev
# [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

3
.github/CODEOWNERS vendored
View File

@@ -1,3 +0,0 @@
taskchampion/* @dbr @djmitche
Cargo.toml @dbr @djmitche
Cargo.lock @dbr @djmitche

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.html)

View File

@@ -1,11 +0,0 @@
#### Description
Replace this text with a description of the PR.
#### Additional information...
- [ ] I changed C++ code or build infrastructure.
Please run the test suite and include the output of `cd test && ./problems`.
- [ ] I changed Rust code or build infrastructure.
Please run `cargo test` and address any failures before submitting.

View File

@@ -1,115 +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:
toolchain: "1.70.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"
mdbook:
runs-on: ubuntu-latest
name: "Documentation"
steps:
- uses: actions/checkout@v4
- name: Setup mdBook
uses: peaceiris/actions-mdbook@v2
with:
# if this changes, change it in .github/workflows/publish-docs.yml as well
mdbook-version: '0.4.10'
- run: mdbook test taskchampion/docs
- run: mdbook build taskchampion/docs
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
codegen:
runs-on: ubuntu-latest
name: "codegen"
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:
toolchain: "1.70.0" # MSRV
override: true
- uses: actions-rs/cargo@v1.0.3
with:
command: run
args: --package xtask -- codegen
- name: check for changes
run: |
if ! git diff; then
echo "Generated code not up-to-date;
run `cargo run --package xtask -- codegen` and commit the result";
exit 1;
fi

View File

@@ -1,53 +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: Checkout repository
uses: actions/checkout@v4
with:
submodules: "recursive"
- name: Install cosign
uses: sigstore/cosign-installer@v3.5.0
- name: Log into registry ${{ env.REGISTRY }}
uses: docker/login-action@v3.1.0
with:
registry: ${{ env.REGISTRY }}
username: ${{ github.actor }}
password: ${{ secrets.GITHUB_TOKEN }}
- name: Build and push Taskwarrior Docker image
id: build-and-push
uses: docker/build-push-action@v5.3.0
with:
context: .
file: "./docker/task.dockerfile"
push: true
tags: ${{ env.REGISTRY }}/${{ github.actor }}/task:${{ github.ref_name }}
- name: Sign the published Docker image
env:
COSIGN_EXPERIMENTAL: "true"
run: cosign sign ${{ env.REGISTRY }}/${{ github.actor }}/task@${{ steps.build-and-push.outputs.digest }}

View File

@@ -1,31 +0,0 @@
name: docs
on:
push:
branches:
- develop
permissions:
contents: write
jobs:
mdbook-deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Setup mdBook
uses: peaceiris/actions-mdbook@v2
with:
# if this changes, change it in .github/workflows/checks.yml as well
mdbook-version: '0.4.10'
- run: mdbook build taskchampion/docs
- name: Deploy
uses: peaceiris/actions-gh-pages@v4
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
publish_dir: ./taskchampion/docs/book
destination_dir: taskchampion

View File

@@ -1,83 +0,0 @@
name: tests - rust
on:
push:
branches:
- develop
pull_request:
types: [opened, reopened, synchronize]
jobs:
## Run the `taskchampion` crate's tests with various combinations of features.
features:
strategy:
matrix:
features:
- ""
- "server-sync"
name: "taskchampion ${{ matrix.features == '' && 'with no features' || format('with features {0}', matrix.features) }}"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Cache cargo registry
uses: actions/cache@v4
with:
path: ~/.cargo/registry
key: ubuntu-latest-stable-cargo-registry-${{ hashFiles('**/Cargo.lock') }}
- name: Cache cargo build
uses: actions/cache@v4
with:
path: target
key: ubuntu-latest-stable-cargo-build-target-${{ hashFiles('**/Cargo.lock') }}
- uses: actions-rs/toolchain@v1
with:
toolchain: stable
override: true
- name: test
run: cargo test -p taskchampion --no-default-features --features "${{ matrix.features }}"
## Run all TaskChampion crate tests, using both the minimum supported rust version
## and the latest stable Rust.
test:
strategy:
matrix:
rust:
- "1.70.0" # MSRV
- "stable"
os:
- ubuntu-latest
- macOS-latest
- windows-latest
name: "rust ${{ matrix.rust }} on ${{ matrix.os }}"
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- name: Cache cargo registry
uses: actions/cache@v4
with:
path: ~/.cargo/registry
key: ${{ runner.os }}-${{ matrix.rust }}-cargo-registry-${{ hashFiles('**/Cargo.lock') }}
- name: Cache cargo build
uses: actions/cache@v4
with:
path: target
key: ${{ runner.os }}-${{ matrix.rust }}-cargo-build-target-${{ hashFiles('**/Cargo.lock') }}
- uses: actions-rs/toolchain@v1
with:
toolchain: "${{ matrix.rust }}"
override: true
- name: test
run: cargo test

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,108 +0,0 @@
## Run the Taskwarrior tests, using stable rust to build TaskChampion.
name: tests
on: [push, pull_request]
jobs:
# MacOS tests do not run in Docker, and use the actions-rs Rust installaction
tests-macos-12:
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:
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 }}
tests:
strategy:
fail-fast: false
matrix:
include:
- name: "Fedora 38"
runner: ubuntu-latest
dockerfile: fedora38
- name: "Fedora 39"
runner: ubuntu-latest
dockerfile: fedora39
- 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-$CONTAINER
- name: Test ${{ matrix.name }}
run: docker-compose run test-$CONTAINER
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
CONTAINER: ${{ matrix.dockerfile }}

30
.gitignore vendored
View File

@@ -1,15 +1,19 @@
cmake.h
commit.h
aclocal.m4
autom4te.cache
auto.h*
config.h.in
config.status
src/.deps
src/Makefile
*/*task
stamp-h1
Makefile
Makefile.in
configure
config.log
www.xls
src/tests/all.log
src/tests/*.data
*~
movie*
.*.swp
Session.vim
package-config/osx/binary/task
/build*/
install_manifest.txt
_CPack_Packages
patches
*.exe
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/tc/corrosion"]
path = src/tc/corrosion
url = https://github.com/corrosion-rs/corrosion.git

319
AUTHORS
View File

@@ -1,22 +1,10 @@
The development of Taskwarrior was made possible by the significant
contributions of the following people:
The development of task was made possible by the significant contributions of the following people:
Paul Beckingham (Principal Author)
Federico Hernandez (Principal Author)
Tomas Babej (Principal Author)
Federico Hernandez (Package Maintainer & Contributing Author)
David J Patrick (Designer)
John Florian (Contributing Author)
Cory Donnelly (Contributing Author)
Johannes Schlatow (Contributing Author)
Dirk Deimeke (Technical Advisor & Evangelist)
Wim Schuermann (Contributing Author)
Owen Clarke (Contributing Author)
Louis-Claude Canon (Contributing Author)
Scott Kostyshak (Contributing Author)
Renato Alves (Contributing Author)
The following submitted code, packages or analysis, and deserve special thanks:
Damian Glenny
Andy Lester
H. İbrahim Güngör
@@ -29,145 +17,15 @@ The following submitted code, packages or analysis, and deserve special thanks:
P.C. Shyamshankar
Johan Friis
Steven de Brouwer
Pietro Cerutti
Alexander Neumann
Emil Sköldberg
Michal Josífko
Ed Neville
Kevin Owens
Mick Koch
Kathryn Andersen
Alexander Schremmer
Jostein Berntsen
Andraž 'ruskie' Levstik
Irfan Siddiqui
Itay Perl
Sander Marechal
Stephen Heywood
Nicola Busanello
Eric Fluger
Andreas Poisel
Timm Reitinger
Dan White
Alexei Romanoff
Tomas Cech
Duane Waddle
Stefan Keel
Christopher J. Pilkington
Fumihito Yoshida
Michael McCann
Ben Boeckel
Bryce Harrington
Brendan O'Flaherty
Matt Kraai
Daniel Kullmann
Takanobu Watanabe
Paolo Almeida
Michelle Crane
Greg Grossmeier
Barton Meeks
Martin Klepsch
Ralph Bean
Uli Martens
Michal Vyskocil
Steve Rader
Luke Macken
Sam Stuck
Christoph Robbert
Oleksii Tsai
Jörg Plate
Markus Kuhn
Erik Wenzel
Štěpán Henek
Haitham Gad
Fidel Mato
Justin Forest
Vincent Petithory
Rainer Müller
Jakub Wilk
Russell Steicke
YBSAR
Ben Armstrong
Tullio Facchinetti
Thomas Sullivan
Martin Natano
kili
jasper
Aaron Bieber
John West
Jeroen Budts
Zed Jorarard
Elias Probst
Natanael Copa
Marton Suranyi
Nicolas Appriou
Jochen Sprickerhof
Alexander Sulfrian
David Binderman
atomicules
catern
Tatjana Heuser
leowzukw
Richard Boß
Markus Beppler
Jeremy John Reeder
Roman Inflianskas
Łukasz Panek
V.Krishn
Jens Erat
Peter Rochen
Oota Toshiya
ribbon
Daniel Shahaf
Johannes Wienke
Alan Young
Gordon Ball
Rafał Bolanowski
Sunil Joshi
Misty De Meo
Kent R. Spillner
Konstantin Vorobyev
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
suggestions:
Thanks to the following, who submitted detailed bug reports and excellent suggestions:
Eugene Kramer
Srijith K
Bruce Israel
Thomas Engel
Nishiishii
galvanizd
Stas Antons
Vincent Fleuranceau
ArchiMark
Carlos Yoder
@@ -176,173 +34,6 @@ suggestions:
Eric Farris
Bruce Dillahunty
Askme Too
Mike Adonay
Thomas@BIC
Ian Mortimer
Zach Frazier
Ivo Jimenez
Joe Pulliam
Juergen Daubert
Rich Mintz
Seneca Cunningham
Alexander Schremmer
Elizabeth Maxson
Peter De Poorter
Max Muller
Thomas Sattler
Erlan Sergaziev
Andy Kriger
Patrick R McDonald
Pete Lewis
Stefan Hacker
Alan Barton
Jonathan Hankins
Andreas Kalex
Adam Wolk
Tom Duffy
Miguel de Val Borro
Yann Davin
John Hammond
Arkady Grudzinsky
Bernhard B
Aikido Guy
Gour-Gadadhara Dasa
Aaron Jackson
Dmitriy Samborskiy
Eli Lev
Paul-Gheorghe Barbu
Jennifer Cormier
Joe Holloway
Peter Lewis
Najmi Ahmad Zabidi
Philipp Woelfel
Tuomas Toivola
Adam Gibbins
Ali Mousavi
Victor Roetman
Andy Spiegl
Ethan Schoonover
Paul Kishimoto
Jeff Schroeder
Bryan Kam
Nicholas Rabenau
Bruno Bigras
Hyde Stevenson
Martin U
Christoph Lange
Stephen Hay
Vlad Zhivotnev
Stanley G
Marek Vitek
Rene Vergara
Stéphane Pezennec
Jim B
Robert Gill
Robin Björklin
Jake Bell
Florian Hollerweger
Thomas Sullivan
Tim None
trHD
Benjamin Weber
alparo
Roy Zuo
Friedrich Heusler
Ben Armstrong
XTaran
John West
Dmitriy Matrosov
Michele Santullo
Scott Kroll
Kosta Harlan
Hector Arciga
Jan Kunder
jck
Michele Vetturi
Jeremiah Marks
Profpatsch
Bernd Humpa
darkfeline
Onion
Milos Svantner
Christopher Roberts
Steffen Uhlig
Dirk Sarpe
Will Dietz
Charles Ulrich
Jack
Kevin Ballard
Sitaram Chamarty
lolilolicon
Lee Lieske
Peter Vitt
dev-zero
Petteri
Black Ops Testing
Leon Feng
Nick Person
Arnoud K
Ozgur Akgun
David Costa
Sujeevan Vijayakumaran
Scott Carter
Taisuke Hachimura
Martin
Alexandre de Verteuil
Scott M
Stefan Frühwirth
Pierre Campet
Denis Kasak
David Brenner
Audrey Easterday
Stefan Betz
Blake Sweeney
Dylan Mikus
Andrea Rizzi
Florian Petry
Lars Beckers
Dustin J. Mitchell
James Cline
Ryan
Simon W. Jackson
Michale Meier
Svetoslav Trochev
Marc Cornellà
Ander
Naga Kiran
David Badura
James Dietrich
JDufault
Simon Michael
Robin Green
pawprint
Reg
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,183 +0,0 @@
cmake_minimum_required (VERSION 3.22)
set (CMAKE_EXPORT_COMPILE_COMMANDS ON)
project (task
VERSION 3.0.2
DESCRIPTION "Taskwarrior - a command-line TODO list manager"
HOMEPAGE_URL https://taskwarrior.org/)
set (CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake")
include (FetchContent)
include (CheckFunctionExists)
include (CheckStructHasMember)
set (HAVE_CMAKE true)
include (CXXSniffer)
OPTION (ENABLE_WASM "Enable 'wasm' support" OFF)
if (ENABLE_WASM)
message ("Enabling WASM support.")
set(CMAKE_EXECUTABLE_SUFFIX ".js")
endif (ENABLE_WASM)
message ("-- Looking for git submodules")
if (EXISTS ${CMAKE_SOURCE_DIR}/src/libshared/src AND EXISTS ${CMAKE_SOURCE_DIR}/src/tc/corrosion)
message ("-- Found git submodules")
else (EXISTS ${CMAKE_SOURCE_DIR}/src/libshared/src)
message ("-- Cloning git submodules")
execute_process (COMMAND git submodule update --init
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
endif (EXISTS ${CMAKE_SOURCE_DIR}/src/libshared/src AND EXISTS ${CMAKE_SOURCE_DIR}/src/tc/corrosion)
message ("-- Looking for SHA1 references")
if (EXISTS ${CMAKE_SOURCE_DIR}/.git/index)
set (HAVE_COMMIT true)
execute_process (COMMAND git log -1 --pretty=format:%h
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
OUTPUT_VARIABLE COMMIT)
configure_file ( ${CMAKE_SOURCE_DIR}/commit.h.in
${CMAKE_SOURCE_DIR}/commit.h)
message ("-- Found SHA1 reference: ${COMMIT}")
endif (EXISTS ${CMAKE_SOURCE_DIR}/.git/index)
set (PACKAGE "${PROJECT_NAME}")
set (VERSION "${PROJECT_VERSION}")
set (PACKAGE_BUGREPORT "support@gothenburgbitfactory.org")
set (PACKAGE_NAME "${PACKAGE}")
set (PACKAGE_TARNAME "${PACKAGE}")
set (PACKAGE_VERSION "${VERSION}")
set (PACKAGE_STRING "${PACKAGE} ${VERSION}")
if (FREEBSD OR DRAGONFLY)
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 OR DRAGONFLY)
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 OR DRAGONFLY)
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")
# rust libs require these
set (TASK_LIBRARIES dl pthread)
check_function_exists (timegm HAVE_TIMEGM)
check_function_exists (get_current_dir_name HAVE_GET_CURRENT_DIR_NAME)
check_function_exists (wordexp HAVE_WORDEXP)
check_struct_has_member ("struct tm" tm_gmtoff time.h HAVE_TM_GMTOFF)
check_struct_has_member ("struct stat" st_birthtime "sys/types.h;sys/stat.h" HAVE_ST_BIRTHTIME)
message ("-- Looking for libuuid")
if (DARWIN OR FREEBSD OR OPENBSD)
# Apple and FreeBSD include the uuid functions in their libc, rather than libuuid
check_function_exists (uuid_unparse_lower HAVE_UUID_UNPARSE_LOWER)
else (DARWIN OR FREEBSD OR OPENBSD)
find_path (UUID_INCLUDE_DIR uuid/uuid.h)
find_library (UUID_LIBRARY NAMES uuid)
if (UUID_INCLUDE_DIR AND UUID_LIBRARY)
set (TASK_INCLUDE_DIRS ${TASK_INCLUDE_DIRS} ${UUID_INCLUDE_DIR})
set (TASK_LIBRARIES ${TASK_LIBRARIES} ${UUID_LIBRARY})
# Look for uuid_unparse_lower
set (CMAKE_REQUIRED_INCLUDES ${CMAKE_REQUIRED_INCLUDES} ${UUID_INCLUDE_DIR})
set (CMAKE_REQUIRED_LIBRARIES ${CMAKE_REQUIRED_LIBRARIES} ${UUID_LIBRARY})
check_function_exists (uuid_unparse_lower HAVE_UUID_UNPARSE_LOWER)
else (UUID_INCLUDE_DIR AND UUID_LIBRARY)
message (FATAL_ERROR "-- libuuid not found.")
endif (UUID_INCLUDE_DIR AND UUID_LIBRARY)
endif (DARWIN OR FREEBSD OR OPENBSD)
if (HAVE_UUID_UNPARSE_LOWER)
message ("-- Found libuuid")
else (HAVE_UUID_UNPARSE_LOWER)
message ("-- Found libuuid, using internal uuid_unparse_lower")
endif (HAVE_UUID_UNPARSE_LOWER)
if (HAIKU)
# search for socket() in libnetwork on Haiku
message("-- Looking for libnetwork")
find_library (NETWORK_LIBRARY NAMES network)
if (NETWORK_LIBRARY)
set (TASK_LIBRARIES ${TASK_LIBRARIES} ${NETWORK_LIBRARY})
else (NETWORK_LIBRARY)
message(FATAL_ERROR "-- libnetwork not found.")
endif (NETWORK_LIBRARY)
endif (HAIKU)
if (SOLARIS)
# accept() is in libsocket according to its manpage
message("-- Looking for libsocket")
find_library (SOCKET_LIBRARY NAMES socket)
if (SOCKET_LIBRARY)
set (TASK_LIBRARIES ${TASK_LIBRARIES} ${SOCKET_LIBRARY})
else (SOCKET_LIBRARY)
message(FATAL_ERROR "-- libsocket not found.")
endif (SOCKET_LIBRARY)
# 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")
configure_file (
${CMAKE_SOURCE_DIR}/cmake.h.in
${CMAKE_SOURCE_DIR}/cmake.h)
add_subdirectory (src)
add_subdirectory (src/commands)
add_subdirectory (src/tc)
add_subdirectory (src/columns)
add_subdirectory (doc)
add_subdirectory (scripts)
if (EXISTS ${CMAKE_SOURCE_DIR}/test)
add_subdirectory (test EXCLUDE_FROM_ALL)
endif (EXISTS ${CMAKE_SOURCE_DIR}/test)
if (EXISTS performance)
add_subdirectory (performance EXCLUDE_FROM_ALL)
endif (EXISTS performance)
set (doc_FILES ChangeLog README.md INSTALL AUTHORS COPYING LICENSE)
foreach (doc_FILE ${doc_FILES})
install (FILES ${doc_FILE} DESTINATION ${TASK_DOCDIR})
endforeach (doc_FILE)
add_custom_command(OUTPUT run-review
COMMAND docker build -q --build-arg PR=$(PR) --build-arg LIBPR=$(LIBPR) -t taskwarrior-review:$(PR)s$(LIBPR) - < scripts/review-dockerfile
COMMAND docker run --rm --memory 1g --hostname pr-$(PR)s$(LIBPR) -it taskwarrior-review:$(PR)s$(LIBPR) bash || :
)
add_custom_target(review DEPENDS run-review)
add_custom_command(OUTPUT run-reproduce
COMMAND docker build -q --build-arg RELEASE=$(RELEASE) -t taskwarrior-reproduce:$(RELEASE) - < scripts/reproduce-dockerfile
COMMAND docker run --rm --memory 1g --hostname tw-$(RELEASE) -it taskwarrior-reproduce:$(RELEASE) bash || :
)
add_custom_target(reproduce DEPENDS run-reproduce)
add_custom_command(OUTPUT show-problems
COMMAND cd test && ./problems
)
add_custom_target(problems DEPENDS show-problems)
# ---
set (CPACK_SOURCE_GENERATOR "TGZ")
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"
"commit.h" "cmake.h$" "\\\\.gitmodules" "src/libshared/\\\\.git" ".github/" ".*\\\\.gitignore$" "docker-compose.yml" "\\\\.git/")
include (CPack)

294
COPYING
View File

@@ -1,23 +1,281 @@
Taskwarrior - a command line task list manager.
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
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:
Preamble
The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.) You can apply it to
your programs, too.
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.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
https://www.opensource.org/licenses/mit-license.php

2334
Cargo.lock generated

File diff suppressed because it is too large Load Diff

View File

@@ -1,42 +0,0 @@
[workspace]
members = [
"taskchampion/taskchampion",
"taskchampion/lib",
"taskchampion/integration-tests",
"taskchampion/xtask",
]
resolver = "2"
# src/tc/rust is just part of the TW build and not a public crate
exclude = [ "src/tc/rust" ]
# All Rust dependencies are defined here, and then referenced by the
# Cargo.toml's in the members with `foo.workspace = true`.
[workspace.dependencies]
anyhow = "1.0"
byteorder = "1.5"
cc = "1.0.73"
chrono = { version = "^0.4.22", features = ["serde"] }
ffizz-header = "0.5"
flate2 = "1"
google-cloud-storage = { version = "0.15.0", default-features = false, features = ["rustls-tls", "auth"] }
lazy_static = "1"
libc = "0.2.136"
log = "^0.4.17"
pretty_assertions = "1"
proptest = "^1.4.0"
ring = "0.17"
rstest = "0.17"
rusqlite = { version = "0.29", features = ["bundled"] }
serde_json = "^1.0"
serde = { version = "^1.0.147", features = ["derive"] }
strum = "0.25"
strum_macros = "0.25"
tempfile = "3"
tokio = { version = "1", features = ["rt-multi-thread"] }
thiserror = "1.0"
ureq = { version = "^2.9.0", features = ["tls"] }
uuid = { version = "^1.8.0", features = ["serde", "v4"] }
url = { version = "2" }

3090
ChangeLog

File diff suppressed because it is too large Load Diff

View File

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

300
INSTALL
View File

@@ -1,174 +1,234 @@
Installation Instructions
-------------------------
*************************
Please follow the instructions below to build and install Taskwarrior from
source.
Dependencies
------------
You will need the CMake 3.0+ build system installed in order to build Taskwarrior
from source. More information on CMake can be obtained at https://cmake.org
You will also need:
- make
You will need a C++ compiler that supports full C++17, which includes:
- gcc 7.1 (released 2017-05-02)
- clang 5.0 (released 2017-09-07)
You will need the following libraries:
- libuuid (not needed for OSX)
Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005,
2006 Free Software Foundation, Inc.
This file is free documentation; the Free Software Foundation gives
unlimited permission to copy, distribute and modify it.
Basic Installation
------------------
==================
Briefly, these shell commands will unpack, build and install Taskwarrior:
Briefly, the shell commands `./configure; make; make install' should
configure, build, and install this package. The following
more-detailed instructions are generic; see the `README' file for
instructions specific to this package.
$ tar xzf task-X.Y.Z.tar.gz [1]
$ cd task-X.Y.Z [2]
$ cmake -DCMAKE_BUILD_TYPE=release . [3]
$ make [4]
$ sudo make install [5]
$ cd .. ; rm -r task-X.Y.Z [6]
The `configure' shell script attempts to guess correct values for
various system-dependent variables used during compilation. It uses
those values to create a `Makefile' in each directory of the package.
It may also create one or more `.h' files containing system-dependent
definitions. Finally, it creates a shell script `config.status' that
you can run in the future to recreate the current configuration, and a
file `config.log' containing compiler output (useful mainly for
debugging `configure').
These commands are explained below:
It can also use an optional file (typically called `config.cache'
and enabled with `--cache-file=config.cache' or simply `-C') that saves
the results of its tests to speed up reconfiguring. Caching is
disabled by default to prevent problems with accidental use of stale
cache files.
1. Unpacks the source tarball. This creates the directory task-X.Y.Z,
containing all the code.
If you need to do unusual things to compile the package, please try
to figure out how `configure' could check whether to do them, and mail
diffs or instructions to the address given in the `README' so they can
be considered for the next release. If you are using the cache, and at
some point `config.cache' contains results you don't want to keep, you
may remove or edit it.
2. Change directory to the root of the distribution.
The file `configure.ac' (or `configure.in') is used to create
`configure' by a program called `autoconf'. You need `configure.ac' if
you want to change it or regenerate `configure' using a newer version
of `autoconf'.
3. Invokes CMake to scan for dependencies and machine-specific details, then
generate the makefiles. Requests an optimized build, which will run faster
and be more compact. This may take a minute.
The simplest way to compile this package is:
4. Builds Taskwarrior. This may take a minute.
1. `cd' to the directory containing the package's source code and type
`./configure' to configure the package for your system.
5. Installs the program, documentation and other data files.
Running `configure' might take a while. While running, it prints
some messages telling which features it is checking for.
6. Removes the temporary directory.
2. Type `make' to compile the package.
3. Optionally, type `make check' to run any self-tests that come with
the package.
Build and configurations options
--------------------------------
4. Type `make install' to install the programs and any data files and
documentation.
You can customize the configuration run with cmake variables. This will modify
the installation process:
5. You can remove the program binaries and object files from the
source code directory by typing `make clean'. To also remove the
files that `configure' created (so you can compile the package for
a different kind of computer), type `make distclean'. There is
also a `make maintainer-clean' target, but that is intended mainly
for the package's developers. If you use it, you may have to get
all sorts of other programs in order to regenerate files that came
with the distribution.
To change the installation directory you use the following configuration
variable:
Compilers and Options
=====================
$ cmake -DCMAKE_INSTALL_PREFIX=<path-to-installation-dir> .
Some systems require unusual options for compilation or linking that the
`configure' script does not know about. Run `./configure --help' for
details on some of the pertinent environment variables.
cmake configuration variables are applied with the -D option and consist of a
<name> and a <value>:
You can give `configure' initial values for configuration parameters
by setting variables in the command line or in the environment. Here
is an example:
$ cmake -D<name>=<value> .
./configure CC=c99 CFLAGS=-g LIBS=-lposix
Four more variables can customize the installation process. The following table
lists them and their defaults plus the CMAKE_INSTALL_PREFIX:
*Note Defining Variables::, for more details.
CMAKE_INSTALL_PREFIX /usr/local
TASK_BINDIR bin
TASK_DOCDIR share/doc/task
TASK_RCDIR share/doc/task/rc
TASK_MAN1DIR share/man/man1
TASK_MAN5DIR share/man/man5
Compiling For Multiple Architectures
====================================
The corresponding TASK_* variables will be combined with CMAKE_INSTALL_PREFIX to
get absolute installation directories:
You can compile the package for more than one kind of computer at the
same time, by placing the object files for each architecture in their
own directory. To do this, you can use GNU `make'. `cd' to the
directory where you want the object files and executables to go and run
the `configure' script. `configure' automatically checks for the
source code in the directory that `configure' is in and in `..'.
CMAKE_INSTALL_PREFIX/TASK_BINDIR /usr/local/bin
CMAKE_INSTALL_PREFIX/TASK_DOCDIR /usr/local/share/doc/task
CMAKE_INSTALL_PREFIX/TASK_RCDIR /usr/local/share/doc/task/rc
CMAKE_INSTALL_PREFIX/TASK_MAN1DIR /usr/local/share/man/man1
CMAKE_INSTALL_PREFIX/TASK_MAN5DIR /usr/local/share/man/man5
With a non-GNU `make', it is safer to compile the package for one
architecture at a time in the source code directory. After you have
installed the package for one architecture, use `make distclean' before
reconfiguring for another architecture.
Installation Names
==================
Uninstallation
--------------
By default, `make install' installs the package's commands under
`/usr/local/bin', include files under `/usr/local/include', etc. You
can specify an installation prefix other than `/usr/local' by giving
`configure' the option `--prefix=PREFIX'.
There is no uninstall option in CMake makefiles. This is a manual process.
You can specify separate installation prefixes for
architecture-specific files and architecture-independent files. If you
pass the option `--exec-prefix=PREFIX' to `configure', the package uses
PREFIX as the prefix for installing programs and libraries.
Documentation and other data files still use the regular prefix.
To uninstall Taskwarrior, remove the files listed in the install_manifest.txt
file that was generated when you built Taskwarrior.
In addition, if you use an unusual directory layout you can give
options like `--bindir=DIR' to specify different values for particular
kinds of files. Run `configure --help' for a list of the directories
you can set and what kinds of files go in them.
If the package supports it, you can cause programs to be installed
with an extra prefix or suffix on their names by giving `configure' the
option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
Taskwarrior Build Notes
-----------------------
Optional Features
=================
Taskwarrior has dependencies that are detected by CMake in almost all cases, but
there are situations and operating systems that mean you will need to offer a
little help.
Some packages pay attention to `--enable-FEATURE' options to
`configure', where FEATURE indicates an optional part of the package.
They may also pay attention to `--with-PACKAGE' options, where PACKAGE
is something like `gnu-as' or `x' (for the X Window System). The
`README' should mention any `--enable-' and `--with-' options that the
package recognizes.
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
section, which includes instructions on how to contact us for help.
For packages that use the X Window System, `configure' can usually
find the X include and library files automatically, but if it doesn't,
you can use the `configure' options `--x-includes=DIR' and
`--x-libraries=DIR' to specify their locations.
Specifying the System Type
==========================
Operating System Notes
----------------------
There may be some features `configure' cannot figure out automatically,
but needs to determine by the type of machine the package will run on.
Usually, assuming the package is built to be run on the _same_
architectures, `configure' can figure that out, but if it prints a
message saying it cannot guess the machine type, give it the
`--build=TYPE' option. TYPE can either be a short name for the system
type, such as `sun4', or a canonical name which has the form:
Cygwin
If 'make install' fails when writing to the /usr/local/share/ directory,
this may be because your current login doesn't have permission to write
to the Windows directory containing your Cygwin installation. Either
login to Windows as an Administrator and try the 'make install' process
again, or reinstall Cygwin under your normal Windows login.
CPU-COMPANY-SYSTEM
where SYSTEM can have one of these forms:
Darwin, 32bit
Taskwarrior needs to be built from source, and use this configure command:
OS KERNEL-OS
cmake -DCMAKE_C_FLAGS=-m32 -DCMAKE_CXX_FLAGS=-m32 -DCMAKE_EXE_LINKER_FLAGS=-m32 .
See the file `config.sub' for the possible values of each field. If
`config.sub' isn't included in this package, then this package doesn't
need to know the machine type.
See:
https://taskwarrior.org/issues/817
https://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
https://stackoverflow.com/questions/6077414/cmake-how-to-set-the-ldflags-in-cmakelists-txt
If you are _building_ compiler tools for cross-compiling, you should
use the option `--target=TYPE' to select the type of system they will
produce code for.
If you want to _use_ a cross compiler, that generates code for a
platform different from the build platform, you should specify the
"host" platform (i.e., that on which the generated programs will
eventually be run) with `--host=TYPE'.
OpenBSD
In order to build Taskwarrior 2.4.2+, you might need to install a newer GCC
version from ports or packages.
Sharing Defaults
================
Afterwards, run
cmake -DCMAKE_CXX_COMPILER=eg++ .
If you want to set default values for `configure' scripts to share, you
can create a site shell script called `config.site' that gives default
values for variables like `CC', `cache_file', and `prefix'.
`configure' looks for `PREFIX/share/config.site' if it exists, then
`PREFIX/etc/config.site' if it exists. Or, you can set the
`CONFIG_SITE' environment variable to the location of the site script.
A warning: not all `configure' scripts look for a site script.
and build normally.
Defining Variables
==================
See: https://github.com/GothenburgBitFactory/taskwarrior/issues/1605
Variables not defined in a site shell script can be set in the
environment passed to `configure'. However, some packages may run
configure again during the build, and the customized values of these
variables may be lost. In order to avoid this problem, you should set
them in the `configure' command line, using `VAR=value'. For example:
WASM
Using the Emscripten compiler, you can achieve it like this:
./configure CC=/usr/local2/bin/gcc
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"
causes the specified `gcc' to be used as the C compiler (unless it is
overridden in the site shell script).
This will produce an optimized WASM with a main() that is callable multiple times.
Unfortunately, this technique does not work for `CONFIG_SHELL' due to
an Autoconf bug. Until the bug is fixed you can use this workaround:
Troubleshooting
---------------
CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash
If you've recently made changes to dependencies (by reinstalling them, for
example) be sure to rerun 'cmake .' before trying to execute 'make' again.
`configure' Invocation
======================
CMake will run and locate all the necessary pieces for the build, and create
a Makefile. There may be errors and warnings when running CMake, or there
may be compiler errors and warnings when running 'make'. Sometimes you will run
CMake with no reported problems, and the build will fail later. This is
almost always because CMake is mistaken about some assumption.
`configure' recognizes the following options to control how it operates.
If a build does not succeed, please send the contents of the 'CMakeCache.txt'
and 'CMakeFiles/CMakeOutput.log' files to support@gothenburgbitfactory.org.
`--help'
`-h'
Print a summary of the options to `configure', and exit.
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
file and must be captured from the terminal.
`--version'
`-V'
Print the version of Autoconf used to generate the `configure'
script, and exit.
`--cache-file=FILE'
Enable the cache: use and save the results of the tests in FILE,
traditionally `config.cache'. FILE defaults to `/dev/null' to
disable caching.
`--config-cache'
`-C'
Alias for `--cache-file=config.cache'.
`--quiet'
`--silent'
`-q'
Do not print messages saying which checks are being made. To
suppress all normal output, redirect it to `/dev/null' (any error
messages will still be shown).
`--srcdir=DIR'
Look for the package's source code in directory DIR. Usually
`configure' can determine that directory automatically.
`configure' also accepts some other, not widely useful, options. Run
`configure --help' for more details.
---

24
LICENSE
View File

@@ -1,24 +0,0 @@
The MIT License
https://www.opensource.org/licenses/mit-license.php
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.

20
Makefile.am Normal file
View File

@@ -0,0 +1,20 @@
SUBDIRS = src
dist_man_MANS = doc/man/task.1 doc/man/taskrc.5 doc/man/task-tutorial.5
docdir = $(datadir)/doc/${PACKAGE}-${VERSION}
doc_DATA = AUTHORS ChangeLog COPYING NEWS README
EXTRA_DIST = INSTALL
bashscriptsdir = $(docdir)
nobase_dist_bashscripts_DATA = scripts/bash/task_completion.sh
zshscriptsdir = $(docdir)
nobase_dist_zshscripts_DATA = scripts/zsh/_task
vimscriptsdir = $(docdir)
nobase_dist_vimscripts_DATA = scripts/vim/README scripts/vim/ftdetect/task.vim scripts/vim/syntax/taskdata.vim scripts/vim/syntax/taskedit.vim
i18ndir = $(docdir)
nobase_dist_i18n_DATA = i18n/strings.de-DE i18n/strings.en-US i18n/strings.es-ES i18n/strings.fr-FR i18n/strings.nl-NL i18n/strings.sv-SE i18n/tips.de-DE i18n/tips.en-US i18n/tips.sv-SE

48
NEWS Normal file
View File

@@ -0,0 +1,48 @@
New Features in task 1.8.0
- Attribute modifiers, for precise queries
- Improved calendar feature
- Full undo capability
- All reports now customizable
- Command aliases can now be created
- In addition to being a standard part of Fedora 10 and 11 (yum install task),
task is now also a standard part of Cygwin 1.5
- There are new demo movies on taskwarrior.org
Please refer to the ChangeLog file for full details. There are too many to
list here.
Task has been built and tested on the following configurations:
- OS X 10.5 Leopard
- OS X 10.4 Tiger
- Fedora Core 11 Leonidas
- Fedora Core 10 Cambridge
- Ubuntu 9.04 Jaunty Jackalope
- Ubuntu 8.10 Intrepid Ibex
- Ubuntu 8.04 Hardy Heron
- Slackware 12.2
- Arch Linux
- Solaris 10
- Solaris 8
- OpenBSD 4.5
- FreeBSD
- Cygwin 1.5.25-14
While Task has undergone testing, bugs are sure to remain. If you encounter a
bug, please enter a new issue at:
http://taskwarrior.org/projects/taskwarrior/issues/new
Or you can also report the issue in the forums at:
http://taskwarrior.org/projects/taskwarrior/boards
Or just send a message to:
support@taskwarrior.org
Thank you.
---

24
README Normal file
View File

@@ -0,0 +1,24 @@
Thank you for taking a look at task!
Task is a GTD, todo list, task management, command line utility with a multitude
of features. It is a portable, well supported, very active project, and it is
Open Source. Task has binary distributions, online documentation, demonstration
movies, and you'll find all the details at the site:
http://taskwarrior.org
At the site you'll find a wiki, discussion forums, downloads, news and more.
Your contributions are especially welcome. Whether it comes in the form of
code patches, ideas, discussion, bug reports or just encouragement, your input
is needed.
Please send your support questions and code patches to:
support@taskwarrior.org
Consider joining taskwarrior.org and participating in the future of task.
---

View File

@@ -1,80 +0,0 @@
<div align="center">
<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)
[![Release](https://img.shields.io/github/v/release/GothenburgBitFactory/taskwarrior)](https://github.com/GothenburgBitFactory/taskwarrior/releases/latest)
[![Release date](https://img.shields.io/github/release-date/GothenburgBitFactory/taskwarrior)](https://github.com/GothenburgBitFactory/taskwarrior/releases/latest)
[![GitHub Sponsors](https://img.shields.io/github/sponsors/GothenburgBitFactory?color=green)](https://github.com/sponsors/GothenburgBitFactory/)
</br>
</div>
## Taskwarrior
![OS-X downloads](https://img.shields.io/homebrew/installs/dy/task?label=OS-X%20downloads)
![Github downloads](https://img.shields.io/github/downloads/GothenburgBitFactory/taskwarrior/total?label=Github%20downloads)
![Linux downloads](https://img.shields.io/badge/Linux%20downloads-unknown-gray)
Taskwarrior is a command line task list management utility with a [multitude of
features](https://taskwarrior.org/docs/), developed as a portable open source project
with an active and quite vast [ecosystem of tools, hooks and
extensions](https://taskwarrior.org/tools/).
## Install
[![Arch](https://img.shields.io/archlinux/v/extra/x86_64/task)](https://archlinux.org/packages/extra/x86_64/task/)
[![Debian](https://img.shields.io/debian/v/task/testing)](https://packages.debian.org/search?keywords=task&searchon=names&suite=all&section=all)
[![Fedora](https://img.shields.io/fedora/v/task)](https://bodhi.fedoraproject.org/updates/?packages=task)
[![Homebrew](https://img.shields.io/homebrew/v/task)](https://formulae.brew.sh/formula/task#default)
[![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).
## Documentation
The [online documentation](https://taskwarrior.org/docs), downloads, news and
more are available on our website, [taskwarrior.org](https://taskwarrior.org).
## Community
[![Twitter](https://img.shields.io/twitter/follow/taskwarrior?style=social)](https://twitter.com/taskwarrior)
[![Reddit](https://img.shields.io/reddit/subreddit-subscribers/taskwarrior?style=social)](https://reddit.com/r/taskwarrior/)
[![Libera.chat](https://img.shields.io/badge/IRC%20libera.chat-online-green)](https://web.libera.chat/#taskwarrior)
[![Discord](https://img.shields.io/discord/796949983734661191?label=discord)](https://discord.gg/eRXEHk8w62)
[![Github discussions](https://img.shields.io/github/discussions/GothenburgBitFactory/taskwarrior?label=GitHub%20discussions)](https://github.com/GothenburgBitFactory/taskwarrior/discussions)
Taskwarrior has a lively community on many places on the internet.
Best place to ask questions is our [discussions forum on
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.
See [Contributing to Taskwarrior](doc/devel/contrib) for more details.
## Contributing
[![Contributors](https://img.shields.io/github/contributors/GothenburgBitFactory/taskwarrior)](https://github.com/GothenburgBitFactory/taskwarrior/graphs/contributors)
[![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.
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
[![GitHub Sponsors](https://img.shields.io/github/sponsors/GothenburgBitFactory?color=green)](https://github.com/sponsors/GothenburgBitFactory/)
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
Github Sponsors](https://github.com/sponsors/GothenburgBitFactory/).
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,61 +0,0 @@
/* cmake.h.in. Creates cmake.h during a cmake run */
/* Product identification */
#define PRODUCT_TASKWARRIOR 1
/* Package information */
#define PACKAGE "${PACKAGE}"
#define VERSION "${VERSION}"
#define PACKAGE_BUGREPORT "${PACKAGE_BUGREPORT}"
#define PACKAGE_NAME "${PACKAGE_NAME}"
#define PACKAGE_TARNAME "${PACKAGE_TARNAME}"
#define PACKAGE_VERSION "${PACKAGE_VERSION}"
#define PACKAGE_STRING "${PACKAGE_STRING}"
#define CMAKE_BUILD_TYPE "${CMAKE_BUILD_TYPE}"
/* Installation details */
#define TASK_RCDIR "${CMAKE_INSTALL_PREFIX}/${TASK_RCDIR}"
/* git information */
#cmakedefine HAVE_COMMIT
/* cmake information */
#cmakedefine HAVE_CMAKE
#define CMAKE_VERSION "${CMAKE_VERSION}"
/* Compiling platform */
#cmakedefine LINUX
#cmakedefine DARWIN
#cmakedefine CYGWIN
#cmakedefine FREEBSD
#cmakedefine OPENBSD
#cmakedefine NETBSD
#cmakedefine DRAGONFLY
#cmakedefine HAIKU
#cmakedefine SOLARIS
#cmakedefine KFREEBSD
#cmakedefine GNUHURD
#cmakedefine UNKNOWN
/* Found tm_gmtoff */
#cmakedefine HAVE_TM_GMTOFF
/* Found timegm */
#cmakedefine HAVE_TIMEGM
/* Found st.st_birthtime struct member */
#cmakedefine HAVE_ST_BIRTHTIME
/* Found get_current_dir_name */
#cmakedefine HAVE_GET_CURRENT_DIR_NAME
/* Found uuid_unparse_lower in the uuid library */
#cmakedefine HAVE_UUID_UNPARSE_LOWER
/* Found wordexp.h */
#cmakedefine HAVE_WORDEXP
/* Undefine this to eliminate the execute command */
#define HAVE_EXECUTE 1

View File

@@ -1,41 +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 (_CXX14_FLAGS "-std=c++17")
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 (_CXX14_FLAGS "-std=gnu++17")
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 +0,0 @@
/* commit.h.in. Creates commit.h during a cmake run */
/* git information */
#define COMMIT "${COMMIT}"

73
configure.ac Normal file
View File

@@ -0,0 +1,73 @@
# -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.
AC_PREREQ(2.61)
AC_INIT(task, 1.8.0, support@taskwarrior.org)
CFLAGS="${CFLAGS=}"
CXXFLAGS="${CXXFLAGS=}"
# this macro is used to get the arguments supplied
# to the configure script (./configure --enable-debug)
# Check if we have enable debug support.
AC_MSG_CHECKING(whether to enable debugging)
debug_default="no"
AC_ARG_ENABLE(debug, [ --enable-debug=[no/yes] turn on debugging
[default=$debug_default]],, enable_debug=$debug_default)
# Yes, shell scripts can be used
if test "$enable_debug" = "yes"; then
CXXFLAGS="$CFLAGS -Wall -pedantic -ggdb3 -DDEBUG"
AC_MSG_RESULT(yes)
else
CXXFLAGS="$CFLAGS -Wall -pedantic -O3"
AC_MSG_RESULT(no)
fi
# Check for OS.
OS=`uname|sed -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/'`
if test "$OS" = "sunos"; then
AC_MSG_NOTICE([OS Solaris detected])
AC_DEFINE([SOLARIS], [], [Compiling on Solaris])
else
AC_MSG_NOTICE([OS Non-Solaris detected])
AC_DEFINE([LINUX], [], [Compiling on Non-Solaris])
fi
AM_INIT_AUTOMAKE
AC_CONFIG_SRCDIR([src/main.cpp])
AC_CONFIG_HEADER([auto.h])
# Checks for programs.
AC_PROG_CXX
AC_PROG_CC
AC_LANG(C++)
AC_SUBST(CFLAGS)
# Checks for libraries.
AC_CHECK_LIB(ncurses,initscr)
# Checks for header files.
AC_HEADER_STDC
AC_CHECK_HEADERS([stdlib.h sys/file.h sys/stat.h sys/time.h unistd.h])
AC_CHECK_HEADERS([sstream string vector map])
# Checks for typedefs, structures, and compiler characteristics.
AC_HEADER_STDBOOL
AC_C_CONST
AC_TYPE_PID_T
AC_TYPE_SIZE_T
AC_HEADER_TIME
AC_STRUCT_TM
# Checks for library functions.
AC_FUNC_MKTIME
AC_FUNC_SELECT_ARGTYPES
AC_CHECK_FUNCS([select])
#AC_CHECK_FUNC(flock, [AC_DEFINE([HAVE_FLOCK], [1], [Found flock])])
AC_CHECK_FUNC(uuid_unparse_lower, [AC_DEFINE([HAVE_UUID], [1], [Found uuid_unparse_lower])])
AC_CHECK_FUNC(random, [AC_DEFINE([HAVE_RANDOM], [1], [Found random])])
AC_CHECK_FUNC(srandom, [AC_DEFINE([HAVE_SRANDOM], [1], [Found srandom])])
AC_CONFIG_FILES([Makefile src/Makefile])
AC_OUTPUT

584
depcomp Executable file
View File

@@ -0,0 +1,584 @@
#! /bin/sh
# depcomp - compile a program generating dependencies as side-effects
scriptversion=2006-10-15.18
# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006 Free Software
# Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2, or (at your option)
# any later version.
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
# 02110-1301, USA.
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program.
# Originally written by Alexandre Oliva <oliva@dcc.unicamp.br>.
case $1 in
'')
echo "$0: No command. Try \`$0 --help' for more information." 1>&2
exit 1;
;;
-h | --h*)
cat <<\EOF
Usage: depcomp [--help] [--version] PROGRAM [ARGS]
Run PROGRAMS ARGS to compile a file, generating dependencies
as side-effects.
Environment variables:
depmode Dependency tracking mode.
source Source file read by `PROGRAMS ARGS'.
object Object file output by `PROGRAMS ARGS'.
DEPDIR directory where to store dependencies.
depfile Dependency file to output.
tmpdepfile Temporary file to use when outputing dependencies.
libtool Whether libtool is used (yes/no).
Report bugs to <bug-automake@gnu.org>.
EOF
exit $?
;;
-v | --v*)
echo "depcomp $scriptversion"
exit $?
;;
esac
if test -z "$depmode" || test -z "$source" || test -z "$object"; then
echo "depcomp: Variables source, object and depmode must be set" 1>&2
exit 1
fi
# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po.
depfile=${depfile-`echo "$object" |
sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`}
tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
rm -f "$tmpdepfile"
# Some modes work just like other modes, but use different flags. We
# parameterize here, but still list the modes in the big case below,
# to make depend.m4 easier to write. Note that we *cannot* use a case
# here, because this file can only contain one case statement.
if test "$depmode" = hp; then
# HP compiler uses -M and no extra arg.
gccflag=-M
depmode=gcc
fi
if test "$depmode" = dashXmstdout; then
# This is just like dashmstdout with a different argument.
dashmflag=-xM
depmode=dashmstdout
fi
case "$depmode" in
gcc3)
## gcc 3 implements dependency tracking that does exactly what
## we want. Yay! Note: for some reason libtool 1.4 doesn't like
## it if -MD -MP comes after the -MF stuff. Hmm.
## Unfortunately, FreeBSD c89 acceptance of flags depends upon
## the command line argument order; so add the flags where they
## appear in depend2.am. Note that the slowdown incurred here
## affects only configure: in makefiles, %FASTDEP% shortcuts this.
for arg
do
case $arg in
-c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
*) set fnord "$@" "$arg" ;;
esac
shift # fnord
shift # $arg
done
"$@"
stat=$?
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile"
exit $stat
fi
mv "$tmpdepfile" "$depfile"
;;
gcc)
## There are various ways to get dependency output from gcc. Here's
## why we pick this rather obscure method:
## - Don't want to use -MD because we'd like the dependencies to end
## up in a subdir. Having to rename by hand is ugly.
## (We might end up doing this anyway to support other compilers.)
## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
## -MM, not -M (despite what the docs say).
## - Using -M directly means running the compiler twice (even worse
## than renaming).
if test -z "$gccflag"; then
gccflag=-MD,
fi
"$@" -Wp,"$gccflag$tmpdepfile"
stat=$?
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile"
exit $stat
fi
rm -f "$depfile"
echo "$object : \\" > "$depfile"
alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
## The second -e expression handles DOS-style file names with drive letters.
sed -e 's/^[^:]*: / /' \
-e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
## This next piece of magic avoids the `deleted header file' problem.
## The problem is that when a header file which appears in a .P file
## is deleted, the dependency causes make to die (because there is
## typically no way to rebuild the header). We avoid this by adding
## dummy dependencies for each header file. Too bad gcc doesn't do
## this for us directly.
tr ' ' '
' < "$tmpdepfile" |
## Some versions of gcc put a space before the `:'. On the theory
## that the space means something, we add a space to the output as
## well.
## Some versions of the HPUX 10.20 sed can't process this invocation
## correctly. Breaking it into two sed invocations is a workaround.
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
hp)
# This case exists only to let depend.m4 do its work. It works by
# looking at the text of this script. This case will never be run,
# since it is checked for above.
exit 1
;;
sgi)
if test "$libtool" = yes; then
"$@" "-Wp,-MDupdate,$tmpdepfile"
else
"$@" -MDupdate "$tmpdepfile"
fi
stat=$?
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile"
exit $stat
fi
rm -f "$depfile"
if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files
echo "$object : \\" > "$depfile"
# Clip off the initial element (the dependent). Don't try to be
# clever and replace this with sed code, as IRIX sed won't handle
# lines with more than a fixed number of characters (4096 in
# IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines;
# the IRIX cc adds comments like `#:fec' to the end of the
# dependency line.
tr ' ' '
' < "$tmpdepfile" \
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
tr '
' ' ' >> $depfile
echo >> $depfile
# The second pass generates a dummy entry for each header file.
tr ' ' '
' < "$tmpdepfile" \
| sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
>> $depfile
else
# The sourcefile does not contain any dependencies, so just
# store a dummy comment line, to avoid errors with the Makefile
# "include basename.Plo" scheme.
echo "#dummy" > "$depfile"
fi
rm -f "$tmpdepfile"
;;
aix)
# The C for AIX Compiler uses -M and outputs the dependencies
# in a .u file. In older versions, this file always lives in the
# current directory. Also, the AIX compiler puts `$object:' at the
# start of each line; $object doesn't have directory information.
# Version 6 uses the directory in both cases.
stripped=`echo "$object" | sed 's/\(.*\)\..*$/\1/'`
tmpdepfile="$stripped.u"
if test "$libtool" = yes; then
"$@" -Wc,-M
else
"$@" -M
fi
stat=$?
if test -f "$tmpdepfile"; then :
else
stripped=`echo "$stripped" | sed 's,^.*/,,'`
tmpdepfile="$stripped.u"
fi
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile"
exit $stat
fi
if test -f "$tmpdepfile"; then
outname="$stripped.o"
# Each line is of the form `foo.o: dependent.h'.
# Do two passes, one to just change these to
# `$object: dependent.h' and one to simply `dependent.h:'.
sed -e "s,^$outname:,$object :," < "$tmpdepfile" > "$depfile"
sed -e "s,^$outname: \(.*\)$,\1:," < "$tmpdepfile" >> "$depfile"
else
# The sourcefile does not contain any dependencies, so just
# store a dummy comment line, to avoid errors with the Makefile
# "include basename.Plo" scheme.
echo "#dummy" > "$depfile"
fi
rm -f "$tmpdepfile"
;;
icc)
# Intel's C compiler understands `-MD -MF file'. However on
# icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c
# ICC 7.0 will fill foo.d with something like
# foo.o: sub/foo.c
# foo.o: sub/foo.h
# which is wrong. We want:
# sub/foo.o: sub/foo.c
# sub/foo.o: sub/foo.h
# sub/foo.c:
# sub/foo.h:
# ICC 7.1 will output
# foo.o: sub/foo.c sub/foo.h
# and will wrap long lines using \ :
# foo.o: sub/foo.c ... \
# sub/foo.h ... \
# ...
"$@" -MD -MF "$tmpdepfile"
stat=$?
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile"
exit $stat
fi
rm -f "$depfile"
# Each line is of the form `foo.o: dependent.h',
# or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
# Do two passes, one to just change these to
# `$object: dependent.h' and one to simply `dependent.h:'.
sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
# Some versions of the HPUX 10.20 sed can't process this invocation
# correctly. Breaking it into two sed invocations is a workaround.
sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" |
sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
hp2)
# The "hp" stanza above does not work with aCC (C++) and HP's ia64
# compilers, which have integrated preprocessors. The correct option
# to use with these is +Maked; it writes dependencies to a file named
# 'foo.d', which lands next to the object file, wherever that
# happens to be.
# Much of this is similar to the tru64 case; see comments there.
dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
test "x$dir" = "x$object" && dir=
base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
if test "$libtool" = yes; then
tmpdepfile1=$dir$base.d
tmpdepfile2=$dir.libs/$base.d
"$@" -Wc,+Maked
else
tmpdepfile1=$dir$base.d
tmpdepfile2=$dir$base.d
"$@" +Maked
fi
stat=$?
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile1" "$tmpdepfile2"
exit $stat
fi
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
do
test -f "$tmpdepfile" && break
done
if test -f "$tmpdepfile"; then
sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
# Add `dependent.h:' lines.
sed -ne '2,${; s/^ *//; s/ \\*$//; s/$/:/; p;}' "$tmpdepfile" >> "$depfile"
else
echo "#dummy" > "$depfile"
fi
rm -f "$tmpdepfile" "$tmpdepfile2"
;;
tru64)
# The Tru64 compiler uses -MD to generate dependencies as a side
# effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
# At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
# dependencies in `foo.d' instead, so we check for that too.
# Subdirectories are respected.
dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
test "x$dir" = "x$object" && dir=
base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
if test "$libtool" = yes; then
# With Tru64 cc, shared objects can also be used to make a
# static library. This mechanism is used in libtool 1.4 series to
# handle both shared and static libraries in a single compilation.
# With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
#
# With libtool 1.5 this exception was removed, and libtool now
# generates 2 separate objects for the 2 libraries. These two
# compilations output dependencies in $dir.libs/$base.o.d and
# in $dir$base.o.d. We have to check for both files, because
# one of the two compilations can be disabled. We should prefer
# $dir$base.o.d over $dir.libs/$base.o.d because the latter is
# automatically cleaned when .libs/ is deleted, while ignoring
# the former would cause a distcleancheck panic.
tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4
tmpdepfile2=$dir$base.o.d # libtool 1.5
tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5
tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504
"$@" -Wc,-MD
else
tmpdepfile1=$dir$base.o.d
tmpdepfile2=$dir$base.d
tmpdepfile3=$dir$base.d
tmpdepfile4=$dir$base.d
"$@" -MD
fi
stat=$?
if test $stat -eq 0; then :
else
rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
exit $stat
fi
for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
do
test -f "$tmpdepfile" && break
done
if test -f "$tmpdepfile"; then
sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
# That's a tab and a space in the [].
sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
else
echo "#dummy" > "$depfile"
fi
rm -f "$tmpdepfile"
;;
#nosideeffect)
# This comment above is used by automake to tell side-effect
# dependency tracking mechanisms from slower ones.
dashmstdout)
# Important note: in order to support this mode, a compiler *must*
# always write the preprocessed file to stdout, regardless of -o.
"$@" || exit $?
# Remove the call to Libtool.
if test "$libtool" = yes; then
while test $1 != '--mode=compile'; do
shift
done
shift
fi
# Remove `-o $object'.
IFS=" "
for arg
do
case $arg in
-o)
shift
;;
$object)
shift
;;
*)
set fnord "$@" "$arg"
shift # fnord
shift # $arg
;;
esac
done
test -z "$dashmflag" && dashmflag=-M
# Require at least two characters before searching for `:'
# in the target name. This is to cope with DOS-style filenames:
# a dependency such as `c:/foo/bar' could be seen as target `c' otherwise.
"$@" $dashmflag |
sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile"
rm -f "$depfile"
cat < "$tmpdepfile" > "$depfile"
tr ' ' '
' < "$tmpdepfile" | \
## Some versions of the HPUX 10.20 sed can't process this invocation
## correctly. Breaking it into two sed invocations is a workaround.
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
dashXmstdout)
# This case only exists to satisfy depend.m4. It is never actually
# run, as this mode is specially recognized in the preamble.
exit 1
;;
makedepend)
"$@" || exit $?
# Remove any Libtool call
if test "$libtool" = yes; then
while test $1 != '--mode=compile'; do
shift
done
shift
fi
# X makedepend
shift
cleared=no
for arg in "$@"; do
case $cleared in
no)
set ""; shift
cleared=yes ;;
esac
case "$arg" in
-D*|-I*)
set fnord "$@" "$arg"; shift ;;
# Strip any option that makedepend may not understand. Remove
# the object too, otherwise makedepend will parse it as a source file.
-*|$object)
;;
*)
set fnord "$@" "$arg"; shift ;;
esac
done
obj_suffix="`echo $object | sed 's/^.*\././'`"
touch "$tmpdepfile"
${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@"
rm -f "$depfile"
cat < "$tmpdepfile" > "$depfile"
sed '1,2d' "$tmpdepfile" | tr ' ' '
' | \
## Some versions of the HPUX 10.20 sed can't process this invocation
## correctly. Breaking it into two sed invocations is a workaround.
sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
rm -f "$tmpdepfile" "$tmpdepfile".bak
;;
cpp)
# Important note: in order to support this mode, a compiler *must*
# always write the preprocessed file to stdout.
"$@" || exit $?
# Remove the call to Libtool.
if test "$libtool" = yes; then
while test $1 != '--mode=compile'; do
shift
done
shift
fi
# Remove `-o $object'.
IFS=" "
for arg
do
case $arg in
-o)
shift
;;
$object)
shift
;;
*)
set fnord "$@" "$arg"
shift # fnord
shift # $arg
;;
esac
done
"$@" -E |
sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
-e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
sed '$ s: \\$::' > "$tmpdepfile"
rm -f "$depfile"
echo "$object : \\" > "$depfile"
cat < "$tmpdepfile" >> "$depfile"
sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile"
rm -f "$tmpdepfile"
;;
msvisualcpp)
# Important note: in order to support this mode, a compiler *must*
# always write the preprocessed file to stdout, regardless of -o,
# because we must use -o when running libtool.
"$@" || exit $?
IFS=" "
for arg
do
case "$arg" in
"-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
set fnord "$@"
shift
shift
;;
*)
set fnord "$@" "$arg"
shift
shift
;;
esac
done
"$@" -E |
sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::echo "`cygpath -u \\"\1\\"`":p' | sort | uniq > "$tmpdepfile"
rm -f "$depfile"
echo "$object : \\" > "$depfile"
. "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile"
echo " " >> "$depfile"
. "$tmpdepfile" | sed 's% %\\ %g' | sed -n '/^\(.*\)$/ s::\1\::p' >> "$depfile"
rm -f "$tmpdepfile"
;;
none)
exec "$@"
;;
*)
echo "Unknown depmode $depmode" 1>&2
exit 1
;;
esac
exit 0
# Local Variables:
# mode: shell-script
# sh-indentation: 2
# eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "scriptversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-end: "$"
# End:

View File

@@ -1,16 +0,0 @@
cmake_minimum_required (VERSION 3.22)
message ("-- Configuring man pages")
set (man_FILES task-color.5 task-sync.5 taskrc.5 task.1)
foreach (man_FILE ${man_FILES})
configure_file (
man/${man_FILE}.in
man/${man_FILE})
endforeach (man_FILE)
install (DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/man/ DESTINATION ${TASK_MAN1DIR}
FILES_MATCHING PATTERN "*.1")
install (DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/man/ DESTINATION ${TASK_MAN5DIR}
FILES_MATCHING PATTERN "*.5")
install (DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/rc/ DESTINATION ${TASK_RCDIR})
install (FILES ${CMAKE_CURRENT_SOURCE_DIR}/ref/task-ref.pdf DESTINATION ${TASK_DOCDIR})

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,20 +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 README](../../taskchampion)
* [TaskChampion CONTRIBUTING guide](../../taskchampion/CONTRIBUTING.md)
* [TaskChampion Book](../../taskchampion/docs/src/SUMMARY.md)
* [TaskChampion API Documentation](https://docs.rs/taskchampion)
TaskChampion will [become its own
project](https://github.com/GothenburgBitFactory/taskwarrior/issues/3209) soon.

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,31 +0,0 @@
# Coding Style
The coding style used for the Taskwarrior, Taskserver, and other codebases is deliberately kept simple and a little vague.
This is because there are many languages involved (C++, C, Python, sh, bash, HTML, troff and more), and specіfying those would be a major effort that detracts from the main focus which is improving the software.
Instead, the general guideline is simply this:
Make all changes and additions such that they blend in perfectly with the surrounding code, so it looks like only one person worked on the source, and that person is rigidly consistent.
To be a little more explicit:
## C++
- All functionality in C++17 is allowed.
- Indent C++ code using two spaces, no tabs
- Surround operators and expression terms with a space.
This includes a space between a function name and its list of arguments.
- No cuddled braces
- Class names are capitalized, variable names are not
## Python
Follow [PEP8](https://www.python.org/dev/peps/pep-0008/) as much as possible.
## Rust
Rust code should be formatted with `rustfmt` and generally follow Rust style guidelines.

View File

@@ -1,79 +0,0 @@
# Developing Taskwarrior
The following describes the process for developing Taskwarrior. If you are only
changing TaskChampion (Rust code), you can simply treat it like any other Rust
project: modify the source under `taskchampion/` and use `cargo test` to run
the TaskChampion tests.
See the [TaskChampion CONTRIBUTING guide](../../../taskchampion/CONTRIBUTING.md) for more.
## Satisfy the Requirements:
* CMake 3.0 or later
* gcc 7.0 or later, clang 6.0 or later, or a compiler with full C++17 support
* libuuid (if not on macOS)
* 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)
* 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:
First switch to the test directory:
```
$ cd build/test
```
Then you can run all tests, showing details, with
```
$ make VERBOSE=1
```
Alternately, run the tests with the details hidden in `all.log`:
```
$ ./run_all
```
Either way, you can get a summary of any test failures with:
```
$ ./problems
```
Note that any development should be performed using a git clone, and the current development branch.
The source tarballs do not reflect HEAD, and do not contain the test suite.
Follow the [GitHub flow](https://docs.github.com/en/get-started/quickstart/github-flow) for creating a pull request.

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,24 +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/`
- edit `Cargo.toml` to contain only `taskchampion` and `taskchampion-lib` in `members` (see https://github.com/GothenburgBitFactory/taskwarrior/issues/3294).
- `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
- Add a new item in `content/news` on https://github.com/GothenburgBitFactory/tw.org

View File

@@ -1,42 +0,0 @@
# Rust and C++
Taskwarrior has historically been a C++ project, but as part of an [ongoing effort to replace its storage backend](https://github.com/GothenburgBitFactory/taskwarrior/issues/2770) it now includes a Rust library called TaskChampion.
To develop Taskwarrior, you will need both a [C++ compiler and tools](./development.md), and a [Rust toolchain](https://www.rust-lang.org/tools/install).
However, most tasks will only require you to be familiar with one of the two languages.
## 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.
TaskChampion provides a C interface via the `taskchampion-lib` crate.
Other applications, besides Taskwarrior, can use TaskChampion to manage tasks.
Applications written in Rust can use the `taskchampion` crate, while those in other languages may use the `taskchampion-lib` crate.
Taskwarrior is just one application using the TaskChampion interface.
You can build TaskChampion locally by simply running `cargo build` in the root of this repository.
The implementation, including more documentation, is in the [`rust`](../../rust) subdirectory.
## Taskwarrior's use of TaskChampion
Taskwarrior's interface to TaskChampion has a few layers:
* The skeletal Rust crate in [`src/tc/rust`](../../src/tc/rust) brings the symbols from `taskchampion-lib` under CMake's management.
The corresponding header file is included from [`taskchampion/lib`](../../taskchampion/lib).
All of these symbols are placed in the C++ namespace, `tc::ffi`.
* C++ wrappers for the types from `taskchampion-lib` are defined in [`src/tc`](../../src/tc), ensuring memory safety (with `unique_ptr`) and adding methods corresponding to the Rust API's methods.
The wrapper types are in the C++ namespace, `tc`.
## WARNING About Dependency Tracking
CMake cannot detect changes to Rust files in under the `taskchampion/` directory.
Running `make` after these files are changed will not incorporate the changes into the resulting executables.
To force re-compilation of the Rust dependencies:
```
rm -rf src/tc/rust/x86_64-unknown-linux-gnu/debug/libtc_rust.a
make
```
You may need to adjust the `x86_64-unknown-linux-gnu` part of that command depending on what system you are using for development.

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,469 +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
View File

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

View File

@@ -1,317 +0,0 @@
.TH task-color 5 2016-02-24 "${PACKAGE_STRING}" "User Manuals"
.SH NAME
task-color \- A color tutorial for the Taskwarrior command line todo manager.
.SH AUTOMATIC MONOCHROME
It should be mentioned that Taskwarrior is aware of whether its output is going
to a terminal, or to a file or through a pipe. When Taskwarrior output goes to
a terminal, color is desirable, but consider the following command:
$ task list > file.txt
Do we really want all those color control codes in the file? Taskwarrior
assumes that you do not, and temporarily sets color to 'off' while generating
the output. This explains the output from the following command:
$ task show | grep '^color '
color off
it always returns 'off', no matter what the setting, because the output is being
sent to a pipe.
If you wanted those color codes, you can override this behavior by setting the
_forcecolor variable to on, like this:
$ task config _forcecolor on
$ task config | grep '^color '
color on
or by temporarily overriding it like this:
$ task rc._forcecolor=on config | grep '^color '
color on
.SH AVAILABLE COLORS
Taskwarrior has a 'color' command that will show all the colors it is capable of
displaying. Try this:
$ task color
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
render them.
You should at least see the Basic colors and Effects - if you do, then you have
16-color support. If your terminal supports 256 colors, you'll know it!
.SH 16-COLOR SUPPORT
The basic color support is provided through named colors:
black, red, blue, green, magenta, cyan, yellow, white
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.
Background color is specified by using the word 'on', and one of the above
colors. Some examples:
green # green text, default background color
green on yellow # green text, yellow background
on yellow # default text color, yellow background
These colors can be modified further, by making the foreground bold, or by
making the background bright. Some examples:
bold green
bold white on bright red
on bright cyan
The order of the words is not important, so the following are equivalent:
bold green
green bold
But the 'on' is important - colors before the 'on' are foreground, and colors
after 'on' are background.
There is an additional 'underline' attribute that may be used:
underline bold red on black
And an 'inverse' attribute:
inverse red
Taskwarrior has a command that helps you visualize these color combinations.
Try this:
$ task color underline bold red on black
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
the sample requested.
Some combinations look very nice, some look terrible. Different terminal
programs do implement slightly different versions of 'red', for example, so you
may see some unexpected variation across machines. The brightness of your
display is also a factor.
.SH 256-COLOR SUPPORT
Using 256 colors follows the same form, but the names are different, and some
colors can be referenced in different ways. First there is by color ordinal,
which is like this:
color0
color1
color2
...
color255
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
(color8 - color15). Then a block of 216 colors (color16 - color231). Then a
block of 24 gray colors (color232 - color255).
The large block of 216 colors (6x6x6 = 216) represents a color cube, which can
be addressed via RGB values from 0 to 5 for each component color. A value of 0
means none of this component color, and a value of 5 means the most intense
component color. For example, a bright red is specified as:
rgb500
And a darker red would be:
rgb300
Note that the three digits represent the three component values, so in this
example the 5, 0 and 0 represent red=5, green=0, blue=0. Combining intense red
with no green and no blue yields red. Similarly, blue and green are:
rgb005
rgb050
Another example - bright yellow - is a mix of bright red and bright green, but
no blue component, so bright yellow is addressed as:
rgb550
A soft pink would be addressed as:
rgb515
See if you agree, by running:
$ task color black on rgb515
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
have a red value of 5. Within each square, blue ranges from 0 to 5 left to
right, and within each square green ranges from 0 to 5, top to bottom. This
scheme takes some getting used to.
The block of 24 gray colors can also be accessed as gray0 - gray23, in a
continuous ramp from black to white.
.SH MIXING 16- AND 256-COLORS
If you specify 16-colors, and view on a 256-color terminal, no problem. If you
try the reverse, specifying 256-colors and viewing on a 16-color terminal, you
will be disappointed, perhaps even appalled.
There is some limited color mapping - for example, if you were to specify this
combination:
red on gray3
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.
Note also that there is no bold or bright attributes when dealing with 256
colors, but there is still underline available.
.SH LEGEND
Taskwarrior will show examples of all defined colors used in your .taskrc, or
theme, if you run this command:
$ task color legend
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.
.SH RULES
Taskwarrior supports colorization rules. These are configuration values that
specify a color, and the conditions under which that color is used. By example,
let us add a few tasks:
$ task add project:Home priority:H pay the bills (1)
$ task add project:Home clean the rug (2)
$ task add project:Garden clean out the garage (3)
We can add a color rule that uses a blue background for all tasks in the Home
project:
$ task config color.project.Home 'on blue'
We use quotes around 'on blue' because there are two words, but they represent
one value in the .taskrc file. Now suppose we wish to use a bold yellow text
color for all cleaning work:
$ task config color.keyword.clean 'bold yellow'
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
the task is shown as "bold yellow on blue".
Color rules can be applied by project and description keyword, as shown, and
also by priority (or lack of priority), by active status, by being due or
overdue, by being tagged, or having a specific tag (perhaps the most useful
rule) or by being a recurring task.
It is possible to create a very colorful mix of rules. With 256-color support,
those colors can be made subtle, and complementary, but without care, this can
be a visual mess. Beware!
In such cases, consider using the 'rule.color.merge=no' option to disable the
color blending.
The precedence for the color rules is determined by the configuration
variable 'rule.precedence.color', which by default contains:
deleted,completed,active,keyword.,tag.,project.,overdue,scheduled,due.today,due,blocked,blocking,recurring,tagged,uda.
These are just the color rules with the 'color.' prefix removed. The
rule 'color.deleted' has the highest precedence, and 'color.uda.' the lowest.
The keyword rule shown here as 'keyword.' corresponds to a wildcard pattern,
meaning 'color.keyword.*', or in other words all the keyword rules.
There is also 'color.project.none', 'color.tag.none' and
'color.uda.priority.none' to specifically represent missing data.
.SH THEMES
Taskwarrior supports themes. What this really means is that with the ability to
include other files into the .taskrc file, different sets of color rules can
be included.
To get a good idea of what a color theme looks like, try adding this entry to
your .taskrc file:
.RS
include dark-256.theme
.RE
You can use any of the standard Taskwarrior themes:
.RS
dark-16.theme
.br
dark-256.theme
.br
dark-blue-256.theme
.br
dark-gray-256.theme
.br
dark-green-256.theme
.br
dark-red-256.theme
.br
dark-violets-256.theme
.br
dark-yellow-green.theme
.br
light-16.theme
.br
light-256.theme
.br
solarized-dark-256.theme
.br
solarized-light-256.theme
.br
dark-default-16.theme
.br
dark-gray-blue-256.theme
.br
no-color.theme
.RE
Bear in mind that if you are using a terminal with a dark background, you will
see better results using a dark theme.
You can also see how the theme will color the various tasks with the command:
$ task color legend
Better yet, create your own, and share it. We will gladly host the theme file
on <https://taskwarrior.org>.
.SH "CREDITS & COPYRIGHTS"
Copyright (C) 2006 \- 2021 T. Babej, P. Beckingham, F. Hernandez.
Taskwarrior is distributed under the MIT license. See
https://www.opensource.org/licenses/mit-license.php for more information.
.SH SEE ALSO
.BR task(1),
.BR taskrc(5),
.BR task-sync(5)
For more information regarding Taskwarrior, see the following:
.TP
The official site at
<https://taskwarrior.org>
.TP
The official code repository at
<https://github.com/GothenburgBitFactory/taskwarrior>
.TP
You can contact the project by emailing
<support@GothenburgBitFactory.org>
.SH REPORTING BUGS
.TP
Bugs in Taskwarrior may be reported to the issue-tracker at
<https://github.com/GothenburgBitFactory/taskwarrior/issues>

View File

@@ -1,230 +0,0 @@
.TH task-sync 5 2016-02-24 "${PACKAGE_STRING}" "User Manuals"
.SH NAME
task-sync \- A discussion and tutorial for the various
.BR task (1)
data synchronization capabilities.
.SH INTRODUCTION
Taskwarrior can synchronize your tasks to a server. This has a few benefits:
.br
- Makes your tasks accessible from multiple systems, called "replicas".
.br
- Provides a backup of your tasks.
.br
- Saves disk space.
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
Taskwarrior can perform a sync operation at every garbage collection (gc) run.
This is the default, and is appropriate for local synchronization.
For synchronization to a server, a better solution is to run
$ task sync
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.
$ task config sync.encryption_secret <encryption_secret>
Tools such as
.BR pwgen (1)
can generate suitable secret values.
.SS Sync Server
To synchronize your tasks to a sync server, you will need the following
information from the server administrator:
.br
- The server's URL ("origin", such as "https://tw.example.com")
.br
- A client ID ("client_id") identifying your tasks
Configure Taskwarrior with these details:
$ task config sync.server.origin <origin>
$ task config sync.server.client_id <client_id>
Note that the origin must include the scheme, such as 'http://' or 'https://'.
.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:
$ gcloud config set project $PROJECT_NAME
$ gcloud auth application-default login
Then configure Taskwarrior with:
$ task config sync.gcp.bucket <bucket-name>
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.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:
$ task config sync.gcp.bucket <bucket-name>
$ task config sync.gcp.credential_path <absolute-path-to-downloaded-credentials>
.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:
$ task config sync.local.server_dir /path/to/sync
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
origin, 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):
$ task config recurrence on
And on the other clients, run:
$ task config recurrence off
This protects you against the effects of a sync/duplication bug.
.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
shared directory under the control of the file hosting services.
Syncing happens quickly, although it is possible to run into conflict situations
when there is no network connectivity, and the tasks are modified in two
separate locations. This is because the file hosting service knows only about
files, and it has no idea how to merge tasks. Avoid this problem by never
modifying the same task on two machines, without an intervening sync.
Setup simply involves creating the directory and modifying your data.location
configuration variable like this:
$ task config data.location /path/to/shared/directory
Strengths:
.br
- Good client support
.br
- Easy setup
.br
- Transparent use
Weaknesses:
.br
- Tasks are not properly merged
.SH "CREDITS & COPYRIGHTS"
Copyright (C) 2006 \- 2021 T. Babej, P. Beckingham, F. Hernandez.
Taskwarrior is distributed under the MIT license. See
https://www.opensource.org/licenses/mit-license.php for more information.
.SH SEE ALSO
.BR task(1),
.BR taskrc(5),
.BR task-color(5),
For more information regarding Taskwarrior, see the following:
.TP
The official site at
<https://taskwarrior.org>
.TP
The official code repository at
<https://github.com/GothenburgBitFactory/taskwarrior>
.TP
You can contact the project by emailing
<support@GothenburgBitFactory.org>
.SH REPORTING BUGS
.TP
Bugs in Taskwarrior may be reported to the issue-tracker at
<https://github.com/GothenburgBitFactory/taskwarrior/issues>

394
doc/man/task-tutorial.5 Normal file
View File

@@ -0,0 +1,394 @@
.TH task-tutorial 5 2009-07-14 "Task 1.8.0" "User Manuals"
.SH NAME
task-tutorial \- A tutorial for the task(1) command line todo manager.
.SH DESCRIPTION
Task is a command line TODO list manager. It maintains a list of tasks that you
want to do, allowing you to add/remove, and otherwise manipulate them. Task
has a rich list of subcommands that allow you to do various things with it.
.SH 30 second tutorial
For the excessively lazy. Add two tasks:
.br
.RS
$ task add Read task documents later
.br
$ task add priority:H Pay bills
.RE
Easy. See that second one has a High priority? Now let's look at those tasks:
.br
.RS
$ task ls
.br
ID Project Pri Description
.br
2 H Pay bills
.br
1 Read task documents later
.RE
They are ordered by priority. Let's mark number 2 as done:
.br
.RS
$ task 2 done
.br
$ task ls
.br
ID Project Pri Description
.br
1 Read task documents later
.RE
Gone. Now let's delete that remaining task, because, well, why bother
now we are already using task:
.br
.RS
$ task delete 1
.br
$ task ls
.br
No matches
.RE
Easy. But now consider checking out what task can really do...
.SH Simple usage of task
Let us begin by adding some tasks:
.br
.RS
$ task add Book plane ticket
.br
$ task add Rent a tux
.br
$ task add Reserve a rental car
.br
$ task add Reserve a hotel room
.RE
That's it. You'll notice immediately that task has a very minimalist
interface. Let us take a look at those tasks:
.br
.RS
$ task ls
.br
ID Project Pri Description
.br
1 Book plane ticket
.br
2 Rent a tux
.br
3 Reserve a rental car
.br
4 Send John a birthday card
.RE
The 'ls' command provides the most minimal list of tasks. Each task has
been given an id number, and you can see that there are no projects or
priorities assigned. Wait a minute - I own a tux, I don't need to rent
one. Let us delete task 2:
.br
.RS
$ task 2 delete
.br
Permanently delete task? (y/n) y
.RE
Task wants you to confirm deletions. To remove the confirmation, edit
your .taskrc file and change the line:
.br
.RS
confirmation=yes
.RE
.br
to have a value of "no".
While the use of projects and priorities are not essential to benefiting
from task, they can be very useful when the list of tasks grows large.
Let's assign a project to these tasks:
.br
.RS
$ task 1 project:Wedding
.br
$ task 3 project:Wedding
.br
$ task 4 project:Family
.br
$ task ls
.br
ID Project Pri Description
.br
3 Family Send John a birthday card
.br
2 Wedding Reserve a rental car
.br
1 Wedding Book plane ticket
.RE
Notice that the id numbers have changed. When tasks get deleted, or have
their attributes changed (project, for example), the ids are prone to change.
But the id numbers will remain valid until the next 'ls' command is run.
You should only use the ids from the most recent 'ls' command. The ids change,
because task is always trying to use small numbers so that it is easy for you
to enter them correctly. Now that projects are assigned, we can look at just
the Wedding project tasks:
Subprojects are supported. If you have a project "Wedding", you can specify
that a task is a subproject "Transport" of "Wedding" by assigning the project
"Wedding.Transport". Let's do this:
.br
.RS
$ task 2 project:Wedding.Transport
.br
$ task ls
.br
ID Project Pri Description
.br
3 Family Send John a birthday card
.br
2 Wedding.Transport Reserve a rental car
.br
1 Wedding Book plane ticket
.RE
Task matches the leftmost part of the project when searching, so projects may
be abbreviated:
.br
.RS
$ task ls project:Wedding.Tra
.br
ID Project Pri Description
.br
2 Wedding.Transport Reserve a rental car
.RE
This way of matching projects can be used to see all tasks under the "Wedding"
project and all subprojects:
.br
.RS
$ task ls project:Wedding
.br
ID Project Pri Description
.br
2 Wedding.Transport Reserve a rental car
.br
1 Wedding Book plane ticket
.RE
Let's reassign 2 back to the "Wedding" project:
.br
.RS
$ task 2 project:Wedding
.RE
Now that projects are assigned, we can look at just the Wedding project tasks:
.br
.RS
$ task ls project:Wedding
.br
ID Project Pri Description
.br
1 Wedding Book plane ticket
.br
2 Wedding Reserve a rental car
.RE
Any command arguments after the 'ls' are used for filtering the output.
We could also have requested:
.br
.RS
$ task ls ticket plane
.br
ID Project Pri Description
.br
1 Wedding Book plane ticket
.RE
Now let's prioritize. Priorities can be H, M or L (High, Medium, Low).
.br
.RS
$ task ls
.br
ID Project Pri Description
.br
3 Family Send John a birthday card
.br
2 Wedding Reserve a rental car
.br
1 Wedding Book plane ticket
.br
$ task 1 priority:H
.br
$ task 2 prior:M
.br
$ task 3 pr:H
.br
Ambiguous attribute 'pr' - could be either of project, priority
.br
$ task 3 pri:H
.br
$ task ls
.br
ID Project Pri Description
.br
3 Family H Send John a birthday card
.br
1 Wedding H Book plane ticket
.br
2 Wedding M Reserve a rental car
.RE
Notice that task supports the abbreviation of words such as priority,
project. Priority can be abbreviated to pri, but not pr, because it
is ambiguous. Now that tasks have been prioritized, you can see that
the tasks are being sorted by priority, with the highest priority
tasks at the top.
These attributes can all be provided when the task is added, instead of
applying them afterwards, as shown. The following command shows how to
set all the attributes at once:
.br
.RS
$ task add project:Wedding priority:H Book plane ticket
.RE
The 'ls' command provides the least information for each task. The 'list'
command provides more:
.br
.RS
$ task list
.br
ID Project Pri Due Active Age Description
.br
3 Family H 4 mins Send John a birthday card
.br
1 Wedding H 5 mins Book plane ticket
.br
2 Wedding M 5 mins Reserve a rental car
.RE
Notice that a task can have a due date, and can be active. The task lists are
sorted by due date, then priority. Let's add due dates:
.br
.RS
$ task 3 due:6/25/2008
.br
$ task 1 due:7/31/2008
.br
$ task list
.br
ID Project Pri Due Active Age Description
.br
3 Family H 6/25/2008 6 mins Send John a birthday card
.br
1 Wedding H 7/31/2008 7 mins Book plane ticket
.br
2 Wedding M 7 mins Reserve a rental car
.RE
If today's date is 6/23/2008, then task 3 is due in 2 days. It will be colored
yellow if your terminal supports color. To change this color, edit your .taskrc
file, and change the line to one of these alternatives:
.br
.RS
color.due=red
.br
color.due=on_blue
.br
color.due=red on_blue
.br
color.due=bold_red on_blue
.RE
Where color is one of the following:
.br
.RS
black, blue, red, green, cyan, magenta, yellow or white
.RE
All colors are specified in this way. Take a look in .taskrc for all the other
color rules that you control.
Tagging tasks is a good way to group them, aside from specifying a project.
To add a tag to a task:
.br
.RS
$ task <id> +tag
.RE
The plus sign indicates that this is a tag. Any number of tags may be applied to a
task, and then used for searching. Tags are just single words that are labels.
.br
.RS
$ task list
.br
ID Project Pri Due Active Age Description
.br
3 Family H 6/25/2008 8 mins Send John a birthday card
.br
1 Wedding H 7/31/2008 9 mins Book plane ticket
.br
2 Wedding M 9 mins Reserve a rental car
.br
$ task 1 +phone
.br
$ task 2 +phone
.br
$ task 3 +shopping
.br
$ task 3 +john
.br
$ task list +phone
.br
ID Project Pri Due Active Age Description
.br
1 Wedding H 7/31/2008 9 mins Book plane ticket
.br
2 Wedding M 9 mins Reserve a rental car
.RE
To remove a tag from a task, use the minus sign:
.br
.RS
$ task 3 \-john
.RE
.SH Advanced usage of task
Advanced examples of the usage of task can be found at
the official site at <http://taskwarrior.org>
.SH "CREDITS & COPYRIGHTS"
task was written by P. Beckingham <paul@beckingham.net>.
.br
Copyright (C) 2006 \- 2009 P. Beckingham
This man page was originally written by Federico Hernandez.
task is distributed under the GNU General Public License. See
http://www.gnu.org/licenses/gpl-2.0.txt for more information.
.SH SEE ALSO
.BR task(1),
.BR taskrc(5)
For more information regarding task, the following may be referenced:
.TP
The official site at
<http://taskwarrior.org>
.TP
The official code repository at
<http://github.com/pbeckingham/task/>
.TP
You can contact the project by writing an email to
<support@taskwarrior.org>
.SH REPORTING BUGS
.TP
Bugs in task may be reported to the issue-tracker at
<http://taskwarrior.org>

469
doc/man/task.1 Normal file
View File

@@ -0,0 +1,469 @@
.TH task 1 2009-07-14 "Task 1.8.0" "User Manuals"
.SH NAME
task \- A command line todo manager.
.SH SYNOPSIS
.B task [subcommand] [args]
.SH DESCRIPTION
Task is a command line todo list manager. It maintains a list of tasks that you
want to do, allowing you to add/remove, and otherwise manipulate them. Task
has a rich list of subcommands that allow you to do various things with it.
.SH SUBCOMMANDS
.TP
.B add [tags] [attrs] description
Adds a new task to the task list.
.TP
.B append [tags] [attrs] description
Appends more information to an existing
task.
.TP
.B annotate ID description
Adds an annotation to an existing task.
.TP
.B ID [tags] [attrs] [description]
Modifies the existing task with provided information.
.TP
.B ID /from/to/
Performs one substitution on task description and annotation for fixing mistakes.
.TP
.B ID /from/to/g
Performs all substitutions on task description and annotation for fixing mistakes.
.TP
.B edit ID
Launches an editor to let you modify all aspects of a task directly.
Use carefully.
.TP
.B undo
Reverts the most recent action.
.TP
.B shell
Launches an interactive shell with all the task commands available.
.TP
.B duplicate ID [tags] [attrs] [description]
Duplicates the specified task and allows modifications.
.TP
.B delete ID
Deletes the specified task from task list.
.TP
.B info ID
Shows all data and metadata for the specified task.
.TP
.B start ID
Marks the specified task as started.
.TP
.B stop ID
Removes the
.I start
time from the specified task.
.TP
.B done ID [tags] [attrs] [description]
Marks the specified task as done.
.TP
.B projects
Lists all project names used, and the number of tasks for each.
.TP
.B tags
Show a list of all tags used.
.TP
.B summary
Shows a report of task status by project.
.TP
.B timesheet [weeks]
Shows a weekly report of tasks completed and started.
.TP
.B history
Shows a report of task history by month.
.TP
.B ghistory
Shows a graphical report of task status by month.
.TP
.B calendar [ y | due [y] | month year [y] | year ]
Shows a monthly calendar with due tasks marked.
.TP
.B stats
Shows task database statistics.
.TP
.B import \fIfile
Imports tasks from a variety of formats.
.TP
.B export \fIfile
Exports all tasks as a CSV file.
.TP
.B color
Displays all possible colors.
.TP
.B version
Shows the task version number and current settings in the task configuration
file.
.TP
.B help
Shows the long usage text.
.SH REPORT SUBCOMMANDS
A report is a listing of information from the task database. There are several
reports currently predefined in task. The output and sort behavior of these
reports can be configured in the configuration file. See also the man page taskrc(5).
.TP
.B active [tags] [attrs] [description]
Shows all tasks matching the specified criteria
that are started but not completed.
.TP
.B all [tags] [attrs] [description]
Shows all tasks matching the specified criteria.
.TP
.B completed [tags] [attrs] [description]
Shows all tasks matching the specified criteria
that are completed.
.TP
.B ls [tags] [attrs] [description]
Provides a minimal listing of tasks with specified criteria.
.TP
.B list [tags] [attrs] [description]
Provides a more detailed listing of tasks with specified criteria.
.TP
.B long [tags] [attrs] [description]
Provides the most detailed listing of tasks with specified criteria.
.TP
.B newest [tags] [attrs] [description]
Shows the newest tasks with specified criteria.
.TP
.B oldest [tags] [attrs] [description]
Shows the oldest tasks with specified criteria
.TP
.B overdue [tags] [attrs] [description]
Shows all incomplete tasks matching the specified criteria
that are beyond their due date.
.TP
.B recurring [tags] [attrs] [description]
Shows all recurring tasks matching the specified criteria.
.TP
.B waiting [tags] [attrs] [description]
Shows all waiting tasks matching the specified criteria.
.TP
.B next [tags] [attrs] [description]
Shows all tasks with upcoming due dates matching the specified criteria.
.SH ATTRIBUTES AND METADATA
.TP
.B ID
Tasks can be specified uniquely by IDs, which are simply the index of the
task in a report. Be careful, as the IDs of tasks may change after a
modification to the database. Always run a report to check you have the right
ID for a task. IDs can be given to task as a sequences, for example,
.br
.B
task del 1,4-10,19
.TP
.B +tag|-tag
Tags are arbitrary words associated with a task. Use + to add a tag and - to
remove a tag from a task. A task can have any quantity of tags
.TP
.B project:<project-name>
Specifies the project to which a task is related to.
.TP
.B priority:H|M|L|N
Specifies High, Medium, Low and No priority for a task.
.TP
.B due:<due-date>
Specifies the due-date of a task.
.TP
.B recur:<frequency>
Specifies the frequency of a recurrence of a task.
.TP
.B until:<end-date-of-recurrence>
Specifies the Recurrence end-date of a task.
.TP
.B fg:<color-spec>
Specifies foreground color.
.TP
.B bg:<color-spec>
Specifies background color.
.TP
.B limit:<number-of-rows>
Specifies the desired number of rows a report should have.
.TP
.B wait:<wait-date>
Date until task becomes pending.
.SH ATTRIBUTE MODIFIERS
Attribute modifiers improve filters. Supported modifiers are:
.RS
.B before (synonyms under, below)
.br
.B after (synonyms over, above)
.br
.B none
.br
.B any
.br
.B is (synonym equals)
.br
.B isnt (synonym not)
.br
.B has (synonym contain)
.br
.B hasnt
.br
.B startswith (synonym left)
.br
.B endswith (synonym right)
.RE
For example:
.RS
task list due.before:eom priority.not:L
.RE
.SH SPECIFYING DATES AND FREQUENCIES
.SS DATES
Task reads dates from the command line and displays dates in the
reports. The expected and desired date format is determined by the
configuration variable
.I dateformat
in the task configuration file.
.RS
.TP
Exact specification
task ... due:7/14/2008
.TP
Relative wording
task ... due:today
.br
task ... due:yesterday
.br
task ... due:tomorrow
.TP
Day number with ordinal
task ... due:23rd
.TP
End of week (Friday), month and year
task ... due:eow
.br
task ... due:eom
.br
task ... due:eoy
.TP
Next occurring weekday
task ... due:fri
.RE
.SS FREQUENCIES
Recurrence periods. Task supports several ways of specifying the
.I frequency
of recurring tasks.
.RS
.TP
daily, day, 1d, 2d, ...
Every day or a number of days.
.TP
weekdays
Mondays, Tuesdays, Wednesdays, Thursdays, Fridays and skipping weekend days.
.TP
weekly, 1w, 2w, ...
Every week or a number of weeks.
.TP
biweekly, fortnight
Every two weeks.
.TP
quarterly, 1q, 2q, ...
Every three months, a quarter, or a number of quarters.
.TP
semiannual
Every six months.
.TP
annual, yearly, 1y, 2y, ...
Every year or a number of years.
.TP
biannual, biyearly, 2y
Every two years.
.RE
.SH COMMAND ABBREVIATION
All task commands may be abbreviated as long as a unique prefix is used. E.g.
.RS
$ task li
.RE
is an unambiguous abbreviation for
.RS
$ task list
.RE
but
.RS
$ task l
.RE
could be list, ls or long.
.SH SPECIFYING DESCRIPTIONS
Some task descriptions need to be escaped because of the shell
and the special meaning of some characters to the shell. This can be
done either by adding quotes to the description or escaping the special
character:
.RS
$ task add "quoted ' quote"
.br
$ task add escaped \\' quote
.RE
The argument \-\- (a double dash) tells task to treat all other args
as description:
.RS
$ task add -- project:Home needs scheduling
.RE
.SH CONFIGURATION FILE AND OVERRIDE OPTIONS
Task stores its configuration in a file in the user's home directory:
~/.taskrc . The default configuration file can be overridden with
.TP
.B task rc:<path-to-alternate-file>
Specifies an alternate configuration file.
.TP
.B task rc.<name>:<value> ...
Specifies individual configuration file overrides.
.SH EXAMPLES
For examples please see the task tutorial man page at
.RS
man task-tutorial
.RE
or the online documentation starting at
.RS
<http://taskwarrior.org/wiki/taskwarrior/Simple>
.RE
.SH FILES
.TP
~/.taskrc User configuration file - see also taskrc(5).
.TP
~/.task The default directory where task stores its data files. The location
can be configured in the configuration file.
.TP
~/.task/pending.data The file that contains the tasks that are not yet done.
.TP
~/.task/completed.data The file that contains the completed "done" tasks.
.TP
~/.task/undo.data The file that contains the information to the "undo" command.
.SH "CREDITS & COPYRIGHTS"
task was written by P. Beckingham <paul@beckingham.net>.
.br
Copyright (C) 2006 \- 2009 P. Beckingham
This man page was originally written by P.C. Shyamshankar, and has been modified
and supplemented by Federico Hernandez.
task is distributed under the GNU General Public License. See
http://www.gnu.org/licenses/gpl-2.0.txt for more information.
.SH SEE ALSO
.BR taskrc(5),
.BR task-tutorial(5)
For more information regarding task, the following may be referenced:
.TP
The official site at
<http://taskwarrior.org>
.TP
The official code repository at
<http://github.com/pbeckingham/task/>
.TP
You can contact the project by writing an email to
<support@taskwarrior.org>
.SH REPORTING BUGS
.TP
Bugs in task may be reported to the issue-tracker at
<http://taskwarrior.org>

File diff suppressed because it is too large Load Diff

493
doc/man/taskrc.5 Normal file
View File

@@ -0,0 +1,493 @@
.TH taskrc 5 2009-07-14 "Task 1.8.0" "User Manuals"
.SH NAME
taskrc \- Configuration file for the task(1) command
.SH SYNOPSIS
.B $HOME/.taskrc
.br
.B task rc:<directory-path>/.taskrc
.SH DESCRIPTION
.B task
obtains its configuration data from a file called
.I .taskrc
\&. This file is normally located in the user's home directory:
.RS
$HOME/.taskrc
.RE
The default location can be overridden using the
.I rc:
attribute when running task:
.RS
$ task rc:<directory-path>/.taskrc
.RE
Individual option can be overridden by using the
.I rc.<name>:
attribute when running task:
.RS
$ task rc.<name>:<value> ...
.RE
If
.B task
is run without an existing configuration file it will ask if it should create a default, sample
.I .taskrc
file in the user's home directory.
The task configuration file consists of a series of "assignments" in each line. The "assignments" have the syntax:
.RS
<name-of-configuration-variable>=<value-to-be-set>
.RE
where:
.RS
.TP
<name-of-configuration-variable>
is one of the variables described below
.TP
<value-to-be-set>
is the value the variable is to be set to.
.RE
and set a configuration variable to a certain value. The equal sign ("=") is used to separate the variable
name from the value to be set.
The hash mark, or pound sign ("#") is used as a "comment" character. It can be used to annotate the
configuration file. All text after the character to the end of the line is ignored.
.SH CONFIGURATION VARIABLES
Valid variable names and their default values are:
.SS FILES
.TP
.B data.location=$HOME/.task
This is a path to the directory containing all the task files. By default, it is set up to be ~/.task,
for example: /home/paul/.task
.TP
.B locking=on
Determines whether task uses file locking when accessing the pending.data and completed.data files.
Default to "on". Solaris users who store the task data files on an NFS mount may need to set locking
to "off". Note that setting this value to "off" is dangerous. It means that another program may write
to the task.pending file when task is attempting to do the same.
.SS TERMINAL
.TP
.B curses=on
Determines whether task uses ncurses to establish the size of the window you are
using, for text wrapping.
.TP
.B defaultwidth=80
The width of tables used when ncurses support is not available. Defaults to 80.
.TP
.B editor=vi
Specifies which text editor you wish to use for when the
.B task edit <ID>
command is used. Task will first look for this configuration variable. If found, it is used.
Otherwise task will look for the $VISUAL or $EDITOR environment variables, before it defaults
to using "vi".
.SS MISCELLANEOUS
.TP
.B locale=en-US
The locale is a combination of ISO 639-1 language code and ISO 3166 country
code. If not specified, task will assume en-US. If specified, task will locate
the correct file of localized strings and proceed. It is an error to specify a
locale for which there is no strings file.
.TP
.B confirmation=yes
May be "yes" or "no", and determines whether task will ask for confirmation before deleting a task or doing bulk changes.
.TP
.B echo.command=yes
May be "yes" or "no", and causes task to display the ID and description of any task when you run the start, stop, do, undo or delete commands. The default value is "yes".
.TP
.B next=2
Is a number, defaulting to 2, which is the number of tasks for each project that are shown in the
.B task next
command.
.TP
.B bulk=2
Is a number, defaulting to 2. When more than this number of tasks are modified in a single command, confirmation will be required, unless the
.B confirmation
variable is "no".
.TP
.B nag=You have higher priority tasks.
This may be a string of text, or blank. It is used as a prompt when a task is completed
that is not considered high priority. The "task next" command lists important tasks, and
completing one of those does not generate this nagging. Default value is: You have higher
priority tasks.
.TP
.B complete.all.projects=yes
May be yes or no, and determines whether the tab completion scripts consider all the
project names you have used, or just the ones used in active tasks.
.TP
.B complete.all.tags=yes
May be yes or no, and determines whether the tab completion scripts consider all the
tag names you have used, or just the ones used in active tasks.
.SS DATES
.TP
.B dateformat=m/d/Y
This is a string of characters that define how task formats dates. The default value is: m/d/Y.
The string should contain the characters
.RS
m minimal-digit month, for example 1 or 12
.br
d minimal-digit day, for example 1 or 30
.br
y two-digit year, for example 09
.br
D two-digit day, for example 01 or 30
.br
M two-digit month, for example 01 or 12
.br
Y four-digit year, for example 2009
.RE
The string may also contain other characters to act as spacers, or formatting. Examples for other
variable values:
.RS
.br
d/m/Y would output 24/7/2009
.br
YMD would output 20090724
.br
m-d-y would output 07-24-09
.RE
.TP
.B weekstart=Sunday
Determines the day a week starts. Valid values are Sunday or Monday only.
.TP
.B displayweeknumber=yes
Determines if week numbers are displayed when using the "task calendar" command.
The week number is dependent on the day a week starts.
.TP
.B due=7
This is the number of days into the future that define when a task is considered due,
and is colored accordingly. Defaults to 7.
.TP
.B monthsperline=2
Determines how many months the "task calendar" command renders across the screen.
Defaults to however many will fit. If more months that will fit are specified,
task will only show as many that will fit.
.SS COLOR CONTROLS
.TP
.B color=on
May be "on" or "off". Determines whether task uses color. When "off", task will
use dashes (-----) to underline column headings.
.TP
.B fontunderline=on
Determines if font underlines or ASCII dashes should be used to underline
headers.
Task has a number of coloration rules. They correspond to a particular attribute
of a task, such as it being due, or being active, and specifies the automatic
coloring of that task. A list of valid color, depending on your terminal, can be
obtained by running the command
.RS
.B task color
.RE
.RS
The coloration rules and their defaults are:
.RE
.RS
.RS
.B color.overdue=bold_red
The color for overdue tasks.
.br
.B color.due=bold_yellow
The color of due tasks.
.br
.B color.pri.H=bold
The color of priority:H tasks.
.br
.B color.pri.M=on_yellow
The color of priority:M tasks.
.br
.B color.pri.L=on_green
The color of priority:L tasks.
.br
.B color.pri.none=white on_blue
The color of priority: tasks.
.br
.B color.active=bold_cyan
The color of active tasks.
.br
.B color.tagged=yellow
The color of tagged tasks.
.br
.B color.recurring=on_red
The color for recurring tasks.
.RE
.RE
.RS
The value for the coloration rules may be one optional foreground color and one optional
color. For example, the value may be
.RE
.RS
.RS
bold_red on_bright_yellow
.RE
.RE
.RS
Certain attributes like tags, projects and keywords can also have their own coloration rules.
.RE
.RS
.TP
.B color.tag.X=yellow
Colors any task that has the tag X.
.TP
.B color.project.X=on_green
Colors any task assigned to project X.
.TP
.B color.keyword.X=on_blue
Colors any task where the description contains X.
.TP
.B color.header=green
Colors any of the messages printed prior to the report output.
.TP
.B color.message=green
Colors any of the messages printed after the report output.
.TP
.B color.footnote=green
Colors any of the messages printed last.
.RE
.SS SHADOW FILE
.TP
.B
shadow.file=$HOME/.task/shadow.txt
If specified, designates a file path that will be automatically written to by task,
whenever the task database changes. In other words, it is automatically kept up to date.
The shadow.command configuration variable is used to determine which report is written
to the shadow file. There is no color used in the shadow file. This feature can be useful
in maintaining a current file for use by programs like GeekTool, Conky or Samurize.
.TP
.B
shadow.command=list
This is the command that is run to maintain the shadow file, determined by the
.I shadow.file
configuration variable. The format is identical to that of
.I default.command
\&. Please see the corresponding documentation for that command.
.TP
.B
shadow.notify=on
When this value is set to "on", task will display a message whenever the shadow
file is updated by some task command.
.SS DEFAULTS
.TP
.B
default.project=foo
Provides a default project name for the
.I task add
command.
.TP
.B
default.priority=M
Provides a default priority for the
.I task add
command.
.TP
.B
default.command=list
Provides a default command that is run every time task is invoked with no arguments.
For example, if set to:
.RS
.RS
default.command=list project:foo
.RE
.RE
.RS
then task will run the "list project:foo" command if no command is specified. This means that
by merely typing
.RE
.RS
.RS
$ task
.br
[task list project:foo]
.br
\&
.br
ID Project Pri Description
1 foo H Design foo
2 foo Build foo
.RE
.RE
.SS REPORTS
The reports can be customized by using the following configuration variables.
The output columns, their labels and the sort order can be set using the
corresponding variables for each report. Each report name is used as a
"command" name. For example
.TP
.B task overdue
.TP
.B report.X.description
The description for report X when running the "task help" command.
.TP
.B report.X.columns
The columns that will be used when generating the report X. Valid columns are:
id, uuid, project, priority, entry, start, due, recur, recur_ind, age, age_compact,
active, tags, description, description_only. The IDs are separated by commas.
.TP
.B report.X.labels
The labels for each column that will be used when generating report X. The labels
are a comma separated list.
.TP
.B report.X.sort
The sort order of the tasks in the generated report X. The sort order is specified
by using the column ids post-fixed by a "+" for ascending sort order or a "-" for
descending sort order. The sort IDs are separated by commas
.TP
.B report.X.filter
This adds a filter to the report X so that only tasks matching the filter criteria
are displayed in the generated report.
.TP
.B report.X.limit
An optional value to a report limiting the number of displayed tasks in the
generated report.
.TP
Task comes with a number of predefined reports in its default configuration file. These reports are:
.TP
.B long
Lists all task, all data, matching the specified criteria.
.TP
.B list
Lists all tasks matching the specified criteria.
.TP
.B ls
Minimal listing of all tasks matching the specified criteria.
.TP
.B newest
Shows the newest tasks.
.TP
.B oldest
Shows the oldest tasks.
.TP
.B overdue
Lists overdue tasks matching the specified criteria.
.TP
.B active
Lists active tasks matching the specified criteria.
.TP
.B completed
Lists completed tasks matching the specified criteria.
.TP
.B recurring
Lists recurring tasks matching the specified criteria.
.TP
.B waiting
Lists all waiting tasks matching the specified criteria.
.TP
.B all
Lists all tasks matching the specified criteria.
.TP
.B next
Lists all tasks with upcoming due dates matching the specified criteria.
.SH "CREDITS & COPYRIGHTS"
task was written by P. Beckingham <paul@beckingham.net>.
.br
Copyright (C) 2006 \- 2009 P. Beckingham
This man page was originally written by Federico Hernandez.
task is distributed under the GNU General Public License. See
http://www.gnu.org/licenses/gpl-2.0.txt for more information.
.SH SEE ALSO
.BR task(1),
.BR task-tutorial(5)
For more information regarding task, the following may be referenced:
.TP
The official site at
<http://taskwarrior.org>
.TP
The official code repository at
<http://github.com/pbeckingham/task/>
.TP
You can contact the project by writing an email to
<support@taskwarrior.org>
.SH REPORTING BUGS
.TP
Bugs in task may be reported to the issue-tracker at
<http://taskwarrior.org>

File diff suppressed because it is too large Load Diff

40
doc/misc/grammar.bnf Normal file
View File

@@ -0,0 +1,40 @@
# This is a full BNF grammar for the task command line. It is intended that a
# future release of task will incorporate a complete lexer/parser implementing
# this grammar, which will allow for more sophisticated command lines, for
# example:
#
# task delete 1 2 4-7
# task add pri:H pro:X -- pro pri 1 ///
#
command ::= simple_command
| filter_command filter?
| id_command
| "export" file
| <id>
| <id> <substitution> ;
simple_command ::= "version" | "help" | "projects" | "tags" | "next" | "stats"
| "color" ;
filter_command ::= "summary" | "history" | "calendar" | "active" | "overdue"
| "oldest" | "newest" | "add" | "list" | "long" | "ls"
| "completed" ;
id_command ::= "delete" | "undelete" | "info" | "start" | "end" | "done"
| "undo" ;
filter ::= filter_part+ ;
filter_part ::= tag_add | tag_remove | attribute | word ;
tag_add ::= "+" word ;
tag_remove ::= "-" word ;
attribute ::= word ":" word ;
word ::=
file ::=
id ::= digit+ ;
digit ::= "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" ;
substitution ::= "/" word+ "/" word* "/" "g"? ;

109
doc/misc/script.txt Normal file
View File

@@ -0,0 +1,109 @@
Hello, and welcome to this quick demo of the task program.
task add do laundry Let's add some tasks
I need to do laundry
task add project:garage order dumpster Oh yeah, I need to order the dumpster
task add +phone tell mom i loveher Must call Mom (that "phone" there is a tag - they can
be useful for searching and categorizing)
task add +phone pro:garage schedule
goodwill pickup
task ad +email pro:garage ask Tom if Notice I can abbreviate commands
he wants that old bkie
task ls Let's see what we've got
Oh, I spelled bike wrong
task 5 /bkie/bike/
task ls That's better
task 1 pro:home Let's assign projects
task 3 pro:home tell mom I love her
task ls pro:garage
task long pro:garage Let's see all the columns
task list pro:garage There are different ways to list
task lis +phone By tag
task li pro:garage +phone By project and tag
task l mom By word
task 1 priority:H Priorities can be High, Medium or Low
task pri:H 3
task 1 pri:M
task li The list is sorted by priority.
task 2 pri:L
task li
task done 3 Suppose task 3 is done
task li ...and it's gone
task 2 +phone +mistake Lets add tags
# Oops!
task 2 -mistake or remove tags
task tags or look at all the tags
task info 2 or all the details
task projects or all the projects
task 3 fg:bold Let's make it colorful
task 4 fg:bold_green
task li
task 3 fg:bold_underline_white
task li
task 4 bg:on_bright_red fg:bold_yellow
task li Oh that's just nasty - let's get rid of that.
task 4 bg:
task li
task 4 fg:
task 3 fg:
task colors There are many combinations to choose from
(Slashes!!!)
task 1 due:6/8/2008 Let's add a due date
date
task li
task calendar Notice the due task is in yellow, today is marked cyan
task 1 due:5/20/2008 This is now an overdue task
task li and it shows up red
task overdue
task cal
task export file.csv You can export the tasks to a spreadsheet
cat file.csv
task start 1 Started tasks can be used as reminders
of what you are supposed to be doing
task active They show up as active
task done 1 Let's clear out a couple
task li
task done 3
task active
task summary Summary shows progress on all projects
task history History shows general activity - how many added,
completed etc, by month
task ghistory This report shows a histogram of tasks that were
added (in red), completed (in green) and deleted
(in yellow), all by month.
And that's it. There are more commands than this
covered in the online documentation, but this should give
the basic idea.
Thank you for watching.

View File

@@ -1,101 +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
#
###############################################################################
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=
color.header=yellow
color.footnote=yellow
color.warning=bold red
color.error=white on red
color.debug=blue
# Task state
color.completed=
color.deleted=
color.active=black on bright green
color.recurring=magenta
color.scheduled=white on green
color.until=
color.blocked=black on white
color.blocking=black on bright white
# Project
color.project.none=
# Priority
color.uda.priority.H=bold white
color.uda.priority.M=white
color.uda.priority.L=
# Tags
color.tag.next=bold yellow
color.tag.none=
color.tagged=
# Due
color.due=red
color.due.today=red
color.overdue=bold red
# UDA
#color.uda.X=
# Report: burndown
color.burndown.done=on green
color.burndown.pending=on red
color.burndown.started=on yellow
# Report: history
color.history.add=black on red
color.history.delete=black on yellow
color.history.done=black on green
# Report: summary
color.summary.background=white on black
color.summary.bar=black on green
# Command: calendar
color.calendar.due=white on red
color.calendar.due.today=bold white on red
color.calendar.holiday=black on bright yellow
color.calendar.overdue=black on bright red
color.calendar.today=bold white on bright blue
color.calendar.weekend=white on bright black
color.calendar.weeknumber=bold blue
# Command: sync
color.sync.added=green
color.sync.changed=yellow
color.sync.rejected=red
# Command: undo
color.undo.after=green
color.undo.before=red

View File

@@ -1,98 +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
#
###############################################################################
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=color3
color.footnote=color3
color.warning=bold red
color.error=white on red
color.debug=color4
# Task state
color.completed=
color.deleted=
color.active=rgb555 on rgb410
color.recurring=rgb013
color.scheduled=on rgb001
color.until=
color.blocked=white on color8
color.blocking=black on color15
# Project
color.project.none=
# Priority
color.uda.priority.H=color255
color.uda.priority.L=color245
color.uda.priority.M=color250
# Tags
color.tag.next=rgb440
color.tag.none=
color.tagged=
# Due
color.due.today=rgb400
color.due=color1
color.overdue=color9
# Report: burndown
color.burndown.done=on rgb010
color.burndown.pending=on color9
color.burndown.started=on color11
# Report: history
color.history.add=color0 on rgb500
color.history.delete=color0 on rgb550
color.history.done=color0 on rgb050
# Report: summary
color.summary.background=white on color0
color.summary.bar=black on rgb141
# Command: calendar
color.calendar.due.today=color15 on color1
color.calendar.due=color0 on color1
color.calendar.holiday=color0 on color11
color.calendar.overdue=color0 on color9
color.calendar.today=color15 on rgb013
color.calendar.weekend=on color235
color.calendar.weeknumber=rgb013
# Command: sync
color.sync.added=rgb010
color.sync.changed=color11
color.sync.rejected=color9
# Command: undo
color.undo.after=color2
color.undo.before=color1

View File

@@ -1,98 +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
#
###############################################################################
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=bold red
color.error=white on red
color.debug=rgb013
# Task state
color.completed=
color.deleted=
color.active=rgb045 on rgb015
color.recurring=rgb115
color.scheduled=on rgb012
color.until=
color.blocked=white on rgb001
color.blocking=white on rgb002
# Project
color.project.none=
# Priority
color.uda.priority.H=rgb035
color.uda.priority.L=rgb015
color.uda.priority.M=rgb025
# Tags
color.tag.next=rgb550
color.tag.none=
color.tagged=
# Due
color.due.today=color252
color.due=color249
color.overdue=color255
# Report: burndown
color.burndown.done=on gray4
color.burndown.pending=on rgb004
color.burndown.started=on rgb015
# Report: history
color.history.add=color0 on rgb015
color.history.delete=color0 on rgb035
color.history.done=color0 on rgb025
# Report: summary
color.summary.background=on rgb001
color.summary.bar=on rgb114
# Command: calendar
color.calendar.due.today=color0 on color252
color.calendar.due=color0 on color249
color.calendar.holiday=color255 on rgb013
color.calendar.overdue=color0 on color255
color.calendar.today=color0 on rgb115
color.calendar.weekend=on color235
color.calendar.weeknumber=rgb015
# Command: sync
color.sync.added=gray4
color.sync.changed=rgb015
color.sync.rejected=rgb004
# Command: undo
color.undo.after=rgb035
color.undo.before=rgb013

View File

@@ -1,98 +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
#
###############################################################################
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=color0 on gray11
color.footnote=on gray5
color.warning=bold red
color.error=white on red
color.debug=blue
# Task state
color.completed=
color.deleted=
color.active=black on gray18
color.recurring=
color.scheduled=on gray8
color.until=
color.blocked=gray13
color.blocking=bold white
# Project
color.project.none=
# Priority
color.uda.priority.H=gray21
color.uda.priority.M=gray18
color.uda.priority.L=gray12
# Tags
color.tag.next=bold white
color.tag.none=
color.tagged=
# Due
color.due=on gray3
color.due.today=on gray4
color.overdue=on gray6
# Report: burndown
color.burndown.pending=gray15 on gray5
color.burndown.started=black on gray10
color.burndown.done=gray5 on gray23
# Report: history
color.history.add=gray15 on gray5
color.history.delete=black on gray10
color.history.done=gray5 on gray23
# Report: summary
color.summary.bar=on gray12
color.summary.background=on gray5
# Command: calendar
color.calendar.due=on gray8
color.calendar.due.today=black on gray15
color.calendar.holiday=black on gray20
color.calendar.overdue=gray2 on gray10
color.calendar.today=bold white
color.calendar.weekend=on gray2
color.calendar.weeknumber=gray6
# Command: sync
color.sync.added=gray15 on gray5
color.sync.changed=black on gray10
color.sync.rejected=gray5 on gray23
# Command: undo
color.undo.before=white on black
color.undo.after=black on white

View File

@@ -1,98 +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
#
###############################################################################
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=gray10
color.footnote=gray10
color.warning=white on blue
color.error=white on red
color.debug=blue
# Task state
color.completed=
color.deleted=
color.active=color15 on rgb035
color.recurring=
color.scheduled=
color.until=
color.blocked=bold gray10 on gray4
color.blocking=gray18 on gray6
# Project
color.project.none=
# Priority
color.uda.priority.H=
color.uda.priority.L=
color.uda.priority.M=
# Tags
color.tag.next=
color.tag.none=
color.tagged=
# Due
color.due=color0 on rgb013
color.due.today=color0 on rgb024
color.overdue=color0 on rgb035
# Report: burndown
color.burndown.pending=white on gray9
color.burndown.started=black on gray16
color.burndown.done=white on rgb013
# Report: history
color.history.add=white on gray6
color.history.delete=black on gray18
color.history.done=black on rgb024
# Report: summary
color.summary.bar=on rgb012
color.summary.background=on gray2
# Command: calendar
color.calendar.due=color0 on gray10
color.calendar.due.today=color0 on gray15
color.calendar.holiday=color15 on rgb005
color.calendar.overdue=color0 on gray20
color.calendar.today=underline black on color15
color.calendar.weekend=on gray4
color.calendar.weeknumber=gray10
# Command: sync
color.sync.added=gray10
color.sync.changed=gray15
color.sync.rejected=gray23
# Command: undo
color.undo.before=rgb013
color.undo.after=rgb035

View File

@@ -1,97 +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
#
###############################################################################
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=rgb031
color.footnote=rgb031
color.warning=rgb020
color.error=white on red
color.debug=blue
# Task state
color.completed=
color.deleted=
color.active=rgb050 on rgb010
color.recurring=rgb151
color.scheduled=black on rgb031
color.until=
color.blocked=white on rgb010
color.blocking=white on rgb020
# Project
color.project.none=
# Priority
color.uda.priority.H=rgb050
color.uda.priority.L=rgb010
color.uda.priority.M=rgb030
# Tags
color.tag.next=rgb440
color.tag.none=
color.tagged=
# Due
color.due.today=color252
color.due=color249
color.overdue=color255
# Report: burndown
color.burndown.done=on gray4
color.burndown.pending=on rgb010
color.burndown.started=on rgb030
# Report: history
color.history.add=color0 on rgb010
color.history.delete=color0 on rgb050
color.history.done=color0 on rgb030
# Report: summary
color.summary.background=white on gray3
color.summary.bar=white on rgb030
# Command: calendar
color.calendar.due.today=color0 on color225
color.calendar.due=color0 on color249
color.calendar.holiday=rgb151 on rgb020
color.calendar.overdue=color0 on color255
color.calendar.today=color0 on rgb151
color.calendar.weekend=on color235
color.calendar.weeknumber=rgb010
# Command: sync
color.sync.added=gray4
color.sync.changed=rgb030
color.sync.rejected=rgb010
# Command: undo
color.undo.after=rgb053
color.undo.before=rgb021

View File

@@ -1,98 +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
#
###############################################################################
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=rgb100
color.footnote=rgb100
color.warning=red
color.error=white on red
color.debug=blue
# Task state
color.completed=
color.deleted=
color.active=rgb500 on rgb100
color.recurring=rgb511
color.scheduled=white on rgb311
color.until=
color.blocked=white on rgb100
color.blocking=white on rgb200
# Project
color.project.none=
# Priority
color.uda.priority.H=rgb500
color.uda.priority.L=rgb300
color.uda.priority.M=rgb400
# Tags
color.tag.next=rgb511
color.tag.none=
color.tagged=
# Due
color.due.today=color252
color.due=color249
color.overdue=color255
# Report: burndown
color.burndown.done=on gray4
color.burndown.pending=on rgb200
color.burndown.started=on rgb411
# Report: history
color.history.add=color0 on rgb100
color.history.delete=color0 on rgb500
color.history.done=color0 on rgb300
# Report: summary
color.summary.background=white on color0
color.summary.bar=white on rgb300
# Command: calendar
color.calendar.due.today=color0 on color252
color.calendar.due=color0 on color249
color.calendar.holiday=rgb522 on rgb300
color.calendar.overdue=color0 on color255
color.calendar.today=color0 on rgb511
color.calendar.weekend=on color235
color.calendar.weeknumber=rgb100
# Command: sync
color.sync.added=gray4
color.sync.changed=rgb411
color.sync.rejected=rgb200
# Command: undo
color.undo.after=rgb511
color.undo.before=rgb200

View File

@@ -1,98 +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
#
###############################################################################
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=white on rgb103
color.error=white on red
color.debug=blue
# Task state
color.completed=
color.deleted=
color.active=rgb445 on rgb213
color.recurring=rgb115
color.scheduled=white on rgb113
color.until=
color.blocked=white on rgb101
color.blocking=white on rgb202
# Project
color.project.none=
# Priority
color.uda.priority.H=rgb404
color.uda.priority.M=rgb304
color.uda.priority.L=rgb325
# Tags
color.tag.next=
color.tag.none=
color.tagged=
# Due
color.due=rgb015
color.due.today=rgb125
color.overdue=color5
# 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.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,98 +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
#
###############################################################################
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=rgb031
color.footnote=rgb031
color.warning=black on yellow
color.error=white on red
color.debug=blue
# Task state
color.completed=
color.deleted=
color.active=rgb451 on rgb320
color.recurring=rgb343
color.scheduled=black on rgb441
color.until=
color.blocked=white on rgb110
color.blocking=white on rgb220
# Project
color.project.none=
# Priority
color.uda.priority.H=rgb450
color.uda.priority.M=rgb030
color.uda.priority.L=rgb010
# Tags
color.tag.next=
color.tag.none=
color.tagged=
# Due
color.due=rgb440
color.due.today=rgb430
color.overdue=rgb420
# Report: burndown
color.burndown.pending=on rgb110
color.burndown.started=on rgb430
color.burndown.done=on gray4
# Report: history
color.history.add=color0 on rgb110
color.history.done=color0 on rgb430
color.history.delete=white on gray4
# Report: summary
color.summary.bar=white on rgb330
color.summary.background=white on rgb110
# Command: calendar
color.calendar.due=color0 on rgb440
color.calendar.due.today=color0 on rgb430
color.calendar.holiday=rgb151 on rgb020
color.calendar.overdue=color0 on rgb420
color.calendar.today=color15 on rgb110
color.calendar.weekend=on color235
color.calendar.weeknumber=rgb110
# Command: sync
color.sync.added=gray4
color.sync.changed=rgb430
color.sync.rejected=rgb110
# Command: undo
color.undo.before=rgb021
color.undo.after=rgb042

View File

@@ -1,85 +0,0 @@
###############################################################################
# International Holiday Data provided by Holidata.net
# https://holidata.net/cs-CZ/2021.json
# https://holidata.net/cs-CZ/2022.json
#
# 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
#
###############################################################################
holiday.cs-CZ1.name=Nový rok
holiday.cs-CZ1.date=20210101
holiday.cs-CZ2.name=Den obnovy samostatného českého státu
holiday.cs-CZ2.date=20210101
holiday.cs-CZ3.name=Velký pátek
holiday.cs-CZ3.date=20210402
holiday.cs-CZ4.name=Velikonoční pondělí
holiday.cs-CZ4.date=20210405
holiday.cs-CZ5.name=Svátek práce
holiday.cs-CZ5.date=20210501
holiday.cs-CZ6.name=Den vítězství
holiday.cs-CZ6.date=20210508
holiday.cs-CZ7.name=Den slovanských věrozvěstů Cyrila a Metoděje
holiday.cs-CZ7.date=20210705
holiday.cs-CZ8.name=Den upálení mistra Jana Husa
holiday.cs-CZ8.date=20210706
holiday.cs-CZ9.name=Den české státnosti
holiday.cs-CZ9.date=20210928
holiday.cs-CZ10.name=Den vzniku samostatného československého státu
holiday.cs-CZ10.date=20211028
holiday.cs-CZ11.name=Den boje za svobodu a demokracii a Mezinárodní den studentstva
holiday.cs-CZ11.date=20211117
holiday.cs-CZ12.name=Štědrý den
holiday.cs-CZ12.date=20211224
holiday.cs-CZ13.name=1. svátek vánoční
holiday.cs-CZ13.date=20211225
holiday.cs-CZ14.name=2. svátek vánoční
holiday.cs-CZ14.date=20211226
holiday.cs-CZ15.name=Nový rok
holiday.cs-CZ15.date=20220101
holiday.cs-CZ16.name=Den obnovy samostatného českého státu
holiday.cs-CZ16.date=20220101
holiday.cs-CZ17.name=Velký pátek
holiday.cs-CZ17.date=20220415
holiday.cs-CZ18.name=Velikonoční pondělí
holiday.cs-CZ18.date=20220418
holiday.cs-CZ19.name=Svátek práce
holiday.cs-CZ19.date=20220501
holiday.cs-CZ20.name=Den vítězství
holiday.cs-CZ20.date=20220508
holiday.cs-CZ21.name=Den slovanských věrozvěstů Cyrila a Metoděje
holiday.cs-CZ21.date=20220705
holiday.cs-CZ22.name=Den upálení mistra Jana Husa
holiday.cs-CZ22.date=20220706
holiday.cs-CZ23.name=Den české státnosti
holiday.cs-CZ23.date=20220928
holiday.cs-CZ24.name=Den vzniku samostatného československého státu
holiday.cs-CZ24.date=20221028
holiday.cs-CZ25.name=Den boje za svobodu a demokracii a Mezinárodní den studentstva
holiday.cs-CZ25.date=20221117
holiday.cs-CZ26.name=Štědrý den
holiday.cs-CZ26.date=20221224
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,77 +0,0 @@
###############################################################################
# International Holiday Data provided by Holidata.net
# https://holidata.net/da-DK/2021.json
# https://holidata.net/da-DK/2022.json
#
# 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
#
###############################################################################
holiday.da-DK1.name=Nytårsdag
holiday.da-DK1.date=20210101
holiday.da-DK2.name=Skærtorsdag
holiday.da-DK2.date=20210401
holiday.da-DK3.name=Langfredag
holiday.da-DK3.date=20210402
holiday.da-DK4.name=Påskedag
holiday.da-DK4.date=20210404
holiday.da-DK5.name=Anden påskedag
holiday.da-DK5.date=20210405
holiday.da-DK6.name=Store bededag
holiday.da-DK6.date=20210430
holiday.da-DK7.name=Kristi himmelfartsdag
holiday.da-DK7.date=20210513
holiday.da-DK8.name=Pinsedag
holiday.da-DK8.date=20210523
holiday.da-DK9.name=Anden pinsedag
holiday.da-DK9.date=20210524
holiday.da-DK10.name=Grundlovsdag
holiday.da-DK10.date=20210605
holiday.da-DK11.name=Juledag
holiday.da-DK11.date=20211225
holiday.da-DK12.name=Anden juledag
holiday.da-DK12.date=20211226
holiday.da-DK13.name=Nytårsdag
holiday.da-DK13.date=20220101
holiday.da-DK14.name=Skærtorsdag
holiday.da-DK14.date=20220414
holiday.da-DK15.name=Langfredag
holiday.da-DK15.date=20220415
holiday.da-DK16.name=Påskedag
holiday.da-DK16.date=20220417
holiday.da-DK17.name=Anden påskedag
holiday.da-DK17.date=20220418
holiday.da-DK18.name=Store bededag
holiday.da-DK18.date=20220513
holiday.da-DK19.name=Kristi himmelfartsdag
holiday.da-DK19.date=20220526
holiday.da-DK20.name=Grundlovsdag
holiday.da-DK20.date=20220605
holiday.da-DK21.name=Pinsedag
holiday.da-DK21.date=20220605
holiday.da-DK22.name=Anden pinsedag
holiday.da-DK22.date=20220606
holiday.da-DK23.name=Juledag
holiday.da-DK23.date=20221225
holiday.da-DK24.name=Anden juledag
holiday.da-DK24.date=20221226

View File

@@ -1,125 +0,0 @@
###############################################################################
# International Holiday Data provided by Holidata.net
# https://holidata.net/de-AT/2021.json
# https://holidata.net/de-AT/2022.json
#
# 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
#
###############################################################################
holiday.de-AT1.name=Neujahr
holiday.de-AT1.date=20210101
holiday.de-AT2.name=Heilige drei Könige
holiday.de-AT2.date=20210106
holiday.de-AT3.name=Josef
holiday.de-AT3.date=20210319
holiday.de-AT4.name=Karfreitag
holiday.de-AT4.date=20210402
holiday.de-AT5.name=Ostersonntag
holiday.de-AT5.date=20210404
holiday.de-AT6.name=Ostermontag
holiday.de-AT6.date=20210405
holiday.de-AT7.name=Staatsfeiertag
holiday.de-AT7.date=20210501
holiday.de-AT8.name=Florian
holiday.de-AT8.date=20210504
holiday.de-AT9.name=Christi Himmelfahrt
holiday.de-AT9.date=20210513
holiday.de-AT10.name=Pfingstsonntag
holiday.de-AT10.date=20210523
holiday.de-AT11.name=Pfingstmontag
holiday.de-AT11.date=20210524
holiday.de-AT12.name=Fronleichnam
holiday.de-AT12.date=20210603
holiday.de-AT13.name=Mariä Himmelfahrt
holiday.de-AT13.date=20210815
holiday.de-AT14.name=Rupert
holiday.de-AT14.date=20210924
holiday.de-AT15.name=Tag der Volksabstimmung
holiday.de-AT15.date=20211010
holiday.de-AT16.name=Nationalfeiertag
holiday.de-AT16.date=20211026
holiday.de-AT17.name=Allerheiligen
holiday.de-AT17.date=20211101
holiday.de-AT18.name=Martin
holiday.de-AT18.date=20211111
holiday.de-AT19.name=Leopold
holiday.de-AT19.date=20211115
holiday.de-AT20.name=Mariä Empfängnis
holiday.de-AT20.date=20211208
holiday.de-AT21.name=Heiliger Abend
holiday.de-AT21.date=20211224
holiday.de-AT22.name=Christtag
holiday.de-AT22.date=20211225
holiday.de-AT23.name=Stefanitag
holiday.de-AT23.date=20211226
holiday.de-AT24.name=Silvester
holiday.de-AT24.date=20211231
holiday.de-AT25.name=Neujahr
holiday.de-AT25.date=20220101
holiday.de-AT26.name=Heilige drei Könige
holiday.de-AT26.date=20220106
holiday.de-AT27.name=Josef
holiday.de-AT27.date=20220319
holiday.de-AT28.name=Karfreitag
holiday.de-AT28.date=20220415
holiday.de-AT29.name=Ostersonntag
holiday.de-AT29.date=20220417
holiday.de-AT30.name=Ostermontag
holiday.de-AT30.date=20220418
holiday.de-AT31.name=Staatsfeiertag
holiday.de-AT31.date=20220501
holiday.de-AT32.name=Florian
holiday.de-AT32.date=20220504
holiday.de-AT33.name=Christi Himmelfahrt
holiday.de-AT33.date=20220526
holiday.de-AT34.name=Pfingstsonntag
holiday.de-AT34.date=20220605
holiday.de-AT35.name=Pfingstmontag
holiday.de-AT35.date=20220606
holiday.de-AT36.name=Fronleichnam
holiday.de-AT36.date=20220616
holiday.de-AT37.name=Mariä Himmelfahrt
holiday.de-AT37.date=20220815
holiday.de-AT38.name=Rupert
holiday.de-AT38.date=20220924
holiday.de-AT39.name=Tag der Volksabstimmung
holiday.de-AT39.date=20221010
holiday.de-AT40.name=Nationalfeiertag
holiday.de-AT40.date=20221026
holiday.de-AT41.name=Allerheiligen
holiday.de-AT41.date=20221101
holiday.de-AT42.name=Martin
holiday.de-AT42.date=20221111
holiday.de-AT43.name=Leopold
holiday.de-AT43.date=20221115
holiday.de-AT44.name=Mariä Empfängnis
holiday.de-AT44.date=20221208
holiday.de-AT45.name=Heiliger Abend
holiday.de-AT45.date=20221224
holiday.de-AT46.name=Christtag
holiday.de-AT46.date=20221225
holiday.de-AT47.name=Stefanitag
holiday.de-AT47.date=20221226
holiday.de-AT48.name=Silvester
holiday.de-AT48.date=20221231

View File

@@ -1,77 +0,0 @@
###############################################################################
# International Holiday Data provided by Holidata.net
# https://holidata.net/de-BE/2021.json
# https://holidata.net/de-BE/2022.json
#
# 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
#
###############################################################################
holiday.de-BE1.name=Neujahr
holiday.de-BE1.date=20210101
holiday.de-BE2.name=Ostern
holiday.de-BE2.date=20210404
holiday.de-BE3.name=Ostermontag
holiday.de-BE3.date=20210405
holiday.de-BE4.name=Tag der Arbeit
holiday.de-BE4.date=20210501
holiday.de-BE5.name=Christi Himmelfahrt
holiday.de-BE5.date=20210513
holiday.de-BE6.name=Pfingsten
holiday.de-BE6.date=20210523
holiday.de-BE7.name=Pfingstmontag
holiday.de-BE7.date=20210524
holiday.de-BE8.name=Nationalfeiertag
holiday.de-BE8.date=20210721
holiday.de-BE9.name=Mariä Himmelfahrt
holiday.de-BE9.date=20210815
holiday.de-BE10.name=Allerheiligen
holiday.de-BE10.date=20211101
holiday.de-BE11.name=Waffenstillstand
holiday.de-BE11.date=20211111
holiday.de-BE12.name=Weihnacht
holiday.de-BE12.date=20211225
holiday.de-BE13.name=Neujahr
holiday.de-BE13.date=20220101
holiday.de-BE14.name=Ostern
holiday.de-BE14.date=20220417
holiday.de-BE15.name=Ostermontag
holiday.de-BE15.date=20220418
holiday.de-BE16.name=Tag der Arbeit
holiday.de-BE16.date=20220501
holiday.de-BE17.name=Christi Himmelfahrt
holiday.de-BE17.date=20220526
holiday.de-BE18.name=Pfingsten
holiday.de-BE18.date=20220605
holiday.de-BE19.name=Pfingstmontag
holiday.de-BE19.date=20220606
holiday.de-BE20.name=Nationalfeiertag
holiday.de-BE20.date=20220721
holiday.de-BE21.name=Mariä Himmelfahrt
holiday.de-BE21.date=20220815
holiday.de-BE22.name=Allerheiligen
holiday.de-BE22.date=20221101
holiday.de-BE23.name=Waffenstillstand
holiday.de-BE23.date=20221111
holiday.de-BE24.name=Weihnacht
holiday.de-BE24.date=20221225

View File

@@ -1,101 +0,0 @@
###############################################################################
# International Holiday Data provided by Holidata.net
# https://holidata.net/de-CH/2021.json
# https://holidata.net/de-CH/2022.json
#
# 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
#
###############################################################################
holiday.de-CH1.name=Neujahrstag
holiday.de-CH1.date=20210101
holiday.de-CH2.name=Berchtoldstag
holiday.de-CH2.date=20210102
holiday.de-CH3.name=Heilige Drei Könige
holiday.de-CH3.date=20210106
holiday.de-CH4.name=Josefstag
holiday.de-CH4.date=20210319
holiday.de-CH5.name=Karfreitag
holiday.de-CH5.date=20210402
holiday.de-CH6.name=Ostersonntag
holiday.de-CH6.date=20210404
holiday.de-CH7.name=Ostermontag
holiday.de-CH7.date=20210405
holiday.de-CH8.name=Tag der Arbeit
holiday.de-CH8.date=20210501
holiday.de-CH9.name=Auffahrt
holiday.de-CH9.date=20210513
holiday.de-CH10.name=Pfingstsonntag
holiday.de-CH10.date=20210523
holiday.de-CH11.name=Pfingstmontag
holiday.de-CH11.date=20210524
holiday.de-CH12.name=Fronleichnam
holiday.de-CH12.date=20210603
holiday.de-CH13.name=Bundesfeier
holiday.de-CH13.date=20210801
holiday.de-CH14.name=Mariä Himmelfahrt
holiday.de-CH14.date=20210815
holiday.de-CH15.name=Allerheiligen
holiday.de-CH15.date=20211101
holiday.de-CH16.name=Mariä Empfängnis
holiday.de-CH16.date=20211208
holiday.de-CH17.name=Weihnachtstag
holiday.de-CH17.date=20211225
holiday.de-CH18.name=Stephanstag
holiday.de-CH18.date=20211226
holiday.de-CH19.name=Neujahrstag
holiday.de-CH19.date=20220101
holiday.de-CH20.name=Berchtoldstag
holiday.de-CH20.date=20220102
holiday.de-CH21.name=Heilige Drei Könige
holiday.de-CH21.date=20220106
holiday.de-CH22.name=Josefstag
holiday.de-CH22.date=20220319
holiday.de-CH23.name=Karfreitag
holiday.de-CH23.date=20220415
holiday.de-CH24.name=Ostersonntag
holiday.de-CH24.date=20220417
holiday.de-CH25.name=Ostermontag
holiday.de-CH25.date=20220418
holiday.de-CH26.name=Tag der Arbeit
holiday.de-CH26.date=20220501
holiday.de-CH27.name=Auffahrt
holiday.de-CH27.date=20220526
holiday.de-CH28.name=Pfingstsonntag
holiday.de-CH28.date=20220605
holiday.de-CH29.name=Pfingstmontag
holiday.de-CH29.date=20220606
holiday.de-CH30.name=Fronleichnam
holiday.de-CH30.date=20220616
holiday.de-CH31.name=Bundesfeier
holiday.de-CH31.date=20220801
holiday.de-CH32.name=Mariä Himmelfahrt
holiday.de-CH32.date=20220815
holiday.de-CH33.name=Allerheiligen
holiday.de-CH33.date=20221101
holiday.de-CH34.name=Mariä Empfängnis
holiday.de-CH34.date=20221208
holiday.de-CH35.name=Weihnachtstag
holiday.de-CH35.date=20221225
holiday.de-CH36.name=Stephanstag
holiday.de-CH36.date=20221226

View File

@@ -1,109 +0,0 @@
###############################################################################
# International Holiday Data provided by Holidata.net
# https://holidata.net/de-DE/2021.json
# https://holidata.net/de-DE/2022.json
#
# 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
#
###############################################################################
holiday.de-DE1.name=Neujahr
holiday.de-DE1.date=20210101
holiday.de-DE2.name=Heilige drei Könige
holiday.de-DE2.date=20210106
holiday.de-DE3.name=Internationaler Frauentag
holiday.de-DE3.date=20210308
holiday.de-DE4.name=Karfreitag
holiday.de-DE4.date=20210402
holiday.de-DE5.name=Ostern
holiday.de-DE5.date=20210404
holiday.de-DE6.name=Ostermontag
holiday.de-DE6.date=20210405
holiday.de-DE7.name=Erster Maifeiertag
holiday.de-DE7.date=20210501
holiday.de-DE8.name=Christi Himmelfahrt
holiday.de-DE8.date=20210513
holiday.de-DE9.name=Pfingstsonntag
holiday.de-DE9.date=20210523
holiday.de-DE10.name=Pfingstmontag
holiday.de-DE10.date=20210524
holiday.de-DE11.name=Fronleichnam
holiday.de-DE11.date=20210603
holiday.de-DE12.name=Mariä Himmelfahrt
holiday.de-DE12.date=20210815
holiday.de-DE13.name=Tag der Deutschen Einheit
holiday.de-DE13.date=20211003
holiday.de-DE14.name=Reformationstag
holiday.de-DE14.date=20211031
holiday.de-DE15.name=Allerheiligen
holiday.de-DE15.date=20211101
holiday.de-DE16.name=Buß- und Bettag
holiday.de-DE16.date=20211117
holiday.de-DE17.name=Heilig Abend
holiday.de-DE17.date=20211224
holiday.de-DE18.name=Weihnachtstag
holiday.de-DE18.date=20211225
holiday.de-DE19.name=Zweiter Weihnachtstag
holiday.de-DE19.date=20211226
holiday.de-DE20.name=Silvester
holiday.de-DE20.date=20211231
holiday.de-DE21.name=Neujahr
holiday.de-DE21.date=20220101
holiday.de-DE22.name=Heilige drei Könige
holiday.de-DE22.date=20220106
holiday.de-DE23.name=Internationaler Frauentag
holiday.de-DE23.date=20220308
holiday.de-DE24.name=Karfreitag
holiday.de-DE24.date=20220415
holiday.de-DE25.name=Ostern
holiday.de-DE25.date=20220417
holiday.de-DE26.name=Ostermontag
holiday.de-DE26.date=20220418
holiday.de-DE27.name=Erster Maifeiertag
holiday.de-DE27.date=20220501
holiday.de-DE28.name=Christi Himmelfahrt
holiday.de-DE28.date=20220526
holiday.de-DE29.name=Pfingstsonntag
holiday.de-DE29.date=20220605
holiday.de-DE30.name=Pfingstmontag
holiday.de-DE30.date=20220606
holiday.de-DE31.name=Fronleichnam
holiday.de-DE31.date=20220616
holiday.de-DE32.name=Mariä Himmelfahrt
holiday.de-DE32.date=20220815
holiday.de-DE33.name=Tag der Deutschen Einheit
holiday.de-DE33.date=20221003
holiday.de-DE34.name=Reformationstag
holiday.de-DE34.date=20221031
holiday.de-DE35.name=Allerheiligen
holiday.de-DE35.date=20221101
holiday.de-DE36.name=Buß- und Bettag
holiday.de-DE36.date=20221116
holiday.de-DE37.name=Heilig Abend
holiday.de-DE37.date=20221224
holiday.de-DE38.name=Weihnachtstag
holiday.de-DE38.date=20221225
holiday.de-DE39.name=Zweiter Weihnachtstag
holiday.de-DE39.date=20221226
holiday.de-DE40.name=Silvester
holiday.de-DE40.date=20221231

View File

@@ -1,85 +0,0 @@
###############################################################################
# International Holiday Data provided by Holidata.net
# https://holidata.net/el-GR/2021.json
# https://holidata.net/el-GR/2022.json
#
# 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
#
###############################################################################
holiday.el-GR1.name=Πρωτοχρονιά
holiday.el-GR1.date=20210101
holiday.el-GR2.name=Θεοφάνεια
holiday.el-GR2.date=20210106
holiday.el-GR3.name=Καθαρά Δευτέρα
holiday.el-GR3.date=20210315
holiday.el-GR4.name=Ευαγγελισμός της Θεοτόκου και Εθνική Ημέρα Ανεξαρτησίας της Ελλάδας
holiday.el-GR4.date=20210325
holiday.el-GR5.name=Μεγάλη Παρασκευή
holiday.el-GR5.date=20210430
holiday.el-GR6.name=Μεγάλο Σάββατο
holiday.el-GR6.date=20210501
holiday.el-GR7.name=Πρωτομαγιά
holiday.el-GR7.date=20210501
holiday.el-GR8.name=Πάσχα
holiday.el-GR8.date=20210502
holiday.el-GR9.name=Δευτέρα του Πάσχα
holiday.el-GR9.date=20210503
holiday.el-GR10.name=Δευτέρα του Αγίου Πνεύματος
holiday.el-GR10.date=20210621
holiday.el-GR11.name=Κοίμηση της Θεοτόκου
holiday.el-GR11.date=20210815
holiday.el-GR12.name=Ημέρα του ΌΧΙ
holiday.el-GR12.date=20211028
holiday.el-GR13.name=Χριστούγεννα
holiday.el-GR13.date=20211225
holiday.el-GR14.name=Επόμενη ημέρα Χριστουγέννων
holiday.el-GR14.date=20211226
holiday.el-GR15.name=Πρωτοχρονιά
holiday.el-GR15.date=20220101
holiday.el-GR16.name=Θεοφάνεια
holiday.el-GR16.date=20220106
holiday.el-GR17.name=Καθαρά Δευτέρα
holiday.el-GR17.date=20220307
holiday.el-GR18.name=Ευαγγελισμός της Θεοτόκου και Εθνική Ημέρα Ανεξαρτησίας της Ελλάδας
holiday.el-GR18.date=20220325
holiday.el-GR19.name=Μεγάλη Παρασκευή
holiday.el-GR19.date=20220422
holiday.el-GR20.name=Μεγάλο Σάββατο
holiday.el-GR20.date=20220423
holiday.el-GR21.name=Πάσχα
holiday.el-GR21.date=20220424
holiday.el-GR22.name=Δευτέρα του Πάσχα
holiday.el-GR22.date=20220425
holiday.el-GR23.name=Πρωτομαγιά
holiday.el-GR23.date=20220501
holiday.el-GR24.name=Δευτέρα του Αγίου Πνεύματος
holiday.el-GR24.date=20220613
holiday.el-GR25.name=Κοίμηση της Θεοτόκου
holiday.el-GR25.date=20220815
holiday.el-GR26.name=Ημέρα του ΌΧΙ
holiday.el-GR26.date=20221028
holiday.el-GR27.name=Χριστούγεννα
holiday.el-GR27.date=20221225
holiday.el-GR28.name=Επόμενη ημέρα Χριστουγέννων
holiday.el-GR28.date=20221226

View File

@@ -1,105 +0,0 @@
###############################################################################
# International Holiday Data provided by Holidata.net
# https://holidata.net/en-CA/2021.json
# https://holidata.net/en-CA/2022.json
#
# 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
#
###############################################################################
holiday.en-CA1.name=New Year's Day
holiday.en-CA1.date=20210101
holiday.en-CA2.name=Family Day
holiday.en-CA2.date=20210215
holiday.en-CA3.name=Louis Riel Day
holiday.en-CA3.date=20210215
holiday.en-CA4.name=Islander Day
holiday.en-CA4.date=20210215
holiday.en-CA5.name=Good Friday
holiday.en-CA5.date=20210402
holiday.en-CA6.name=Easter Monday
holiday.en-CA6.date=20210405
holiday.en-CA7.name=National Patriots' Day
holiday.en-CA7.date=20210524
holiday.en-CA8.name=Victoria Day
holiday.en-CA8.date=20210524
holiday.en-CA9.name=National Holiday
holiday.en-CA9.date=20210624
holiday.en-CA10.name=Canada Day
holiday.en-CA10.date=20210701
holiday.en-CA11.name=August Civic Holiday
holiday.en-CA11.date=20210802
holiday.en-CA12.name=Saskatchewan Day
holiday.en-CA12.date=20210802
holiday.en-CA13.name=Heritage Day
holiday.en-CA13.date=20210802
holiday.en-CA14.name=New Brunswick Day
holiday.en-CA14.date=20210802
holiday.en-CA15.name=Labour Day
holiday.en-CA15.date=20210906
holiday.en-CA16.name=Thanksgiving Day
holiday.en-CA16.date=20211011
holiday.en-CA17.name=Remembrance Day
holiday.en-CA17.date=20211111
holiday.en-CA18.name=Christmas Day
holiday.en-CA18.date=20211225
holiday.en-CA19.name=Boxing Day
holiday.en-CA19.date=20211226
holiday.en-CA20.name=New Year's Day
holiday.en-CA20.date=20220101
holiday.en-CA21.name=Family Day
holiday.en-CA21.date=20220221
holiday.en-CA22.name=Louis Riel Day
holiday.en-CA22.date=20220221
holiday.en-CA23.name=Islander Day
holiday.en-CA23.date=20220221
holiday.en-CA24.name=Good Friday
holiday.en-CA24.date=20220415
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,69 +0,0 @@
###############################################################################
# International Holiday Data provided by Holidata.net
# https://holidata.net/en-GB/2021.json
# https://holidata.net/en-GB/2022.json
#
# 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
#
###############################################################################
holiday.en-GB1.name=New Year's Day
holiday.en-GB1.date=20210101
holiday.en-GB2.name=Good Friday
holiday.en-GB2.date=20210402
holiday.en-GB3.name=Easter Monday
holiday.en-GB3.date=20210405
holiday.en-GB4.name=Early May Bank Holiday
holiday.en-GB4.date=20210503
holiday.en-GB5.name=Spring Bank Holiday
holiday.en-GB5.date=20210531
holiday.en-GB6.name=August Bank Holiday
holiday.en-GB6.date=20210830
holiday.en-GB7.name=Christmas Day
holiday.en-GB7.date=20211225
holiday.en-GB8.name=Boxing Day
holiday.en-GB8.date=20211226
holiday.en-GB9.name=Christmas Day (observed)
holiday.en-GB9.date=20211227
holiday.en-GB10.name=Boxing Day (observed)
holiday.en-GB10.date=20211228
holiday.en-GB11.name=New Year's Day
holiday.en-GB11.date=20220101
holiday.en-GB12.name=New Year's Day (observed)
holiday.en-GB12.date=20220103
holiday.en-GB13.name=Good Friday
holiday.en-GB13.date=20220415
holiday.en-GB14.name=Easter Monday
holiday.en-GB14.date=20220418
holiday.en-GB15.name=Early May Bank Holiday
holiday.en-GB15.date=20220502
holiday.en-GB16.name=Spring Bank Holiday
holiday.en-GB16.date=20220530
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

View File

@@ -1,83 +0,0 @@
###############################################################################
# International Holiday Data provided by Holidata.net
# https://holidata.net/en-NZ/2021.json
# https://holidata.net/en-NZ/2022.json
#
# 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
#
###############################################################################
holiday.en-NZ1.name=New Year's Day
holiday.en-NZ1.date=20210101
holiday.en-NZ2.name=Day after New Year's Day
holiday.en-NZ2.date=20210104
holiday.en-NZ3.name=Waitangi Day
holiday.en-NZ3.date=20210206
holiday.en-NZ4.name=Waitangi Day (observed)
holiday.en-NZ4.date=20210208
holiday.en-NZ5.name=Good Friday
holiday.en-NZ5.date=20210402
holiday.en-NZ6.name=Easter Monday
holiday.en-NZ6.date=20210405
holiday.en-NZ7.name=ANZAC Day
holiday.en-NZ7.date=20210425
holiday.en-NZ8.name=ANZAC Day (observed)
holiday.en-NZ8.date=20210426
holiday.en-NZ9.name=Queen's Birthday
holiday.en-NZ9.date=20210607
holiday.en-NZ10.name=Labour Day
holiday.en-NZ10.date=20211025
holiday.en-NZ11.name=Christmas Day
holiday.en-NZ11.date=20211225
holiday.en-NZ12.name=Boxing Day
holiday.en-NZ12.date=20211226
holiday.en-NZ13.name=Christmas Day (observed)
holiday.en-NZ13.date=20211227
holiday.en-NZ14.name=Boxing Day (observed)
holiday.en-NZ14.date=20211228
holiday.en-NZ15.name=New Year's Day
holiday.en-NZ15.date=20220101
holiday.en-NZ16.name=New Year's Day (observed)
holiday.en-NZ16.date=20220103
holiday.en-NZ17.name=Day after New Year's Day
holiday.en-NZ17.date=20220104
holiday.en-NZ18.name=Waitangi Day
holiday.en-NZ18.date=20220206
holiday.en-NZ19.name=Waitangi Day (observed)
holiday.en-NZ19.date=20220207
holiday.en-NZ20.name=Good Friday
holiday.en-NZ20.date=20220415
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,77 +0,0 @@
###############################################################################
# International Holiday Data provided by Holidata.net
# https://holidata.net/en-US/2021.json
# https://holidata.net/en-US/2022.json
#
# 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
#
###############################################################################
holiday.en-US1.name=New Year's Day
holiday.en-US1.date=20210101
holiday.en-US2.name=Birthday of Martin Luther King, Jr.
holiday.en-US2.date=20210118
holiday.en-US3.name=Washington's Birthday
holiday.en-US3.date=20210215
holiday.en-US4.name=Patriots' Day
holiday.en-US4.date=20210419
holiday.en-US5.name=Memorial Day
holiday.en-US5.date=20210531
holiday.en-US6.name=Independence Day
holiday.en-US6.date=20210704
holiday.en-US7.name=Labor Day
holiday.en-US7.date=20210906
holiday.en-US8.name=Columbus Day
holiday.en-US8.date=20211011
holiday.en-US9.name=Veterans Day
holiday.en-US9.date=20211111
holiday.en-US10.name=Thanksgiving Day
holiday.en-US10.date=20211125
holiday.en-US11.name=Christmas Day
holiday.en-US11.date=20211225
holiday.en-US12.name=New Year's Day
holiday.en-US12.date=20220101
holiday.en-US13.name=Birthday of Martin Luther King, Jr.
holiday.en-US13.date=20220117
holiday.en-US14.name=Washington's Birthday
holiday.en-US14.date=20220221
holiday.en-US15.name=Patriots' Day
holiday.en-US15.date=20220418
holiday.en-US16.name=Memorial Day
holiday.en-US16.date=20220530
holiday.en-US17.name=Independence Day
holiday.en-US17.date=20220704
holiday.en-US18.name=Labor Day
holiday.en-US18.date=20220905
holiday.en-US19.name=Columbus Day
holiday.en-US19.date=20221010
holiday.en-US20.name=Veterans Day
holiday.en-US20.date=20221111
holiday.en-US21.name=Thanksgiving Day
holiday.en-US21.date=20221124
holiday.en-US22.name=Day after Thanksgiving
holiday.en-US22.date=20221125
holiday.en-US23.name=Christmas Eve
holiday.en-US23.date=20221224
holiday.en-US24.name=Christmas Day
holiday.en-US24.date=20221225

View File

@@ -1,105 +0,0 @@
###############################################################################
# International Holiday Data provided by Holidata.net
# https://holidata.net/es-CO/2021.json
# https://holidata.net/es-CO/2022.json
#
# 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
#
###############################################################################
holiday.es-CO1.name=Año Nuevo
holiday.es-CO1.date=20210101
holiday.es-CO2.name=Día de los Reyes Magos
holiday.es-CO2.date=20210111
holiday.es-CO3.name=Día de San José
holiday.es-CO3.date=20210322
holiday.es-CO4.name=Jueves Santo
holiday.es-CO4.date=20210401
holiday.es-CO5.name=Viernes Santo
holiday.es-CO5.date=20210402
holiday.es-CO6.name=Domingo de Pascua
holiday.es-CO6.date=20210404
holiday.es-CO7.name=Día del Trabajo
holiday.es-CO7.date=20210501
holiday.es-CO8.name=La Ascensión del Señor
holiday.es-CO8.date=20210517
holiday.es-CO9.name=Corpus Christi
holiday.es-CO9.date=20210607
holiday.es-CO10.name=El Sagrado Corazón de Jesús
holiday.es-CO10.date=20210614
holiday.es-CO11.name=San Pedro y San Pablo
holiday.es-CO11.date=20210705
holiday.es-CO12.name=Grito de Independencia
holiday.es-CO12.date=20210720
holiday.es-CO13.name=Batalla de Boyacá
holiday.es-CO13.date=20210807
holiday.es-CO14.name=Asunción de la Virgen
holiday.es-CO14.date=20210816
holiday.es-CO15.name=Día de la Raza
holiday.es-CO15.date=20211018
holiday.es-CO16.name=Todos los Santos
holiday.es-CO16.date=20211101
holiday.es-CO17.name=Independencia de Cartagena
holiday.es-CO17.date=20211115
holiday.es-CO18.name=Inmaculada Concepción
holiday.es-CO18.date=20211208
holiday.es-CO19.name=Navidad
holiday.es-CO19.date=20211225
holiday.es-CO20.name=Año Nuevo
holiday.es-CO20.date=20220101
holiday.es-CO21.name=Día de los Reyes Magos
holiday.es-CO21.date=20220110
holiday.es-CO22.name=Día de San José
holiday.es-CO22.date=20220321
holiday.es-CO23.name=Jueves Santo
holiday.es-CO23.date=20220414
holiday.es-CO24.name=Viernes Santo
holiday.es-CO24.date=20220415
holiday.es-CO25.name=Domingo de Pascua
holiday.es-CO25.date=20220417
holiday.es-CO26.name=Día del Trabajo
holiday.es-CO26.date=20220501
holiday.es-CO27.name=La Ascensión del Señor
holiday.es-CO27.date=20220530
holiday.es-CO28.name=Corpus Christi
holiday.es-CO28.date=20220620
holiday.es-CO29.name=El Sagrado Corazón de Jesús
holiday.es-CO29.date=20220627
holiday.es-CO30.name=San Pedro y San Pablo
holiday.es-CO30.date=20220704
holiday.es-CO31.name=Grito de Independencia
holiday.es-CO31.date=20220720
holiday.es-CO32.name=Batalla de Boyacá
holiday.es-CO32.date=20220807
holiday.es-CO33.name=Asunción de la Virgen
holiday.es-CO33.date=20220815
holiday.es-CO34.name=Día de la Raza
holiday.es-CO34.date=20221017
holiday.es-CO35.name=Todos los Santos
holiday.es-CO35.date=20221107
holiday.es-CO36.name=Independencia de Cartagena
holiday.es-CO36.date=20221114
holiday.es-CO37.name=Inmaculada Concepción
holiday.es-CO37.date=20221208
holiday.es-CO38.name=Navidad
holiday.es-CO38.date=20221225

View File

@@ -1,155 +0,0 @@
###############################################################################
# International Holiday Data provided by Holidata.net
# https://holidata.net/es-ES/2021.json
# https://holidata.net/es-ES/2022.json
#
# 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
#
###############################################################################
holiday.es-ES1.name=Año Nuevo
holiday.es-ES1.date=20210101
holiday.es-ES2.name=Epifanía del Señor
holiday.es-ES2.date=20210106
holiday.es-ES3.name=Día de Andalucía
holiday.es-ES3.date=20210301
holiday.es-ES4.name=Día de las Illes Balears
holiday.es-ES4.date=20210301
holiday.es-ES5.name=Estatuto de Autonomía de la Ciudad de Melilla
holiday.es-ES5.date=20210313
holiday.es-ES6.name=San José
holiday.es-ES6.date=20210319
holiday.es-ES7.name=Jueves Santo
holiday.es-ES7.date=20210401
holiday.es-ES8.name=Viernes Santo
holiday.es-ES8.date=20210402
holiday.es-ES9.name=Pascua
holiday.es-ES9.date=20210404
holiday.es-ES10.name=Lunes de Pascua
holiday.es-ES10.date=20210405
holiday.es-ES11.name=Fiesta de Castilla y León
holiday.es-ES11.date=20210423
holiday.es-ES12.name=San Jorge / Día de Aragón
holiday.es-ES12.date=20210423
holiday.es-ES13.name=Fiesta del Trabajo
holiday.es-ES13.date=20210501
holiday.es-ES14.name=Lunes siguiente al Día de la Comunidad de Madrid
holiday.es-ES14.date=20210503
holiday.es-ES15.name=Día de las Letras Gallegas
holiday.es-ES15.date=20210517
holiday.es-ES16.name=Día de Castilla-La Mancha
holiday.es-ES16.date=20210531
holiday.es-ES17.name=Corpus Christi
holiday.es-ES17.date=20210603
holiday.es-ES18.name=Día de la Región de Murcia
holiday.es-ES18.date=20210609
holiday.es-ES19.name=Día de La Rioja
holiday.es-ES19.date=20210609
holiday.es-ES20.name=San Juan
holiday.es-ES20.date=20210624
holiday.es-ES21.name=Fiesta del Sacrificio (Eidul Adha)
holiday.es-ES21.date=20210720
holiday.es-ES22.name=Fiesta del Sacrificio (Aid El Kebir)
holiday.es-ES22.date=20210721
holiday.es-ES23.name=Santiago Apóstol / Día Nacional de Galicia
holiday.es-ES23.date=20210725
holiday.es-ES24.name=Día de las Instituciones de Cantabria
holiday.es-ES24.date=20210728
holiday.es-ES25.name=Asunción de la Virgen
holiday.es-ES25.date=20210815
holiday.es-ES26.name=Lunes siguiente a la Asunción de la Virgen
holiday.es-ES26.date=20210816
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

View File

@@ -1,77 +0,0 @@
###############################################################################
# International Holiday Data provided by Holidata.net
# https://holidata.net/es-US/2021.json
# https://holidata.net/es-US/2022.json
#
# 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
#
###############################################################################
holiday.es-US1.name=Año Neuvo
holiday.es-US1.date=20210101
holiday.es-US2.name=Cumpleaños de Martin Luther King, Jr.
holiday.es-US2.date=20210118
holiday.es-US3.name=Día del Presidente
holiday.es-US3.date=20210215
holiday.es-US4.name=Día del Patriota
holiday.es-US4.date=20210419
holiday.es-US5.name=Día de los Caídos
holiday.es-US5.date=20210531
holiday.es-US6.name=Día de la Independiencia
holiday.es-US6.date=20210704
holiday.es-US7.name=Día del Trabajo
holiday.es-US7.date=20210906
holiday.es-US8.name=Día de Columbus
holiday.es-US8.date=20211011
holiday.es-US9.name=Día de los Veteranos
holiday.es-US9.date=20211111
holiday.es-US10.name=Día de Acción de Gracias
holiday.es-US10.date=20211125
holiday.es-US11.name=Navidad
holiday.es-US11.date=20211225
holiday.es-US12.name=Año Neuvo
holiday.es-US12.date=20220101
holiday.es-US13.name=Cumpleaños de Martin Luther King, Jr.
holiday.es-US13.date=20220117
holiday.es-US14.name=Día del Presidente
holiday.es-US14.date=20220221
holiday.es-US15.name=Día del Patriota
holiday.es-US15.date=20220418
holiday.es-US16.name=Día de los Caídos
holiday.es-US16.date=20220530
holiday.es-US17.name=Día de la Independiencia
holiday.es-US17.date=20220704
holiday.es-US18.name=Día del Trabajo
holiday.es-US18.date=20220905
holiday.es-US19.name=Día de Columbus
holiday.es-US19.date=20221010
holiday.es-US20.name=Día de los Veteranos
holiday.es-US20.date=20221111
holiday.es-US21.name=Día de Acción de Gracias
holiday.es-US21.date=20221124
holiday.es-US22.name=Día después de Acción de Gracias
holiday.es-US22.date=20221125
holiday.es-US23.name=Nochebuena
holiday.es-US23.date=20221224
holiday.es-US24.name=Navidad
holiday.es-US24.date=20221225

View File

@@ -1,81 +0,0 @@
###############################################################################
# International Holiday Data provided by Holidata.net
# https://holidata.net/fi-FI/2021.json
# https://holidata.net/fi-FI/2022.json
#
# 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
#
###############################################################################
holiday.fi-FI1.name=Uudenvuodenpäivä
holiday.fi-FI1.date=20210101
holiday.fi-FI2.name=Loppiainen
holiday.fi-FI2.date=20210106
holiday.fi-FI3.name=Pitkäperjantai
holiday.fi-FI3.date=20210402
holiday.fi-FI4.name=Pääsiäispäivä
holiday.fi-FI4.date=20210404
holiday.fi-FI5.name=2. pääsiäispäivä
holiday.fi-FI5.date=20210405
holiday.fi-FI6.name=Vappu
holiday.fi-FI6.date=20210501
holiday.fi-FI7.name=Helatorstai
holiday.fi-FI7.date=20210513
holiday.fi-FI8.name=Helluntaipäivä
holiday.fi-FI8.date=20210523
holiday.fi-FI9.name=Juhannuspäivä
holiday.fi-FI9.date=20210626
holiday.fi-FI10.name=Pyhäinpäivä
holiday.fi-FI10.date=20211106
holiday.fi-FI11.name=Itsenäisyyspäivä
holiday.fi-FI11.date=20211206
holiday.fi-FI12.name=Joulupäivä
holiday.fi-FI12.date=20211225
holiday.fi-FI13.name=Tapaninpäivä
holiday.fi-FI13.date=20211226
holiday.fi-FI14.name=Uudenvuodenpäivä
holiday.fi-FI14.date=20220101
holiday.fi-FI15.name=Loppiainen
holiday.fi-FI15.date=20220106
holiday.fi-FI16.name=Pitkäperjantai
holiday.fi-FI16.date=20220415
holiday.fi-FI17.name=Pääsiäispäivä
holiday.fi-FI17.date=20220417
holiday.fi-FI18.name=2. pääsiäispäivä
holiday.fi-FI18.date=20220418
holiday.fi-FI19.name=Vappu
holiday.fi-FI19.date=20220501
holiday.fi-FI20.name=Helatorstai
holiday.fi-FI20.date=20220526
holiday.fi-FI21.name=Helluntaipäivä
holiday.fi-FI21.date=20220605
holiday.fi-FI22.name=Juhannuspäivä
holiday.fi-FI22.date=20220625
holiday.fi-FI23.name=Pyhäinpäivä
holiday.fi-FI23.date=20221105
holiday.fi-FI24.name=Itsenäisyyspäivä
holiday.fi-FI24.date=20221206
holiday.fi-FI25.name=Joulupäivä
holiday.fi-FI25.date=20221225
holiday.fi-FI26.name=Tapaninpäivä
holiday.fi-FI26.date=20221226

View File

@@ -1,77 +0,0 @@
###############################################################################
# International Holiday Data provided by Holidata.net
# https://holidata.net/fr-BE/2021.json
# https://holidata.net/fr-BE/2022.json
#
# 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
#
###############################################################################
holiday.fr-BE1.name=Nouvel An
holiday.fr-BE1.date=20210101
holiday.fr-BE2.name=Pâques
holiday.fr-BE2.date=20210404
holiday.fr-BE3.name=Lundi de Pâques
holiday.fr-BE3.date=20210405
holiday.fr-BE4.name=Fête du Travail
holiday.fr-BE4.date=20210501
holiday.fr-BE5.name=Ascension
holiday.fr-BE5.date=20210513
holiday.fr-BE6.name=Pentecôte
holiday.fr-BE6.date=20210523
holiday.fr-BE7.name=Lundi de Pentecôte
holiday.fr-BE7.date=20210524
holiday.fr-BE8.name=Fête nationale
holiday.fr-BE8.date=20210721
holiday.fr-BE9.name=Assomption
holiday.fr-BE9.date=20210815
holiday.fr-BE10.name=Toussaint
holiday.fr-BE10.date=20211101
holiday.fr-BE11.name=Jour de l'armistice
holiday.fr-BE11.date=20211111
holiday.fr-BE12.name=Noël
holiday.fr-BE12.date=20211225
holiday.fr-BE13.name=Nouvel An
holiday.fr-BE13.date=20220101
holiday.fr-BE14.name=Pâques
holiday.fr-BE14.date=20220417
holiday.fr-BE15.name=Lundi de Pâques
holiday.fr-BE15.date=20220418
holiday.fr-BE16.name=Fête du Travail
holiday.fr-BE16.date=20220501
holiday.fr-BE17.name=Ascension
holiday.fr-BE17.date=20220526
holiday.fr-BE18.name=Pentecôte
holiday.fr-BE18.date=20220605
holiday.fr-BE19.name=Lundi de Pentecôte
holiday.fr-BE19.date=20220606
holiday.fr-BE20.name=Fête nationale
holiday.fr-BE20.date=20220721
holiday.fr-BE21.name=Assomption
holiday.fr-BE21.date=20220815
holiday.fr-BE22.name=Toussaint
holiday.fr-BE22.date=20221101
holiday.fr-BE23.name=Jour de l'armistice
holiday.fr-BE23.date=20221111
holiday.fr-BE24.name=Noël
holiday.fr-BE24.date=20221225

View File

@@ -1,109 +0,0 @@
###############################################################################
# International Holiday Data provided by Holidata.net
# https://holidata.net/fr-CA/2021.json
# https://holidata.net/fr-CA/2022.json
#
# 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
#
###############################################################################
holiday.fr-CA1.name=Jour de l'An
holiday.fr-CA1.date=20210101
holiday.fr-CA2.name=Fête de la Famille
holiday.fr-CA2.date=20210215
holiday.fr-CA3.name=Journée Louis Riel
holiday.fr-CA3.date=20210215
holiday.fr-CA4.name=Fête des Insulaires
holiday.fr-CA4.date=20210215
holiday.fr-CA5.name=Vendredi Saint
holiday.fr-CA5.date=20210402
holiday.fr-CA6.name=Lundi de Pâques
holiday.fr-CA6.date=20210405
holiday.fr-CA7.name=Fête de la Reine Victoria
holiday.fr-CA7.date=20210524
holiday.fr-CA8.name=Journée Nationale des Patriotes
holiday.fr-CA8.date=20210524
holiday.fr-CA9.name=Fête Nationale
holiday.fr-CA9.date=20210624
holiday.fr-CA10.name=Fête du Canada
holiday.fr-CA10.date=20210701
holiday.fr-CA11.name=Premier lundi d'août
holiday.fr-CA11.date=20210802
holiday.fr-CA12.name=Fête du Patrimoine
holiday.fr-CA12.date=20210802
holiday.fr-CA13.name=Fête de la Saskatchewan
holiday.fr-CA13.date=20210802
holiday.fr-CA14.name=Jour de la Fondation
holiday.fr-CA14.date=20210802
holiday.fr-CA15.name=Jour du Nouveau-Brunswick
holiday.fr-CA15.date=20210802
holiday.fr-CA16.name=Fête du Travail
holiday.fr-CA16.date=20210906
holiday.fr-CA17.name=Jour de l'Action de grâce
holiday.fr-CA17.date=20211011
holiday.fr-CA18.name=Jour du Souvenir
holiday.fr-CA18.date=20211111
holiday.fr-CA19.name=Jour de Noël
holiday.fr-CA19.date=20211225
holiday.fr-CA20.name=Lendemain de Noël
holiday.fr-CA20.date=20211226
holiday.fr-CA21.name=Jour de l'An
holiday.fr-CA21.date=20220101
holiday.fr-CA22.name=Fête de la Famille
holiday.fr-CA22.date=20220221
holiday.fr-CA23.name=Journée Louis Riel
holiday.fr-CA23.date=20220221
holiday.fr-CA24.name=Fête des Insulaires
holiday.fr-CA24.date=20220221
holiday.fr-CA25.name=Vendredi Saint
holiday.fr-CA25.date=20220415
holiday.fr-CA26.name=Lundi de Pâques
holiday.fr-CA26.date=20220418
holiday.fr-CA27.name=Fête de la Reine Victoria
holiday.fr-CA27.date=20220523
holiday.fr-CA28.name=Journée Nationale des Patriotes
holiday.fr-CA28.date=20220523
holiday.fr-CA29.name=Fête Nationale
holiday.fr-CA29.date=20220624
holiday.fr-CA30.name=Fête du Canada
holiday.fr-CA30.date=20220701
holiday.fr-CA31.name=Premier lundi d'août
holiday.fr-CA31.date=20220801
holiday.fr-CA32.name=Fête du Patrimoine
holiday.fr-CA32.date=20220801
holiday.fr-CA33.name=Fête de la Saskatchewan
holiday.fr-CA33.date=20220801
holiday.fr-CA34.name=Jour de la Fondation
holiday.fr-CA34.date=20220801
holiday.fr-CA35.name=Jour du Nouveau-Brunswick
holiday.fr-CA35.date=20220801
holiday.fr-CA36.name=Fête du Travail
holiday.fr-CA36.date=20220905
holiday.fr-CA37.name=Jour de l'Action de grâce
holiday.fr-CA37.date=20221010
holiday.fr-CA38.name=Jour du Souvenir
holiday.fr-CA38.date=20221111
holiday.fr-CA39.name=Jour de Noël
holiday.fr-CA39.date=20221225
holiday.fr-CA40.name=Lendemain de Noël
holiday.fr-CA40.date=20221226

View File

@@ -1,77 +0,0 @@
###############################################################################
# International Holiday Data provided by Holidata.net
# https://holidata.net/fr-FR/2021.json
# https://holidata.net/fr-FR/2022.json
#
# 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
#
###############################################################################
holiday.fr-FR1.name=Jour de l'an
holiday.fr-FR1.date=20210101
holiday.fr-FR2.name=Lundi de Pâques
holiday.fr-FR2.date=20210405
holiday.fr-FR3.name=Fête du premier mai
holiday.fr-FR3.date=20210501
holiday.fr-FR4.name=Armistice 1945
holiday.fr-FR4.date=20210508
holiday.fr-FR5.name=Ascension
holiday.fr-FR5.date=20210513
holiday.fr-FR6.name=Pentecôte
holiday.fr-FR6.date=20210523
holiday.fr-FR7.name=Lundi de Pentecôte
holiday.fr-FR7.date=20210524
holiday.fr-FR8.name=Fête nationale
holiday.fr-FR8.date=20210714
holiday.fr-FR9.name=Assomption
holiday.fr-FR9.date=20210815
holiday.fr-FR10.name=Toussaint
holiday.fr-FR10.date=20211101
holiday.fr-FR11.name=Armistice 1918
holiday.fr-FR11.date=20211111
holiday.fr-FR12.name=Noël
holiday.fr-FR12.date=20211225
holiday.fr-FR13.name=Jour de l'an
holiday.fr-FR13.date=20220101
holiday.fr-FR14.name=Lundi de Pâques
holiday.fr-FR14.date=20220418
holiday.fr-FR15.name=Fête du premier mai
holiday.fr-FR15.date=20220501
holiday.fr-FR16.name=Armistice 1945
holiday.fr-FR16.date=20220508
holiday.fr-FR17.name=Ascension
holiday.fr-FR17.date=20220526
holiday.fr-FR18.name=Pentecôte
holiday.fr-FR18.date=20220605
holiday.fr-FR19.name=Lundi de Pentecôte
holiday.fr-FR19.date=20220606
holiday.fr-FR20.name=Fête nationale
holiday.fr-FR20.date=20220714
holiday.fr-FR21.name=Assomption
holiday.fr-FR21.date=20220815
holiday.fr-FR22.name=Toussaint
holiday.fr-FR22.date=20221101
holiday.fr-FR23.name=Armistice 1918
holiday.fr-FR23.date=20221111
holiday.fr-FR24.name=Noël
holiday.fr-FR24.date=20221225

View File

@@ -1,87 +0,0 @@
###############################################################################
# International Holiday Data provided by Holidata.net
# https://holidata.net/hr-HR/2021.json
# https://holidata.net/hr-HR/2022.json
#
# 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
#
###############################################################################
holiday.hr-HR1.name=Nova Godina
holiday.hr-HR1.date=20210101
holiday.hr-HR2.name=Bogojavljenje
holiday.hr-HR2.date=20210106
holiday.hr-HR3.name=Uskrs
holiday.hr-HR3.date=20210404
holiday.hr-HR4.name=Uskrsni ponedjeljak
holiday.hr-HR4.date=20210405
holiday.hr-HR5.name=Praznik rada
holiday.hr-HR5.date=20210501
holiday.hr-HR6.name=Tijelovo
holiday.hr-HR6.date=20210603
holiday.hr-HR7.name=Dan antifašističke borbe
holiday.hr-HR7.date=20210622
holiday.hr-HR8.name=Dan državnosti
holiday.hr-HR8.date=20210625
holiday.hr-HR9.name=Dan pobjede i domovinske zahvalnosti i Dan hrvatskih branitelja
holiday.hr-HR9.date=20210805
holiday.hr-HR10.name=Velika Gospa
holiday.hr-HR10.date=20210815
holiday.hr-HR11.name=Dan neovisnosti
holiday.hr-HR11.date=20211008
holiday.hr-HR12.name=Svi sveti
holiday.hr-HR12.date=20211101
holiday.hr-HR13.name=Dan sjećanja na žrtve Domovinskog rata i Dan sjećanja na žrtvu Vukovara i Škabrnje
holiday.hr-HR13.date=20211118
holiday.hr-HR14.name=Božić
holiday.hr-HR14.date=20211225
holiday.hr-HR15.name=Sveti Stjepan
holiday.hr-HR15.date=20211226
holiday.hr-HR16.name=Nova Godina
holiday.hr-HR16.date=20220101
holiday.hr-HR17.name=Sveta tri kralja
holiday.hr-HR17.date=20220106
holiday.hr-HR18.name=Uskrs
holiday.hr-HR18.date=20220417
holiday.hr-HR19.name=Uskršnji ponedjeljak
holiday.hr-HR19.date=20220418
holiday.hr-HR20.name=Praznik rada
holiday.hr-HR20.date=20220501
holiday.hr-HR21.name=Dan državnosti
holiday.hr-HR21.date=20220530
holiday.hr-HR22.name=Tijelovo
holiday.hr-HR22.date=20220616
holiday.hr-HR23.name=Dan antifašističke borbe
holiday.hr-HR23.date=20220622
holiday.hr-HR24.name=Dan pobjede i domovinske zahvalnosti i Dan hrvatskih branitelja
holiday.hr-HR24.date=20220805
holiday.hr-HR25.name=Velika Gospa
holiday.hr-HR25.date=20220815
holiday.hr-HR26.name=Dan svih svetih
holiday.hr-HR26.date=20221101
holiday.hr-HR27.name=Dan sjećanja na žrtve Domovinskog rata i Dan sjećanja na žrtvu Vukovara i Škabrnje
holiday.hr-HR27.date=20221118
holiday.hr-HR28.name=Božić
holiday.hr-HR28.date=20221225
holiday.hr-HR29.name=Sveti Stjepan
holiday.hr-HR29.date=20221226

View File

@@ -1,83 +0,0 @@
###############################################################################
# International Holiday Data provided by Holidata.net
# https://holidata.net/hu-HU/2021.json
# https://holidata.net/hu-HU/2022.json
#
# 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
#
###############################################################################
holiday.hu-HU1.name=Újév
holiday.hu-HU1.date=20210101
holiday.hu-HU2.name=Az 1848-as forradalom ünnepe
holiday.hu-HU2.date=20210315
holiday.hu-HU3.name=Nagypéntek
holiday.hu-HU3.date=20210402
holiday.hu-HU4.name=Húsvét
holiday.hu-HU4.date=20210404
holiday.hu-HU5.name=Húsvéthétfő
holiday.hu-HU5.date=20210405
holiday.hu-HU6.name=A munka ünnepe
holiday.hu-HU6.date=20210501
holiday.hu-HU7.name=Pünkösd
holiday.hu-HU7.date=20210523
holiday.hu-HU8.name=Pünkösdhétfő
holiday.hu-HU8.date=20210524
holiday.hu-HU9.name=Az államalapítás ünnepe
holiday.hu-HU9.date=20210820
holiday.hu-HU10.name=Az 1956-os forradalom ünnepe
holiday.hu-HU10.date=20211023
holiday.hu-HU11.name=Mindenszentek
holiday.hu-HU11.date=20211101
holiday.hu-HU12.name=Munkaszüneti Nap
holiday.hu-HU12.date=20211224
holiday.hu-HU13.name=Karácsony
holiday.hu-HU13.date=20211225
holiday.hu-HU14.name=Karácsony
holiday.hu-HU14.date=20211226
holiday.hu-HU15.name=Újév
holiday.hu-HU15.date=20220101
holiday.hu-HU16.name=Az 1848-as forradalom ünnepe
holiday.hu-HU16.date=20220315
holiday.hu-HU17.name=Nagypéntek
holiday.hu-HU17.date=20220415
holiday.hu-HU18.name=Húsvét
holiday.hu-HU18.date=20220417
holiday.hu-HU19.name=Húsvéthétfő
holiday.hu-HU19.date=20220418
holiday.hu-HU20.name=A munka ünnepe
holiday.hu-HU20.date=20220501
holiday.hu-HU21.name=Pünkösd
holiday.hu-HU21.date=20220605
holiday.hu-HU22.name=Pünkösdhétfő
holiday.hu-HU22.date=20220606
holiday.hu-HU23.name=Az államalapítás ünnepe
holiday.hu-HU23.date=20220820
holiday.hu-HU24.name=Az 1956-os forradalom ünnepe
holiday.hu-HU24.date=20221023
holiday.hu-HU25.name=Mindenszentek
holiday.hu-HU25.date=20221101
holiday.hu-HU26.name=Karácsony
holiday.hu-HU26.date=20221225
holiday.hu-HU27.name=Karácsony
holiday.hu-HU27.date=20221226

View File

@@ -1,93 +0,0 @@
###############################################################################
# International Holiday Data provided by Holidata.net
# https://holidata.net/is-IS/2021.json
# https://holidata.net/is-IS/2022.json
#
# 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
#
###############################################################################
holiday.is-IS1.name=Nýársdagur
holiday.is-IS1.date=20210101
holiday.is-IS2.name=Skírdagur
holiday.is-IS2.date=20210401
holiday.is-IS3.name=Föstudagurinn langi
holiday.is-IS3.date=20210402
holiday.is-IS4.name=Páskadagur
holiday.is-IS4.date=20210404
holiday.is-IS5.name=Annar dagur páska
holiday.is-IS5.date=20210405
holiday.is-IS6.name=Sumardagurinn fyrsti
holiday.is-IS6.date=20210422
holiday.is-IS7.name=Verkalýðsdagurinn
holiday.is-IS7.date=20210501
holiday.is-IS8.name=Uppstigningardagur
holiday.is-IS8.date=20210513
holiday.is-IS9.name=Hvítasunnudagur
holiday.is-IS9.date=20210523
holiday.is-IS10.name=Annar dagur hvítasunnu
holiday.is-IS10.date=20210524
holiday.is-IS11.name=Þjóðhátíðardagurinn
holiday.is-IS11.date=20210617
holiday.is-IS12.name=Frídagur verslunarmanna
holiday.is-IS12.date=20210802
holiday.is-IS13.name=Aðfangadagur jóla
holiday.is-IS13.date=20211224
holiday.is-IS14.name=Jóladagur
holiday.is-IS14.date=20211225
holiday.is-IS15.name=Annar dagur jóla
holiday.is-IS15.date=20211226
holiday.is-IS16.name=Gamlársdagur
holiday.is-IS16.date=20211231
holiday.is-IS17.name=Nýársdagur
holiday.is-IS17.date=20220101
holiday.is-IS18.name=Skírdagur
holiday.is-IS18.date=20220414
holiday.is-IS19.name=Föstudagurinn langi
holiday.is-IS19.date=20220415
holiday.is-IS20.name=Páskadagur
holiday.is-IS20.date=20220417
holiday.is-IS21.name=Annar dagur páska
holiday.is-IS21.date=20220418
holiday.is-IS22.name=Sumardagurinn fyrsti
holiday.is-IS22.date=20220421
holiday.is-IS23.name=Verkalýðsdagurinn
holiday.is-IS23.date=20220501
holiday.is-IS24.name=Uppstigningardagur
holiday.is-IS24.date=20220526
holiday.is-IS25.name=Hvítasunnudagur
holiday.is-IS25.date=20220605
holiday.is-IS26.name=Annar dagur hvítasunnu
holiday.is-IS26.date=20220606
holiday.is-IS27.name=Þjóðhátíðardagurinn
holiday.is-IS27.date=20220617
holiday.is-IS28.name=Frídagur verslunarmanna
holiday.is-IS28.date=20220801
holiday.is-IS29.name=Aðfangadagur jóla
holiday.is-IS29.date=20221224
holiday.is-IS30.name=Jóladagur
holiday.is-IS30.date=20221225
holiday.is-IS31.name=Annar dagur jóla
holiday.is-IS31.date=20221226
holiday.is-IS32.name=Gamlársdagur
holiday.is-IS32.date=20221231

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