Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
848012bf68 |
@@ -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
|
||||
]
|
||||
@@ -1,2 +0,0 @@
|
||||
[alias]
|
||||
xtask = "run --package xtask --"
|
||||
@@ -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>
|
||||
@@ -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"
|
||||
}
|
||||
@@ -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
3
.github/CODEOWNERS
vendored
@@ -1,3 +0,0 @@
|
||||
taskchampion/* @dbr @djmitche
|
||||
Cargo.toml @dbr @djmitche
|
||||
Cargo.lock @dbr @djmitche
|
||||
1
.github/CONTRIBUTING.md
vendored
1
.github/CONTRIBUTING.md
vendored
@@ -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
1
.github/FUNDING.yml
vendored
@@ -1 +0,0 @@
|
||||
github: GothenburgBitFactory
|
||||
18
.github/dependabot.yml
vendored
18
.github/dependabot.yml
vendored
@@ -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"]
|
||||
12
.github/issue_template.md
vendored
12
.github/issue_template.md
vendored
@@ -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)
|
||||
11
.github/pull_request_template.md
vendored
11
.github/pull_request_template.md
vendored
@@ -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.
|
||||
115
.github/workflows/checks.yml
vendored
115
.github/workflows/checks.yml
vendored
@@ -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
|
||||
53
.github/workflows/docker-image.yaml
vendored
53
.github/workflows/docker-image.yaml
vendored
@@ -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 }}
|
||||
31
.github/workflows/publish-docs.yml
vendored
31
.github/workflows/publish-docs.yml
vendored
@@ -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
|
||||
83
.github/workflows/rust-tests.yml
vendored
83
.github/workflows/rust-tests.yml
vendored
@@ -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
|
||||
20
.github/workflows/security.yml
vendored
20
.github/workflows/security.yml
vendored
@@ -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 }}
|
||||
108
.github/workflows/tests.yaml
vendored
108
.github/workflows/tests.yaml
vendored
@@ -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 }}
|
||||
16
.gitignore
vendored
16
.gitignore
vendored
@@ -1,15 +1,21 @@
|
||||
cmake.h
|
||||
commit.h
|
||||
Makefile
|
||||
src/task
|
||||
src/taskd
|
||||
src/libtask.a
|
||||
src/commands/libcommands.a
|
||||
src/columns/libcolumns.a
|
||||
*~
|
||||
.*.swp
|
||||
Session.vim
|
||||
package-config/osx/binary/task
|
||||
/build*/
|
||||
CMakeFiles
|
||||
CMakeCache.txt
|
||||
cmake_install.cmake
|
||||
install_manifest.txt
|
||||
_CPack_Packages
|
||||
CPackConfig.cmake
|
||||
CPackSourceConfig.cmake
|
||||
patches
|
||||
*.exe
|
||||
tutorials
|
||||
.prove
|
||||
/target/
|
||||
/.idea/
|
||||
|
||||
6
.gitmodules
vendored
6
.gitmodules
vendored
@@ -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
|
||||
64
AUTHORS
64
AUTHORS
@@ -3,7 +3,6 @@ contributions of the following people:
|
||||
|
||||
Paul Beckingham (Principal Author)
|
||||
Federico Hernandez (Principal Author)
|
||||
Tomas Babej (Principal Author)
|
||||
David J Patrick (Designer)
|
||||
John Florian (Contributing Author)
|
||||
Cory Donnelly (Contributing Author)
|
||||
@@ -14,6 +13,7 @@ contributions of the following people:
|
||||
Louis-Claude Canon (Contributing Author)
|
||||
Scott Kostyshak (Contributing Author)
|
||||
Renato Alves (Contributing Author)
|
||||
Tomas Babej (Contributing Author)
|
||||
|
||||
The following submitted code, packages or analysis, and deserve special thanks:
|
||||
|
||||
@@ -126,38 +126,7 @@ The following submitted code, packages or analysis, and deserve special thanks:
|
||||
Sunil Joshi
|
||||
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
|
||||
Konstantin
|
||||
|
||||
Thanks to the following, who submitted detailed bug reports and excellent
|
||||
suggestions:
|
||||
@@ -305,6 +274,7 @@ suggestions:
|
||||
James Cline
|
||||
Ryan
|
||||
Simon W. Jackson
|
||||
Sebastien Badia
|
||||
Michale Meier
|
||||
Svetoslav Trochev
|
||||
Marc Cornellà
|
||||
@@ -318,31 +288,3 @@ suggestions:
|
||||
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.
|
||||
|
||||
213
CMakeLists.txt
213
CMakeLists.txt
@@ -1,37 +1,98 @@
|
||||
cmake_minimum_required (VERSION 3.22)
|
||||
cmake_minimum_required (VERSION 2.8)
|
||||
set(CMAKE_LEGACY_CYGWIN_WIN32 0) # Remove when CMake >= 2.8.4 is required
|
||||
|
||||
set (CMAKE_EXPORT_COMPILE_COMMANDS ON)
|
||||
|
||||
project (task
|
||||
VERSION 3.0.1
|
||||
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)
|
||||
project (task)
|
||||
set (PROJECT_VERSION "2.5.2")
|
||||
|
||||
OPTION (ENABLE_WASM "Enable 'wasm' support" OFF)
|
||||
OPTION (ENABLE_SYNC "Enable 'task sync' support" ON)
|
||||
|
||||
if (ENABLE_WASM)
|
||||
message ("Enabling WASM support.")
|
||||
set(CMAKE_EXECUTABLE_SUFFIX ".js")
|
||||
endif (ENABLE_WASM)
|
||||
if (ENABLE_SYNC)
|
||||
set (USE_GNUTLS ON CACHE BOOL "Build gnutls support." FORCE)
|
||||
else (ENABLE_SYNC)
|
||||
set (USE_GNUTLS OFF CACHE BOOL "Build gnutls support." FORCE)
|
||||
message (WARNING "ENABLE_SYNC=OFF. Not building sync support.")
|
||||
endif (ENABLE_SYNC)
|
||||
|
||||
message ("-- Looking for libshared")
|
||||
if (EXISTS ${CMAKE_SOURCE_DIR}/src/libshared/src)
|
||||
message ("-- Found libshared")
|
||||
else (EXISTS ${CMAKE_SOURCE_DIR}/src/libshared/src)
|
||||
message ("-- Cloning libshared")
|
||||
execute_process (COMMAND git submodule update --init
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
|
||||
endif (EXISTS ${CMAKE_SOURCE_DIR}/src/libshared/src)
|
||||
message ("CMAKE_SYSTEM_NAME ${CMAKE_SYSTEM_NAME}")
|
||||
|
||||
include (CheckCXXCompilerFlag)
|
||||
|
||||
# NOTE: If we are to actually use C++11 features, we should either require
|
||||
# a compiler that supports the -std=c++11 flag or check for the
|
||||
# features used.
|
||||
# Relying on -std=c++0x or even -std=gnu++0x is highly volatile.
|
||||
|
||||
CHECK_CXX_COMPILER_FLAG("-std=c++11" _HAS_CXX11)
|
||||
CHECK_CXX_COMPILER_FLAG("-std=c++0x" _HAS_CXX0X)
|
||||
CHECK_CXX_COMPILER_FLAG("-std=gnu++0x" _HAS_GNU0X)
|
||||
|
||||
if (_HAS_CXX11)
|
||||
set (_CXX11_FLAGS "-std=c++11")
|
||||
elseif (_HAS_CXX0X)
|
||||
message (WARNING "Enabling -std=c++0x draft compile flag. Your compiler does not support the standard '-std=c++11' option. Consider upgrading.")
|
||||
set (_CXX11_FLAGS "-std=c++0x")
|
||||
elseif (_HAS_GNU0X)
|
||||
message (WARNING "Enabling -std=gnu++0x draft compile flag. Your compiler does not support the standard '-std=c++11' option. Consider upgrading.")
|
||||
set (_CXX11_FLAGS "-std=gnu++0x")
|
||||
else (_HAS_CXX11)
|
||||
message (FATAL_ERROR "C++11 support missing. Try upgrading your C++ compiler. If you have a good reason for using an outdated compiler, please let us know at support@taskwarrior.org.")
|
||||
endif (_HAS_CXX11)
|
||||
|
||||
if (${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang")
|
||||
set (_CXX11_FLAGS "${_CXX11_FLAGS} -stdlib=libc++")
|
||||
endif (${CMAKE_CXX_COMPILER_ID} STREQUAL "Clang")
|
||||
|
||||
if (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
|
||||
set (LINUX true)
|
||||
elseif (${CMAKE_SYSTEM_NAME} MATCHES "Darwin")
|
||||
set (DARWIN true)
|
||||
elseif (${CMAKE_SYSTEM_NAME} MATCHES "kFreeBSD")
|
||||
set (KFREEBSD true)
|
||||
elseif (${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD")
|
||||
set (FREEBSD true)
|
||||
elseif (${CMAKE_SYSTEM_NAME} MATCHES "OpenBSD")
|
||||
set (OPENBSD true)
|
||||
elseif (${CMAKE_SYSTEM_NAME} MATCHES "NetBSD")
|
||||
set (NETBSD true)
|
||||
elseif (${CMAKE_SYSTEM_NAME} MATCHES "SunOS")
|
||||
set (SOLARIS true)
|
||||
elseif (${CMAKE_SYSTEM_NAME} STREQUAL "GNU")
|
||||
set (GNUHURD true)
|
||||
elseif (${CMAKE_SYSTEM_NAME} STREQUAL "CYGWIN")
|
||||
set (CYGWIN true)
|
||||
# NOTE: Not setting -std=gnu++0x leads to compile errors even with
|
||||
# GCC 4.8.3, and debugging those leads to insanity. Adding this
|
||||
# workaround instead of fixing Cygwin.
|
||||
set (_CXX11_FLAGS "-std=gnu++0x")
|
||||
else (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
|
||||
set (UNKNOWN true)
|
||||
endif (${CMAKE_SYSTEM_NAME} MATCHES "Linux")
|
||||
|
||||
set (CMAKE_CXX_FLAGS "${_CXX11_FLAGS} ${CMAKE_CXX_FLAGS}")
|
||||
|
||||
set (CMAKE_CXX_FLAGS "-Wall -Wsign-compare -Wreturn-type ${CMAKE_CXX_FLAGS}")
|
||||
|
||||
if (NETBSD)
|
||||
# Since readline, etc likely to be in /usr/pkg/lib, not standard library
|
||||
# Otherwise will remove links during install
|
||||
set (CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
|
||||
endif (NETBSD)
|
||||
|
||||
if (FREEBSD)
|
||||
SET (TASK_MAN1DIR man/man1 CACHE STRING "Installation directory for man pages, section 1")
|
||||
SET (TASK_MAN5DIR man/man5 CACHE STRING "Installation directory for man pages, section 5")
|
||||
else (FREEBSD)
|
||||
SET (TASK_MAN1DIR share/man/man1 CACHE STRING "Installation directory for man pages, section 1")
|
||||
SET (TASK_MAN5DIR share/man/man5 CACHE STRING "Installation directory for man pages, section 5")
|
||||
endif (FREEBSD)
|
||||
SET (TASK_DOCDIR share/doc/task CACHE STRING "Installation directory for doc files")
|
||||
SET (TASK_RCDIR "${TASK_DOCDIR}/rc" CACHE STRING "Installation directory for configuration files")
|
||||
SET (TASK_BINDIR bin CACHE STRING "Installation directory for the binary")
|
||||
|
||||
message ("-- Looking for SHA1 references")
|
||||
if (EXISTS ${CMAKE_SOURCE_DIR}/.git/index)
|
||||
@@ -46,25 +107,25 @@ endif (EXISTS ${CMAKE_SOURCE_DIR}/.git/index)
|
||||
|
||||
set (PACKAGE "${PROJECT_NAME}")
|
||||
set (VERSION "${PROJECT_VERSION}")
|
||||
set (PACKAGE_BUGREPORT "support@gothenburgbitfactory.org")
|
||||
set (PACKAGE_BUGREPORT "support@taskwarrior.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")
|
||||
if (USE_GNUTLS)
|
||||
message ("-- Looking for GnuTLS")
|
||||
find_package (GnuTLS)
|
||||
if (GNUTLS_FOUND)
|
||||
set (HAVE_LIBGNUTLS true)
|
||||
set (TASK_INCLUDE_DIRS ${TASK_INCLUDE_DIRS} ${GNUTLS_INCLUDE_DIR})
|
||||
set (TASK_LIBRARIES ${TASK_LIBRARIES} ${GNUTLS_LIBRARIES})
|
||||
endif (GNUTLS_FOUND)
|
||||
endif (USE_GNUTLS)
|
||||
|
||||
# rust libs require these
|
||||
set (TASK_LIBRARIES dl pthread)
|
||||
if (ENABLE_SYNC AND NOT GNUTLS_FOUND)
|
||||
message (FATAL_ERROR "Cannot find GnuTLS. Use -DENABLE_SYNC=OFF to build Taskwarrior without sync support. See INSTALL for more information.")
|
||||
endif (ENABLE_SYNC AND NOT GNUTLS_FOUND)
|
||||
|
||||
check_function_exists (timegm HAVE_TIMEGM)
|
||||
check_function_exists (get_current_dir_name HAVE_GET_CURRENT_DIR_NAME)
|
||||
@@ -98,41 +159,22 @@ 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)
|
||||
# Set the package language.
|
||||
if (LANGUAGE)
|
||||
set (PACKAGE_LANGUAGE ${LANGUAGE})
|
||||
else (LANGUAGE)
|
||||
set (PACKAGE_LANGUAGE 1)
|
||||
endif (LANGUAGE)
|
||||
|
||||
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")
|
||||
set (LANGUAGE_ENG_USA 1)
|
||||
set (LANGUAGE_ESP_ESP 2)
|
||||
set (LANGUAGE_DEU_DEU 3)
|
||||
set (LANGUAGE_FRA_FRA 4)
|
||||
set (LANGUAGE_ITA_ITA 5)
|
||||
set (LANGUAGE_POR_PRT 6)
|
||||
set (LANGUAGE_EPO_RUS 7)
|
||||
set (LANGUAGE_POL_POL 8)
|
||||
set (LANGUAGE_JPN_JPN 9)
|
||||
|
||||
message ("-- Configuring cmake.h")
|
||||
configure_file (
|
||||
@@ -141,7 +183,6 @@ configure_file (
|
||||
|
||||
add_subdirectory (src)
|
||||
add_subdirectory (src/commands)
|
||||
add_subdirectory (src/tc)
|
||||
add_subdirectory (src/columns)
|
||||
add_subdirectory (doc)
|
||||
add_subdirectory (scripts)
|
||||
@@ -152,32 +193,18 @@ if (EXISTS performance)
|
||||
add_subdirectory (performance EXCLUDE_FROM_ALL)
|
||||
endif (EXISTS performance)
|
||||
|
||||
set (doc_FILES ChangeLog README.md INSTALL AUTHORS COPYING LICENSE)
|
||||
set (doc_FILES NEWS ChangeLog README.md INSTALL AUTHORS COPYING LICENSE)
|
||||
foreach (doc_FILE ${doc_FILES})
|
||||
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/")
|
||||
set (CPACK_SOURCE_IGNORE_FILES "CMakeCache" "CMakeFiles" "CPackConfig" "CPackSourceConfig"
|
||||
"_CPack_Packages" "cmake_install" "install_manifest" "Makefile$"
|
||||
"test" "package-config" "misc/*" "src/task$" "src/calc$" "performance"
|
||||
"src/libtask.a" "src/columns/libcolumns.a" "src/commands/libcommands.a"
|
||||
"/\\\\.gitignore" "/\\\\.git/" "swp$" "src/lex$")
|
||||
include (CPack)
|
||||
|
||||
4
COPYING
4
COPYING
@@ -1,6 +1,6 @@
|
||||
Taskwarrior - a command line task list manager.
|
||||
|
||||
Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
|
||||
Copyright 2006 - 2016, Paul Beckingham, Federico Hernandez.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -20,4 +20,4 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
|
||||
https://www.opensource.org/licenses/mit-license.php
|
||||
http://www.opensource.org/licenses/mit-license.php
|
||||
|
||||
2334
Cargo.lock
generated
2334
Cargo.lock
generated
File diff suppressed because it is too large
Load Diff
42
Cargo.toml
42
Cargo.toml
@@ -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" }
|
||||
427
ChangeLog
427
ChangeLog
@@ -1,406 +1,3 @@
|
||||
------ current release ---------------------------
|
||||
|
||||
3.0.1 -
|
||||
|
||||
- Fix an error in creation of the 3.0.0 tarball which caused builds to fail (#3302)
|
||||
- Improvements to `task news`, including notes for the 3.0.0 release
|
||||
- Minor improvements to documentation and error handling
|
||||
- Fix incorrect task ID of 0 when using hooks (#3339)
|
||||
- Issue a warning if .data files remain (#3321)
|
||||
|
||||
------ old releases ------------------------------
|
||||
|
||||
3.0.0 -
|
||||
|
||||
- [BREAKING CHANGE] the sync functionality has been rewritten entirely, and
|
||||
no longer supports taskserver/taskd. Instead, the recommended solution is
|
||||
a cloud-storage backend, although `taskchampion-sync-server` is also
|
||||
available.
|
||||
|
||||
See https://taskwarrior.org/docs/upgrade-3/ for information on upgrading to
|
||||
Taskwarrior 3.0.
|
||||
|
||||
The following config options are no longer supported:
|
||||
- `debug.tls`
|
||||
- `taskd.ca`
|
||||
- `taskd.certificate`
|
||||
- `taskd.ciphers`
|
||||
- `taskd.credentials`
|
||||
- `taskd.key`
|
||||
- `taskd.server`
|
||||
- `taskd.trust`
|
||||
|
||||
The Taskwarrior build no longer requires GnuTLS. The build option
|
||||
`ENABLE_SYNC=OFF` is also no longer supported; sync support is always built
|
||||
in.
|
||||
|
||||
Deep thanks to the following for contributions to this work:
|
||||
|
||||
- Akash Shanmugaraj
|
||||
- Andrew Savchenko
|
||||
- Dathan Bennett
|
||||
- Dustin Mitchell
|
||||
- dbr/Ben
|
||||
- Felix Schurk
|
||||
- Isaac Wyatt
|
||||
- Nathan Luong
|
||||
- Nikos Koukis
|
||||
- Pablo Baeyens
|
||||
- Ravi Sawlani
|
||||
- ryneeverett
|
||||
- Simon Fraser
|
||||
|
||||
- TW #2732 Fix urgency inheritance for negative-urgency tasks.
|
||||
Thanks to Jackson Abascal for contributing.
|
||||
- TW #2763 `task show` now shows `hooks.location.
|
||||
Thanks to rollniak for reporting and sec65 for contributing.
|
||||
- TW #2765 Fix leading space before urgency value in `task info`.
|
||||
Thanks to Dominik Rehák for contributing.
|
||||
- TW #2780 Fix formatting of countdown-style dates
|
||||
Thanks to Dominik Rehák for contributing.
|
||||
- TW #2826 Fix issue with filter not applied correctly during `task _tags` command
|
||||
Thanks to Nikos Koukis for contributing.
|
||||
- TW #3052 Parsing of timestamp values now uses 64-bit integers, avoiding
|
||||
issues in the year 2032.
|
||||
Thanks to Bernhard M. Wiedemann for contributing.
|
||||
- TW #3068 Fix fish completion.
|
||||
Thanks to Michal Koutný for contributing.
|
||||
|
||||
2.6.2 -
|
||||
|
||||
- TW #502 Sequence of IDs doesn't work with attribute "depends"
|
||||
Thanks to Andreas Kalex and Reg for reporting.
|
||||
- TW #2648 xdg-open is not available on Mac OS-X
|
||||
Thanks to chapterjson for reporting.
|
||||
- TW #2655 The bulk removal of depends: and tags: is ignored
|
||||
Thanks to angelus2014 for reporting.
|
||||
- TW #2664 Tag exclusion should be detected as invalid write context
|
||||
Thanks to bentwitthold for reporting.
|
||||
- TW #2671 The value of soww named date is incorrect
|
||||
Thanks to Lennart Kill for reporting.
|
||||
- TW #2689 Corruption of the depends attribute upon syncing with taskd 1.1.0
|
||||
Thanks to Klaus Ethgen for reporting, Dusting J. Mitchell for
|
||||
contributing.
|
||||
- TW #2707 Assigning dependencies via ID ranges
|
||||
Thanks to jaker-dotcom for reporting.
|
||||
- TW #2748 Recurring report does not include parent tasks
|
||||
Thanks to Klaus Ethgen for reporting.
|
||||
|
||||
2.6.1 (2021-10-19) - a696b6b155f9c8af87a6a496c0d298c58e6fe369
|
||||
|
||||
- TW #2619 Fish autocompletion fails when completing tag removal
|
||||
Thanks to Alexandre Provencio for reporting, Tin Lai and Alexandre
|
||||
Provencio for contributing.
|
||||
- TW #2620 Old-style context definition should only be interpreted as read
|
||||
context.
|
||||
Thanks to bongoman and Tom Dörr for reporting.
|
||||
- TW #2622 Tags and dependencies appear as orphaned UDAs.
|
||||
Thanks to Scott Mcdermott for reporting.
|
||||
- TW #2626 Waiting report lists deleted and/or completed tasks.
|
||||
Thanks to Don Harper for reporting.
|
||||
- TW #2629 New-style context definition should take precedence over old-style
|
||||
even if the new-style is an empty string.
|
||||
Thanks to Denis Kasak for reporting.
|
||||
- TW #2632 Cannot build on Cygwin
|
||||
Thanks to Michael Esemplare for contributing.
|
||||
- TW #2639 Unable to use ranges for some tasks with IDs above 1000.
|
||||
Thanks to Manuel Haussmann for reporting.
|
||||
|
||||
2.6.0 (2021-10-03) - 8174287f917a3b24c19a6601ba36fca9bdaa78c9
|
||||
|
||||
- TW #1654 "Due" parsing behaviour seems inconsistent
|
||||
Thanks to Jim B for reporting.
|
||||
- TW #1788 When deleting recurring task all tasks, including completed tasks,
|
||||
are marked as deleted
|
||||
Thanks to Alan Young for reporting.
|
||||
- TW #1804 Importing malformed annotation (without entry timestamp) causes
|
||||
segmentation fault.
|
||||
Thanks to David Badura for reporting.
|
||||
- TW #1840 Countdown (date format) is not working properly
|
||||
Thanks to Eric Hymowitz for reporting, Sebastian Uharek for
|
||||
contributing.
|
||||
- TW #1847 Allow including files relative to $PREFIX/share/
|
||||
Thanks to Georg Sauthoff for suggesting, oxalica for contributing.
|
||||
- TW #1896 Parser cannot handle empty parentheses
|
||||
- TW #1908 Cannot create task with explicit description 'start ....'
|
||||
Thanks to Matt Chun-Lum for reporting.
|
||||
- TW #1911 Support holidays longer then 1 day
|
||||
Thanks to Daniel Mowitz for contributing.
|
||||
- TW #1913 Project names with dashes and attribute names fail to parse
|
||||
Thanks to Yanick Champoux for reporting.
|
||||
- TW #1914 Non-cumulative burndown report
|
||||
Thanks to Daniel Mowitz for contributing.
|
||||
- TW #1938 Missing annotation on import if entry is duplicated
|
||||
Thanks to Florian for reporting.
|
||||
- TW #1945 Support of environment variables for configuration options
|
||||
Thanks to Sebastian Uharek for contributing.
|
||||
- TW #1953 Setting rc.verbose=new-uuid override works only if given as first argument
|
||||
Thanks to Paul Fenwick for reporting.
|
||||
- TW #1955 Adding tasks in context.
|
||||
Thanks to Jean-Francois Joly, Matt Smith for suggesting.
|
||||
- TW #1960 Fixed bug with double escaped single quotes.
|
||||
Thanks to Ben Kelly for reporting, Sebastian Uharek for
|
||||
contributing.
|
||||
- TW #2004 "shell" should not be expand to "exec tasksh"
|
||||
Thanks to Arvedui for reporting.
|
||||
- TW #2007 Compute number of current tasks correctly
|
||||
Thanks to Janik Rabe for contributing.
|
||||
- TW #2017 Support 64-bit datetime values
|
||||
Thanks to Evgeniy Vasilev for suggesting.
|
||||
- TW #2023 Layout breaks if report does not fit in the available width
|
||||
Thanks to Adrian Sieber and Kaushik Gopal for reporting.
|
||||
- TW #2060 Review timestamp is displayed as unix time, not formatted
|
||||
Thanks to JavaZauber for reporting.
|
||||
- TW #2093 wrong order under projects command
|
||||
Thanks to Beka, Max Rossmannek for reporting.
|
||||
- TW #2101 Numeric UDA values above 2,147,483,647 overflow without warning
|
||||
Thanks to Adam Monsen for reporting.
|
||||
- TW #2136 Configuration options can be overwritten for current context
|
||||
Thanks to Sebastian Uharek for contributing.
|
||||
- TW #2160 Upper-case named dates are not supported
|
||||
Thanks to Scott Kostyshak for reporting, Max Rossmannek for
|
||||
contributing.
|
||||
- TW #2163 Nagging computation should be based on the urgency before completion
|
||||
Thanks to korrat for contributing.
|
||||
- TW #2208 Support highlighting dates with scheduled tasks in calendar
|
||||
Thanks to justf0rfun for suggesting, Sebastian Uharek for
|
||||
contributing.
|
||||
- TW #2247 Configuration override rc.verbose:off not respected
|
||||
Thanks to Vignesh Prabhu for reporting.
|
||||
- TW #2257 UDA string fields can't start with certain keywords
|
||||
Thanks to Michael Russell for reporting.
|
||||
- TW #2283 Support multi-line annotations in task edit without JSON encoding
|
||||
Thanks to Jochen Sprickerhof for contributing.
|
||||
- TW #2287 Speed up fish autocompletion and more completion options.
|
||||
Thanks to Tin Lai for contributing.
|
||||
- TW #2290 Support moving the config file to XDG_CONFIG_HOME
|
||||
Thanks to Julien Rabinow for contributing.
|
||||
- TW #2292 CmdEdit: Interruption should remove lock file
|
||||
Thanks to Martin Michlmayr for reporting, indev12 for contributing.
|
||||
- TW #2333 Width determination of Unicode characters now works for up to
|
||||
Unicode 12 (from Unicode 5). Emojis are correctly displayed.
|
||||
Thanks to Adam Monsen for reporting.
|
||||
- TW #2373 Year 2038 Problem
|
||||
Thanks to Stephan Rieche for reporting.
|
||||
- TW #2386 Filtering project:someday broken
|
||||
Thanks to FRebbel for reporting.
|
||||
- TW #2388 Filtering for attribute values with spaces is broken
|
||||
Thanks to angelus2014 for reporting.
|
||||
- TW #2389 For certain terminal widths, annotations with utf-8 chars can lead
|
||||
task to hang
|
||||
Thanks to arooni for reporting.
|
||||
- TW #2390 Regression: Relative dates should be implicitly anchored around 'now'
|
||||
Thanks to Dominik Russo for reporting.
|
||||
- TW #2392 Filtering for project-names containing hyphen and zero-leading number
|
||||
Thanks to Nicola Chiapolini for reporting.
|
||||
- TW #2393 Highlight due dates for waiting tasks in the calendar
|
||||
Thanks to emkamau for reporting.
|
||||
- TW #2403 Undefined symbols (with -DBUILD_SHARED_LIBS=ON)
|
||||
Thanks to Jan Palus for contributing.
|
||||
- TW #2422 "eow" and "eonw" seem to use different week day as reference
|
||||
Thanks to bgravato for reporting.
|
||||
- TW #2428 The "edit" command should respect "bulk" configuration option
|
||||
Thanks to Evan Edmond for reporting.
|
||||
- TW #2442 Bulk completions generate nagging message even if highest urgency
|
||||
task was completed
|
||||
Thanks to Daniel Mowitz for contributing.
|
||||
- TW #2451 Command task $month doesn't behave correctly
|
||||
Thanks to Matias Laporte for reporting.
|
||||
- TW #2502 Two GCC warnings on 2.6.0.
|
||||
Thanks to Scott Kostyshak for reporting.
|
||||
- TW #2503 Warn against executing an empty execute command.
|
||||
Thanks to heinrichat for reporting.
|
||||
- TW #2514 Duration values can be mis-reported in the task info output
|
||||
Thanks to reportaman for reporting.
|
||||
- TW #2519 Named date eod should be last minute of today and not first of
|
||||
tomorrow.
|
||||
Thanks to Pablo Vizcay for reporting.
|
||||
- TW #2530 Taskwarrior 2.5.3 time based filtering regression
|
||||
Thanks to Matthias Tafelmeier for reporting.
|
||||
- TW #2532 Show number of tasks to be modified in bulk updates
|
||||
Thanks to jaker-dotcom for suggesting, Sebastian Uharek for
|
||||
contributing.
|
||||
- TW #2536 Feature: inclusive range-end attribute modifier 'by' so 'end of'
|
||||
named dates can be filtered inclusively
|
||||
Thanks to Scott Mcdermott for contributing.
|
||||
- TW #2549 Write context with complex expressions should not be allowed
|
||||
Thanks to Sebastian Fricke for reporting.
|
||||
- TW #2550 Write context skipped if description contains an identifier
|
||||
Thanks to Sebastian Fricke for reporting.
|
||||
- TW #2554 Remove the waiting state, and consider any task with wait>now to be
|
||||
waiting
|
||||
Thanks to Dustin J. Mitchell for contributing.
|
||||
- TW #2560 Add report.<name>.context configuration variable
|
||||
Thanks to Jake C for suggesting.
|
||||
- TW #2461 The legend in calendar does not respect the calendar.holidays setting
|
||||
- TW #2569 The `json.depends.array` configuration option is now ignored.
|
||||
Dependencies are always represented as an array in JSON output.
|
||||
Thanks to Dustin J. Mitchell for contributing.
|
||||
- TW #2575 Support exporting given report as JSON, including sort order
|
||||
Thanks to Dheepak Krishnamurthy for contributing.
|
||||
- TW #2580 Importing malformed JSON task crashes TW
|
||||
Thanks to bharatvaj for contributing.
|
||||
- TW #2581 Config entry with a trailing comment cannot be modified
|
||||
|
||||
2.5.3 (2021-01-05) - 2f47226f91f0b02f7617912175274d9eed85924f
|
||||
|
||||
- #2375 task hangs then dies when certain tasks are present in a report
|
||||
Thanks to Max Rossmannek, Tomáš Janoušek and Chad Phillips.
|
||||
|
||||
2.5.2 (2020-12-05) - b0c17d11639dc6e783befd89c8508f2abb9b4287
|
||||
|
||||
- TD-64 sync conflict deleted all annotations of the task
|
||||
Thanks to Markus Beppler, Konstantin Vorobyev
|
||||
- TI-91 Timewarrior does not compile on DragonFly
|
||||
Thanks to Michael Neumann
|
||||
- TW #1 URL formating
|
||||
Thanks to buhtz
|
||||
- TW #2 Update to markdown and rename DEVELOPER to DEVELOPER.md
|
||||
Thanks to Lynoure Braakman
|
||||
- TW-54/#115 Reduce output for timesheet
|
||||
Thanks to Aikido guy
|
||||
- TW-61 Extract only tasks with annotations
|
||||
Thanks to Aikido Guy
|
||||
- TW-213 Align countdown column on boundary between number and text.
|
||||
Thanks to Eric Fluger
|
||||
- TW-1572 Alternative approach to urgency inheritance
|
||||
Thanks to Jens Erat, Wim Schuermann
|
||||
- TW-1667 hooks: upon failure indicate which hook failed
|
||||
Thanks to Daniel Shahaf
|
||||
- TW-1785 Purge command to remove deleted tasks
|
||||
Thanks to Paul Beckingham
|
||||
- TW-1772 Implementation of circular dependency detection is inefficient
|
||||
Thanks to Michael Meier
|
||||
- TW-1778 Unicode strings are truncated in task description
|
||||
Thanks to Andrew, bjonnh, OKOMPer, Vladimir
|
||||
- TW-1788 Closing a reopened task does not update the end time
|
||||
Thanks to Ralph Bean
|
||||
- TW-1791 taskrc(5) manpage: spurious "pri." in rule.precedence.color
|
||||
Thanks to Sebastien Badia
|
||||
- TW-1792 The info command uses '0' to reference dependencies on non-
|
||||
pending tasks.
|
||||
- TW-1795 Calendar underline on Day padding
|
||||
Thanks to Renato Alves
|
||||
- TW-1805 project:ide is not allowed
|
||||
Thanks to Slaven ʙanovic
|
||||
- TW-1807 dateformat lacks a flag to display day of week
|
||||
Thanks to Ellington Santos
|
||||
- TW-1813 Range filter doesn't work
|
||||
Thanks to george js
|
||||
- TW-1820 Install with -DLANGUAGE=2 flag not work.
|
||||
Thanks to E. Manuel Cerr'on Angeles
|
||||
- TW-1823 Incorrect unicode text wrapping / justifying.
|
||||
Thanks to Sergey Trofimov
|
||||
- TW-1827 Extract annotations from a task
|
||||
Thanks to Ryan
|
||||
- TW-1855 "Well-known" CA certificates not properly auto-loaded
|
||||
Thanks to Flavio Poletti
|
||||
- TW-1857 Change Task::get call to the more efficient Task::has
|
||||
Thanks to Zachary Manning
|
||||
- TW‐1858 Change signature for dependencyGetBlocked
|
||||
- TW-1859 Change signature of Task::getTags
|
||||
- TW-1860 Change signature of Task::getAnnotations
|
||||
- TW-1861 Truncated description when adding annotation
|
||||
Thanks to eezewaek
|
||||
- TW-1869 segmentation fault (on unusual installation)
|
||||
Thanks to Eric Hymowitz
|
||||
- TW-1873 Specify different path to extensions/hooks directory
|
||||
Thanks to Eli
|
||||
- TW-1877 task done, task edit, task is now pending
|
||||
Thanks to Eric Hymowitz
|
||||
- TW-1878 uuids subcommand produces a space-delimited list, not comma-delimited
|
||||
Thanks to Scott Kostyshak
|
||||
- TW-1881 Missing last character(s) in Description field
|
||||
Thanks to Hubert Toullec
|
||||
- TW-1881 default.scheduled seems not to work
|
||||
Thanks to Onion
|
||||
- TW-1885 Task Sync does not send TLS SNI headers
|
||||
Thanks to Dan Callahan
|
||||
- TW-1903 grammar error -- There are 1 local changes.
|
||||
Thanks to Eric Hymowitz
|
||||
- TW-1906/#1919 sync sub-command is missing from task(1) manual page
|
||||
Thanks to rjc
|
||||
- TW-1910 unreachable statement
|
||||
Thanks to Martin Strunz
|
||||
- TW-1917/#1930 "above" does a string comparison, even when the value is numeric
|
||||
Thanks to Dirk Deimeke
|
||||
- TW-1930 Typo in help
|
||||
Thanks to Kai HTML
|
||||
- TW-1935 Separate verbosity category for rc overrides
|
||||
Thanks to Paul J. Fenwick
|
||||
- TW-1936 Tweak tests to have fuller TAP compliance
|
||||
Thanks to Paul J. Fenwick
|
||||
- TW-1938 Adjust behaviour of new-uuid and new-id verbosity levels
|
||||
Thanks to Paul J. Fenwick
|
||||
- TW-1947 "urgency.over" filter seems to not work correct
|
||||
Thanks to Marc Richter
|
||||
- TW #1964 task burndown shows extra brackets #1964
|
||||
Thanks to php-coder
|
||||
- TW #1966 Tests: Don't hardcode errno constants #1966
|
||||
Thanks to Jakub Wilk
|
||||
- TW #1973 Don't nag when no tasks are READY
|
||||
Thanks to Martin F. Krafft
|
||||
- TW #1986 [Nit] Update DEVELOPER.md after migration to Github
|
||||
Thanks to Kirill Bobyrev
|
||||
- TW #1922 Can't find export scripts
|
||||
Thanks to tom-doerr
|
||||
- TW #2020 reserved.lines is not affecting the burndown height
|
||||
Thanks to ad₋si
|
||||
- TW #2047 Exiting the task editor with an error code doesn't remove the lock file
|
||||
Thanks to coaxial
|
||||
- TW #2051 doc/man: ready tasks sorted with started tasks 1st
|
||||
Thanks to Simon Désaulniers
|
||||
- TW #2053 Do not set CMP0037 on CMake 3.11.0 and above
|
||||
Thanks to Janik Rabe
|
||||
- #2077 Change taskrc override priority, respect verbose override, refactor.
|
||||
Thanks to taiyu-len
|
||||
- #2108 CmdHistory: repeat unit if a larger unit changes
|
||||
Thanks to Janik Rabe
|
||||
- #2132 JSON encode/decode string UDAs
|
||||
Thanks to Chad Phillips
|
||||
- #2176 How to get the full list of tags ?
|
||||
Thanks to Adrien Lemaire
|
||||
- #2091 duration of task is set to a wrong and extremely big value
|
||||
Thanks to Wray Zheng
|
||||
- Added 'juhannus' as a synonym for 'midsommarafton'
|
||||
Thanks to Lynoure Braakman
|
||||
- Deprecated the 'DUETODAY' virtual tag, which is a synonym for the 'TODAY'
|
||||
virtual tag.
|
||||
- Removed deprecated 'alias._query' setting.
|
||||
- Fixed ambiguity in the esp-ESP localization
|
||||
Thanks to Fidel Mato
|
||||
- Deprecated the 'new-uuid' verbosity option, since its functionality can be
|
||||
removed by merging with 'new-id'.
|
||||
- Correct a false-positive warning when a due date is removed and a wait is
|
||||
added.
|
||||
- Added 'QUARTER' virtual tag.
|
||||
- Fixed unquoted glob in bash completion script
|
||||
Thanks to Ran Benita
|
||||
- Deprecated use of alternate Boolean configuration settings. Use values "0" for
|
||||
off, and "1" for on. Avoid used of "on", "off", "true", "t", "false", "f",
|
||||
"yes", "y", "no", "n".
|
||||
- Fixed test harness for Python 3.x.
|
||||
Thanks to jrabbit
|
||||
- Improved certificate validation diagnostics
|
||||
Thanks to Jelle van der Waa
|
||||
- Improved portability for SunOS-like OSes.
|
||||
Thanks to Antonio Huete Jimenez
|
||||
- Updated the 'timesheet' command with a more compact report that accepts a
|
||||
filter, and has a default filter showing the last four weeks of completed and
|
||||
started tasks.
|
||||
- Added 'history.weekly', 'history.daily', 'ghistory.weekly', 'ghistory.daily'
|
||||
report variations, with code refactoring.
|
||||
Thanks to Lukas Barth
|
||||
- New DOM references: annotations.count, tw.syncneeded, tw.program, tw.args,
|
||||
tw.width, tw.height, tw.version.
|
||||
- The message telling you to sync now indicates how many local changes will be
|
||||
synced.
|
||||
- Removed compile-time language settings and I18N.
|
||||
- Workaround for alias grep=rg in fish
|
||||
Thanks to Lionel Miller.
|
||||
- Do not set CMP0037 on CMake 3.11.0 and above
|
||||
Thanks to Janik Rabe
|
||||
|
||||
2.5.1 (2016-02-24) 8b4ae3b54b44dfbd00b96cdd6dceb8dfe7cc1ea0
|
||||
|
||||
- TD-104 Unrecognized taskwarrior file format
|
||||
@@ -511,6 +108,8 @@
|
||||
- The 'run_all' script was not correctly using exit code 0 when all tests pass
|
||||
(thanks to Gordon Ball).
|
||||
|
||||
------ current release ---------------------------
|
||||
|
||||
2.5.0 (2015-10-21) dd5968a61b1fab258b38879cfdbb7d67f1bcd550
|
||||
|
||||
- TW-20 Task edit loses annotation precision, causing journal updating code
|
||||
@@ -569,7 +168,7 @@
|
||||
- TW-1488 You have more urgent tasks (thanks to Stefan Betz, Denis Kasak).
|
||||
- TW-1496 Translation manuals are outdated/miss information (thanks to Jens
|
||||
Erat).
|
||||
- TW-1499 Invalid due date produces jump to beginning of the unix epoch (thanks
|
||||
- TW-1499 Invalid due date produces jump to beggining of the unix epoch (thanks
|
||||
to Tomas Babej).
|
||||
- TW-1511 Project titles not properly parsed if they contain hyphens (thanks to
|
||||
Leon Feng, Blake Sweeney, Dylan Mikus).
|
||||
@@ -623,7 +222,7 @@
|
||||
John Reeder).
|
||||
- TW-1630 "Due" parsing behavior seems inconsistent (thanks to Jim B).
|
||||
- TW-1632 Japanese translation for Taskwarrior(150713) (thanks to ribbon).
|
||||
- TW-1634 due.not:<date> excludes only tasks scheduled at midnight (thanks to
|
||||
- TW-1634 due.not:<date> excludes only tasks scheduled at mitnight (thanks to
|
||||
Tomas Babej).
|
||||
- TW-1635 Running "task anystringatall" does not filter anything (thanks to
|
||||
Tomas Babej).
|
||||
@@ -724,6 +323,8 @@
|
||||
added.
|
||||
- When GC is turned off, disable the query shortcuts, which no longer apply.
|
||||
|
||||
------ old releases ------------------------------
|
||||
|
||||
2.4.4 (2015-05-10) df49aaba126484b668c41d3ff9301f8d8ec49987
|
||||
|
||||
- TW-69 wait dates relative to due date (thanks to John Florian).
|
||||
@@ -834,7 +435,7 @@
|
||||
Babej).
|
||||
- TW-1505 completely ignore mis-named hook scripts (thanks to Tomas Babej,
|
||||
David Patrick).
|
||||
- TW-1509 Hooks modifications performed on sync not syncing back (thanks to
|
||||
- TW-1509 Hooks modifications performed on sync not sycning back (thanks to
|
||||
Tomas Babej).
|
||||
- TW-1510 Task can save empty value in the data backlog (thanks to Tomas Babej).
|
||||
- TW-1517 Hook performance should be measured individually for each hook (thanks
|
||||
@@ -942,7 +543,7 @@
|
||||
"Description ( Information)".
|
||||
- TW-248 Substitute text doesn't work with forward slash (thanks to Jostein
|
||||
Berntsen).
|
||||
- TW-249 Report filters don't allow parentheses (thanks to Philipp Woelfel).
|
||||
- TW-249 Report filters don't allow parantheses (thanks to Philipp Woelfel).
|
||||
- TW-250 Opening parenthesis in description gets padded in task 2.0.0 bet 2
|
||||
(thanks to Michelle Crane).
|
||||
- TW-251 extra spaces added after ( and / (thanks to Andy Spiegl).
|
||||
@@ -1217,7 +818,7 @@ Bugs
|
||||
.taskrc file (thanks to Haitham Gad).
|
||||
- #1247 Tests now create a local dir, rather than use the insecure /tmp dir
|
||||
(thanks to Jakub Wilk).
|
||||
- #1248 Merge tests no longer connect to taskwarrior.org (thank to Jakub Wilk).
|
||||
- #1248 Merge tests no longer connect to takwarrior.org (thank to Jakub Wilk).
|
||||
- #1249 Build system now recognizes GNU/Hurd and GNU/kFreeBSD (thanks to Jakub
|
||||
Wilk).
|
||||
- #1263 The 'waiting' report properly lists only pending tasks with a wait date
|
||||
@@ -1283,7 +884,7 @@ Features
|
||||
- Stop consider new tasks after quitting a bulk change.
|
||||
- Removed deprecated 'fg:' and 'bg:' attributes.
|
||||
- The 'diagnostics' command now reports libuuid details.
|
||||
- New characters for parsing and formatting dates ('n', 's' and 'v').
|
||||
- New characters for parsing and formating dates ('n', 's' and 'v').
|
||||
- Virtual tags (BLOCKED, UNBLOCKED, BLOCKING, DUE, DUETODAY, OVERDUE, TODAY,
|
||||
ACTIVE, SCHEDULED, CHILD, UNTIL, WAITING and ANNOTATED).
|
||||
- New 'modified' attribute, which contains the most recent modification date,
|
||||
@@ -1545,7 +1146,7 @@ Bugs
|
||||
- All holiday files have been renamed to include a locale, rather than just a
|
||||
country code. For example: holidays.en-US.rc.
|
||||
- Now ships with an add-on script, update-holidays.pl, which contacts
|
||||
https://holidata.net, and brings the installed holiday files up to date.
|
||||
http://holidata.net, and brings the installed holiday files up to date.
|
||||
- Extension system now controlled by the 'extensions' configuration variable.
|
||||
- HTML export in the form of an external scripts export-html.pl.
|
||||
- Two additional solarized theme files, solarized-dark-256.theme and
|
||||
@@ -1749,7 +1350,7 @@ Bugs
|
||||
Michelle Crane).
|
||||
- Fixed bug #823, so that recurring task change propagations are now always
|
||||
confirmed (thanks to Miguel de Val Borro).
|
||||
- Fixed bug #824, which caused problems when completing recurring tasks (thanks
|
||||
- Fixed bug #824, which caused probles when completing recurring tasks (thanks
|
||||
to Matt Kraai).
|
||||
- Fixed bug #831, which prevented some date fields from being properly parsed.
|
||||
- Fixed bug #835, which prevented hierarchical projects from being recognized.
|
||||
@@ -1828,7 +1429,7 @@ Bugs
|
||||
(thanks to Michal Vyskocil).
|
||||
- Fixed problem where update-holidays.pl did not properly handle UTF8 JSON
|
||||
data.
|
||||
- Fixed problem where update-holidays.pl did not use the YYYYMMDD date format.
|
||||
- Fixed problem where update-holidays.pl did not use the YYYYMMDD date foramt.
|
||||
- Fixed problem where urgency was not properly calculated for waiting tasks.
|
||||
- Fixed problem where 'project' was not supported as a verbosity token (thanks
|
||||
to Adam Gibbins).
|
||||
@@ -2342,7 +1943,7 @@ Bugs
|
||||
- Supports 'rc.name:value' for a command line override to .taskrc data
|
||||
(thanks to Federico Hernandez).
|
||||
- Removed obsolete DEVELOPERS file. The online support forums at
|
||||
https://taskwarrior.org will provide better information.
|
||||
http://taskwarrior.org will provide better information.
|
||||
- Fixed bug that kept some deleted tasks showing up on the calendar report
|
||||
(thanks to Federico Hernandez).
|
||||
- Now asks the user to confirm large changes if configuration variable
|
||||
|
||||
168
DEVELOPER
Normal file
168
DEVELOPER
Normal file
@@ -0,0 +1,168 @@
|
||||
How to Build Taskwarrior
|
||||
|
||||
Satisfy the Requirements:
|
||||
- gcc 4.7 or later, clang 3.3 or later or equivalent. This is because C++11
|
||||
is now used.
|
||||
- libuuid
|
||||
- gnutls (optional)
|
||||
- python 2.7 or 3 (optional, for running the test suite)
|
||||
|
||||
Obtain and build code:
|
||||
$ git clone https://git.tasktools.org/scm/tm/task.git task.git
|
||||
$ cd task.git
|
||||
$ git checkout 2.5.0 # Latest dev branch
|
||||
$ cmake -DCMAKE_BUILD_TYPE=debug . # debug or release. Default: neither.
|
||||
$ make VERBOSE=1 # Shows details
|
||||
|
||||
Running Test Suite:
|
||||
$ cd tests
|
||||
$ make VERBOSE=1 # Shows details
|
||||
$ ./run_all # Runs all tests silently > all.log
|
||||
$ ./problems # Enumerate test failures in all.log
|
||||
|
||||
Note that any development should be performed using a git clone, and the
|
||||
current development branch. The source tarballs do not reflect HEAD, and do
|
||||
not contain the test suite.
|
||||
|
||||
If you send a patch (support@taskwarrior.org), make sure that patch is made
|
||||
against git HEAD on the development branch. We cannot apply patches made
|
||||
against the tarball source, or master.
|
||||
|
||||
General Statement
|
||||
This file is intended to convey the current efforts, priorities and needs of
|
||||
the codebase. It is for anyone looking for a way to start contributing.
|
||||
While this is biased towards developers, anyone can contribute, and everyone
|
||||
is encouraged to do so. Here are many ways to contribute that may not be
|
||||
immediately obvious to you:
|
||||
|
||||
- Use Taskwarrior, become familiar with it, and make suggestions. There are
|
||||
always ongoing discussions about new features and changes to existing
|
||||
features.
|
||||
|
||||
- Join us in the #taskwarrior IRC channel on freenode.net. Many great ideas,
|
||||
suggestions, testing and discussions have taken place there. It is also
|
||||
the quickest way to get help, or confirm a bug.
|
||||
|
||||
- Join https://answers.tasktools.org and help us by asking, answering and
|
||||
voting on questions and answers, directly helping those who ask, and
|
||||
helping future users who search for existing answers.
|
||||
|
||||
- Review documentation: there are man pages, online articles, tutorials and
|
||||
so on, and these may contain errors, or they may not convey ideas in the
|
||||
best way. Perhaps you can help improve it. Contact us - documentation is
|
||||
a separate effort from the codebase, and includes all web sites, and all
|
||||
are available using git.
|
||||
|
||||
- Take a look at the bug database, and help triage the bug list. This is a
|
||||
review process that involves confirming bugs, providing additional data,
|
||||
information or analysis. Bug triage is very useful and much needed. You
|
||||
could check to see that an old bug is still relevant - sometimes they are
|
||||
not.
|
||||
|
||||
- Review the source code, and point out inefficiencies, problems, unreadable
|
||||
functions, bugs and assumptions.
|
||||
|
||||
- Fix a bug. For this you'll need C++ and Git skills, but this is one of
|
||||
the largest ways you can contribute. We welcome all bug fixes, provided
|
||||
the work is done well and doesn't create other problems or introduce new
|
||||
dependencies. We recommend talking to us before starting. Seriously.
|
||||
|
||||
- Add unit tests. Unit tests are possibly the most useful contributions of
|
||||
all, because they not only improve the quality of the code, but prevent
|
||||
future regressions, therefore maintaining quality of subsequent releases.
|
||||
Plus, broken tests are a great motivator for us to fix the causal defect.
|
||||
You'll need Python skills.
|
||||
|
||||
- Add a feature. Well, let's be very clear about this: adding a feature is
|
||||
not usually well-received, and if you add a feature and send a patch, it
|
||||
will most likely be rejected. The reason for this is that there are many
|
||||
efforts under way, in various code branches. There is a very good chance
|
||||
that the feature you add is either already in progress, or being done in a
|
||||
way that is more fitting when considering other work in progress. So if
|
||||
you want to add a feature, please don't. Start by talking to us, and find
|
||||
out what is currently under way or planned. You might find that we've
|
||||
already rejected such a feature for some very good reasons. So please
|
||||
check first, so we don't duplicate effort or waste anyone's time.
|
||||
|
||||
- Donate some server time to the testing effort, by participating in the
|
||||
continuous integration of all changes, with our Flod software. See this
|
||||
page for an example: http://central.tasktools.org. Ask us about running a
|
||||
Flod satellite, we're always looking for exotic platforms to test on.
|
||||
|
||||
- Spread the word. Help others become more effective at managing tasks.
|
||||
|
||||
- Encouragement. Tell us what works for you, and what doesn't. Tell us about
|
||||
your methodology for managing tasks. It's all useful information.
|
||||
|
||||
- Request a feature. This not only tells us that you think something is
|
||||
missing from the software, but gives us insights into how you use it.
|
||||
Plus, you might get your feature implemented.
|
||||
|
||||
Next are some specific areas that need attention.
|
||||
|
||||
New Code Needs
|
||||
This is code that needs to be written.
|
||||
|
||||
- Need an external script that can locate and correct duplicate UUIDs in the
|
||||
data file, as found by 'task diag'. This should check to see if there is
|
||||
a suitable UUID generator installed. This should also be careful to
|
||||
properly handle recurring tasks.
|
||||
- Take a look at:
|
||||
|
||||
https://bug.tasktools.org/browse/EX
|
||||
|
||||
This 'extension' release is a collection of all the requested features that
|
||||
lie outside of the core product, and will be implemented as external scripts
|
||||
by anyone who wishes to participate.
|
||||
|
||||
Unit Tests Needed
|
||||
There are always more unit tests needed. More specifically, better unit tests
|
||||
are always needed. The convention is that there are four types of unit test:
|
||||
|
||||
1. High level tests that exercise large features, or combinations of commands.
|
||||
For example, dependencies.t runs through a long list of commands that test
|
||||
dependencies, but do so by using 'add', 'modify', 'done' and 'delete'.
|
||||
2. Regression tests that ensure certain bugs are fixed and stay fixed. These
|
||||
tests are named bug.NNN.t where NNN refers to the bug number. While it is
|
||||
not worth creating tests for small fixes like typos, it is for changes to
|
||||
the logic.
|
||||
3. Small feature tests. When small features are added, we would like small,
|
||||
low-level feature tests named feature.t, with a descriptive name and
|
||||
focused tests.
|
||||
4. Code tests. These are tests written in C++ that exercise C++ objects, or
|
||||
function calls. These are the lowest level tests. It is important that
|
||||
these kind of tests be extensive and thorough, because the software depends
|
||||
on this code the most.
|
||||
|
||||
The tests are written in Python, Bash and C++, and all use TAP.
|
||||
|
||||
Tests needed:
|
||||
|
||||
- Take a look at the bug database (https://bug.tasktools.org) and notice that
|
||||
many issues, open and closed, have the "needsTest" label. These are things
|
||||
that we would like to see in the test suite, as regression tests.
|
||||
- Test regex support.
|
||||
- Need unit tests for each bug in the issue list that is marked with the
|
||||
'needsTest' label.
|
||||
|
||||
Note that all new unit tests should follow the test/template.t standard.
|
||||
|
||||
Work in Progress
|
||||
|
||||
Things that are currently in flux, which is another way of saying leave it
|
||||
alone while it is being worked on.
|
||||
|
||||
- All columns/Col*::validate methods.
|
||||
- New columns/Col*::modify methods.
|
||||
|
||||
Current Codebase Condition
|
||||
|
||||
'master' branch:
|
||||
- 2.4.4 Current release, locked.
|
||||
|
||||
'2.5.0' branch:
|
||||
- Current development branch no plans yet.
|
||||
|
||||
---
|
||||
|
||||
2015-09-07 Updated for 2.5.0
|
||||
@@ -1 +0,0 @@
|
||||
See [Developing Taskwarrior](./doc/devel/contrib/README.md).
|
||||
210
EXPOSITION
Normal file
210
EXPOSITION
Normal file
@@ -0,0 +1,210 @@
|
||||
Startup
|
||||
On startup, main creates a global Context object, then calls the
|
||||
Context::initialize and Context::run methods.
|
||||
|
||||
Context is a large object that holds all task information, both in terms of
|
||||
the task data, and intermediate run-time data. Having one global Context
|
||||
object means we don't have 50 global variables. Context is therefore just a
|
||||
big global bucket of data.
|
||||
|
||||
Context::initialize sets up all the data and processes the command line. The
|
||||
initialization process is a big chicken-and-egg problem, because the command
|
||||
line depends on configuration (aliases) and the command line can force a
|
||||
reload of configuration (rc:foo). This is solved by look-ahead: the command
|
||||
line is scanned for 'rc:xxx' and 'rc.data.location:xxx' arguments, then later
|
||||
for overrides.
|
||||
|
||||
The Context::run method handles all the debug output and exceptions. Its
|
||||
main purpose is to set up exception handling and call Context::dispatch.
|
||||
|
||||
|
||||
Command Line Parsing
|
||||
Command line parsing is difficult because of all the ambiguity. The solution
|
||||
is to make multiple passes over the command line. For example, the command
|
||||
determines whether subsequent arguments are interpreted as part of a filter or
|
||||
set of modifications.
|
||||
|
||||
The CLI2 object is fed command line arguments, then through a succession of
|
||||
calls builds and annotates a parse tree. To help with this, the Lexer is
|
||||
used to break up strings into tokens.
|
||||
|
||||
|
||||
Dispatch
|
||||
Dispatch is simple: once the command line is parsed, the command is used to
|
||||
look up a command object, then a call is made to the Command::execute method.
|
||||
|
||||
Context stores an associative map of command object pointers indexed by a
|
||||
string. This means the 'done' string is an index to the CmdDone object that
|
||||
implements the functionality.
|
||||
|
||||
|
||||
Command Objects
|
||||
Every task command is implemented by a command object. The command object
|
||||
provides metadata, usage and one-line help in addition to the ::execute method
|
||||
that implements the command. The Command base class implements common
|
||||
functionality.
|
||||
|
||||
|
||||
Column Objects
|
||||
There is a 1:1 correspondence between attributes stored in the data files and
|
||||
the columns that may be reported. These are represented by column objects,
|
||||
which are responsible for validating input, measuring space needed according
|
||||
to various formats, and for rendering data for reports. There is a
|
||||
ColDescription object that inherits from a Column base class.
|
||||
|
||||
|
||||
TDB2
|
||||
The TDB2 object is a layered, transactioned I/O manager. Its purpose is to
|
||||
isolate code from file I/O, locking and parsing details. It is also
|
||||
responsible for minimizing reads, writes and parsing of data files.
|
||||
|
||||
All input is assumed to be UTF8. All stored data is UTF8.
|
||||
|
||||
|
||||
GC
|
||||
Garbage Collection is the process that moves tasks between the pending.data
|
||||
and completed.data files. It is also responsible for waking tasks out of the
|
||||
wait state.
|
||||
|
||||
Every command that displays task IDs will cause a GC to be run first, which
|
||||
minimizes the number of changes necessary to the task IDs. This means that
|
||||
when a report shows task IDs, those IDs will remain valid while subsequent
|
||||
write commands are issued. The next report run may show different IDs.
|
||||
|
||||
Minimizing the size of pending.data is important for performance, because it
|
||||
is the file that is accessed most.
|
||||
|
||||
|
||||
Files
|
||||
The data files used are all kept in the rc.data.location directory, which
|
||||
defaults to ~/.task. The files are:
|
||||
|
||||
pending.data
|
||||
completed.data
|
||||
undo.data
|
||||
backlog.data
|
||||
|
||||
The pending.data file aspires to contain only pending, waiting and recurring
|
||||
tasks, but this is only correct after a GC, and before any tasks are modified.
|
||||
This file tends to be relatively stable in size, reflecting the length of the
|
||||
task list.
|
||||
|
||||
The completed.data file accumulates data over time, and grows unbounded.
|
||||
|
||||
The undo.data file accumulates changes over time, and grows unbounded. It
|
||||
provides all the necessary metadata to support the 'undo' command.
|
||||
|
||||
The backlog.data file contains an accumulated set of changes that have not
|
||||
been transmitted to Taskserver. It grows unbounded between 'sync' commands.
|
||||
|
||||
|
||||
Filter
|
||||
A filter is simply a set of command line arguments, but is only a subset of
|
||||
the complete command line. These arguments are extracted from the parse tree
|
||||
according to whether the command found is a read or write command.
|
||||
|
||||
There is a Filter::subset method for applying a filter to a set of tasks,
|
||||
yielding a result set. It does this by creating an expression from the
|
||||
parse tree using the Eval object, then evaluating the expression for each task,
|
||||
such that the result set contains only tasks for which the expression evaluates
|
||||
to Boolean true.
|
||||
|
||||
|
||||
Eval & Variant
|
||||
The Eval class evaluates expressions, provided in string form, using the
|
||||
Variant class to represent data elements. Variant implements all operators
|
||||
for all Variant types.
|
||||
|
||||
|
||||
Sorting
|
||||
Sorting is performed on a set of tasks. More specifically, the list that is
|
||||
sorted is a set of numeric indexes to tasks that are stored in a separate
|
||||
list. This minimizes the amount of data copying involved to just integers
|
||||
rather than Task objects, but at the expense of one level of indirection.
|
||||
Memory fragmentation is a bigger problem than the performance of vector
|
||||
indexing.
|
||||
|
||||
The actual sorting is performed by std::stable_sort, but the compare function
|
||||
is custom.
|
||||
|
||||
|
||||
Render
|
||||
There are two rendering objects, ViewTask and ViewText. These both have the
|
||||
same tabular grid rendering capabilities. ViewText maintains a 2D vector of
|
||||
strings to contain the data to be rendered, so it is used for things like the
|
||||
help command output. ViewTask does not copy data, but assumes all data is
|
||||
stored externally in a vector of Tasks, which minimizes data copying.
|
||||
|
||||
ViewTask contains projection data in the form of a set of Column objects that
|
||||
represent the X axis. The Y axis is represented by a vector of tasks.
|
||||
|
||||
The rendering process is complex. It involves dynamically setting column
|
||||
widths based on (1) available terminal width, (2) the columns to be included
|
||||
in the output, (3) ability to wrap text for certain columns and (4) the size
|
||||
of the data to be rendered, which involves added complexity when UTF8 is used.
|
||||
|
||||
The Column objects determine minimum width for a column and the maximum width
|
||||
which then allows ViewT* to make choices.
|
||||
|
||||
|
||||
Test Suite
|
||||
A strong and diverse test suite is critical to the successful release of any
|
||||
software. With the complex command set and its myriad permutations, a test
|
||||
suite is the only way to ensure quality levels, and guarantee that big changes
|
||||
are robust.
|
||||
|
||||
It is intended that the test suite continues growing, mostly feature tests.
|
||||
The test are mostly written in Python. Some tests are written in C++ and all
|
||||
tests generate TAP output.
|
||||
|
||||
There are currently about 8,000 unit tests, that take only a few seconds to
|
||||
run on a multi-core machine.
|
||||
|
||||
Taskwarrior uses flod software to automate continuous integration across many
|
||||
platforms. Code changes are automatically detected, propagated, built and
|
||||
tested on a variety of participating platforms. Grid testing results are here:
|
||||
|
||||
http://central.tasktools.org/
|
||||
|
||||
When making code changes, it is important that the test suite be run to verify
|
||||
that functionality was not broken.
|
||||
|
||||
|
||||
Debugging
|
||||
The 'rc.debug=on' override provides the following additional information which
|
||||
is useful during debugging:
|
||||
|
||||
- Timing of various components (used to generate the data for the charts at
|
||||
http://tasktools.org/performance).
|
||||
- Data load times.
|
||||
- Terminal size, color capabilities.
|
||||
- Command line parse tree.
|
||||
- TDB2 layer and I/O information.
|
||||
|
||||
Additionally, there are other settings (see 'man taskrc' for full details) that
|
||||
may also be helpful: 'rc.hooks=on|off', 'rc.debug.parser=0|1|2|3',
|
||||
'rc.debug.hooks=0|1|2', 'rc.debug.tls=0|1|2|3...'.
|
||||
|
||||
|
||||
Patches
|
||||
Patches are encouraged and welcomed. Either attach them to the appropriate
|
||||
Jira issue, or send them to support@taskwarrior.org. A good patch:
|
||||
|
||||
- Maintains the MIT license, and does not contain code lifted from other
|
||||
sources. You will have written 100% of the code in the patch, otherwise
|
||||
we cannot maintain the license.
|
||||
- Precisely addresses one issue only.
|
||||
- Doesn't break unit tests.
|
||||
- Doesn't introduce dependencies.
|
||||
- Is accompanied by unit tests, where appropriate, written in Python.
|
||||
- Is accompanied by documentation changes, where appropriate.
|
||||
- Conforms to the prevailing coding standards - in other words, it should
|
||||
fit right in with the existing code.
|
||||
|
||||
A patch may be rejected for violating any of the above rules, and more.
|
||||
Bad patches may be accepted and modified depending on work load and mood. It
|
||||
is possible that a patch may be rejected because it conflicts in some way with
|
||||
plans or upcoming changes. Check with us first, before sinking time and effort
|
||||
into a patch.
|
||||
|
||||
---
|
||||
66
INSTALL
66
INSTALL
@@ -8,18 +8,19 @@ 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 need the CMake build system installed in order to build Taskwarrior
|
||||
from source. More information on cmake can be obtained at http://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 a C++ compiler that supports full C++11, which includes:
|
||||
- gcc 4.7 (released 2012-03-23)
|
||||
- clang 3.3 (released 2013-01-07)
|
||||
|
||||
You will need the following libraries:
|
||||
- libuuid (not needed for OSX)
|
||||
- gnutls (can be optional - see '"sync" command' below)
|
||||
|
||||
|
||||
Basic Installation
|
||||
@@ -88,6 +89,40 @@ get absolute installation directories:
|
||||
CMAKE_INSTALL_PREFIX/TASK_MAN5DIR /usr/local/share/man/man5
|
||||
|
||||
|
||||
"sync" command
|
||||
--------------
|
||||
|
||||
By default, GnuTLS support is required, which enables the "sync" command.
|
||||
For Debian based distributions, installing "libgnutls-dev" is sufficient.
|
||||
|
||||
In order to build Taskwarrior without "sync" support, call cmake with the
|
||||
"-DENABLE_SYNC=OFF" flag:
|
||||
|
||||
$ cmake . -DENABLE_SYNC=OFF
|
||||
|
||||
and proceed as described in "Basic Installation".
|
||||
|
||||
|
||||
Localizations
|
||||
-------------
|
||||
|
||||
To make use of a translation, specify a language number, as found in cmake.h:
|
||||
|
||||
$ cmake -DLANGUAGE=2 .
|
||||
|
||||
Currently the defined languages are:
|
||||
|
||||
eng_USA 1
|
||||
esp_ESP 2
|
||||
deu_DEU 3
|
||||
fra_FRA 4
|
||||
ita_ITA 5
|
||||
por_PRT 6
|
||||
epo_RUS 7
|
||||
pol_POL 8
|
||||
jpn-JPN 9
|
||||
|
||||
|
||||
Uninstallation
|
||||
--------------
|
||||
|
||||
@@ -126,10 +161,10 @@ Darwin, 32bit
|
||||
cmake -DCMAKE_C_FLAGS=-m32 -DCMAKE_CXX_FLAGS=-m32 -DCMAKE_EXE_LINKER_FLAGS=-m32 .
|
||||
|
||||
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
|
||||
http://taskwarrior.org/issues/817
|
||||
http://stackoverflow.com/questions/3261909/build-32bit-on-64-bit-linux-using-a-configure-script
|
||||
http://stackoverflow.com/questions/2617508/cmake-gcc-cuda-and-m32-wtf
|
||||
http://stackoverflow.com/questions/6077414/cmake-how-to-set-the-ldflags-in-cmakelists-txt
|
||||
|
||||
|
||||
OpenBSD
|
||||
@@ -141,16 +176,8 @@ OpenBSD
|
||||
|
||||
and build normally.
|
||||
|
||||
See: https://github.com/GothenburgBitFactory/taskwarrior/issues/1605
|
||||
See: https://bug.tasktools.org/browse/TW-1579
|
||||
|
||||
WASM
|
||||
Using the Emscripten compiler, you can achieve it like this:
|
||||
|
||||
cmake -DCMAKE_CXX_COMPILER=emcc -DCMAKE_BUILD_TYPE=release -DENABLE_WASM=ON \
|
||||
-DCMAKE_EXE_LINKER_FLAGS="-m32 -s NO_DYNAMIC_EXECUTION=1 -s WASM=1 -s NO_EXIT_RUNTIME=1 -s INVOKE_RUN=0" \
|
||||
-DCMAKE_CXX_FLAGS_RELEASE="-O2 -m32"
|
||||
|
||||
This will produce an optimized WASM with a main() that is callable multiple times.
|
||||
|
||||
Troubleshooting
|
||||
---------------
|
||||
@@ -165,7 +192,8 @@ CMake with no reported problems, and the build will fail later. This is
|
||||
almost always because CMake is mistaken about some assumption.
|
||||
|
||||
If a build does not succeed, please send the contents of the 'CMakeCache.txt'
|
||||
and 'CMakeFiles/CMakeOutput.log' files to support@gothenburgbitfactory.org.
|
||||
and 'CMakeFiles/CMakeOutput.log' files to support@taskwarrior.org, or post a
|
||||
message in the support forums at taskwarrior.org along with the information.
|
||||
|
||||
If CMake runs but Taskwarrior does not build, please send the contents of the
|
||||
above files as well as a transcript from the build, which is not written to a
|
||||
|
||||
7
LICENSE
7
LICENSE
@@ -1,8 +1,6 @@
|
||||
The MIT License
|
||||
Taskwarrior - a command line task list manager.
|
||||
|
||||
https://www.opensource.org/licenses/mit-license.php
|
||||
|
||||
Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
|
||||
Copyright 2006 - 2016, Paul Beckingham, Federico Hernandez.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -22,3 +20,4 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
|
||||
http://www.opensource.org/licenses/mit-license.php
|
||||
|
||||
61
NEWS
Normal file
61
NEWS
Normal file
@@ -0,0 +1,61 @@
|
||||
|
||||
New Features in Taskwarrior 2.5.1
|
||||
|
||||
- As a bug-fix, code cleanup and performance release, new features are
|
||||
limited to only small tweaks.
|
||||
- The 'help' command now takes a 'usage' argument, which displays only the
|
||||
command usage.
|
||||
|
||||
New Commands in Taskwarrior 2.5.1
|
||||
|
||||
- None.
|
||||
|
||||
New Configuration Options in Taskwarrior 2.5.1
|
||||
|
||||
- New 'relative' column format for 'date' type columns does what 'remaining'
|
||||
and 'countdown' do, but in one format.
|
||||
|
||||
Newly Deprecated Features in Taskwarrior 2.5.1
|
||||
|
||||
-
|
||||
|
||||
Removed Features in 2.5.1
|
||||
|
||||
- There is no longer a 16-color default configuration for some platforms,
|
||||
making all platforms 256-color.
|
||||
- The configuration setting 'burndown.bias' is no longer used.
|
||||
- The algorithm used to estimate completion on the 'burndown' reports has
|
||||
been replaced by something less icky. Estimates are now based on the net
|
||||
completion rate after the peak number of pending tasks.
|
||||
- The unused 'dom' and 'shell.prompt' configuration settings were removed.
|
||||
|
||||
Known Issues
|
||||
|
||||
- https://bug.tasktools.org/
|
||||
|
||||
Taskwarrior has been built and tested on the following configurations:
|
||||
|
||||
* OS X
|
||||
* Fedora
|
||||
* Ubuntu
|
||||
* Debian
|
||||
* Arch
|
||||
* FreeBSD
|
||||
* Cygwin
|
||||
|
||||
---
|
||||
|
||||
While Taskwarrior has undergone testing, bugs are sure to remain. If you
|
||||
encounter a bug, please enter a new issue at:
|
||||
|
||||
https://bug.tasktools.org
|
||||
|
||||
Or you can also report the issue in the forums at:
|
||||
|
||||
https://answers.tasktools.org
|
||||
|
||||
Or just send a message to:
|
||||
|
||||
support@taskwarrior.org
|
||||
|
||||
Thank you.
|
||||
93
README.md
93
README.md
@@ -1,80 +1,47 @@
|
||||
<div align="center">
|
||||
<img src="https://avatars.githubusercontent.com/u/36100920?s=200&u=24da05914c20c4ccfe8485310f7b83049407fa9a&v=4"></br>
|
||||
# Disclaimer during ongoing development
|
||||
|
||||
[](https://github.com/GothenburgBitFactory/taskwarrior/actions)
|
||||
[](https://github.com/GothenburgBitFactory/taskwarrior/releases/latest)
|
||||
[](https://github.com/GothenburgBitFactory/taskwarrior/releases/latest)
|
||||
[](https://github.com/sponsors/GothenburgBitFactory/)
|
||||
</br>
|
||||
</div>
|
||||
We want to discourage you from using the development version of Taskwarrior.
|
||||
|
||||
## Taskwarrior
|
||||

|
||||

|
||||

|
||||
The development branch is a work in progress and may not pass all quality tests,
|
||||
therefore it may harm your data. We do not guarantee proper or even adequate
|
||||
functionality, performance or timely fixes.
|
||||
|
||||
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/).
|
||||
We welcome bug reports from beta- and release-level software, but generally not
|
||||
development versions. If you are undaunted by this, please:
|
||||
|
||||
## Install
|
||||
[](https://archlinux.org/packages/extra/x86_64/task/)
|
||||
[](https://packages.debian.org/search?keywords=task&searchon=names&suite=all§ion=all)
|
||||
[](https://bodhi.fedoraproject.org/updates/?packages=task)
|
||||
[](https://formulae.brew.sh/formula/task#default)
|
||||
[](https://packages.ubuntu.com/search?keywords=task&searchon=names&suite=hirsute§ion=all)
|
||||
- Make proper backups.
|
||||
- Expect broken and missing functionality.
|
||||
- Be aware that using the development branch involves risks.
|
||||
|
||||
Taskwarrior is packaged on a wide range of [Linux/Unix systems, Mac OS and
|
||||
Windows](https://taskwarrior.org/download/). Check out the latest available
|
||||
packages in repositories of your OS distribution of choice [on
|
||||
Repology](https://repology.org/project/taskwarrior/versions).
|
||||
---
|
||||
|
||||
Alternatively, you can [build Taskwarrior from source](doc/devel/contrib).
|
||||
Thank you for taking a look at Taskwarrior!
|
||||
|
||||
## Documentation
|
||||
Taskwarrior is a GTD, todo list, task management, command line utility with a
|
||||
multitude of features. It is a portable, well supported and very active Open
|
||||
Source project. Taskwarrior has binary distributions, online documentation,
|
||||
demonstration movies, and you'll find all the details at:
|
||||
|
||||
The [online documentation](https://taskwarrior.org/docs), downloads, news and
|
||||
more are available on our website, [taskwarrior.org](https://taskwarrior.org).
|
||||
http://taskwarrior.org
|
||||
|
||||
## Community
|
||||
[](https://twitter.com/taskwarrior)
|
||||
[](https://reddit.com/r/taskwarrior/)
|
||||
[](https://web.libera.chat/#taskwarrior)
|
||||
[](https://discord.gg/eRXEHk8w62)
|
||||
[](https://github.com/GothenburgBitFactory/taskwarrior/discussions)
|
||||
At the site you'll find online documentation, downloads, news and more.
|
||||
|
||||
Taskwarrior has a lively community on many places on the internet.
|
||||
Your contributions are especially welcome. Whether it comes in the form of
|
||||
code patches, ideas, discussion, bug reports, encouragement or criticism, your
|
||||
input is needed.
|
||||
|
||||
Best place to ask questions is our [discussions forum on
|
||||
Github](https://github.com/GothenburgBitFactory/taskwarrior/discussions). For
|
||||
other support options, take a look at
|
||||
[taskwarrior.org/support](https://taskwarrior.org/support)
|
||||
For support options, take a look at:
|
||||
|
||||
For code contributions, please use pull requests.
|
||||
See [Contributing to Taskwarrior](doc/devel/contrib) for more details.
|
||||
http://taskwarrior.org/support
|
||||
|
||||
## Contributing
|
||||
[](https://github.com/GothenburgBitFactory/taskwarrior/graphs/contributors)
|
||||
[](https://github.com/GothenburgBitFactory/taskwarrior/milestone/26)
|
||||
[](https://github.com/GothenburgBitFactory/taskwarrior/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22)
|
||||
Please send your code patches to:
|
||||
|
||||
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).
|
||||
support@taskwarrior.org
|
||||
|
||||
## Sponsoring
|
||||
[](https://github.com/sponsors/GothenburgBitFactory/)
|
||||
Consider joining bug.tasktools.org, answers.tasktools.org and participating in
|
||||
the future of Taskwarrior.
|
||||
|
||||
Taskwarrior is a result of work of mostly small group of volunteers, and has been in development since 2006.
|
||||
---
|
||||
|
||||
If you are a happy Taskwarrior user, please consider [sponsoring us through
|
||||
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.
|
||||
Taskwarrior is released under the MIT license. For details check the LICENSE
|
||||
file.
|
||||
|
||||
16
cmake.h.in
16
cmake.h.in
@@ -17,6 +17,18 @@
|
||||
/* Installation details */
|
||||
#define TASK_RCDIR "${CMAKE_INSTALL_PREFIX}/${TASK_RCDIR}"
|
||||
|
||||
/* Localization */
|
||||
#define PACKAGE_LANGUAGE ${PACKAGE_LANGUAGE}
|
||||
#define LANGUAGE_ENG_USA ${LANGUAGE_ENG_USA}
|
||||
#define LANGUAGE_ESP_ESP ${LANGUAGE_ESP_ESP}
|
||||
#define LANGUAGE_FRA_FRA ${LANGUAGE_FRA_FRA}
|
||||
#define LANGUAGE_DEU_DEU ${LANGUAGE_DEU_DEU}
|
||||
#define LANGUAGE_ITA_ITA ${LANGUAGE_ITA_ITA}
|
||||
#define LANGUAGE_POR_PRT ${LANGUAGE_POR_PRT}
|
||||
#define LANGUAGE_EPO_RUS ${LANGUAGE_EPO_RUS}
|
||||
#define LANGUAGE_POL_POL ${LANGUAGE_POL_POL}
|
||||
#define LANGUAGE_JPN_JPN ${LANGUAGE_JPN_JPN}
|
||||
|
||||
/* git information */
|
||||
#cmakedefine HAVE_COMMIT
|
||||
|
||||
@@ -31,13 +43,15 @@
|
||||
#cmakedefine FREEBSD
|
||||
#cmakedefine OPENBSD
|
||||
#cmakedefine NETBSD
|
||||
#cmakedefine DRAGONFLY
|
||||
#cmakedefine HAIKU
|
||||
#cmakedefine SOLARIS
|
||||
#cmakedefine KFREEBSD
|
||||
#cmakedefine GNUHURD
|
||||
#cmakedefine UNKNOWN
|
||||
|
||||
/* Found the GnuTLS library */
|
||||
#cmakedefine HAVE_LIBGNUTLS
|
||||
|
||||
/* Found tm_gmtoff */
|
||||
#cmakedefine HAVE_TM_GMTOFF
|
||||
|
||||
|
||||
@@ -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}")
|
||||
@@ -1,4 +1,4 @@
|
||||
cmake_minimum_required (VERSION 3.22)
|
||||
cmake_minimum_required (VERSION 2.8)
|
||||
message ("-- Configuring man pages")
|
||||
set (man_FILES task-color.5 task-sync.5 taskrc.5 task.1)
|
||||
foreach (man_FILE ${man_FILES})
|
||||
|
||||
@@ -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.
|
||||
@@ -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.
|
||||
@@ -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)
|
||||
@@ -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.
|
||||
@@ -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.
|
||||
@@ -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.
|
||||
@@ -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.
|
||||
@@ -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
|
||||
@@ -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.
|
||||
@@ -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)
|
||||
@@ -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>[-<id>][,<id>[-<id>]...]`
|
||||
|
||||
* 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'.
|
||||
@@ -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
|
||||
@@ -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).
|
||||
@@ -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>
|
||||
@@ -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.
|
||||
@@ -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)
|
||||
@@ -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.
|
||||
@@ -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
|
||||
@@ -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
|
||||
@@ -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.
|
||||
|
||||
@@ -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 |
@@ -3,6 +3,33 @@
|
||||
.SH NAME
|
||||
task-color \- A color tutorial for the Taskwarrior command line todo manager.
|
||||
|
||||
.SH SETUP
|
||||
The first thing you need is a terminal program that supports color. All
|
||||
terminal programs support color, but only a few support lots of colors. First
|
||||
tell your terminal program to use color by specifying the TERM environment
|
||||
variable like this:
|
||||
|
||||
TERM=xterm-color
|
||||
|
||||
In this example, xterm-color is used - a common value, and one that doesn't
|
||||
require that you use xterm. This works for most setups. This setting belongs
|
||||
in your shell profile (~/.bash_profile, ~/.bashrc, ~/.cshrc etc, depending on
|
||||
which shell you use). If this is a new setting, you will need to either run
|
||||
that profile script, or close and reopen the terminal window (which does the
|
||||
same thing).
|
||||
|
||||
Now tell Taskwarrior that you want to use color. This is the default for
|
||||
Taskwarrior, so the following step may be unnecessary.
|
||||
|
||||
$ task config color on
|
||||
|
||||
This command will make sure there is an entry in your ~/.taskrc file that looks
|
||||
like:
|
||||
|
||||
color=on
|
||||
|
||||
Now Taskwarrior is ready.
|
||||
|
||||
.SH AUTOMATIC MONOCHROME
|
||||
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
|
||||
@@ -222,13 +249,14 @@ 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.
|
||||
rule 'color.due.today' is the highest precedence, and 'color.deleted' is the lowest.
|
||||
|
||||
The keyword rule shown here as 'keyword.' corresponds to a wildcard pattern,
|
||||
meaning 'color.keyword.*', or in other words all the keyword rules.
|
||||
meaning 'color.keyword.*', or in other words all the keyword rules. Similarly
|
||||
for the 'color.tag.*' and 'color.project.*' rules.
|
||||
|
||||
There is also 'color.project.none', 'color.tag.none' and
|
||||
'color.uda.priority.none' to specifically represent missing data.
|
||||
There is also 'color.project.none', 'color.tag.none' and 'color.pri.none' to
|
||||
specifically represent missing data.
|
||||
|
||||
.SH THEMES
|
||||
Taskwarrior supports themes. What this really means is that with the ability to
|
||||
@@ -236,10 +264,11 @@ 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:
|
||||
your .taskrc file (note that your installation may use a slightly different path
|
||||
from the example):
|
||||
|
||||
.RS
|
||||
include dark-256.theme
|
||||
include ${CMAKE_INSTALL_PREFIX}/${TASK_RCDIR}/dark-256.theme
|
||||
.RE
|
||||
|
||||
You can use any of the standard Taskwarrior themes:
|
||||
@@ -284,34 +313,34 @@ 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>.
|
||||
on <http://taskwarrior.org>.
|
||||
|
||||
.SH "CREDITS & COPYRIGHTS"
|
||||
Copyright (C) 2006 \- 2021 T. Babej, P. Beckingham, F. Hernandez.
|
||||
Copyright (C) 2006 \- 2016 P. Beckingham, F. Hernandez.
|
||||
|
||||
Taskwarrior is distributed under the MIT license. See
|
||||
https://www.opensource.org/licenses/mit-license.php for more information.
|
||||
http://www.opensource.org/licenses/mit-license.php for more information.
|
||||
|
||||
.SH SEE ALSO
|
||||
.BR task(1),
|
||||
.BR taskrc(5),
|
||||
.BR task-sync(5)
|
||||
|
||||
For more information regarding Taskwarrior, see the following:
|
||||
For more information regarding Taskwarrior, the following may be referenced:
|
||||
|
||||
.TP
|
||||
The official site at
|
||||
<https://taskwarrior.org>
|
||||
<http://taskwarrior.org>
|
||||
|
||||
.TP
|
||||
The official code repository at
|
||||
<https://github.com/GothenburgBitFactory/taskwarrior>
|
||||
<https://git.tasktools.org/scm/tm/task.git>
|
||||
|
||||
.TP
|
||||
You can contact the project by emailing
|
||||
<support@GothenburgBitFactory.org>
|
||||
You can contact the project by writing an email to
|
||||
<support@taskwarrior.org>
|
||||
|
||||
.SH REPORTING BUGS
|
||||
.TP
|
||||
Bugs in Taskwarrior may be reported to the issue-tracker at
|
||||
<https://github.com/GothenburgBitFactory/taskwarrior/issues>
|
||||
<http://taskwarrior.org>
|
||||
|
||||
@@ -1,177 +1,51 @@
|
||||
.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.
|
||||
task-sync \- A discussion and tutorial for the various task(1) data
|
||||
synchronization capabilities.
|
||||
|
||||
.SH INTRODUCTION
|
||||
Taskwarrior has several sync options, external and internal. If you wish to
|
||||
sync your data, choose one method only; mixing methods is only going to lead to
|
||||
problems. Each of the methods discussed have their own strengths.
|
||||
|
||||
Taskwarrior can synchronize your tasks to a server. This has a few benefits:
|
||||
.SH ALTERNATIVES
|
||||
There are three alternatives for syncing data, which are:
|
||||
|
||||
1) Version control systems, such as git, hg, svn
|
||||
.br
|
||||
- Makes your tasks accessible from multiple systems, called "replicas".
|
||||
2) File hosting systems, such as DropBox
|
||||
.br
|
||||
- Provides a backup of your tasks.
|
||||
3) Using the Taskserver and the 'sync' command
|
||||
|
||||
|
||||
.SH OPTION 1: VERSION CONTROL SYSTEMS
|
||||
There are several good, distributed VCS systems (git, hg, ...) and centralized
|
||||
VCS systems (svn ...), and they function in a similar fashion for our purposes.
|
||||
|
||||
Setup is straightforward. You place your .task directory under revision
|
||||
control. You then need to perform a regular commit/push/pull/update to make
|
||||
sure that the data is propagated when needed. You can even do this using shell
|
||||
scripts so that every task command is preceded by a 'pull' and followed by
|
||||
a 'push'.
|
||||
|
||||
Strengths:
|
||||
.br
|
||||
- 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:
|
||||
|
||||
- Good data transport mechanisms
|
||||
.br
|
||||
- The server's URL ("origin", such as "https://tw.example.com")
|
||||
- Secure transport options
|
||||
|
||||
Weaknesses:
|
||||
.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).
|
||||
- You need proficiency with VCS tools
|
||||
.br
|
||||
- You will need to manually resolve conflicts frequently
|
||||
.br
|
||||
- You need to provide the mechanism for making sure copies are up to date
|
||||
|
||||
|
||||
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,
|
||||
.SH OPTION 2: FILE HOSTING SERVICES
|
||||
There are many file hosting 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.
|
||||
|
||||
@@ -187,6 +61,8 @@ configuration variable like this:
|
||||
$ task config data.location /path/to/shared/directory
|
||||
|
||||
Strengths:
|
||||
.br
|
||||
- Always secure
|
||||
.br
|
||||
- Good client support
|
||||
.br
|
||||
@@ -199,32 +75,99 @@ Weaknesses:
|
||||
- Tasks are not properly merged
|
||||
|
||||
|
||||
.SH OPTION 3: TASKSERVER
|
||||
The Taskserver was designed for this purpose to be secure, fast and conflict
|
||||
free, allowing data interchange between assorted Taskwarrior clients, and
|
||||
tolerant of network connectivity problems.
|
||||
|
||||
There is a 'sync' command built in to Taskwarrior (provided the GnuTLS library
|
||||
is installed), and with a server account and client configuration, syncing is
|
||||
done on demand.
|
||||
|
||||
Setup is a matter of creating an account on a Taskserver (see your Taskserver
|
||||
provider or operate your own - see
|
||||
http://taskwarrior.org/docs/server_setup.html)
|
||||
|
||||
Once you have an account, you'll receive a certificate, key, and credentials.
|
||||
You'll need to put the certificate and key somewhere like this:
|
||||
|
||||
$ cp <name>.cert.pem ~/.task
|
||||
$ cp <name>.key.pem ~/.task
|
||||
|
||||
Then you configure Taskwarrior, using the provided details:
|
||||
|
||||
$ task config taskd.certificate ~/.task/<name>.cert.pem
|
||||
$ task config taskd.key ~/.task/<name>.key.pem
|
||||
$ task config taskd.credentials <organization>/<name>/<UUID>
|
||||
$ task config taskd.server <server domain>:<port>
|
||||
|
||||
If you are using a private server, you are likely also using a self-signed
|
||||
certificate, which means you will need one of the following additional entries:
|
||||
|
||||
$ task config taskd.ca ~/.task/ca.cert.pem
|
||||
|
||||
The CA (Certificate Authority) will be used to verify the server certificate.
|
||||
Alternatively, you can override the cert verification process using:
|
||||
|
||||
$ task config taskd.trust 'allow all'
|
||||
|
||||
This is an insecure option that should be used with caution, because it directs
|
||||
Taskwarrior to trust any certificate.
|
||||
|
||||
After setup, you run a one-time sync initialization, like this:
|
||||
|
||||
$ task sync initialize
|
||||
|
||||
This will make sure your client and the server are properly in sync to begin
|
||||
with. From this point on, you never run the 'initialize' command again, just
|
||||
go about your business, and when you want to sync, run this:
|
||||
|
||||
$ task sync
|
||||
|
||||
You'll see a summary of how many tasks were uploaded and downloaded. You can
|
||||
safely run the command as often as you like. When there are no changes to sync,
|
||||
nothing happens. If you do not have connectivity, your task changes accumulate
|
||||
so that when you next run 'sync' with proper connectivity, the changes are
|
||||
properly handled, in the right order.
|
||||
|
||||
Strengths:
|
||||
.br
|
||||
- Always secure
|
||||
.br
|
||||
- Minimal bandwidth
|
||||
.br
|
||||
- Tolerates connectivity outage
|
||||
|
||||
Weaknesses:
|
||||
.br
|
||||
- You need to manage your own server, or gain access to a hosted server.
|
||||
|
||||
.SH "CREDITS & COPYRIGHTS"
|
||||
Copyright (C) 2006 \- 2021 T. Babej, P. Beckingham, F. Hernandez.
|
||||
Copyright (C) 2006 \- 2016 P. Beckingham, F. Hernandez.
|
||||
|
||||
Taskwarrior is distributed under the MIT license. See
|
||||
https://www.opensource.org/licenses/mit-license.php for more information.
|
||||
http://www.opensource.org/licenses/mit-license.php for more information.
|
||||
|
||||
.SH SEE ALSO
|
||||
.BR task(1),
|
||||
.BR taskrc(5),
|
||||
.BR task-color(5),
|
||||
|
||||
For more information regarding Taskwarrior, see the following:
|
||||
For more information regarding task, the following may be referenced:
|
||||
|
||||
.TP
|
||||
The official site at
|
||||
<https://taskwarrior.org>
|
||||
<http://taskwarrior.org>
|
||||
|
||||
.TP
|
||||
The official code repository at
|
||||
<https://github.com/GothenburgBitFactory/taskwarrior>
|
||||
<https://git.tasktools.org/scm/tm/task.git>
|
||||
|
||||
.TP
|
||||
You can contact the project by emailing
|
||||
<support@GothenburgBitFactory.org>
|
||||
You can contact the project by writing an email to
|
||||
<support@taskwarrior.org>
|
||||
|
||||
.SH REPORTING BUGS
|
||||
.TP
|
||||
Bugs in Taskwarrior may be reported to the issue-tracker at
|
||||
<https://github.com/GothenburgBitFactory/taskwarrior/issues>
|
||||
Bugs in task may be reported to the issue-tracker at
|
||||
<http://taskwarrior.org>
|
||||
|
||||
@@ -55,7 +55,6 @@ More filter examples:
|
||||
task <command> <mods>
|
||||
task 28 <command> <mods>
|
||||
task +weekend <command> <mods>
|
||||
task +bills due.by:eom <command> <mods>
|
||||
task project:Home due.before:today <command> <mods>
|
||||
task ebeeab00-ccf8-464b-8b58-f7f2d606edfb <command> <mods>
|
||||
|
||||
@@ -76,10 +75,6 @@ UUID numbers or ID ranges):
|
||||
task 1 2-5 19 modify pri:H
|
||||
task 4-7 ebeeab00-ccf8-464b-8b58-f7f2d606edfb info
|
||||
|
||||
Note that it may be necessary to properly escape special characters as well as
|
||||
quotes in order to avoid their special meanings in the shell. See also the
|
||||
section 'SPECIFYING DESCRIPTIONS' for more information.
|
||||
|
||||
.SH MODIFICATIONS
|
||||
|
||||
The <mods> consist of zero or more changes to apply to the selected tasks, such
|
||||
@@ -98,10 +93,7 @@ write commands, miscellaneous commands and script helper commands. Read
|
||||
commands do not allow modification of tasks. Write commands can alter almost
|
||||
any aspect of a task. Script helper commands are provided to help you write
|
||||
add-on scripts, for example, shell completion (only minimal output is
|
||||
generated, as with verbose=nothing). Those commands which are explicitly affected
|
||||
by the
|
||||
.I context
|
||||
are denoted as such.
|
||||
generated, as with verbose=nothing).
|
||||
|
||||
.SH READ SUBCOMMANDS
|
||||
|
||||
@@ -138,16 +130,16 @@ Shows all tasks matching the filter, that block other tasks.
|
||||
|
||||
.TP
|
||||
.B task <filter> burndown.daily
|
||||
Shows a graphical burndown chart, by day. Is affected by the context.
|
||||
Shows a graphical burndown chart, by day.
|
||||
|
||||
.TP
|
||||
.B task <filter> burndown.weekly
|
||||
Shows a graphical burndown chart, by week. Note that 'burndown' is an alias to
|
||||
the 'burndown.weekly' report. Is affected by the context.
|
||||
the 'burndown.weekly' report.
|
||||
|
||||
.TP
|
||||
.B task <filter> burndown.monthly
|
||||
Shows a graphical burndown chart, by month. Is affected by the context.
|
||||
Shows a graphical burndown chart, by month.
|
||||
|
||||
.TP
|
||||
.B task calendar [due|<month> <year>|<year>] [y]
|
||||
@@ -159,12 +151,12 @@ the specified month and year. If the 'due' argument is provided, will show
|
||||
the starting month of the earliest due task.
|
||||
|
||||
.TP
|
||||
.B task colors [<sample> | legend]
|
||||
.B task colors [sample | legend]
|
||||
Displays all possible colors, a named sample, or a legend containing all
|
||||
currently defined colors.
|
||||
|
||||
.TP
|
||||
.B task columns [<substring>]
|
||||
.B task columns [substring]
|
||||
Displays all supported columns and formatting styles. Useful when creating
|
||||
custom reports. If a substring is provided, only matching column names are
|
||||
shown.
|
||||
@@ -179,14 +171,14 @@ Shows all tasks matching the filter that are completed.
|
||||
|
||||
.TP
|
||||
.B task <filter> count
|
||||
Displays only a count of tasks matching the filter. Is affected by the context.
|
||||
Displays only a count of tasks matching the filter.
|
||||
|
||||
.TP
|
||||
.B task <filter> export
|
||||
Exports all tasks in the JSON format. Redirect the output to a file, if you
|
||||
wish to save it, or pipe it to another command or script to convert it to
|
||||
another format. You'll find these example scripts online at
|
||||
<https://taskwarrior.org/tools/>:
|
||||
another format. The standard task release comes with a few example scripts,
|
||||
such as:
|
||||
|
||||
export-csv.pl
|
||||
export-sql.py
|
||||
@@ -208,34 +200,18 @@ Shows a graphical report of task status by year.
|
||||
Shows a graphical report of task status by month. Note that 'ghistory' is
|
||||
an alias to 'ghistory.monthly'.
|
||||
|
||||
.TP
|
||||
.B task <filter> ghistory.weekly
|
||||
Shows a graphical report of task status by week.
|
||||
|
||||
.TP
|
||||
.B task <filter> ghistory.daily
|
||||
Shows a graphical report of task status by day.
|
||||
|
||||
.TP
|
||||
.B task help
|
||||
Shows the long usage text.
|
||||
|
||||
.TP
|
||||
.B task <filter> history.annual
|
||||
Shows a report of task history by year. Is affected by the context.
|
||||
Shows a report of task history by year.
|
||||
|
||||
.TP
|
||||
.B task <filter> history.monthly
|
||||
Shows a report of task history by month. Note that 'history' is
|
||||
an alias to 'history.monthly'. Is affected by the context.
|
||||
|
||||
.TP
|
||||
.B task <filter> history.weekly
|
||||
Shows a report of task history by week. Is affected by the context.
|
||||
|
||||
.TP
|
||||
.B task <filter> history.daily
|
||||
Shows a report of task history by day. Is affected by the context.
|
||||
an alias to 'history.monthly'.
|
||||
|
||||
.TP
|
||||
.B task <filter> ids
|
||||
@@ -255,8 +231,9 @@ This command is mainly of use to external scripts.
|
||||
.TP
|
||||
.B task <filter> uuids
|
||||
Applies the filter on all tasks (even deleted and completed tasks)
|
||||
then extracts only the task UUIDs and presents them as a space-separated list.
|
||||
This is useful as input to a task command, to achieve this:
|
||||
then extracts only the task UUIDs and presents them as
|
||||
a comma-separated list. This is useful as input to a task command, to achieve
|
||||
this:
|
||||
|
||||
task $(task project:Home status:completed uuids) modify status:pending
|
||||
|
||||
@@ -302,9 +279,9 @@ value.
|
||||
|
||||
.TP
|
||||
.B task <filter> ready
|
||||
Shows a page of the most urgent ready tasks, sorted by urgency with started
|
||||
tasks first. A ready task is one that is either unscheduled, or has a scheduled
|
||||
date that is past and is not waiting.
|
||||
Shows a page of the most urgent ready tasks, sorted by urgency. A ready task is
|
||||
one that is either unscheduled, or has a scheduled date that is past and has no
|
||||
wait date.
|
||||
|
||||
.TP
|
||||
.B task <filter> oldest
|
||||
@@ -317,7 +294,7 @@ Shows all incomplete tasks matching the filter that are beyond their due date.
|
||||
.TP
|
||||
.B task <filter> projects
|
||||
Lists all project names that are currently used by pending tasks, and the
|
||||
number of tasks for each. Is affected by the context.
|
||||
number of tasks for each.
|
||||
|
||||
.TP
|
||||
.B task <filter> recurring
|
||||
@@ -336,8 +313,7 @@ Shows all waiting tasks matching the filter.
|
||||
|
||||
.TP
|
||||
.B task add <mods>
|
||||
Adds a new pending task to the task list. It is affected by the currently set
|
||||
context.
|
||||
Adds a new pending task to the task list.
|
||||
|
||||
.TP
|
||||
.B task <filter> annotate <mods>
|
||||
@@ -349,28 +325,28 @@ Appends description text to an existing task.
|
||||
|
||||
.TP
|
||||
.B task <filter> delete <mods>
|
||||
Deletes the specified task from task list. Is affected by the context.
|
||||
Deletes the specified task from task list.
|
||||
|
||||
.TP
|
||||
.B task <filter> denotate <mods>
|
||||
Deletes an annotation for the specified task. If the provided description
|
||||
matches an annotation exactly, the corresponding annotation is deleted. If the
|
||||
provided description matches annotations partly, the first partly matched
|
||||
annotation is deleted. Is affected by the context.
|
||||
annotation is deleted.
|
||||
|
||||
.TP
|
||||
.B task <filter> done <mods>
|
||||
Marks the specified task as done. Is affected by the context.
|
||||
Marks the specified task as done.
|
||||
|
||||
.TP
|
||||
.B task <filter> duplicate <mods>
|
||||
Duplicates the specified task and allows modifications. Is affected by the context.
|
||||
Duplicates the specified task and allows modifications.
|
||||
|
||||
.TP
|
||||
.B task <filter> edit
|
||||
Launches a text editor to let you modify all aspects of a task directly.
|
||||
In general, this is not the recommended method of modifying tasks, but is
|
||||
provided for exceptional circumstances. Use carefully. Is affected by the context.
|
||||
provided for exceptional circumstances. Use carefully.
|
||||
|
||||
.TP
|
||||
.B task import [<file> ...]
|
||||
@@ -390,8 +366,7 @@ few example scripts, such as:
|
||||
|
||||
.TP
|
||||
.B task log <mods>
|
||||
Adds a new task that is already completed, to the task list. It is affected by
|
||||
the currently set context.
|
||||
Adds a new task that is already completed, to the task list.
|
||||
|
||||
.TP
|
||||
.B task <filter> modify <mods>
|
||||
@@ -399,17 +374,17 @@ Modifies the existing task with provided information.
|
||||
|
||||
.TP
|
||||
.B task <filter> prepend <mods>
|
||||
Prepends description text to an existing task. Is affected by the context.
|
||||
Prepends description text to an existing task.
|
||||
|
||||
.TP
|
||||
.B task <filter> start <mods>
|
||||
Marks the specified tasks as started. Is affected by the context.
|
||||
Marks the specified tasks as started.
|
||||
|
||||
.TP
|
||||
.B task <filter> stop <mods>
|
||||
Removes the
|
||||
.I start
|
||||
time from the specified task. Is affected by the context.
|
||||
time from the specified task.
|
||||
|
||||
.SH MISCELLANEOUS SUBCOMMANDS
|
||||
|
||||
@@ -433,7 +408,7 @@ Examples:
|
||||
2015-03-31T23:59:59
|
||||
|
||||
.TP
|
||||
.B task config [<name> [<value> | '']]
|
||||
.B task config [name [value | '']]
|
||||
Add, modify and remove settings directly in the Taskwarrior configuration.
|
||||
This command either modifies the 'name' setting with a new value of 'value',
|
||||
or adds a new entry that is equivalent to 'name=value':
|
||||
@@ -512,55 +487,34 @@ conjunction with aliases and extensions can provide seamless integration.
|
||||
.B task logo
|
||||
Displays the Taskwarrior logo.
|
||||
|
||||
.TP
|
||||
.B task news
|
||||
Guides the user through important release notes anytime a new version of
|
||||
Taskwarrior is installed. It provides personalized feedback, deprecation
|
||||
warnings and usage advice, where applicable.
|
||||
|
||||
.TP
|
||||
.B task reports
|
||||
Lists all supported reports. This includes the built-in reports, and any custom
|
||||
reports you have defined.
|
||||
|
||||
.TP
|
||||
.B task show [all | <substring>]
|
||||
.B task show [all | substring]
|
||||
Shows all the current settings. If a
|
||||
substring is specified just the settings containing that substring will be
|
||||
displayed.
|
||||
|
||||
.TP
|
||||
.B task <filter> stats
|
||||
Shows statistics of the tasks defined by the filter. Is affected by the context.
|
||||
Shows statistics of the tasks defined by the filter.
|
||||
|
||||
.TP
|
||||
.B task <filter> summary
|
||||
Shows a report of aggregated task status by project. Is affected by the context.
|
||||
|
||||
.TP
|
||||
.B task sync
|
||||
The sync command synchronizes data with the Taskserver, if configured.
|
||||
|
||||
Note: If you use multiple sync clients, make sure this setting (which is the default)
|
||||
is on your primary client:
|
||||
|
||||
recurrence=on
|
||||
|
||||
and on all other clients (this is not the default):
|
||||
|
||||
recurrence=off
|
||||
|
||||
This is a workaround to avoid a recurrence bug that duplicates recurring tasks.
|
||||
Shows a report of aggregated task status by project.
|
||||
|
||||
.TP
|
||||
.B task <filter> tags
|
||||
Show a list of all tags used. Any special tags used are highlighted. Note that
|
||||
virtual tags are not listed - they don't really exist, and are just a convenient
|
||||
notation for other task metadata. It is an error to attempt to add or remove a
|
||||
virtual tag. Is affected by the context.
|
||||
virtual tag.
|
||||
|
||||
.TP
|
||||
.B task timesheet [<weeks>]
|
||||
.B task timesheet [weeks]
|
||||
Shows a weekly report of tasks completed and started.
|
||||
|
||||
.TP
|
||||
@@ -608,7 +562,7 @@ by third-party applications.
|
||||
Reports a unique set of attribute values. For example, to see all the active
|
||||
projects:
|
||||
|
||||
task +PENDING _unique project
|
||||
task +PENDING _unique projects
|
||||
|
||||
.TP
|
||||
.B task <filter> _uuids
|
||||
@@ -656,16 +610,10 @@ Accesses and displays the DOM reference(s). Used to extract individual values
|
||||
from tasks, or the system. Supported DOM references are:
|
||||
|
||||
rc.<name>
|
||||
tw.syncneeded
|
||||
tw.program
|
||||
tw.args
|
||||
tw.width
|
||||
tw.height
|
||||
tw.version
|
||||
context.program (Deprecated in 2.6.0)
|
||||
context.args (Deprecated in 2.6.0)
|
||||
context.width (Deprecated in 2.6.0)
|
||||
context.height (Deprecated in 2.6.0)
|
||||
context.program
|
||||
context.args
|
||||
context.width
|
||||
context.height
|
||||
system.version
|
||||
system.os
|
||||
<id>.<attribute>
|
||||
@@ -685,7 +633,7 @@ extracted by DOM references.
|
||||
|
||||
For a full list of supported attribute-specific DOM references, consult
|
||||
the online documentation at:
|
||||
<https://taskwarrior.org/docs/dom.html>
|
||||
<http://taskwarrior.org/docs/dom.html>
|
||||
|
||||
.SH ATTRIBUTES AND METADATA
|
||||
|
||||
@@ -722,24 +670,22 @@ are:
|
||||
ANNOTATED Matches if the task has annotations
|
||||
BLOCKED Matches if the task is blocked
|
||||
BLOCKING Matches if the task is blocking
|
||||
CHILD Matches if the task has a parent (deprecated in 2.6.0)
|
||||
CHILD Matches if the task has a parent
|
||||
COMPLETED Matches if the task has completed status
|
||||
DELETED Matches if the task has deleted status
|
||||
DUE Matches if the task is due
|
||||
INSTANCE Matches if the task is a recurrent instance
|
||||
DUETODAY Matches if the task is due today
|
||||
LATEST Matches if the task is the newest added task
|
||||
MONTH Matches if the task is due this month
|
||||
ORPHAN Matches if the task has any orphaned UDA values
|
||||
OVERDUE Matches if the task is overdue
|
||||
PARENT Matches if the task is a parent (deprecated in 2.6.0)
|
||||
PARENT Matches if the task is a parent
|
||||
PENDING Matches if the task has pending status
|
||||
PRIORITY Matches if the task has a priority
|
||||
PROJECT Matches if the task has a project
|
||||
QUARTER Matches if the task is due this quarter
|
||||
READY Matches if the task is actionable
|
||||
SCHEDULED Matches if the task is scheduled
|
||||
TAGGED Matches if the task has tags
|
||||
TEMPLATE Matches if the task is a recurrence template
|
||||
TODAY Matches if the task is due today
|
||||
TOMORROW Matches if the task is due sometime tomorrow
|
||||
UDA Matches if the task has any UDA values
|
||||
@@ -789,10 +735,9 @@ to 25 lines.
|
||||
|
||||
.TP
|
||||
.B wait:<wait-date>
|
||||
When a task is given a wait date, it is hidden from most built-in reports, which
|
||||
exclude +WAITING. When the date is in the past, the task is not considered +WAITING,
|
||||
and again becomes visible. Note that, for compatibilty, such tasks are shown as
|
||||
having status "waiting", but this will change in a future release.
|
||||
When a task is given a wait date, it is hidden from most reports by changing
|
||||
its status to 'waiting'. When that date is passed, the status is changed back
|
||||
to 'pending', and the task becomes visible.
|
||||
|
||||
.TP
|
||||
.B depends:<id1,id2 ...>
|
||||
@@ -814,8 +759,6 @@ Attribute modifiers improve filters. Supported modifiers are:
|
||||
.br
|
||||
.B after (synonyms over, above)
|
||||
.br
|
||||
.B by
|
||||
.br
|
||||
.B none
|
||||
.br
|
||||
.B any
|
||||
@@ -837,13 +780,6 @@ Attribute modifiers improve filters. Supported modifiers are:
|
||||
.B noword
|
||||
.RE
|
||||
|
||||
They can be applied to all regular attributes (see above) and the following
|
||||
calculated attributes:
|
||||
|
||||
.RS
|
||||
\fBurgency\fR (or short \fBurg\fR)
|
||||
.RE
|
||||
|
||||
For example:
|
||||
|
||||
.RS
|
||||
@@ -863,24 +799,6 @@ modifier is the inverse of the
|
||||
.I before
|
||||
modifier.
|
||||
|
||||
The
|
||||
.I by
|
||||
modifier is the same as 'before', except it also includes the moment in
|
||||
question. For example:
|
||||
|
||||
task add test due:eoy
|
||||
|
||||
will be found when using the inclusive filter 'by':
|
||||
|
||||
task due.by:eoy
|
||||
|
||||
but not when the non-inclusive filter 'before' is used:
|
||||
|
||||
task due.before:eoy
|
||||
|
||||
this applies equally to other named dates such as 'eom', 'eod', etc; the
|
||||
modifier compares using '<=' rather than '<' like 'before' does.
|
||||
|
||||
The
|
||||
.I none
|
||||
modifier requires that the attribute does not have a value. For example:
|
||||
@@ -1101,7 +1019,7 @@ task ... wait:later
|
||||
.br
|
||||
task ... wait:someday
|
||||
|
||||
This sets the wait date to 12/30/9999.
|
||||
This sets the wait date to 1/18/2038.
|
||||
|
||||
.TP
|
||||
Next occurring weekday
|
||||
@@ -1122,18 +1040,16 @@ task ... due:pentecost
|
||||
task ... due:midsommar
|
||||
.br
|
||||
task ... due:midsommarafton
|
||||
.br
|
||||
task ... due:juhannus
|
||||
.RE
|
||||
|
||||
.SS FREQUENCIES
|
||||
Recurrence periods. Taskwarrior supports several ways of specifying the
|
||||
.I frequency
|
||||
of recurring tasks. Note that frequencies can be abbreviated.
|
||||
of recurring tasks.
|
||||
|
||||
.RS
|
||||
.TP
|
||||
daily, day, 1day, 1days, 2day, 2days, 1da, 2da, ...
|
||||
daily, day, 1da, 2da, ...
|
||||
Every day or a number of days.
|
||||
|
||||
.TP
|
||||
@@ -1170,30 +1086,9 @@ Every two years.
|
||||
.RE
|
||||
|
||||
.SH CONTEXT
|
||||
Context is a user-defined query, which is automatically applied to all commands
|
||||
that filter the task list and to commands that create new tasks (add, log). For
|
||||
example, any report command will have its result affected by the current
|
||||
active context. Here is a list of the commands that are affected:
|
||||
.IP
|
||||
add
|
||||
burndown
|
||||
count
|
||||
delete
|
||||
denotate
|
||||
done
|
||||
duplicate
|
||||
edit
|
||||
history
|
||||
log
|
||||
prepend
|
||||
projects
|
||||
start
|
||||
stats
|
||||
stop
|
||||
summary
|
||||
tags
|
||||
|
||||
All other commands are NOT affected by the context.
|
||||
Context is a user-defined filter, which is automatically applied to all commands
|
||||
that filter the task list. In particular, any report command will have its
|
||||
result affected by the current active context.
|
||||
|
||||
$ task list
|
||||
ID Age Project Description Urg
|
||||
@@ -1208,21 +1103,6 @@ All other commands are NOT affected by the context.
|
||||
2 1d Home Clean the dishes 1.14
|
||||
Context 'home' set. Use 'task context none' to remove.
|
||||
|
||||
Task list got automatically filtered for project:Home.
|
||||
|
||||
$ task add Vaccuum the carpet
|
||||
Created task 3.
|
||||
Context 'home' set. Use 'task context none' to remove.
|
||||
|
||||
$ task list
|
||||
ID Age Project Description Urg
|
||||
2 1d Home Clean the dishes 1.14
|
||||
3 5s Home Vaccuum the carpet 1.14
|
||||
Context 'home' set. Use 'task context none' to remove.
|
||||
|
||||
Note that the newly added task "Vaccuum the carpet" has "project:Home" set
|
||||
automatically.
|
||||
|
||||
As seen in the example above, context is applied by specifying its name to the
|
||||
"context" command. To change the currently applied context, just pass the
|
||||
new context's name to the 'context' command.
|
||||
@@ -1233,92 +1113,37 @@ To unset any context, use the 'none' subcommand.
|
||||
Context unset.
|
||||
|
||||
$ task list
|
||||
ID Age Project Description Urg
|
||||
1 2d Sport Run 5 miles 1.42
|
||||
2 1d Home Clean the dishes 1.14
|
||||
3 7s Home Vaccuum the carpet 1.14
|
||||
ID Age Project Description Urg
|
||||
1 2d Sport Run 5 miles 1.42
|
||||
2 1d Home Clean the dishes 1.14
|
||||
|
||||
Context can be defined using the 'define' subcommand, specifying both the name
|
||||
of the new context, and it's assigned filter.
|
||||
|
||||
$ task context define home project:Home
|
||||
Are you sure you want to add 'context.home.read' with a value of 'project:Home'? (yes/no) yes
|
||||
Are you sure you want to add 'context.home.write' with a value of 'project:Home'? (yes/no) yes
|
||||
Are you sure you want to add 'context.home' with a value of 'project:Home'? (yes/no) yes
|
||||
Context 'home' successfully defined.
|
||||
|
||||
Note that you were separately prompted to set the 'read' and 'write' context.
|
||||
This allows you to specify contexts that only work for reporting commands or
|
||||
only for commands that create tasks.
|
||||
|
||||
To remove the definition, use the 'delete' subcommand.
|
||||
|
||||
$ task context delete home
|
||||
Are you sure you want to remove 'context.home.read'? (yes/no) yes
|
||||
Are you sure you want to remove 'context.home.write'? (yes/no) yes
|
||||
Context 'home' deleted.
|
||||
Are you sure you want to remove 'context.home'? (yes/no) yes
|
||||
Context 'home' successfully undefined.
|
||||
|
||||
To check what is the currently active context, use the 'show' subcommand.
|
||||
|
||||
$ task context show
|
||||
Context 'home' with
|
||||
|
||||
* read filter: '+home'
|
||||
* write filter: '+home'
|
||||
|
||||
is currently applied.
|
||||
Context 'home' with filter 'project:Home' is currently applied.
|
||||
|
||||
Contexts can store arbitrarily complex filters.
|
||||
|
||||
$ task context define family project:Family or +paul or +nancy
|
||||
Are you sure you want to add 'context.family.read' with a value of 'project:Family or +paul or +nancy'? (yes/no) yes
|
||||
Are you sure you want to add 'context.family.write' with a value of 'project:Family or +paul or +nancy'? (yes/no) no
|
||||
Are you sure you want to add 'context.home' with a value of 'project:Family or +paul or +nancy'? (yes/no) yes
|
||||
Context 'family' successfully defined.
|
||||
|
||||
Contexts are permanent, and the currently set context name is stored in the
|
||||
"context" configuration variable. The context definition is stored in the
|
||||
"context.<name>.read" configuration variable (for reporting commands) and
|
||||
"context.<name>.write" configuration variable (for task additions, i.e. task
|
||||
add/log).
|
||||
|
||||
Note that in the example above, the user decided not to define the complex
|
||||
filter as writeable context. The reason for this decision is that the complex
|
||||
filter in the example does not directly translate to a modification. In fact,
|
||||
if such a context is used as a writeable context, the following happens:
|
||||
|
||||
$ task add Call Paul
|
||||
Created task 4.
|
||||
Context 'family' set. Use 'task context none' to remove.
|
||||
|
||||
$ task 4 list
|
||||
ID Age Project Tags Description Urg
|
||||
4 9min Family nancy paul or or Call Paul 0
|
||||
|
||||
|
||||
There is no clear mapping between the complex filter used and the modifications
|
||||
(should only the project be set? only the tags? both?). Additionally note the 'or'
|
||||
operators being present in the description. Taskwarrior does not try to guess
|
||||
the user intention here, and instead, the user is expected to set the
|
||||
"context.<name>.write" variable to make their intention explicit, for example:
|
||||
|
||||
$ task config context.family.write project:Family
|
||||
Are you sure you want to change the value of 'context.family.write' from 'project:Family or +paul or +nancy' to 'project:Family'? (yes/no) yes
|
||||
Config file /home/tbabej/.config/task/taskrc modified.
|
||||
|
||||
$ task context
|
||||
Name Type Definition Active
|
||||
family read project:Family or +paul or +nancy yes
|
||||
write project:Family yes
|
||||
home read +home no
|
||||
write +home no
|
||||
|
||||
Note how read and write contexts differ for context "family", while for context
|
||||
"home" they stay the same.
|
||||
|
||||
In addition, every configuration parameter can be overridden for the current
|
||||
context, by specifying context.<name>.rc.<parameter>. For example, if the default
|
||||
command for the family context should be displaying the family_report:
|
||||
|
||||
$ task config context.family.rc.default.command family_report
|
||||
"context.<name>" configuration variable.
|
||||
|
||||
.SH COMMAND ABBREVIATION
|
||||
All Taskwarrior commands may be abbreviated as long as a unique prefix is used,
|
||||
@@ -1396,15 +1221,12 @@ Taskwarrior stores its configuration in a file in the user's home directory:
|
||||
|
||||
.TP
|
||||
.B task rc:<path-to-alternate-file> ...
|
||||
Specifies an alternate configuration file with highest priority.
|
||||
Specifies an alternate configuration file.
|
||||
|
||||
.TP
|
||||
.B TASKRC=<path-to-alternate-file> task ..
|
||||
The environment variable specifies an alternate configuration file to use.
|
||||
|
||||
.TP
|
||||
.B XDG_CONFIG_HOME=<path-to-alternate-config-home> task ..
|
||||
The environment variable specifies an alternate configuration file to use.
|
||||
.B TASKRC=/tmp/.taskrc task ..
|
||||
The environment variable overrides the default and the command line
|
||||
specification of the .taskrc file.
|
||||
|
||||
.TP
|
||||
.B task rc.<name>:<value> ...
|
||||
@@ -1413,15 +1235,15 @@ Specifies individual configuration file overrides.
|
||||
|
||||
.TP
|
||||
.B TASKDATA=/tmp/.task task ...
|
||||
The environment variable overrides the default, and the 'data.location'
|
||||
configuration setting of the task data directory.
|
||||
The environment variable overrides the default, the command line, and
|
||||
the 'data.location' configuration setting of the task data directory.
|
||||
|
||||
.SH MORE EXAMPLES
|
||||
|
||||
For examples please see the online documentation starting at
|
||||
|
||||
.RS
|
||||
<https://taskwarrior.org/docs>
|
||||
<http://taskwarrior.org/docs>
|
||||
.RE
|
||||
|
||||
Note that the online documentation can be more detailed and more current than
|
||||
@@ -1432,10 +1254,7 @@ this man page.
|
||||
.TP
|
||||
~/.taskrc
|
||||
User configuration file - see also taskrc(5). Note that this can be
|
||||
overridden on the command line or by the TASKRC environment variable. Also, if
|
||||
.I ~/.taskrc
|
||||
doesn't exist and XDG_CONFIG_HOME environment variable is defined, taskwarrior
|
||||
will check if $XDG_CONFIG_HOME/task/taskrc exists and attempt to read it
|
||||
overridden on the command line or by the TASKRC environment variable.
|
||||
|
||||
.TP
|
||||
~/.task
|
||||
@@ -1456,10 +1275,10 @@ The file that contains the completed ("done") tasks.
|
||||
The file that contains information needed by the "undo" command.
|
||||
|
||||
.SH "CREDITS & COPYRIGHTS"
|
||||
Copyright (C) 2006 \- 2021 T. Babej, P. Beckingham, F. Hernandez.
|
||||
Copyright (C) 2006 \- 2016 P. Beckingham, F. Hernandez.
|
||||
|
||||
Taskwarrior is distributed under the MIT license. See
|
||||
https://www.opensource.org/licenses/mit-license.php for more information.
|
||||
http://www.opensource.org/licenses/mit-license.php for more information.
|
||||
|
||||
.SH SEE ALSO
|
||||
.BR taskrc(5),
|
||||
@@ -1470,17 +1289,18 @@ For more information regarding Taskwarrior, see the following:
|
||||
|
||||
.TP
|
||||
The official site at
|
||||
<https://taskwarrior.org>
|
||||
<http://taskwarrior.org>
|
||||
|
||||
.TP
|
||||
The official code repository at
|
||||
<https://github.com/GothenburgBitFactory/taskwarrior>
|
||||
<https://git.tasktools.org/scm/tm/task.git>
|
||||
|
||||
.TP
|
||||
You can contact the project by emailing
|
||||
<support@GothenburgBitFactory.org>
|
||||
<support@taskwarrior.org>
|
||||
|
||||
.SH REPORTING BUGS
|
||||
.TP
|
||||
Bugs in Taskwarrior may be reported to the issue-tracker at
|
||||
<https://github.com/GothenburgBitFactory/taskwarrior/issues>
|
||||
<https://bug.tasktools.org/>
|
||||
|
||||
|
||||
@@ -9,8 +9,6 @@ taskrc \- Configuration details for the task(1) command
|
||||
.B task rc:<directory-path>/.taskrc ...
|
||||
.br
|
||||
.B TASKRC=<directory-path>/.taskrc task ...
|
||||
.br
|
||||
.B XDG_CONFIG_HOME=<directory-path>/task/taskrc task ...
|
||||
|
||||
.SH DESCRIPTION
|
||||
.B Taskwarrior
|
||||
@@ -36,12 +34,6 @@ or using the TASKRC environment variable:
|
||||
$ TASKRC=/tmp/.taskrc task ...
|
||||
.RE
|
||||
|
||||
Additionally, if no ~/.taskrc exists, taskwarrior will check if the XDG_CONFIG_HOME environment variable is defined:
|
||||
|
||||
.RS
|
||||
$ XDG_CONFIG_HOME=~/.config task ...
|
||||
.RE
|
||||
|
||||
Individual options can be overridden by using the
|
||||
.I rc.<name>:
|
||||
attribute when running task:
|
||||
@@ -63,7 +55,7 @@ default, sample
|
||||
.I .taskrc
|
||||
file in the user's home directory.
|
||||
|
||||
The .taskrc file follows a very simple syntax defining name/value pairs:
|
||||
The .taskrc file follows a very simply syntax defining name/value pairs:
|
||||
|
||||
.RS
|
||||
<name> = <value>
|
||||
@@ -76,8 +68,8 @@ The entry must be on a single line, no continuations.
|
||||
Values support UTF8 as well as JSON encoding, such as \\uNNNN.
|
||||
|
||||
Note that Taskwarrior is flexible about the values used to represent Boolean
|
||||
items. You can use "1" to enable, anything else is interpreted as disabled.
|
||||
The values "on", "yes", "y" and "true" are currently supported but deprecated.
|
||||
items. You can use "on", "yes", "y", "1" and "true".
|
||||
Anything else means "off".
|
||||
|
||||
.RS
|
||||
include <file>
|
||||
@@ -85,15 +77,8 @@ include <file>
|
||||
|
||||
There may be whitespace around 'include' and <file>. The file may be an
|
||||
absolute or relative path, and the special character '~' is expanded to mean
|
||||
$HOME. If relative path is specified, the it will be evaluated as relative with
|
||||
respect to the following directories (listed in order of precedence):
|
||||
1. the current working directory
|
||||
2. the directory containing the taskrc file
|
||||
3. the directories set by the package manager (which usually contain
|
||||
pre-defined themes)
|
||||
|
||||
Note that environment variables are also expanded in paths (and any other
|
||||
taskrc variables).
|
||||
$HOME.
|
||||
The entry must be on a single line, no continuations.
|
||||
|
||||
.RS
|
||||
# <comment>
|
||||
@@ -159,9 +144,9 @@ ones containing just the relevant configuration data like colors, etc.
|
||||
There are two excellent uses of includes in your .taskrc, shown here:
|
||||
|
||||
.RS
|
||||
include holidays.en-US.rc
|
||||
include ${CMAKE_INSTALL_PREFIX}/${TASK_RCDIR}/holidays.en-US.rc
|
||||
.br
|
||||
include dark-16.theme
|
||||
include ${CMAKE_INSTALL_PREFIX}/${TASK_RCDIR}/dark-16.theme
|
||||
.RE
|
||||
|
||||
This includes two standard files that are distributed with Taskwarrior, which
|
||||
@@ -169,7 +154,7 @@ define a set of US holidays, and set up a 16-color theme to use, to color the
|
||||
reports and calendar.
|
||||
|
||||
.SH ENVIRONMENT VARIABLES
|
||||
These environment variables override defaults, but not command-line arguments.
|
||||
These environment variables override defaults and command line arguments.
|
||||
|
||||
.TP
|
||||
.B TASKDATA=~/.task
|
||||
@@ -178,17 +163,6 @@ This overrides the default path for the Taskwarrior data files.
|
||||
.TP
|
||||
.B TASKRC=~/.taskrc
|
||||
This overrides the default RC file.
|
||||
.RE
|
||||
|
||||
This environment variable will be checked if
|
||||
.I ~/.taskrc
|
||||
doesn't exist
|
||||
|
||||
.TP
|
||||
.B XDG_CONFIG_HOME=~/.config
|
||||
If set, taskwarrior will look for a
|
||||
.I $XDG_CONFIG_HOME/task/taskrc
|
||||
file
|
||||
|
||||
.SH CONFIGURATION VARIABLES
|
||||
Valid variable names and their default values are:
|
||||
@@ -207,37 +181,33 @@ shell meta character, which will be properly expanded.
|
||||
Note that the TASKDATA environment variable overrides this setting.
|
||||
|
||||
.TP
|
||||
.B hooks.location=$HOME/.task/hooks
|
||||
This is a path to the hook scripts directory. By default it is ~/.task/hooks.
|
||||
|
||||
.TP
|
||||
.B locking=1
|
||||
.B locking=on
|
||||
Determines whether to use file locking when accessing the pending.data and
|
||||
completed.data files. Defaults to "1". Solaris users who store the data
|
||||
files on an NFS mount may need to set locking to "0". Note that there is
|
||||
danger in setting this value to "0" - another program (or another instance of
|
||||
completed.data files. Defaults to "on". Solaris users who store the data
|
||||
files on an NFS mount may need to set locking to "off". Note that there is
|
||||
danger in setting this value to "off" - another program (or another instance of
|
||||
task) may write to the task.pending file at the same time.
|
||||
|
||||
.TP
|
||||
.B gc=1
|
||||
.B gc=on
|
||||
Can be used to temporarily suspend garbage collection (gc), so that task IDs
|
||||
don't change. Note that this should be used in the form of a command line
|
||||
override (task rc.gc=0 ...), and not permanently used in the .taskrc file,
|
||||
override (task rc.gc=off ...), and not permanently used in the .taskrc file,
|
||||
as this significantly affects performance in the long term.
|
||||
|
||||
.TP
|
||||
.B hooks=1
|
||||
.B hooks=on
|
||||
This master control switch enables hook script processing. The default value
|
||||
is '1', but certain extensions and environments may need to disable hooks.
|
||||
is 'on', but certain extensions and environments may need to disable hooks.
|
||||
|
||||
.TP
|
||||
.B exit.on.missing.db=0
|
||||
When set to '1' causes the program to exit if the database (~/.task or
|
||||
rc.data.location or TASKDATA override) is missing. Default value is '0'.
|
||||
.B exit.on.missing.db=no
|
||||
When set to 'yes' causes the program to exit if the database (~/.task or
|
||||
rc.data.location or TASKDATA override) is missing. Default value is 'no'.
|
||||
|
||||
.SS TERMINAL
|
||||
.TP
|
||||
.B detection=1
|
||||
.B detection=on
|
||||
Determines whether to use ioctl to establish the size of the window you are
|
||||
using, for text wrapping.
|
||||
|
||||
@@ -255,14 +225,14 @@ to 24. If set to 0, it is interpreted as infinite height. This is useful when re
|
||||
charts to a file for subsequent handling.
|
||||
|
||||
.TP
|
||||
.B avoidlastcolumn=0
|
||||
.B avoidlastcolumn=no
|
||||
Causes the width of the terminal minus one to be used as the full width. This
|
||||
avoids placing color codes in the last column which can cause problems for
|
||||
Cygwin users. Default value is '0'.
|
||||
Cygwin users. Default value is 'no'.
|
||||
|
||||
.TP
|
||||
.B hyphenate=1
|
||||
Hyphenates lines when wrapping breaks occur mid-word. Default value is '1'.
|
||||
.B hyphenate=on
|
||||
Hyphenates lines when wrapping breaks occur mid-word. Default value is 'on'.
|
||||
|
||||
.TP
|
||||
.B editor=vi
|
||||
@@ -280,9 +250,9 @@ prompt. This is only referenced when 'limit:page' is used.
|
||||
.SS MISCELLANEOUS
|
||||
|
||||
.TP
|
||||
.B verbose=1|0|nothing|list...
|
||||
When set to "1" (the default), helpful explanatory comments are added to all
|
||||
output from Taskwarrior. Setting this to "0" means that you would see regular
|
||||
.B verbose=on|off|nothing|list...
|
||||
When set to "on" (the default), helpful explanatory comments are added to all
|
||||
output from Taskwarrior. Setting this to "off" means that you would see regular
|
||||
output.
|
||||
|
||||
The special value "nothing" can be used to eliminate all optional output, which
|
||||
@@ -293,36 +263,32 @@ Alternatively, you can specify a comma-separated list of verbosity tokens that
|
||||
control specific occasions when output is generated. This list may contain:
|
||||
|
||||
blank Inserts extra blank lines in output, for clarity
|
||||
header Messages that appear before report output (this includes .taskrc/.task overrides and the "[task next]" message)
|
||||
footnote Messages that appear after report output (mostly status messages and change descriptions)
|
||||
header Messages that appear before report output
|
||||
footnote Messages that appear after report output
|
||||
label Column labels on tabular reports
|
||||
new-id Provides feedback on any new task with IDs (and UUIDs for new tasks with ID 0, such as new completed tasks).
|
||||
new-uuid Provides feedback on any new task with UUIDs. Overrides new-id. Useful for automation.
|
||||
new-id Provides feedback of any new task IDs
|
||||
new-uuid Provides feedback of any new task UUIDs. Deprecated, to be
|
||||
merged with new-id.
|
||||
affected Reports 'N tasks affected' and similar
|
||||
edit Used the verbose template for the 'edit' command
|
||||
special Feedback when applying special tags
|
||||
project Feedback about project status changes
|
||||
sync Feedback about sync
|
||||
filter Shows the filter used in the command
|
||||
context Show the current context. Displayed in footnote.
|
||||
override Notification when configuration options are overridden
|
||||
unwait Notification when a task leaves the 'waiting' state
|
||||
recur Notification when a new recurring task instance is created
|
||||
default Notifications about taskwarrior choosing to perform a default action.
|
||||
|
||||
The tokens "affected", "new-id", "new-uuid", "project", "override" and "recur"
|
||||
imply "footnote".
|
||||
"affected", "new-id", "new-uuid" "project" and "unwait" imply "footnote".
|
||||
|
||||
The token "default" implies "header".
|
||||
|
||||
Note that the "1" setting is equivalent to all the tokens being specified,
|
||||
Note that the "on" setting is equivalent to all the tokens being specified,
|
||||
and the "nothing" setting is equivalent to none of the tokens being specified.
|
||||
|
||||
Here are the shortcut equivalents:
|
||||
|
||||
verbose=on
|
||||
verbose=blank,header,footnote,label,new-id,affected,edit,special,project,sync,filter,override,recur
|
||||
verbose=blank,header,footnote,label,new-id,affected,edit,special,project,sync,filter,unwait
|
||||
|
||||
verbose=0
|
||||
verbose=off
|
||||
verbose=blank,label,new-id,edit
|
||||
|
||||
verbose=nothing
|
||||
@@ -332,16 +298,16 @@ Those additional comments are sent to the standard error for header, footnote
|
||||
and project. The others are sent to standard output.
|
||||
|
||||
.TP
|
||||
.B confirmation=1
|
||||
May be "1" or "0", and determines whether Taskwarrior will ask for
|
||||
.B confirmation=yes
|
||||
May be "yes" or "no", and determines whether Taskwarrior will ask for
|
||||
confirmation before deleting a task or performing the undo command. The default
|
||||
value is "1". Consider leaving this enabled, for safety.
|
||||
value is "yes". Consider leaving this setting as "yes", for safety.
|
||||
|
||||
.TP
|
||||
.B allow.empty.filter=1
|
||||
.B allow.empty.filter=yes
|
||||
An empty filter combined with a write command is potentially a way to modify
|
||||
all tasks by mistake, and when this is detected, confirmation is required.
|
||||
Setting this to '0' means that it is an error to use a write command with no
|
||||
Setting this to 'no' means that it is an error to use a write command with no
|
||||
filter.
|
||||
|
||||
.TP
|
||||
@@ -378,47 +344,47 @@ Default value is: 'You have more urgent tasks'.
|
||||
It is a gentle reminder that you are contradicting your own urgency settings.
|
||||
|
||||
.TP
|
||||
.B list.all.projects=0
|
||||
May be "1" or "0", and determines whether the 'projects' command lists all the project
|
||||
.B list.all.projects=no
|
||||
May be yes or no, and determines whether the 'projects' command lists all the project
|
||||
names you have used, or just the ones used in active tasks. The default value is
|
||||
"0".
|
||||
"no".
|
||||
|
||||
.TP
|
||||
.B summary.all.projects=0
|
||||
If set to "1", shows all projects in the summary report, even if there are no
|
||||
pending tasks. The default value is "0".
|
||||
.B summary.all.projects=no
|
||||
If set to yes, shows all projects in the summary report, even if there are no
|
||||
pending tasks. The default value is "no".
|
||||
|
||||
.TP
|
||||
.B complete.all.tags=1
|
||||
May be "1" or "0", and determines whether the tab completion scripts consider all
|
||||
.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. The default
|
||||
value is "0".
|
||||
value is "no".
|
||||
|
||||
.TP
|
||||
.B list.all.tags=1
|
||||
May be "1" or "0", and determines whether the 'tags' command lists all the tag
|
||||
.B list.all.tags=yes
|
||||
May be yes or no, and determines whether the 'tags' command lists all the tag
|
||||
names you have used, or just the ones used in active tasks. The default value is
|
||||
"0".
|
||||
"no".
|
||||
|
||||
.TP
|
||||
.B print.empty.columns=1
|
||||
May be "1" or "0", and determines whether columns with no data for any task are
|
||||
printed. Defaults to "0".
|
||||
.B print.empty.columns=no
|
||||
May be yes or no, and determines whether columns with no data for any task are
|
||||
printed. Defaults to no.
|
||||
|
||||
.TP
|
||||
.B search.case.sensitive=1
|
||||
May be "1" or "0", and determines whether keyword lookup and substitutions on the
|
||||
description and annotations are done in a case sensitive way. Defaults to "1" on
|
||||
most platforms. Defaults to "0" on Cygwin due to older regex library problems with
|
||||
.B search.case.sensitive=yes
|
||||
May be yes or no, and determines whether keyword lookup and substitutions on the
|
||||
description and annotations are done in a case sensitive way. Defaults to yes on
|
||||
most platforms. Defaults to no on Cygwin due to older regex library problems with
|
||||
case-insensitivity.
|
||||
|
||||
.TP
|
||||
.B regex=1
|
||||
Controls whether regular expression support is enabled. The default value is "1".
|
||||
.B regex=on
|
||||
Controls whether regular expression support is enabled. The default value is on.
|
||||
|
||||
.TP
|
||||
.B xterm.title=1
|
||||
Sets the xterm window title when reports are run. Defaults to "0".
|
||||
.B xterm.title=no
|
||||
Sets the xterm window title when reports are run. Defaults to off.
|
||||
|
||||
.TP
|
||||
.B expressions=infix|postfix
|
||||
@@ -426,15 +392,21 @@ Sets a preference for infix expressions (1 + 2) or postfix expressions (1 2 +).
|
||||
Defaults to infix.
|
||||
|
||||
.TP
|
||||
.B json.array=1
|
||||
.B json.array=on
|
||||
Determines whether the export command encloses the JSON output in '[...]' and
|
||||
adds ',' after each exported task object to create a properly-formed JSON
|
||||
array.
|
||||
With json.array=0, export writes raw JSON objects to STDOUT, one per line.
|
||||
Defaults to "1".
|
||||
With json.array=off, export writes raw JSON objects to STDOUT, one per line.
|
||||
Defaults to on.
|
||||
|
||||
.TP
|
||||
.B _forcecolor=1
|
||||
.B json.depends.array=on
|
||||
Determines whether the export command encodes dependencies as an array of string
|
||||
UUIDs, or one comma-separated string.
|
||||
Defaults to on.
|
||||
|
||||
.TP
|
||||
.B _forcecolor=no
|
||||
Taskwarrior shuts off color automatically when the output is not sent directly
|
||||
to a TTY. For example, this command:
|
||||
|
||||
@@ -450,8 +422,6 @@ $ task rc._forcecolor=yes list > file
|
||||
.RE
|
||||
.RE
|
||||
|
||||
Defaults to "0".
|
||||
|
||||
.TP
|
||||
.B active.indicator=*
|
||||
The character or string to show in the start.active column. Defaults to *.
|
||||
@@ -462,20 +432,16 @@ The character or string to show in the tag.indicator column. Defaults to +.
|
||||
|
||||
.TP
|
||||
.B dependency.indicator=D
|
||||
The character or string to show in the depends.indicator column. Defaults to D.
|
||||
The character or string to show in the depends.indicator column. Defaults to +.
|
||||
|
||||
.TP
|
||||
.B uda.<name>.indicator=U
|
||||
The character or string to show in the <uda>.indicator column. Defaults to U.
|
||||
|
||||
.TP
|
||||
.B recurrence=1
|
||||
.B recurrence=yes
|
||||
Controls whether recurrence is enabled, and whether recurring tasks continue to
|
||||
generate new task instances. Defaults to "1".
|
||||
|
||||
If you are syncing multiple clients, then it is advised that you set 'recurrence=1'
|
||||
on your primary client, and 'recurrence=0' on ALL other clients. This is a workaround
|
||||
for a duplication bug.
|
||||
generate new task instances. Defaults to 'yes'.
|
||||
|
||||
.TP
|
||||
.B recurrence.confirmation=prompt
|
||||
@@ -509,15 +475,15 @@ Minimum length of any abbreviated command/value. This means that "ve", "ver",
|
||||
Default is 2.
|
||||
|
||||
.TP
|
||||
.B debug=0
|
||||
.B debug=off
|
||||
Taskwarrior has a debug mode that causes diagnostic output to be displayed.
|
||||
Typically this is not something anyone would want, but when reporting a bug,
|
||||
debug output can be useful. It can also help explain how the command line is
|
||||
being parsed, but the information is displayed in a developer-friendly, not a
|
||||
user-friendly way.
|
||||
|
||||
Turning debug on automatically sets debug.hooks=1 and debug.parser=1
|
||||
if they do not already have assigned values. Defaults to "0".
|
||||
Turning debug on automatically sets debug.hooks=1, debug.parser=1 and debug.tls=2
|
||||
if they do not already have assigned values.
|
||||
|
||||
.TP
|
||||
.B debug.hooks=0
|
||||
@@ -532,7 +498,12 @@ Level 2 shows the parse tree from all phases of the parse.
|
||||
Level 3 shows expression evaluation details.
|
||||
|
||||
.TP
|
||||
.B obfuscate=0
|
||||
.B debug.tls=0
|
||||
Controls the GnuTLS diagnostic level. For 'sync' debugging. Level 0 means no
|
||||
diagnostics. Level 9 is the highest. Level 2 is a good setting for debugging.
|
||||
|
||||
.TP
|
||||
.B obfuscate=1
|
||||
When set to '1', will replace all report text with 'xxx'.
|
||||
This is useful for sharing report output in bug reports.
|
||||
Default value is '0'.
|
||||
@@ -544,12 +515,6 @@ Taskwarrior supports command aliases. This alias provides an alternate name
|
||||
any of the commands. Several commands you may use are actually aliases -
|
||||
the 'history' report, for example, or 'export'.
|
||||
|
||||
.TP
|
||||
.B burndown.cumulative=1
|
||||
May be "1" or "0", and controls the behaviour of the burndown command. When set
|
||||
to 1, it sums up all completed tasks, otherwise they only get plotted in the
|
||||
interval where the task was completed. Defaults to 1.
|
||||
|
||||
.SS DATES
|
||||
|
||||
.TP
|
||||
@@ -618,8 +583,6 @@ S two-digit seconds, for example 07 or 47
|
||||
J three-digit Julian day, for example 023 or 365
|
||||
.br
|
||||
j Julian day, for example 23 or 365
|
||||
.br
|
||||
w Week day, for example 0 for Monday, 5 for Friday
|
||||
.RE
|
||||
.RE
|
||||
|
||||
@@ -682,10 +645,8 @@ field that is set. Otherwise, they are set to the corresponding values of
|
||||
.RE
|
||||
|
||||
.TP
|
||||
.B date.iso=1
|
||||
Enables ISO-8601 date support. The default value is "1".
|
||||
|
||||
.SS CALENDAR
|
||||
.B date.iso=yes
|
||||
Enables ISO-8601 date support. The default value is "yes".
|
||||
|
||||
.TP
|
||||
.B weekstart=Sunday
|
||||
@@ -693,10 +654,10 @@ Determines the day a week starts. Valid values are Sunday or Monday only. The
|
||||
default value is "Sunday".
|
||||
|
||||
.TP
|
||||
.B displayweeknumber=1
|
||||
.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. The default value is
|
||||
"1".
|
||||
"yes".
|
||||
|
||||
.TP
|
||||
.B due=7
|
||||
@@ -705,11 +666,11 @@ considered due, and is colored accordingly. The default value is 7.
|
||||
|
||||
.TP
|
||||
.B calendar.details=sparse
|
||||
If set to "full" running "task calendar" will display the details of tasks with
|
||||
If set to full running "task calendar" will display the details of tasks with
|
||||
due dates that fall into the calendar period. The corresponding days will be
|
||||
color-coded in the calendar. If set to "sparse" only the corresponding days will
|
||||
color-coded in the calendar. If set to sparse only the corresponding days will
|
||||
be color coded and no details will be displayed. The displaying of due dates
|
||||
with details is turned off by setting the variable to "none". The default value
|
||||
with details is turned off by setting the variable to none. The default value
|
||||
is "sparse".
|
||||
|
||||
.TP
|
||||
@@ -718,9 +679,9 @@ The report to run when displaying the details of tasks with due dates when
|
||||
running the "task calendar" command. The default value is "list".
|
||||
|
||||
.TP
|
||||
.B calendar.offset=0
|
||||
If "1" the first month in the calendar report is effectively changed by the
|
||||
offset value specified in calendar.offset.value. It defaults to "0".
|
||||
.B calendar.offset=off
|
||||
If "on" the first month in the calendar report is effectively changed by the
|
||||
offset value specified in calendar.offset.value. It defaults to "off".
|
||||
|
||||
.TP
|
||||
.B calendar.offset.value=-1
|
||||
@@ -728,7 +689,7 @@ The offset value to apply to the first month in the calendar report. The default
|
||||
value is "-1".
|
||||
|
||||
.TP
|
||||
.B calendar.holidays=none
|
||||
.B calendar.holidays=full
|
||||
If set to full running "task calendar" will display holidays in the calendar by
|
||||
color-coding the corresponding days. A detailed list with the dates and names
|
||||
of the holidays is also shown. If set to sparse only the days are color-coded
|
||||
@@ -736,21 +697,15 @@ and no details on the holidays will be displayed. The displaying of holidays is
|
||||
turned off by setting the variable to none. The default value is "none".
|
||||
|
||||
.TP
|
||||
.B calendar.legend=1
|
||||
Determines whether the calendar legend is displayed. The default value is "1".
|
||||
|
||||
.TP
|
||||
.B calendar.monthsperline=N
|
||||
Determines how many months the "task calendar" command renders across the
|
||||
screen. Defaults to however many will fit. If more months than will fit are
|
||||
specified, Taskwarrior will only show as many that will fit.
|
||||
.B calendar.legend=yes
|
||||
Determines whether the calendar legend is displayed. The default value is "yes".
|
||||
|
||||
.SS JOURNAL ENTRIES
|
||||
|
||||
.TP
|
||||
.B journal.time=0
|
||||
May be "1" or "0", and determines whether the 'start' and 'stop' commands should
|
||||
record an annotation when being executed. The default value is "0". The text of
|
||||
.B journal.time=no
|
||||
May be yes or no, and determines whether the 'start' and 'stop' commands should
|
||||
record an annotation when being executed. The default value is "no". The text of
|
||||
the corresponding annotations is controlled by:
|
||||
|
||||
.TP
|
||||
@@ -764,13 +719,13 @@ The text of the annotation that is recorded when executing the stop command and
|
||||
having set journal.time.
|
||||
|
||||
.TP
|
||||
.B journal.info=1
|
||||
.B journal.info=on
|
||||
When enabled, this setting causes a change log of each task to be displayed by
|
||||
the 'info' command. Default value is "1".
|
||||
the 'info' command. Default value is "on".
|
||||
|
||||
.SS HOLIDAYS
|
||||
Holidays are entered either directly in the .taskrc file or via an include file
|
||||
that is specified in .taskrc. For single-day holidays the name and the date is
|
||||
that is specified in .taskrc. For each holiday the name and the date is
|
||||
required to be given:
|
||||
|
||||
.RS
|
||||
@@ -779,20 +734,10 @@ required to be given:
|
||||
holiday.towel.name=Day of the towel
|
||||
.br
|
||||
holiday.towel.date=20100525
|
||||
.RE
|
||||
.RE
|
||||
|
||||
For holidays that span a range of days (i.e. vacation), you can use a start date
|
||||
and an end date:
|
||||
|
||||
.RS
|
||||
.RS
|
||||
.br
|
||||
holiday.sysadmin.name=System Administrator Appreciation Week
|
||||
holiday.sysadmin.name=System Administrator Appreciation Day
|
||||
.br
|
||||
holiday.sysadmin.start=20100730
|
||||
.br
|
||||
holiday.sysadmin.end=20100805
|
||||
holiday.sysadmin.date=20100730
|
||||
.RE
|
||||
.RE
|
||||
|
||||
@@ -822,29 +767,35 @@ be included like this:
|
||||
.RS
|
||||
.RS
|
||||
.br
|
||||
include holidays.en-US.rc
|
||||
include ${CMAKE_INSTALL_PREFIX}/${TASK_RCDIR}/holidays.en-US.rc
|
||||
.RE
|
||||
.RE
|
||||
|
||||
.TP
|
||||
.B monthsperline=3
|
||||
Determines how many months the "task calendar" command renders across the
|
||||
screen. Defaults to however many will fit. If more months than will fit are
|
||||
specified, Taskwarrior will only show as many that will fit.
|
||||
|
||||
.SS DEPENDENCIES
|
||||
|
||||
.TP
|
||||
.B dependency.reminder=1
|
||||
.B dependency.reminder=on
|
||||
Determines whether dependency chain violations generate reminders.
|
||||
|
||||
.TP
|
||||
.B dependency.confirmation=1
|
||||
.B dependency.confirmation=yes
|
||||
Determines whether dependency chain repair requires confirmation.
|
||||
|
||||
.SS COLOR CONTROLS
|
||||
|
||||
.TP
|
||||
.B color=1
|
||||
May be "1" or "0". Determines whether Taskwarrior uses color. When "0",
|
||||
.B color=on
|
||||
May be "on" or "off". Determines whether Taskwarrior uses color. When "off",
|
||||
will use dashes (-----) to underline column headings.
|
||||
|
||||
.TP
|
||||
.B fontunderline=1
|
||||
.B fontunderline=on
|
||||
Determines if font underlines or ASCII dashes should be used to underline
|
||||
headers, even when color is enabled.
|
||||
.RE
|
||||
@@ -855,7 +806,7 @@ automatic coloring of that task. A list of valid colors, depending on your
|
||||
terminal, can be obtained by running the command:
|
||||
|
||||
.RS
|
||||
.B task colors
|
||||
.B task color
|
||||
.RE
|
||||
|
||||
.RS
|
||||
@@ -927,11 +878,12 @@ desired. In such cases, use the following option to disable this behaviour:
|
||||
.RE
|
||||
|
||||
.TP
|
||||
.B rule.color.merge=1
|
||||
Can be "1" or "0". When "0", disables merging of colors produced by
|
||||
.B rule.color.merge=yes
|
||||
Can be "yes" or "no". When "no", disables merging of colors produced by
|
||||
different color rules. Use if your color scheme produces unpleasing
|
||||
foreground and background combinations.
|
||||
|
||||
|
||||
See the task-color(5) man pages for color details.
|
||||
.RE
|
||||
|
||||
@@ -1019,11 +971,6 @@ Color of today with due tasks in calendar.
|
||||
Color of days with overdue tasks in calendar.
|
||||
.RE
|
||||
|
||||
.TP
|
||||
.B color.calendar.scheduled=black on orange
|
||||
Color of days with scheduled tasks in calendar.
|
||||
.RE
|
||||
|
||||
.TP
|
||||
.B color.calendar.weekend=bright white on black
|
||||
Color of weekend days in calendar.
|
||||
@@ -1109,7 +1056,7 @@ Colors the output of the sync command.
|
||||
.TP
|
||||
.B rule.precedence.color=due.today,active,blocking,blocked,overdue,due,
|
||||
.B scheduled,keyword.,project.,tag.,uda.,recurring,
|
||||
.B tagged,completed,deleted
|
||||
.B pri.,tagged,completed,deleted
|
||||
.RS
|
||||
This setting specifies the precedence of the color rules, from highest to
|
||||
lowest. Note that the prefix 'color.' is omitted (for brevity), and that any
|
||||
@@ -1202,7 +1149,7 @@ The coefficients reflect the relative importance of the various terms in the
|
||||
urgency calculation. These are default values, and may be modified to suit your
|
||||
preferences, but it is important that you carefully consider any modifications.
|
||||
|
||||
.B urgency.inherit=0
|
||||
.B urgency.inherit=off
|
||||
.RS
|
||||
Not actually a coefficient. When enabled, blocking tasks inherit
|
||||
the highest urgency value found in the tasks they block. This is
|
||||
@@ -1229,14 +1176,6 @@ Provides a default due date for the
|
||||
command, if you don't specify one. You can use a date, or a duration value which
|
||||
is assumed to be relative to 'now'. The default is blank.
|
||||
|
||||
.TP
|
||||
.B
|
||||
default.scheduled=...
|
||||
Provides a default scheduled date for the
|
||||
.I task add
|
||||
command, if you don't specify one. You can use a date, or a duration value which
|
||||
is assumed to be relative to 'now'. The default is blank.
|
||||
|
||||
.TP
|
||||
.B
|
||||
uda.<name>.default=...
|
||||
@@ -1294,12 +1233,6 @@ The description for report X when running the "task help" command.
|
||||
This is a comma-separated list of columns and formatting specifiers. See the
|
||||
command 'task columns' for a full list of options and examples.
|
||||
|
||||
.TP
|
||||
.B report.X.context
|
||||
A boolean value representing whether the given report should respect (apply)
|
||||
the currently active context. See CONTEXT section for details about context.
|
||||
Defaults to 1.
|
||||
|
||||
.TP
|
||||
.B report.X.labels
|
||||
The labels for each column that will be used when generating report X. The
|
||||
@@ -1331,9 +1264,6 @@ will be presented in the order (if any) in which they are selected.
|
||||
This adds a filter to the report X so that only tasks matching the filter
|
||||
criteria are displayed in the generated report.
|
||||
|
||||
There is a special case for 'report.timesheet.filter', which may be specified
|
||||
even though the 'timesheet' report is not very customizable.
|
||||
|
||||
.TP
|
||||
.B report.X.dateformat
|
||||
This adds a dateformat to the report X that will be used by the "due date"
|
||||
@@ -1495,40 +1425,75 @@ Stores the value of the currently active context.
|
||||
.RE
|
||||
|
||||
.TP
|
||||
.B context.<name>.read=<filter>
|
||||
.RE
|
||||
.br
|
||||
.B context.<name>.write=<modifications>
|
||||
.B context.<name>=<filter>
|
||||
.RS
|
||||
Stores the definition of the read or write context with the name <name>. Read
|
||||
context is the default filter applied when the context is active. The write
|
||||
context are the default modifications applied to newly added tasks when the
|
||||
context is active.
|
||||
Stores the definition of the context with the name <name>.
|
||||
.RE
|
||||
|
||||
.TP
|
||||
.B context.<name>.rc.<key>=<value>
|
||||
.RS
|
||||
The rc type allows to override any configuration parameter for the current
|
||||
context, e.g. if the default command for the context home should be changed to
|
||||
home_report, the following statement could be added:
|
||||
|
||||
context.home.rc.default.command=home_report
|
||||
.RE
|
||||
|
||||
|
||||
.SS SYNC
|
||||
|
||||
These configuration settings are used to connect and sync tasks with the task
|
||||
server.
|
||||
|
||||
.TP
|
||||
.B taskd.server=<host>:<port>
|
||||
.RS
|
||||
Specifies the hostname and port of the Taskserver. Hostname may be an IPv4 or
|
||||
IPv6 address, or domain. Port is an integer.
|
||||
.RE
|
||||
|
||||
.TP
|
||||
.B taskd.credentials=<organization>/<user>/<key>
|
||||
.RS
|
||||
User identification for the Taskserver, which includes a private key.
|
||||
.RE
|
||||
|
||||
.TP
|
||||
.B taskd.certificate=<path>
|
||||
.RS
|
||||
Specifies the path to the client certificate used for identification with the
|
||||
Taskserver.
|
||||
.RE
|
||||
|
||||
.TP
|
||||
.B taskd.key=<path>
|
||||
.RS
|
||||
Specifies the path to the client key used for encrypted communication with the
|
||||
Taskserver.
|
||||
.RE
|
||||
|
||||
.TP
|
||||
.B taskd.ca=<path>
|
||||
.RS
|
||||
Specifies the path to the CA certificate in the event that your Taskserver is
|
||||
using a self-signed certificate. Optional.
|
||||
.RE
|
||||
|
||||
.TP
|
||||
.B taskd.trust=strict|ignore hostname|allow all
|
||||
.RS
|
||||
This settings allows you to override the trust level when server certificates
|
||||
are validated. With "allow all", the server certificate is trusted
|
||||
automatically. With "ignore hostname", the server certificate is verified but
|
||||
the hostname is ignored. With "strict", the server certificate is verified.
|
||||
Default is "strict", which requires full validation.
|
||||
.RE
|
||||
|
||||
.TP
|
||||
.B taskd.ciphers=NORMAL
|
||||
Override of the cipher selection. The set of ciphers used by TLS may be
|
||||
controlled by both server and client. There must be some overlap between
|
||||
client and server supported ciphers, or communication cannot occur.
|
||||
Default is "NORMAL". See GnuTLS documentation for full details.
|
||||
.RE
|
||||
|
||||
.SH "CREDITS & COPYRIGHTS"
|
||||
Copyright (C) 2006 \- 2021 T. Babej, P. Beckingham, F. Hernandez.
|
||||
Copyright (C) 2006 \- 2016 P. Beckingham, F. Hernandez.
|
||||
|
||||
This man page was originally written by Federico Hernandez.
|
||||
|
||||
Taskwarrior is distributed under the MIT license. See
|
||||
https://www.opensource.org/licenses/mit-license.php for more information.
|
||||
http://www.opensource.org/licenses/mit-license.php for more information.
|
||||
|
||||
.SH SEE ALSO
|
||||
.BR task(1),
|
||||
@@ -1539,17 +1504,18 @@ For more information regarding Taskwarrior, see the following:
|
||||
|
||||
.TP
|
||||
The official site at
|
||||
<https://taskwarrior.org>
|
||||
<http://taskwarrior.org>
|
||||
|
||||
.TP
|
||||
The official code repository at
|
||||
<https://github.com/GothenburgBitFactory/taskwarrior>
|
||||
<https://git.tasktools.org/scm/tm/task.git>
|
||||
|
||||
.TP
|
||||
You can contact the project by emailing
|
||||
<support@GothenburgBitFactory.org>
|
||||
<support@taskwarrior.org>
|
||||
|
||||
.SH REPORTING BUGS
|
||||
.TP
|
||||
Bugs in Taskwarrior may be reported to the issue-tracker at
|
||||
<https://github.com/GothenburgBitFactory/taskwarrior/issues>
|
||||
<https://bug.tasktools.org/>
|
||||
|
||||
|
||||
@@ -1,8 +1,5 @@
|
||||
Themes
|
||||
|
||||
These scripts are a way to generate a little sample data, and show the color
|
||||
themes. It is not intended for general use.
|
||||
|
||||
To generate samples of themes, first execute the 'setup' script to generate the
|
||||
sample data. Note that this data may need to be tweaked to include qualities
|
||||
that need to be illustrated in theme sample.
|
||||
@@ -1,6 +1,6 @@
|
||||
###############################################################################
|
||||
#
|
||||
# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
|
||||
# Copyright 2006 - 2016, Paul Beckingham, Federico Hernandez.
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -20,7 +20,7 @@
|
||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
# SOFTWARE.
|
||||
#
|
||||
# https://www.opensource.org/licenses/mit-license.php
|
||||
# http://www.opensource.org/licenses/mit-license.php
|
||||
#
|
||||
###############################################################################
|
||||
|
||||
@@ -57,7 +57,7 @@ color.uda.priority.L=
|
||||
# Tags
|
||||
color.tag.next=bold yellow
|
||||
color.tag.none=
|
||||
color.tagged=
|
||||
color.tagged=green
|
||||
|
||||
# Due
|
||||
color.due=red
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
###############################################################################
|
||||
#
|
||||
# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
|
||||
# Copyright 2006 - 2016, Paul Beckingham, Federico Hernandez.
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -20,7 +20,7 @@
|
||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
# SOFTWARE.
|
||||
#
|
||||
# https://www.opensource.org/licenses/mit-license.php
|
||||
# http://www.opensource.org/licenses/mit-license.php
|
||||
#
|
||||
###############################################################################
|
||||
|
||||
@@ -57,7 +57,7 @@ color.uda.priority.M=color250
|
||||
# Tags
|
||||
color.tag.next=rgb440
|
||||
color.tag.none=
|
||||
color.tagged=
|
||||
color.tagged=rgb031
|
||||
|
||||
# Due
|
||||
color.due.today=rgb400
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
###############################################################################
|
||||
#
|
||||
# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
|
||||
# Copyright 2006 - 2016, Paul Beckingham, Federico Hernandez.
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -20,7 +20,7 @@
|
||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
# SOFTWARE.
|
||||
#
|
||||
# https://www.opensource.org/licenses/mit-license.php
|
||||
# http://www.opensource.org/licenses/mit-license.php
|
||||
#
|
||||
###############################################################################
|
||||
|
||||
@@ -57,7 +57,7 @@ color.uda.priority.M=rgb025
|
||||
# Tags
|
||||
color.tag.next=rgb550
|
||||
color.tag.none=
|
||||
color.tagged=
|
||||
color.tagged=color246
|
||||
|
||||
# Due
|
||||
color.due.today=color252
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
###############################################################################
|
||||
#
|
||||
# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
|
||||
# Copyright 2006 - 2016, Paul Beckingham, Federico Hernandez.
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -20,7 +20,7 @@
|
||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
# SOFTWARE.
|
||||
#
|
||||
# https://www.opensource.org/licenses/mit-license.php
|
||||
# http://www.opensource.org/licenses/mit-license.php
|
||||
#
|
||||
###############################################################################
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
###############################################################################
|
||||
#
|
||||
# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
|
||||
# Copyright 2006 - 2016, Paul Beckingham, Federico Hernandez.
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -20,7 +20,7 @@
|
||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
# SOFTWARE.
|
||||
#
|
||||
# https://www.opensource.org/licenses/mit-license.php
|
||||
# http://www.opensource.org/licenses/mit-license.php
|
||||
#
|
||||
###############################################################################
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
###############################################################################
|
||||
#
|
||||
# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
|
||||
# Copyright 2006 - 2016, Paul Beckingham, Federico Hernandez.
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -20,7 +20,7 @@
|
||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
# SOFTWARE.
|
||||
#
|
||||
# https://www.opensource.org/licenses/mit-license.php
|
||||
# http://www.opensource.org/licenses/mit-license.php
|
||||
#
|
||||
###############################################################################
|
||||
|
||||
@@ -57,7 +57,7 @@ color.uda.priority.M=rgb030
|
||||
# Tags
|
||||
color.tag.next=rgb440
|
||||
color.tag.none=
|
||||
color.tagged=
|
||||
color.tagged=color246
|
||||
|
||||
# Due
|
||||
color.due.today=color252
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
###############################################################################
|
||||
#
|
||||
# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
|
||||
# Copyright 2006 - 2016, Paul Beckingham, Federico Hernandez.
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -20,7 +20,7 @@
|
||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
# SOFTWARE.
|
||||
#
|
||||
# https://www.opensource.org/licenses/mit-license.php
|
||||
# http://www.opensource.org/licenses/mit-license.php
|
||||
#
|
||||
###############################################################################
|
||||
|
||||
@@ -57,7 +57,7 @@ color.uda.priority.M=rgb400
|
||||
# Tags
|
||||
color.tag.next=rgb511
|
||||
color.tag.none=
|
||||
color.tagged=
|
||||
color.tagged=color246
|
||||
|
||||
# Due
|
||||
color.due.today=color252
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
###############################################################################
|
||||
#
|
||||
# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
|
||||
# Copyright 2006 - 2016, Paul Beckingham, Federico Hernandez.
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -20,7 +20,7 @@
|
||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
# SOFTWARE.
|
||||
#
|
||||
# https://www.opensource.org/licenses/mit-license.php
|
||||
# http://www.opensource.org/licenses/mit-license.php
|
||||
#
|
||||
###############################################################################
|
||||
|
||||
@@ -57,7 +57,7 @@ color.uda.priority.L=rgb325
|
||||
# Tags
|
||||
color.tag.next=
|
||||
color.tag.none=
|
||||
color.tagged=
|
||||
color.tagged=rgb334
|
||||
|
||||
# Due
|
||||
color.due=rgb015
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
###############################################################################
|
||||
#
|
||||
# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
|
||||
# Copyright 2006 - 2016, Paul Beckingham, Federico Hernandez.
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -20,7 +20,7 @@
|
||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
# SOFTWARE.
|
||||
#
|
||||
# https://www.opensource.org/licenses/mit-license.php
|
||||
# http://www.opensource.org/licenses/mit-license.php
|
||||
#
|
||||
###############################################################################
|
||||
|
||||
@@ -57,7 +57,7 @@ color.uda.priority.L=rgb010
|
||||
# Tags
|
||||
color.tag.next=
|
||||
color.tag.none=
|
||||
color.tagged=
|
||||
color.tagged=rgb342
|
||||
|
||||
# Due
|
||||
color.due=rgb440
|
||||
|
||||
69
doc/rc/holidays.be-BY.rc
Normal file
69
doc/rc/holidays.be-BY.rc
Normal file
@@ -0,0 +1,69 @@
|
||||
###############################################################################
|
||||
# International Holiday Data provided by Holidata.net
|
||||
# http://holidata.net/be-BY/2015.json
|
||||
# http://holidata.net/be-BY/2016.json
|
||||
#
|
||||
# Copyright 2006 - 2016, Paul Beckingham, Federico Hernandez.
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to deal
|
||||
# in the Software without restriction, including without limitation the rights
|
||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
# copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be included
|
||||
# in all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
# SOFTWARE.
|
||||
#
|
||||
# http://www.opensource.org/licenses/mit-license.php
|
||||
#
|
||||
###############################################################################
|
||||
|
||||
holiday.be-BY1.name=Новы Год
|
||||
holiday.be-BY1.date=20150101
|
||||
holiday.be-BY2.name=Раство Хрыстова(праваслаўнае)
|
||||
holiday.be-BY2.date=20150107
|
||||
holiday.be-BY3.name=Міжнародны жаночы дзень
|
||||
holiday.be-BY3.date=20150803
|
||||
holiday.be-BY4.name=Пасха(праваслаўная)
|
||||
holiday.be-BY4.date=20150420
|
||||
holiday.be-BY5.name=Радуніца
|
||||
holiday.be-BY5.date=20150421
|
||||
holiday.be-BY6.name=Свята працы
|
||||
holiday.be-BY6.date=20150501
|
||||
holiday.be-BY7.name=Дзень Перамогі
|
||||
holiday.be-BY7.date=20150509
|
||||
holiday.be-BY8.name=Дзень незалежнаці
|
||||
holiday.be-BY8.date=20150703
|
||||
holiday.be-BY9.name=Дзень Кастрычніцкай рэвалюцыі
|
||||
holiday.be-BY9.date=20151107
|
||||
holiday.be-BY10.name=Раство Хрыстова(у заходніх хрысціян)
|
||||
holiday.be-BY10.date=20151225
|
||||
holiday.be-BY11.name=Новы Год
|
||||
holiday.be-BY11.date=20160101
|
||||
holiday.be-BY12.name=Раство Хрыстова(праваслаўнае)
|
||||
holiday.be-BY12.date=20160107
|
||||
holiday.be-BY13.name=Міжнародны жаночы дзень
|
||||
holiday.be-BY13.date=20160803
|
||||
holiday.be-BY14.name=Пасха(праваслаўная)
|
||||
holiday.be-BY14.date=20160327
|
||||
holiday.be-BY15.name=Радуніца
|
||||
holiday.be-BY15.date=20160510
|
||||
holiday.be-BY16.name=Свята працы
|
||||
holiday.be-BY16.date=20160501
|
||||
holiday.be-BY17.name=Дзень Перамогі
|
||||
holiday.be-BY17.date=20160509
|
||||
holiday.be-BY18.name=Дзень незалежнаці
|
||||
holiday.be-BY18.date=20160703
|
||||
holiday.be-BY19.name=Дзень Кастрычніцкай рэвалюцыі
|
||||
holiday.be-BY19.date=20161107
|
||||
holiday.be-BY20.name=Раство Хрыстова(у заходніх хрысціян)
|
||||
holiday.be-BY20.date=20161225
|
||||
@@ -1,9 +1,9 @@
|
||||
###############################################################################
|
||||
# International Holiday Data provided by Holidata.net
|
||||
# https://holidata.net/cs-CZ/2021.json
|
||||
# https://holidata.net/cs-CZ/2022.json
|
||||
# http://holidata.net/cs-CZ/2015.json
|
||||
# http://holidata.net/cs-CZ/2016.json
|
||||
#
|
||||
# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
|
||||
# Copyright 2006 - 2016, Paul Beckingham, Federico Hernandez.
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -23,63 +23,59 @@
|
||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
# SOFTWARE.
|
||||
#
|
||||
# https://www.opensource.org/licenses/mit-license.php
|
||||
# http://www.opensource.org/licenses/mit-license.php
|
||||
#
|
||||
###############################################################################
|
||||
|
||||
holiday.cs-CZ1.name=Nový rok
|
||||
holiday.cs-CZ1.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
|
||||
holiday.cs-CZ1.date=20150101
|
||||
holiday.cs-CZ2.name=Den obnovy samostatnosti českého státu
|
||||
holiday.cs-CZ2.date=20150101
|
||||
holiday.cs-CZ3.name=Velikonoční pondělí
|
||||
holiday.cs-CZ3.date=20150406
|
||||
holiday.cs-CZ4.name=Svátek práce
|
||||
holiday.cs-CZ4.date=20150501
|
||||
holiday.cs-CZ5.name=Den vítězství
|
||||
holiday.cs-CZ5.date=20150508
|
||||
holiday.cs-CZ6.name=Den slovanských věrozvěstů
|
||||
holiday.cs-CZ6.date=20150705
|
||||
holiday.cs-CZ7.name=Den upálení mistra Jana Husa
|
||||
holiday.cs-CZ7.date=20150706
|
||||
holiday.cs-CZ8.name=Den české státnosti
|
||||
holiday.cs-CZ8.date=20150928
|
||||
holiday.cs-CZ9.name=Den vzniku samostatného československého státu
|
||||
holiday.cs-CZ9.date=20151028
|
||||
holiday.cs-CZ10.name=Den boje za svobodu a demokracii
|
||||
holiday.cs-CZ10.date=20151117
|
||||
holiday.cs-CZ11.name=Štědrý den
|
||||
holiday.cs-CZ11.date=20151224
|
||||
holiday.cs-CZ12.name=1. svátek vánoční
|
||||
holiday.cs-CZ12.date=20151225
|
||||
holiday.cs-CZ13.name=2. svátek vánoční
|
||||
holiday.cs-CZ13.date=20151226
|
||||
holiday.cs-CZ14.name=Nový rok
|
||||
holiday.cs-CZ14.date=20160101
|
||||
holiday.cs-CZ15.name=Den obnovy samostatnosti českého státu
|
||||
holiday.cs-CZ15.date=20160101
|
||||
holiday.cs-CZ16.name=Velikonoční pondělí
|
||||
holiday.cs-CZ16.date=20160328
|
||||
holiday.cs-CZ17.name=Svátek práce
|
||||
holiday.cs-CZ17.date=20160501
|
||||
holiday.cs-CZ18.name=Den vítězství
|
||||
holiday.cs-CZ18.date=20160508
|
||||
holiday.cs-CZ19.name=Den slovanských věrozvěstů
|
||||
holiday.cs-CZ19.date=20160705
|
||||
holiday.cs-CZ20.name=Den upálení mistra Jana Husa
|
||||
holiday.cs-CZ20.date=20160706
|
||||
holiday.cs-CZ21.name=Den české státnosti
|
||||
holiday.cs-CZ21.date=20160928
|
||||
holiday.cs-CZ22.name=Den vzniku samostatného československého státu
|
||||
holiday.cs-CZ22.date=20161028
|
||||
holiday.cs-CZ23.name=Den boje za svobodu a demokracii
|
||||
holiday.cs-CZ23.date=20161117
|
||||
holiday.cs-CZ24.name=Štědrý den
|
||||
holiday.cs-CZ24.date=20161224
|
||||
holiday.cs-CZ25.name=1. svátek vánoční
|
||||
holiday.cs-CZ25.date=20161225
|
||||
holiday.cs-CZ26.name=2. svátek vánoční
|
||||
holiday.cs-CZ26.date=20161226
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
###############################################################################
|
||||
# International Holiday Data provided by Holidata.net
|
||||
# https://holidata.net/da-DK/2021.json
|
||||
# https://holidata.net/da-DK/2022.json
|
||||
# http://holidata.net/da-DK/2015.json
|
||||
# http://holidata.net/da-DK/2016.json
|
||||
#
|
||||
# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
|
||||
# Copyright 2006 - 2016, Paul Beckingham, Federico Hernandez.
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -23,55 +23,51 @@
|
||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
# SOFTWARE.
|
||||
#
|
||||
# https://www.opensource.org/licenses/mit-license.php
|
||||
# http://www.opensource.org/licenses/mit-license.php
|
||||
#
|
||||
###############################################################################
|
||||
|
||||
holiday.da-DK1.name=Nytårsdag
|
||||
holiday.da-DK1.date=20210101
|
||||
holiday.da-DK1.date=20150101
|
||||
holiday.da-DK2.name=Skærtorsdag
|
||||
holiday.da-DK2.date=20210401
|
||||
holiday.da-DK2.date=20150402
|
||||
holiday.da-DK3.name=Langfredag
|
||||
holiday.da-DK3.date=20210402
|
||||
holiday.da-DK3.date=20150403
|
||||
holiday.da-DK4.name=Påskedag
|
||||
holiday.da-DK4.date=20210404
|
||||
holiday.da-DK4.date=20150405
|
||||
holiday.da-DK5.name=Anden påskedag
|
||||
holiday.da-DK5.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-DK5.date=20150406
|
||||
holiday.da-DK6.name=Kristi himmelfartsdag
|
||||
holiday.da-DK6.date=20150514
|
||||
holiday.da-DK7.name=Pinsedag
|
||||
holiday.da-DK7.date=20150524
|
||||
holiday.da-DK8.name=Anden pinsedag
|
||||
holiday.da-DK8.date=20150525
|
||||
holiday.da-DK9.name=Grundlovsdag
|
||||
holiday.da-DK9.date=20150605
|
||||
holiday.da-DK10.name=Juledag
|
||||
holiday.da-DK10.date=20151225
|
||||
holiday.da-DK11.name=Anden juledag
|
||||
holiday.da-DK11.date=20151226
|
||||
holiday.da-DK12.name=Nytårsdag
|
||||
holiday.da-DK12.date=20160101
|
||||
holiday.da-DK13.name=Skærtorsdag
|
||||
holiday.da-DK13.date=20160324
|
||||
holiday.da-DK14.name=Langfredag
|
||||
holiday.da-DK14.date=20160325
|
||||
holiday.da-DK15.name=Påskedag
|
||||
holiday.da-DK15.date=20160327
|
||||
holiday.da-DK16.name=Anden påskedag
|
||||
holiday.da-DK16.date=20160328
|
||||
holiday.da-DK17.name=Kristi himmelfartsdag
|
||||
holiday.da-DK17.date=20160505
|
||||
holiday.da-DK18.name=Pinsedag
|
||||
holiday.da-DK18.date=20160515
|
||||
holiday.da-DK19.name=Anden pinsedag
|
||||
holiday.da-DK19.date=20160516
|
||||
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
|
||||
holiday.da-DK20.date=20160605
|
||||
holiday.da-DK21.name=Juledag
|
||||
holiday.da-DK21.date=20161225
|
||||
holiday.da-DK22.name=Anden juledag
|
||||
holiday.da-DK22.date=20161226
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
###############################################################################
|
||||
# International Holiday Data provided by Holidata.net
|
||||
# https://holidata.net/de-AT/2021.json
|
||||
# https://holidata.net/de-AT/2022.json
|
||||
# http://holidata.net/de-AT/2015.json
|
||||
# http://holidata.net/de-AT/2016.json
|
||||
#
|
||||
# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
|
||||
# Copyright 2006 - 2016, Paul Beckingham, Federico Hernandez.
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -23,103 +23,103 @@
|
||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
# SOFTWARE.
|
||||
#
|
||||
# https://www.opensource.org/licenses/mit-license.php
|
||||
# http://www.opensource.org/licenses/mit-license.php
|
||||
#
|
||||
###############################################################################
|
||||
|
||||
holiday.de-AT1.name=Neujahr
|
||||
holiday.de-AT1.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-AT1.date=20150101
|
||||
holiday.de-AT2.name=Heilige drei Könige
|
||||
holiday.de-AT2.date=20150106
|
||||
holiday.de-AT3.name=Josef (K, St, T, V)
|
||||
holiday.de-AT3.date=20150319
|
||||
holiday.de-AT4.name=Karfreitag
|
||||
holiday.de-AT4.date=20210402
|
||||
holiday.de-AT4.date=20150403
|
||||
holiday.de-AT5.name=Ostersonntag
|
||||
holiday.de-AT5.date=20210404
|
||||
holiday.de-AT5.date=20150405
|
||||
holiday.de-AT6.name=Ostermontag
|
||||
holiday.de-AT6.date=20210405
|
||||
holiday.de-AT6.date=20150406
|
||||
holiday.de-AT7.name=Staatsfeiertag
|
||||
holiday.de-AT7.date=20210501
|
||||
holiday.de-AT8.name=Florian
|
||||
holiday.de-AT8.date=20210504
|
||||
holiday.de-AT7.date=20150501
|
||||
holiday.de-AT8.name=Florian (O)
|
||||
holiday.de-AT8.date=20150504
|
||||
holiday.de-AT9.name=Christi Himmelfahrt
|
||||
holiday.de-AT9.date=20210513
|
||||
holiday.de-AT9.date=20150514
|
||||
holiday.de-AT10.name=Pfingstsonntag
|
||||
holiday.de-AT10.date=20210523
|
||||
holiday.de-AT10.date=20150524
|
||||
holiday.de-AT11.name=Pfingstmontag
|
||||
holiday.de-AT11.date=20210524
|
||||
holiday.de-AT11.date=20150525
|
||||
holiday.de-AT12.name=Fronleichnam
|
||||
holiday.de-AT12.date=20210603
|
||||
holiday.de-AT12.date=20150604
|
||||
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-AT13.date=20150815
|
||||
holiday.de-AT14.name=Rupert (S)
|
||||
holiday.de-AT14.date=20150924
|
||||
holiday.de-AT15.name=Tag der Volksabstimmung (K)
|
||||
holiday.de-AT15.date=20151010
|
||||
holiday.de-AT16.name=Nationalfeiertag
|
||||
holiday.de-AT16.date=20211026
|
||||
holiday.de-AT16.date=20151026
|
||||
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-AT17.date=20151101
|
||||
holiday.de-AT18.name=Martin (B)
|
||||
holiday.de-AT18.date=20151111
|
||||
holiday.de-AT19.name=Leopold (W, N)
|
||||
holiday.de-AT19.date=20151115
|
||||
holiday.de-AT20.name=Mariä Empfängnis
|
||||
holiday.de-AT20.date=20211208
|
||||
holiday.de-AT20.date=20151208
|
||||
holiday.de-AT21.name=Heiliger Abend
|
||||
holiday.de-AT21.date=20211224
|
||||
holiday.de-AT21.date=20151224
|
||||
holiday.de-AT22.name=Christtag
|
||||
holiday.de-AT22.date=20211225
|
||||
holiday.de-AT22.date=20151225
|
||||
holiday.de-AT23.name=Stefanitag
|
||||
holiday.de-AT23.date=20211226
|
||||
holiday.de-AT23.date=20151226
|
||||
holiday.de-AT24.name=Silvester
|
||||
holiday.de-AT24.date=20211231
|
||||
holiday.de-AT24.date=20151231
|
||||
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-AT25.date=20160101
|
||||
holiday.de-AT26.name=Heilige drei Könige
|
||||
holiday.de-AT26.date=20160106
|
||||
holiday.de-AT27.name=Josef (K, St, T, V)
|
||||
holiday.de-AT27.date=20160319
|
||||
holiday.de-AT28.name=Karfreitag
|
||||
holiday.de-AT28.date=20220415
|
||||
holiday.de-AT28.date=20160325
|
||||
holiday.de-AT29.name=Ostersonntag
|
||||
holiday.de-AT29.date=20220417
|
||||
holiday.de-AT29.date=20160327
|
||||
holiday.de-AT30.name=Ostermontag
|
||||
holiday.de-AT30.date=20220418
|
||||
holiday.de-AT30.date=20160328
|
||||
holiday.de-AT31.name=Staatsfeiertag
|
||||
holiday.de-AT31.date=20220501
|
||||
holiday.de-AT32.name=Florian
|
||||
holiday.de-AT32.date=20220504
|
||||
holiday.de-AT31.date=20160501
|
||||
holiday.de-AT32.name=Florian (O)
|
||||
holiday.de-AT32.date=20160504
|
||||
holiday.de-AT33.name=Christi Himmelfahrt
|
||||
holiday.de-AT33.date=20220526
|
||||
holiday.de-AT33.date=20160505
|
||||
holiday.de-AT34.name=Pfingstsonntag
|
||||
holiday.de-AT34.date=20220605
|
||||
holiday.de-AT34.date=20160515
|
||||
holiday.de-AT35.name=Pfingstmontag
|
||||
holiday.de-AT35.date=20220606
|
||||
holiday.de-AT35.date=20160516
|
||||
holiday.de-AT36.name=Fronleichnam
|
||||
holiday.de-AT36.date=20220616
|
||||
holiday.de-AT36.date=20160526
|
||||
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-AT37.date=20160815
|
||||
holiday.de-AT38.name=Rupert (S)
|
||||
holiday.de-AT38.date=20160924
|
||||
holiday.de-AT39.name=Tag der Volksabstimmung (K)
|
||||
holiday.de-AT39.date=20161010
|
||||
holiday.de-AT40.name=Nationalfeiertag
|
||||
holiday.de-AT40.date=20221026
|
||||
holiday.de-AT40.date=20161026
|
||||
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-AT41.date=20161101
|
||||
holiday.de-AT42.name=Martin (B)
|
||||
holiday.de-AT42.date=20161111
|
||||
holiday.de-AT43.name=Leopold (W, N)
|
||||
holiday.de-AT43.date=20161115
|
||||
holiday.de-AT44.name=Mariä Empfängnis
|
||||
holiday.de-AT44.date=20221208
|
||||
holiday.de-AT44.date=20161208
|
||||
holiday.de-AT45.name=Heiliger Abend
|
||||
holiday.de-AT45.date=20221224
|
||||
holiday.de-AT45.date=20161224
|
||||
holiday.de-AT46.name=Christtag
|
||||
holiday.de-AT46.date=20221225
|
||||
holiday.de-AT46.date=20161225
|
||||
holiday.de-AT47.name=Stefanitag
|
||||
holiday.de-AT47.date=20221226
|
||||
holiday.de-AT47.date=20161226
|
||||
holiday.de-AT48.name=Silvester
|
||||
holiday.de-AT48.date=20221231
|
||||
holiday.de-AT48.date=20161231
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
###############################################################################
|
||||
# International Holiday Data provided by Holidata.net
|
||||
# https://holidata.net/de-BE/2021.json
|
||||
# https://holidata.net/de-BE/2022.json
|
||||
# http://holidata.net/de-BE/2015.json
|
||||
# http://holidata.net/de-BE/2016.json
|
||||
#
|
||||
# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
|
||||
# Copyright 2006 - 2016, Paul Beckingham, Federico Hernandez.
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -23,55 +23,55 @@
|
||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
# SOFTWARE.
|
||||
#
|
||||
# https://www.opensource.org/licenses/mit-license.php
|
||||
# http://www.opensource.org/licenses/mit-license.php
|
||||
#
|
||||
###############################################################################
|
||||
|
||||
holiday.de-BE1.name=Neujahr
|
||||
holiday.de-BE1.date=20210101
|
||||
holiday.de-BE1.date=20150101
|
||||
holiday.de-BE2.name=Ostern
|
||||
holiday.de-BE2.date=20210404
|
||||
holiday.de-BE2.date=20150405
|
||||
holiday.de-BE3.name=Ostermontag
|
||||
holiday.de-BE3.date=20210405
|
||||
holiday.de-BE3.date=20150406
|
||||
holiday.de-BE4.name=Tag der Arbeit
|
||||
holiday.de-BE4.date=20210501
|
||||
holiday.de-BE4.date=20150501
|
||||
holiday.de-BE5.name=Christi Himmelfahrt
|
||||
holiday.de-BE5.date=20210513
|
||||
holiday.de-BE5.date=20150514
|
||||
holiday.de-BE6.name=Pfingsten
|
||||
holiday.de-BE6.date=20210523
|
||||
holiday.de-BE6.date=20150524
|
||||
holiday.de-BE7.name=Pfingstmontag
|
||||
holiday.de-BE7.date=20210524
|
||||
holiday.de-BE7.date=20150525
|
||||
holiday.de-BE8.name=Nationalfeiertag
|
||||
holiday.de-BE8.date=20210721
|
||||
holiday.de-BE8.date=20150721
|
||||
holiday.de-BE9.name=Mariä Himmelfahrt
|
||||
holiday.de-BE9.date=20210815
|
||||
holiday.de-BE9.date=20150815
|
||||
holiday.de-BE10.name=Allerheiligen
|
||||
holiday.de-BE10.date=20211101
|
||||
holiday.de-BE10.date=20151101
|
||||
holiday.de-BE11.name=Waffenstillstand
|
||||
holiday.de-BE11.date=20211111
|
||||
holiday.de-BE11.date=20151111
|
||||
holiday.de-BE12.name=Weihnacht
|
||||
holiday.de-BE12.date=20211225
|
||||
holiday.de-BE12.date=20151225
|
||||
holiday.de-BE13.name=Neujahr
|
||||
holiday.de-BE13.date=20220101
|
||||
holiday.de-BE13.date=20160101
|
||||
holiday.de-BE14.name=Ostern
|
||||
holiday.de-BE14.date=20220417
|
||||
holiday.de-BE14.date=20160527
|
||||
holiday.de-BE15.name=Ostermontag
|
||||
holiday.de-BE15.date=20220418
|
||||
holiday.de-BE15.date=20160528
|
||||
holiday.de-BE16.name=Tag der Arbeit
|
||||
holiday.de-BE16.date=20220501
|
||||
holiday.de-BE16.date=20160501
|
||||
holiday.de-BE17.name=Christi Himmelfahrt
|
||||
holiday.de-BE17.date=20220526
|
||||
holiday.de-BE17.date=20160505
|
||||
holiday.de-BE18.name=Pfingsten
|
||||
holiday.de-BE18.date=20220605
|
||||
holiday.de-BE18.date=20160515
|
||||
holiday.de-BE19.name=Pfingstmontag
|
||||
holiday.de-BE19.date=20220606
|
||||
holiday.de-BE19.date=20160516
|
||||
holiday.de-BE20.name=Nationalfeiertag
|
||||
holiday.de-BE20.date=20220721
|
||||
holiday.de-BE20.date=20160721
|
||||
holiday.de-BE21.name=Mariä Himmelfahrt
|
||||
holiday.de-BE21.date=20220815
|
||||
holiday.de-BE21.date=20160815
|
||||
holiday.de-BE22.name=Allerheiligen
|
||||
holiday.de-BE22.date=20221101
|
||||
holiday.de-BE22.date=20161101
|
||||
holiday.de-BE23.name=Waffenstillstand
|
||||
holiday.de-BE23.date=20221111
|
||||
holiday.de-BE23.date=20161111
|
||||
holiday.de-BE24.name=Weihnacht
|
||||
holiday.de-BE24.date=20221225
|
||||
holiday.de-BE24.date=20161225
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
###############################################################################
|
||||
# International Holiday Data provided by Holidata.net
|
||||
# https://holidata.net/de-CH/2021.json
|
||||
# https://holidata.net/de-CH/2022.json
|
||||
# http://holidata.net/de-CH/2015.json
|
||||
# http://holidata.net/de-CH/2016.json
|
||||
#
|
||||
# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
|
||||
# Copyright 2006 - 2016, Paul Beckingham, Federico Hernandez.
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -23,79 +23,79 @@
|
||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
# SOFTWARE.
|
||||
#
|
||||
# https://www.opensource.org/licenses/mit-license.php
|
||||
# http://www.opensource.org/licenses/mit-license.php
|
||||
#
|
||||
###############################################################################
|
||||
|
||||
holiday.de-CH1.name=Neujahrstag
|
||||
holiday.de-CH1.date=20210101
|
||||
holiday.de-CH1.date=20150101
|
||||
holiday.de-CH2.name=Berchtoldstag
|
||||
holiday.de-CH2.date=20210102
|
||||
holiday.de-CH2.date=20150102
|
||||
holiday.de-CH3.name=Heilige Drei Könige
|
||||
holiday.de-CH3.date=20210106
|
||||
holiday.de-CH3.date=20150106
|
||||
holiday.de-CH4.name=Josefstag
|
||||
holiday.de-CH4.date=20210319
|
||||
holiday.de-CH4.date=20150319
|
||||
holiday.de-CH5.name=Karfreitag
|
||||
holiday.de-CH5.date=20210402
|
||||
holiday.de-CH5.date=20150403
|
||||
holiday.de-CH6.name=Ostersonntag
|
||||
holiday.de-CH6.date=20210404
|
||||
holiday.de-CH6.date=20150405
|
||||
holiday.de-CH7.name=Ostermontag
|
||||
holiday.de-CH7.date=20210405
|
||||
holiday.de-CH7.date=20150406
|
||||
holiday.de-CH8.name=Tag der Arbeit
|
||||
holiday.de-CH8.date=20210501
|
||||
holiday.de-CH8.date=20150501
|
||||
holiday.de-CH9.name=Auffahrt
|
||||
holiday.de-CH9.date=20210513
|
||||
holiday.de-CH9.date=20150514
|
||||
holiday.de-CH10.name=Pfingstsonntag
|
||||
holiday.de-CH10.date=20210523
|
||||
holiday.de-CH10.date=20150524
|
||||
holiday.de-CH11.name=Pfingstmontag
|
||||
holiday.de-CH11.date=20210524
|
||||
holiday.de-CH11.date=20150525
|
||||
holiday.de-CH12.name=Fronleichnam
|
||||
holiday.de-CH12.date=20210603
|
||||
holiday.de-CH12.date=20150604
|
||||
holiday.de-CH13.name=Bundesfeier
|
||||
holiday.de-CH13.date=20210801
|
||||
holiday.de-CH13.date=20150801
|
||||
holiday.de-CH14.name=Mariä Himmelfahrt
|
||||
holiday.de-CH14.date=20210815
|
||||
holiday.de-CH14.date=20150815
|
||||
holiday.de-CH15.name=Allerheiligen
|
||||
holiday.de-CH15.date=20211101
|
||||
holiday.de-CH15.date=20151101
|
||||
holiday.de-CH16.name=Mariä Empfängnis
|
||||
holiday.de-CH16.date=20211208
|
||||
holiday.de-CH16.date=20151208
|
||||
holiday.de-CH17.name=Weihnachtstag
|
||||
holiday.de-CH17.date=20211225
|
||||
holiday.de-CH17.date=20151225
|
||||
holiday.de-CH18.name=Stephanstag
|
||||
holiday.de-CH18.date=20211226
|
||||
holiday.de-CH18.date=20151226
|
||||
holiday.de-CH19.name=Neujahrstag
|
||||
holiday.de-CH19.date=20220101
|
||||
holiday.de-CH19.date=20160101
|
||||
holiday.de-CH20.name=Berchtoldstag
|
||||
holiday.de-CH20.date=20220102
|
||||
holiday.de-CH20.date=20160102
|
||||
holiday.de-CH21.name=Heilige Drei Könige
|
||||
holiday.de-CH21.date=20220106
|
||||
holiday.de-CH21.date=20160106
|
||||
holiday.de-CH22.name=Josefstag
|
||||
holiday.de-CH22.date=20220319
|
||||
holiday.de-CH22.date=20160319
|
||||
holiday.de-CH23.name=Karfreitag
|
||||
holiday.de-CH23.date=20220415
|
||||
holiday.de-CH23.date=20160325
|
||||
holiday.de-CH24.name=Ostersonntag
|
||||
holiday.de-CH24.date=20220417
|
||||
holiday.de-CH24.date=20160327
|
||||
holiday.de-CH25.name=Ostermontag
|
||||
holiday.de-CH25.date=20220418
|
||||
holiday.de-CH25.date=20160328
|
||||
holiday.de-CH26.name=Tag der Arbeit
|
||||
holiday.de-CH26.date=20220501
|
||||
holiday.de-CH26.date=20160501
|
||||
holiday.de-CH27.name=Auffahrt
|
||||
holiday.de-CH27.date=20220526
|
||||
holiday.de-CH27.date=20160505
|
||||
holiday.de-CH28.name=Pfingstsonntag
|
||||
holiday.de-CH28.date=20220605
|
||||
holiday.de-CH28.date=20160515
|
||||
holiday.de-CH29.name=Pfingstmontag
|
||||
holiday.de-CH29.date=20220606
|
||||
holiday.de-CH29.date=20160516
|
||||
holiday.de-CH30.name=Fronleichnam
|
||||
holiday.de-CH30.date=20220616
|
||||
holiday.de-CH30.date=20160526
|
||||
holiday.de-CH31.name=Bundesfeier
|
||||
holiday.de-CH31.date=20220801
|
||||
holiday.de-CH31.date=20160801
|
||||
holiday.de-CH32.name=Mariä Himmelfahrt
|
||||
holiday.de-CH32.date=20220815
|
||||
holiday.de-CH32.date=20160815
|
||||
holiday.de-CH33.name=Allerheiligen
|
||||
holiday.de-CH33.date=20221101
|
||||
holiday.de-CH33.date=20161101
|
||||
holiday.de-CH34.name=Mariä Empfängnis
|
||||
holiday.de-CH34.date=20221208
|
||||
holiday.de-CH34.date=20161208
|
||||
holiday.de-CH35.name=Weihnachtstag
|
||||
holiday.de-CH35.date=20221225
|
||||
holiday.de-CH35.date=20161225
|
||||
holiday.de-CH36.name=Stephanstag
|
||||
holiday.de-CH36.date=20221226
|
||||
holiday.de-CH36.date=20161226
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
###############################################################################
|
||||
# International Holiday Data provided by Holidata.net
|
||||
# https://holidata.net/de-DE/2021.json
|
||||
# https://holidata.net/de-DE/2022.json
|
||||
# http://holidata.net/de-DE/2015.json
|
||||
# http://holidata.net/de-DE/2016.json
|
||||
#
|
||||
# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
|
||||
# Copyright 2006 - 2016, Paul Beckingham, Federico Hernandez.
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -23,87 +23,83 @@
|
||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
# SOFTWARE.
|
||||
#
|
||||
# https://www.opensource.org/licenses/mit-license.php
|
||||
# http://www.opensource.org/licenses/mit-license.php
|
||||
#
|
||||
###############################################################################
|
||||
|
||||
holiday.de-DE1.name=Neujahr
|
||||
holiday.de-DE1.date=20210101
|
||||
holiday.de-DE1.date=20150101
|
||||
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
|
||||
holiday.de-DE2.date=20150106
|
||||
holiday.de-DE3.name=Karfreitag
|
||||
holiday.de-DE3.date=20150403
|
||||
holiday.de-DE4.name=Ostern
|
||||
holiday.de-DE4.date=20150405
|
||||
holiday.de-DE5.name=Ostermontag
|
||||
holiday.de-DE5.date=20150406
|
||||
holiday.de-DE6.name=Erster Maifeiertag
|
||||
holiday.de-DE6.date=20150501
|
||||
holiday.de-DE7.name=Christi Himmelfahrt
|
||||
holiday.de-DE7.date=20150514
|
||||
holiday.de-DE8.name=Pfingstsonntag
|
||||
holiday.de-DE8.date=20150524
|
||||
holiday.de-DE9.name=Pfingstmontag
|
||||
holiday.de-DE9.date=20150525
|
||||
holiday.de-DE10.name=Fronleichnam
|
||||
holiday.de-DE10.date=20150604
|
||||
holiday.de-DE11.name=Mariä Himmelfahrt
|
||||
holiday.de-DE11.date=20150815
|
||||
holiday.de-DE12.name=Tag der Deutschen Einheit
|
||||
holiday.de-DE12.date=20151003
|
||||
holiday.de-DE13.name=Reformationstag
|
||||
holiday.de-DE13.date=20151031
|
||||
holiday.de-DE14.name=Allerheiligen
|
||||
holiday.de-DE14.date=20151101
|
||||
holiday.de-DE15.name=Buß- und Bettag
|
||||
holiday.de-DE15.date=20151118
|
||||
holiday.de-DE16.name=Heilig Abend
|
||||
holiday.de-DE16.date=20151224
|
||||
holiday.de-DE17.name=Weihnachtstag
|
||||
holiday.de-DE17.date=20151225
|
||||
holiday.de-DE18.name=Zweiter Weihnachtstag
|
||||
holiday.de-DE18.date=20151226
|
||||
holiday.de-DE19.name=Silvester
|
||||
holiday.de-DE19.date=20151231
|
||||
holiday.de-DE20.name=Neujahr
|
||||
holiday.de-DE20.date=20160101
|
||||
holiday.de-DE21.name=Heilige drei Könige
|
||||
holiday.de-DE21.date=20160106
|
||||
holiday.de-DE22.name=Karfreitag
|
||||
holiday.de-DE22.date=20160325
|
||||
holiday.de-DE23.name=Ostern
|
||||
holiday.de-DE23.date=20160327
|
||||
holiday.de-DE24.name=Ostermontag
|
||||
holiday.de-DE24.date=20160328
|
||||
holiday.de-DE25.name=Erster Maifeiertag
|
||||
holiday.de-DE25.date=20160501
|
||||
holiday.de-DE26.name=Christi Himmelfahrt
|
||||
holiday.de-DE26.date=20160505
|
||||
holiday.de-DE27.name=Pfingstsonntag
|
||||
holiday.de-DE27.date=20160515
|
||||
holiday.de-DE28.name=Pfingstmontag
|
||||
holiday.de-DE28.date=20160516
|
||||
holiday.de-DE29.name=Fronleichnam
|
||||
holiday.de-DE29.date=20160526
|
||||
holiday.de-DE30.name=Mariä Himmelfahrt
|
||||
holiday.de-DE30.date=20160815
|
||||
holiday.de-DE31.name=Tag der Deutschen Einheit
|
||||
holiday.de-DE31.date=20161003
|
||||
holiday.de-DE32.name=Reformationstag
|
||||
holiday.de-DE32.date=20161031
|
||||
holiday.de-DE33.name=Allerheiligen
|
||||
holiday.de-DE33.date=20161101
|
||||
holiday.de-DE34.name=Buß- und Bettag
|
||||
holiday.de-DE34.date=20161116
|
||||
holiday.de-DE35.name=Heilig Abend
|
||||
holiday.de-DE35.date=20161224
|
||||
holiday.de-DE36.name=Weihnachtstag
|
||||
holiday.de-DE36.date=20161225
|
||||
holiday.de-DE37.name=Zweiter Weihnachtstag
|
||||
holiday.de-DE37.date=20161226
|
||||
holiday.de-DE38.name=Silvester
|
||||
holiday.de-DE38.date=20161231
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
###############################################################################
|
||||
# International Holiday Data provided by Holidata.net
|
||||
# https://holidata.net/el-GR/2021.json
|
||||
# https://holidata.net/el-GR/2022.json
|
||||
# http://holidata.net/el-GR/2015.json
|
||||
# http://holidata.net/el-GR/2016.json
|
||||
#
|
||||
# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
|
||||
# Copyright 2006 - 2016, Paul Beckingham, Federico Hernandez.
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -23,63 +23,63 @@
|
||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
# SOFTWARE.
|
||||
#
|
||||
# https://www.opensource.org/licenses/mit-license.php
|
||||
# http://www.opensource.org/licenses/mit-license.php
|
||||
#
|
||||
###############################################################################
|
||||
|
||||
holiday.el-GR1.name=Πρωτοχρονιά
|
||||
holiday.el-GR1.date=20210101
|
||||
holiday.el-GR1.date=20150101
|
||||
holiday.el-GR2.name=Θεοφάνεια
|
||||
holiday.el-GR2.date=20210106
|
||||
holiday.el-GR2.date=20150106
|
||||
holiday.el-GR3.name=Καθαρά Δευτέρα
|
||||
holiday.el-GR3.date=20210315
|
||||
holiday.el-GR3.date=20150223
|
||||
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-GR4.date=20150325
|
||||
holiday.el-GR5.name=Πρωτομαγιά
|
||||
holiday.el-GR5.date=20150418
|
||||
holiday.el-GR6.name=Μεγάλη Παρασκευή
|
||||
holiday.el-GR6.date=20150410
|
||||
holiday.el-GR7.name=Μεγάλο Σάββατο
|
||||
holiday.el-GR7.date=20150411
|
||||
holiday.el-GR8.name=Πάσχα
|
||||
holiday.el-GR8.date=20210502
|
||||
holiday.el-GR8.date=20150412
|
||||
holiday.el-GR9.name=Δευτέρα του Πάσχα
|
||||
holiday.el-GR9.date=20210503
|
||||
holiday.el-GR9.date=20150413
|
||||
holiday.el-GR10.name=Δευτέρα του Αγίου Πνεύματος
|
||||
holiday.el-GR10.date=20210621
|
||||
holiday.el-GR10.date=20150601
|
||||
holiday.el-GR11.name=Κοίμηση της Θεοτόκου
|
||||
holiday.el-GR11.date=20210815
|
||||
holiday.el-GR11.date=20150815
|
||||
holiday.el-GR12.name=Ημέρα του ΌΧΙ
|
||||
holiday.el-GR12.date=20211028
|
||||
holiday.el-GR12.date=20151028
|
||||
holiday.el-GR13.name=Χριστούγεννα
|
||||
holiday.el-GR13.date=20211225
|
||||
holiday.el-GR13.date=20151225
|
||||
holiday.el-GR14.name=Επόμενη ημέρα Χριστουγέννων
|
||||
holiday.el-GR14.date=20211226
|
||||
holiday.el-GR14.date=20151226
|
||||
holiday.el-GR15.name=Πρωτοχρονιά
|
||||
holiday.el-GR15.date=20220101
|
||||
holiday.el-GR15.date=20160101
|
||||
holiday.el-GR16.name=Θεοφάνεια
|
||||
holiday.el-GR16.date=20220106
|
||||
holiday.el-GR16.date=20160106
|
||||
holiday.el-GR17.name=Καθαρά Δευτέρα
|
||||
holiday.el-GR17.date=20220307
|
||||
holiday.el-GR17.date=20160314
|
||||
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-GR18.date=20160325
|
||||
holiday.el-GR19.name=Πρωτομαγιά
|
||||
holiday.el-GR19.date=20160418
|
||||
holiday.el-GR20.name=Μεγάλη Παρασκευή
|
||||
holiday.el-GR20.date=20160429
|
||||
holiday.el-GR21.name=Μεγάλο Σάββατο
|
||||
holiday.el-GR21.date=20160430
|
||||
holiday.el-GR22.name=Πάσχα
|
||||
holiday.el-GR22.date=20160501
|
||||
holiday.el-GR23.name=Δευτέρα του Πάσχα
|
||||
holiday.el-GR23.date=20160502
|
||||
holiday.el-GR24.name=Δευτέρα του Αγίου Πνεύματος
|
||||
holiday.el-GR24.date=20220613
|
||||
holiday.el-GR24.date=20160620
|
||||
holiday.el-GR25.name=Κοίμηση της Θεοτόκου
|
||||
holiday.el-GR25.date=20220815
|
||||
holiday.el-GR25.date=20160815
|
||||
holiday.el-GR26.name=Ημέρα του ΌΧΙ
|
||||
holiday.el-GR26.date=20221028
|
||||
holiday.el-GR26.date=20161028
|
||||
holiday.el-GR27.name=Χριστούγεννα
|
||||
holiday.el-GR27.date=20221225
|
||||
holiday.el-GR27.date=20161225
|
||||
holiday.el-GR28.name=Επόμενη ημέρα Χριστουγέννων
|
||||
holiday.el-GR28.date=20221226
|
||||
holiday.el-GR28.date=20161226
|
||||
|
||||
119
doc/rc/holidays.en-AU.rc
Normal file
119
doc/rc/holidays.en-AU.rc
Normal file
@@ -0,0 +1,119 @@
|
||||
###############################################################################
|
||||
# International Holiday Data provided by Holidata.net
|
||||
# http://holidata.net/en-AU/2015.json
|
||||
# http://holidata.net/en-AU/2016.json
|
||||
#
|
||||
# Copyright 2006 - 2016, Paul Beckingham, Federico Hernandez.
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to deal
|
||||
# in the Software without restriction, including without limitation the rights
|
||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
# copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be included
|
||||
# in all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
# SOFTWARE.
|
||||
#
|
||||
# http://www.opensource.org/licenses/mit-license.php
|
||||
#
|
||||
###############################################################################
|
||||
|
||||
holiday.en-AU1.name=New Year's Day
|
||||
holiday.en-AU1.date=20150101
|
||||
holiday.en-AU2.name=Australia Day
|
||||
holiday.en-AU2.date=20150126
|
||||
holiday.en-AU3.name=Royal Hobart Regatta
|
||||
holiday.en-AU3.date=20150209
|
||||
holiday.en-AU4.name=Labour Day
|
||||
holiday.en-AU4.date=20150302
|
||||
holiday.en-AU5.name=Labour Day
|
||||
holiday.en-AU5.date=20150309
|
||||
holiday.en-AU6.name=Canberra Day
|
||||
holiday.en-AU6.date=20150309
|
||||
holiday.en-AU7.name=Eight Hours Day
|
||||
holiday.en-AU7.date=20150309
|
||||
holiday.en-AU8.name=Good Friday
|
||||
holiday.en-AU8.date=20150403
|
||||
holiday.en-AU9.name=Easter Saturday
|
||||
holiday.en-AU9.date=20150404
|
||||
holiday.en-AU10.name=Easter Sunday
|
||||
holiday.en-AU10.date=20150405
|
||||
holiday.en-AU11.name=Easter Monday
|
||||
holiday.en-AU11.date=20150406
|
||||
holiday.en-AU12.name=Anzac Day
|
||||
holiday.en-AU12.date=20150425
|
||||
holiday.en-AU13.name=May Day
|
||||
holiday.en-AU13.date=20150504
|
||||
holiday.en-AU14.name=Foundation Day
|
||||
holiday.en-AU14.date=20150601
|
||||
holiday.en-AU15.name=Queen's Birthday
|
||||
holiday.en-AU15.date=20150608
|
||||
holiday.en-AU16.name=Picnic Day
|
||||
holiday.en-AU16.date=20150803
|
||||
holiday.en-AU17.name=Bank Holiday
|
||||
holiday.en-AU17.date=20150803
|
||||
holiday.en-AU18.name=Queen's Birthday
|
||||
holiday.en-AU18.date=20150928
|
||||
holiday.en-AU19.name=Labour Day
|
||||
holiday.en-AU19.date=20151005
|
||||
holiday.en-AU20.name=Recreation Day
|
||||
holiday.en-AU20.date=20151102
|
||||
holiday.en-AU21.name=Christmas Day
|
||||
holiday.en-AU21.date=20151225
|
||||
holiday.en-AU22.name=Boxing Day
|
||||
holiday.en-AU22.date=20151226
|
||||
holiday.en-AU23.name=Proclamation Day
|
||||
holiday.en-AU23.date=20151226
|
||||
holiday.en-AU24.name=New Year's Day
|
||||
holiday.en-AU24.date=20160101
|
||||
holiday.en-AU25.name=Australia Day
|
||||
holiday.en-AU25.date=20160126
|
||||
holiday.en-AU26.name=Royal Hobart Regatta
|
||||
holiday.en-AU26.date=20160208
|
||||
holiday.en-AU27.name=Labour Day
|
||||
holiday.en-AU27.date=20160307
|
||||
holiday.en-AU28.name=Labour Day
|
||||
holiday.en-AU28.date=20160314
|
||||
holiday.en-AU29.name=Canberra Day
|
||||
holiday.en-AU29.date=20160314
|
||||
holiday.en-AU30.name=Eight Hours Day
|
||||
holiday.en-AU30.date=20160314
|
||||
holiday.en-AU31.name=Good Friday
|
||||
holiday.en-AU31.date=20160325
|
||||
holiday.en-AU32.name=Easter Saturday
|
||||
holiday.en-AU32.date=20160326
|
||||
holiday.en-AU33.name=Easter Monday
|
||||
holiday.en-AU33.date=20160327
|
||||
holiday.en-AU34.name=Anzac Day
|
||||
holiday.en-AU34.date=20160425
|
||||
holiday.en-AU35.name=May Day
|
||||
holiday.en-AU35.date=20160502
|
||||
holiday.en-AU36.name=Foundation Day
|
||||
holiday.en-AU36.date=20160603
|
||||
holiday.en-AU37.name=Queen's Birthday
|
||||
holiday.en-AU37.date=20160613
|
||||
holiday.en-AU38.name=Picnic Day
|
||||
holiday.en-AU38.date=20160801
|
||||
holiday.en-AU39.name=Bank Holiday
|
||||
holiday.en-AU39.date=20160801
|
||||
holiday.en-AU40.name=Queen's Birthday
|
||||
holiday.en-AU40.date=20160926
|
||||
holiday.en-AU41.name=Labour Day
|
||||
holiday.en-AU41.date=20161003
|
||||
holiday.en-AU42.name=Recreation Day
|
||||
holiday.en-AU42.date=20161107
|
||||
holiday.en-AU43.name=Christmas Day
|
||||
holiday.en-AU43.date=20161225
|
||||
holiday.en-AU44.name=Boxing Day
|
||||
holiday.en-AU44.date=20161226
|
||||
holiday.en-AU45.name=Proclamation Day
|
||||
holiday.en-AU45.date=20161226
|
||||
@@ -1,9 +1,9 @@
|
||||
###############################################################################
|
||||
# International Holiday Data provided by Holidata.net
|
||||
# https://holidata.net/en-CA/2021.json
|
||||
# https://holidata.net/en-CA/2022.json
|
||||
# http://holidata.net/en-CA/2015.json
|
||||
# http://holidata.net/en-CA/2016.json
|
||||
#
|
||||
# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
|
||||
# Copyright 2006 - 2016, Paul Beckingham, Federico Hernandez.
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -23,83 +23,55 @@
|
||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
# SOFTWARE.
|
||||
#
|
||||
# https://www.opensource.org/licenses/mit-license.php
|
||||
# http://www.opensource.org/licenses/mit-license.php
|
||||
#
|
||||
###############################################################################
|
||||
|
||||
holiday.en-CA1.name=New Year's Day
|
||||
holiday.en-CA1.date=20210101
|
||||
holiday.en-CA1.date=20150101
|
||||
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
|
||||
holiday.en-CA2.date=20150209
|
||||
holiday.en-CA3.name=Good Friday
|
||||
holiday.en-CA3.date=20150403
|
||||
holiday.en-CA4.name=Easter Monday
|
||||
holiday.en-CA4.date=20150406
|
||||
holiday.en-CA5.name=Victoria Day
|
||||
holiday.en-CA5.date=20150518
|
||||
holiday.en-CA6.name=Canada Day
|
||||
holiday.en-CA6.date=20150701
|
||||
holiday.en-CA7.name=First Monday of August
|
||||
holiday.en-CA7.date=20150803
|
||||
holiday.en-CA8.name=Labour Day
|
||||
holiday.en-CA8.date=20150907
|
||||
holiday.en-CA9.name=Thanksgiving Day
|
||||
holiday.en-CA9.date=20151012
|
||||
holiday.en-CA10.name=Remembrance Day
|
||||
holiday.en-CA10.date=20151111
|
||||
holiday.en-CA11.name=Christmas Day
|
||||
holiday.en-CA11.date=20151225
|
||||
holiday.en-CA12.name=Boxing Day
|
||||
holiday.en-CA12.date=20151226
|
||||
holiday.en-CA13.name=New Year's Day
|
||||
holiday.en-CA13.date=20160101
|
||||
holiday.en-CA14.name=Family Day
|
||||
holiday.en-CA14.date=20160208
|
||||
holiday.en-CA15.name=Good Friday
|
||||
holiday.en-CA15.date=20160325
|
||||
holiday.en-CA16.name=Easter Monday
|
||||
holiday.en-CA16.date=20160328
|
||||
holiday.en-CA17.name=Victoria Day
|
||||
holiday.en-CA17.date=20160523
|
||||
holiday.en-CA18.name=Canada Day
|
||||
holiday.en-CA18.date=20160701
|
||||
holiday.en-CA19.name=First Monday of August
|
||||
holiday.en-CA19.date=20160801
|
||||
holiday.en-CA20.name=Labour Day
|
||||
holiday.en-CA20.date=20160905
|
||||
holiday.en-CA21.name=Thanksgiving Day
|
||||
holiday.en-CA21.date=20161010
|
||||
holiday.en-CA22.name=Remembrance Day
|
||||
holiday.en-CA22.date=20161111
|
||||
holiday.en-CA23.name=Christmas Day
|
||||
holiday.en-CA23.date=20161225
|
||||
holiday.en-CA24.name=Boxing Day
|
||||
holiday.en-CA24.date=20161226
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
###############################################################################
|
||||
# International Holiday Data provided by Holidata.net
|
||||
# https://holidata.net/en-GB/2021.json
|
||||
# https://holidata.net/en-GB/2022.json
|
||||
# http://holidata.net/en-GB/2015.json
|
||||
# http://holidata.net/en-GB/2016.json
|
||||
#
|
||||
# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
|
||||
# Copyright 2006 - 2016, Paul Beckingham, Federico Hernandez.
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -23,47 +23,39 @@
|
||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
# SOFTWARE.
|
||||
#
|
||||
# https://www.opensource.org/licenses/mit-license.php
|
||||
# http://www.opensource.org/licenses/mit-license.php
|
||||
#
|
||||
###############################################################################
|
||||
|
||||
holiday.en-GB1.name=New Year's Day
|
||||
holiday.en-GB1.date=20210101
|
||||
holiday.en-GB1.date=20150101
|
||||
holiday.en-GB2.name=Good Friday
|
||||
holiday.en-GB2.date=20210402
|
||||
holiday.en-GB2.date=20150403
|
||||
holiday.en-GB3.name=Easter Monday
|
||||
holiday.en-GB3.date=20210405
|
||||
holiday.en-GB3.date=20150406
|
||||
holiday.en-GB4.name=Early May Bank Holiday
|
||||
holiday.en-GB4.date=20210503
|
||||
holiday.en-GB4.date=20150504
|
||||
holiday.en-GB5.name=Spring Bank Holiday
|
||||
holiday.en-GB5.date=20210531
|
||||
holiday.en-GB5.date=20150525
|
||||
holiday.en-GB6.name=August Bank Holiday
|
||||
holiday.en-GB6.date=20210830
|
||||
holiday.en-GB6.date=20150831
|
||||
holiday.en-GB7.name=Christmas Day
|
||||
holiday.en-GB7.date=20211225
|
||||
holiday.en-GB7.date=20151225
|
||||
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
|
||||
holiday.en-GB8.date=20151226
|
||||
holiday.en-GB9.name=New Year's Day
|
||||
holiday.en-GB9.date=20160101
|
||||
holiday.en-GB10.name=Good Friday
|
||||
holiday.en-GB10.date=20160325
|
||||
holiday.en-GB11.name=Easter Monday
|
||||
holiday.en-GB11.date=20160328
|
||||
holiday.en-GB12.name=Early May Bank Holiday
|
||||
holiday.en-GB12.date=20160502
|
||||
holiday.en-GB13.name=Spring Bank Holiday
|
||||
holiday.en-GB13.date=20160530
|
||||
holiday.en-GB14.name=August Bank Holiday
|
||||
holiday.en-GB14.date=20160829
|
||||
holiday.en-GB15.name=Christmas Day
|
||||
holiday.en-GB15.date=20161225
|
||||
holiday.en-GB16.name=Boxing Day
|
||||
holiday.en-GB16.date=20161226
|
||||
|
||||
81
doc/rc/holidays.en-GL.rc
Normal file
81
doc/rc/holidays.en-GL.rc
Normal file
@@ -0,0 +1,81 @@
|
||||
###############################################################################
|
||||
# International Holiday Data provided by Holidata.net
|
||||
# http://holidata.net/en-GL/2015.json
|
||||
# http://holidata.net/en-GL/2016.json
|
||||
#
|
||||
# Copyright 2006 - 2016, Paul Beckingham, Federico Hernandez.
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to deal
|
||||
# in the Software without restriction, including without limitation the rights
|
||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
# copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be included
|
||||
# in all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
# SOFTWARE.
|
||||
#
|
||||
# http://www.opensource.org/licenses/mit-license.php
|
||||
#
|
||||
###############################################################################
|
||||
|
||||
holiday.en-GL1.name=New Year's Day
|
||||
holiday.en-GL1.date=20150101
|
||||
holiday.en-GL2.name=Epiphany
|
||||
holiday.en-GL2.date=20150106
|
||||
holiday.en-GL3.name=Maundy Thursday
|
||||
holiday.en-GL3.date=20150402
|
||||
holiday.en-GL4.name=Good Friday
|
||||
holiday.en-GL4.date=20150303
|
||||
holiday.en-GL5.name=Easter Monday
|
||||
holiday.en-GL5.date=20150406
|
||||
holiday.en-GL6.name=General Prayer Day
|
||||
holiday.en-GL6.date=20150501
|
||||
holiday.en-GL7.name=Ascension
|
||||
holiday.en-GL7.date=20150514
|
||||
holiday.en-GL8.name=Whit Monday
|
||||
holiday.en-GL8.date=20150525
|
||||
holiday.en-GL9.name=Ullortuneq
|
||||
holiday.en-GL9.date=20150621
|
||||
holiday.en-GL10.name=Christmas Eve
|
||||
holiday.en-GL10.date=20151224
|
||||
holiday.en-GL11.name=Christmas Day
|
||||
holiday.en-GL11.date=20151225
|
||||
holiday.en-GL12.name=St Stephen's Day
|
||||
holiday.en-GL12.date=20151226
|
||||
holiday.en-GL13.name=New Year's Eve
|
||||
holiday.en-GL13.date=20151231
|
||||
holiday.en-GL14.name=New Year's Day
|
||||
holiday.en-GL14.date=20160101
|
||||
holiday.en-GL15.name=Epiphany
|
||||
holiday.en-GL15.date=20160106
|
||||
holiday.en-GL16.name=Maundy Thursday
|
||||
holiday.en-GL16.date=20160324
|
||||
holiday.en-GL17.name=Good Friday
|
||||
holiday.en-GL17.date=20160325
|
||||
holiday.en-GL18.name=Easter Monday
|
||||
holiday.en-GL18.date=20160428
|
||||
holiday.en-GL19.name=General Prayer Day
|
||||
holiday.en-GL19.date=20160422
|
||||
holiday.en-GL20.name=Ascension
|
||||
holiday.en-GL20.date=20160505
|
||||
holiday.en-GL21.name=Whit Monday
|
||||
holiday.en-GL21.date=20160516
|
||||
holiday.en-GL22.name=Ullortuneq
|
||||
holiday.en-GL22.date=20160621
|
||||
holiday.en-GL23.name=Christmas Eve
|
||||
holiday.en-GL23.date=20161224
|
||||
holiday.en-GL24.name=Christmas Day
|
||||
holiday.en-GL24.date=20161225
|
||||
holiday.en-GL25.name=St Stephen's Day
|
||||
holiday.en-GL25.date=20161226
|
||||
holiday.en-GL26.name=New Year's Eve
|
||||
holiday.en-GL26.date=20161231
|
||||
95
doc/rc/holidays.en-HK.rc
Normal file
95
doc/rc/holidays.en-HK.rc
Normal file
@@ -0,0 +1,95 @@
|
||||
###############################################################################
|
||||
# International Holiday Data provided by Holidata.net
|
||||
# http://holidata.net/en-HK/2015.json
|
||||
# http://holidata.net/en-HK/2016.json
|
||||
#
|
||||
# Copyright 2006 - 2016, Paul Beckingham, Federico Hernandez.
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to deal
|
||||
# in the Software without restriction, including without limitation the rights
|
||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
# copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be included
|
||||
# in all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
# SOFTWARE.
|
||||
#
|
||||
# http://www.opensource.org/licenses/mit-license.php
|
||||
#
|
||||
###############################################################################
|
||||
|
||||
holiday.en-HK1.name=The first day of January
|
||||
holiday.en-HK1.date=20150101
|
||||
holiday.en-HK2.name=Lunar New Year’s Day
|
||||
holiday.en-HK2.date=20150219
|
||||
holiday.en-HK3.name=The second day of Lunar New Year
|
||||
holiday.en-HK3.date=20150220
|
||||
holiday.en-HK4.name=The third day of Lunar New Year
|
||||
holiday.en-HK4.date=20150221
|
||||
holiday.en-HK5.name=Good Friday
|
||||
holiday.en-HK5.date=20150403
|
||||
holiday.en-HK6.name=The day following Good Friday
|
||||
holiday.en-HK6.date=20150404
|
||||
holiday.en-HK7.name=The day following Ching Ming Festival
|
||||
holiday.en-HK7.date=20150406
|
||||
holiday.en-HK8.name=The day following Easter Monday
|
||||
holiday.en-HK8.date=20150407
|
||||
holiday.en-HK9.name=Labour Day
|
||||
holiday.en-HK9.date=20150501
|
||||
holiday.en-HK10.name=The Birthday of the Buddha
|
||||
holiday.en-HK10.date=20150525
|
||||
holiday.en-HK11.name=Tuen Ng Festival
|
||||
holiday.en-HK11.date=20150620
|
||||
holiday.en-HK12.name=Hong Kong Special Administrative Region Establishment Day
|
||||
holiday.en-HK12.date=20150701
|
||||
holiday.en-HK13.name=The day following the Chinese Mid-Autumn Festival
|
||||
holiday.en-HK13.date=20150928
|
||||
holiday.en-HK14.name=National Day
|
||||
holiday.en-HK14.date=20151001
|
||||
holiday.en-HK15.name=Chung Yeung Festival
|
||||
holiday.en-HK15.date=20151021
|
||||
holiday.en-HK16.name=Christmas Day
|
||||
holiday.en-HK16.date=20151225
|
||||
holiday.en-HK17.name=The first weekday after Christmas Day
|
||||
holiday.en-HK17.date=20151226
|
||||
holiday.en-HK18.name=The first day of January
|
||||
holiday.en-HK18.date=20160101
|
||||
holiday.en-HK19.name=Lunar New Year’s Day
|
||||
holiday.en-HK19.date=20160208
|
||||
holiday.en-HK20.name=The second day of Lunar New Year
|
||||
holiday.en-HK20.date=20160209
|
||||
holiday.en-HK21.name=The third day of Lunar New Year
|
||||
holiday.en-HK21.date=20160210
|
||||
holiday.en-HK22.name=Good Friday
|
||||
holiday.en-HK22.date=20160325
|
||||
holiday.en-HK23.name=The day following Good Friday
|
||||
holiday.en-HK23.date=20160326
|
||||
holiday.en-HK24.name=Ching Ming Festival
|
||||
holiday.en-HK24.date=20160404
|
||||
holiday.en-HK25.name=Labour Day
|
||||
holiday.en-HK25.date=20160501
|
||||
holiday.en-HK26.name=The Birthday of the Buddha
|
||||
holiday.en-HK26.date=20160514
|
||||
holiday.en-HK27.name=Tuen Ng Festival
|
||||
holiday.en-HK27.date=20160609
|
||||
holiday.en-HK28.name=Hong Kong Special Administrative Region Establishment Day
|
||||
holiday.en-HK28.date=20160701
|
||||
holiday.en-HK29.name=The day following the Chinese Mid-Autumn Festival
|
||||
holiday.en-HK29.date=20160916
|
||||
holiday.en-HK30.name=National Day
|
||||
holiday.en-HK30.date=20161001
|
||||
holiday.en-HK31.name=Chung Yeung Festival
|
||||
holiday.en-HK31.date=20161010
|
||||
holiday.en-HK32.name=Christmas Day
|
||||
holiday.en-HK32.date=20161225
|
||||
holiday.en-HK33.name=The first weekday after Christmas Day
|
||||
holiday.en-HK33.date=20161226
|
||||
103
doc/rc/holidays.en-IN.rc
Normal file
103
doc/rc/holidays.en-IN.rc
Normal file
@@ -0,0 +1,103 @@
|
||||
###############################################################################
|
||||
# International Holiday Data provided by Holidata.net
|
||||
# http://holidata.net/en-IN/2015.json
|
||||
# http://holidata.net/en-IN/2016.json
|
||||
#
|
||||
# Copyright 2006 - 2016, Paul Beckingham, Federico Hernandez.
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to deal
|
||||
# in the Software without restriction, including without limitation the rights
|
||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
# copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be included
|
||||
# in all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
# SOFTWARE.
|
||||
#
|
||||
# http://www.opensource.org/licenses/mit-license.php
|
||||
#
|
||||
###############################################################################
|
||||
|
||||
holiday.en-IN1.name=New Year's Day
|
||||
holiday.en-IN1.date=20160101
|
||||
holiday.en-IN2.name=Lohri
|
||||
holiday.en-IN2.date=20160114
|
||||
holiday.en-IN3.name=Pongal, Makar Sankranti
|
||||
holiday.en-IN3.date=20160115
|
||||
holiday.en-IN4.name=Guru Gobind Singh Jayanti
|
||||
holiday.en-IN4.date=20160116
|
||||
holiday.en-IN5.name=Republic Day
|
||||
holiday.en-IN5.date=20160126
|
||||
holiday.en-IN6.name=Vasant Panchami
|
||||
holiday.en-IN6.date=20160212
|
||||
holiday.en-IN7.name=Guru Ravidas Jayanti
|
||||
holiday.en-IN7.date=20160222
|
||||
holiday.en-IN8.name=Maha Shivaratri
|
||||
holiday.en-IN8.date=20160307
|
||||
holiday.en-IN9.name=Chhoti Holi, Holika Dahan
|
||||
holiday.en-IN9.date=20160323
|
||||
holiday.en-IN10.name=Holi
|
||||
holiday.en-IN10.date=20160324
|
||||
holiday.en-IN11.name=Good Friday
|
||||
holiday.en-IN11.date=20160325
|
||||
holiday.en-IN12.name=Easter
|
||||
holiday.en-IN12.date=20160327
|
||||
holiday.en-IN13.name=Gudi Padwa, Ugadi
|
||||
holiday.en-IN13.date=20160408
|
||||
holiday.en-IN14.name=Solar New Year, Baisakhi
|
||||
holiday.en-IN14.date=20160413
|
||||
holiday.en-IN15.name=Rama Navami
|
||||
holiday.en-IN15.date=20160415
|
||||
holiday.en-IN16.name=Hazarat Ali's Birthday
|
||||
holiday.en-IN16.date=20160421
|
||||
holiday.en-IN17.name=Buddha Purnima
|
||||
holiday.en-IN17.date=20160521
|
||||
holiday.en-IN18.name=Eid al-Fitr , Ramadan
|
||||
holiday.en-IN18.date=20160707
|
||||
holiday.en-IN19.name=Independence Day
|
||||
holiday.en-IN19.date=20160815
|
||||
holiday.en-IN20.name=Rakhi, Raksha Bandhan
|
||||
holiday.en-IN20.date=20160818
|
||||
holiday.en-IN21.name=Krishna Janmashtami
|
||||
holiday.en-IN21.date=20160825
|
||||
holiday.en-IN22.name=Ganesh Chaturthi
|
||||
holiday.en-IN22.date=20160905
|
||||
holiday.en-IN23.name=Onam, Eid al-Adha, Bakrid
|
||||
holiday.en-IN23.date=20160913
|
||||
holiday.en-IN24.name=Gandhi Jayanti
|
||||
holiday.en-IN24.date=20161002
|
||||
holiday.en-IN25.name=Durga Ashtami
|
||||
holiday.en-IN25.date=20161009
|
||||
holiday.en-IN26.name=Maha Navami
|
||||
holiday.en-IN26.date=20161010
|
||||
holiday.en-IN27.name=Dussehra, Madhvacharya Jayanti
|
||||
holiday.en-IN27.date=20161011
|
||||
holiday.en-IN28.name=Muharram
|
||||
holiday.en-IN28.date=20161012
|
||||
holiday.en-IN29.name=Valmiki Jayanti
|
||||
holiday.en-IN29.date=20161016
|
||||
holiday.en-IN30.name=Karwa Chauth
|
||||
holiday.en-IN30.date=20161019
|
||||
holiday.en-IN31.name=Diwali, Lakshmi Puja
|
||||
holiday.en-IN31.date=20161030
|
||||
holiday.en-IN32.name=Gowardhan Puja
|
||||
holiday.en-IN32.date=20161031
|
||||
holiday.en-IN33.name=Bhaiya Dooj
|
||||
holiday.en-IN33.date=20161101
|
||||
holiday.en-IN34.name=Chhath Puja
|
||||
holiday.en-IN34.date=20161106
|
||||
holiday.en-IN35.name=Guru Nanak Jayanti, Nehru Jayanti
|
||||
holiday.en-IN35.date=20161114
|
||||
holiday.en-IN36.name=Milad an-Nabi, Id-e-Milad
|
||||
holiday.en-IN36.date=20161212
|
||||
holiday.en-IN37.name=Christmas
|
||||
holiday.en-IN37.date=20161225
|
||||
@@ -1,9 +1,9 @@
|
||||
###############################################################################
|
||||
# International Holiday Data provided by Holidata.net
|
||||
# https://holidata.net/en-NZ/2021.json
|
||||
# https://holidata.net/en-NZ/2022.json
|
||||
# http://holidata.net/en-NZ/2015.json
|
||||
# http://holidata.net/en-NZ/2016.json
|
||||
#
|
||||
# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
|
||||
# Copyright 2006 - 2016, Paul Beckingham, Federico Hernandez.
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -23,61 +23,47 @@
|
||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
# SOFTWARE.
|
||||
#
|
||||
# https://www.opensource.org/licenses/mit-license.php
|
||||
# http://www.opensource.org/licenses/mit-license.php
|
||||
#
|
||||
###############################################################################
|
||||
|
||||
holiday.en-NZ1.name=New Year's Day
|
||||
holiday.en-NZ1.date=20210101
|
||||
holiday.en-NZ2.name=Day after New Year's Day
|
||||
holiday.en-NZ2.date=20210104
|
||||
holiday.en-NZ1.date=20150101
|
||||
holiday.en-NZ2.name=Day after New Years Day
|
||||
holiday.en-NZ2.date=20150102
|
||||
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
|
||||
holiday.en-NZ3.date=20150206
|
||||
holiday.en-NZ4.name=Good Friday
|
||||
holiday.en-NZ4.date=20150403
|
||||
holiday.en-NZ5.name=Easter Monday
|
||||
holiday.en-NZ5.date=20150406
|
||||
holiday.en-NZ6.name=ANZAC Day
|
||||
holiday.en-NZ6.date=20150425
|
||||
holiday.en-NZ7.name=Queen's Birthday
|
||||
holiday.en-NZ7.date=20150601
|
||||
holiday.en-NZ8.name=Labour Day
|
||||
holiday.en-NZ8.date=20151026
|
||||
holiday.en-NZ9.name=Christmas Day
|
||||
holiday.en-NZ9.date=20151225
|
||||
holiday.en-NZ10.name=Boxing Day
|
||||
holiday.en-NZ10.date=20151226
|
||||
holiday.en-NZ11.name=New Year's Day
|
||||
holiday.en-NZ11.date=20160101
|
||||
holiday.en-NZ12.name=Day after New Years Day
|
||||
holiday.en-NZ12.date=20160104
|
||||
holiday.en-NZ13.name=Waitangi Day
|
||||
holiday.en-NZ13.date=20160206
|
||||
holiday.en-NZ14.name=Good Friday
|
||||
holiday.en-NZ14.date=20160325
|
||||
holiday.en-NZ15.name=Easter Monday
|
||||
holiday.en-NZ15.date=20160328
|
||||
holiday.en-NZ16.name=ANZAC Day
|
||||
holiday.en-NZ16.date=20160425
|
||||
holiday.en-NZ17.name=Queen's Birthday
|
||||
holiday.en-NZ17.date=20160606
|
||||
holiday.en-NZ18.name=Labour Day
|
||||
holiday.en-NZ18.date=20161024
|
||||
holiday.en-NZ19.name=Christmas Day
|
||||
holiday.en-NZ19.date=20161225
|
||||
holiday.en-NZ20.name=Boxing Day
|
||||
holiday.en-NZ20.date=20161226
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
###############################################################################
|
||||
# International Holiday Data provided by Holidata.net
|
||||
# https://holidata.net/en-US/2021.json
|
||||
# https://holidata.net/en-US/2022.json
|
||||
# http://holidata.net/en-US/2015.json
|
||||
# http://holidata.net/en-US/2016.json
|
||||
#
|
||||
# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
|
||||
# Copyright 2006 - 2016, Paul Beckingham, Federico Hernandez.
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -23,55 +23,51 @@
|
||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
# SOFTWARE.
|
||||
#
|
||||
# https://www.opensource.org/licenses/mit-license.php
|
||||
# http://www.opensource.org/licenses/mit-license.php
|
||||
#
|
||||
###############################################################################
|
||||
|
||||
holiday.en-US1.name=New Year's Day
|
||||
holiday.en-US1.date=20210101
|
||||
holiday.en-US1.date=20150101
|
||||
holiday.en-US2.name=Birthday of Martin Luther King, Jr.
|
||||
holiday.en-US2.date=20210118
|
||||
holiday.en-US2.date=20150119
|
||||
holiday.en-US3.name=Washington's Birthday
|
||||
holiday.en-US3.date=20210215
|
||||
holiday.en-US3.date=20150216
|
||||
holiday.en-US4.name=Patriots' Day
|
||||
holiday.en-US4.date=20210419
|
||||
holiday.en-US4.date=20150420
|
||||
holiday.en-US5.name=Memorial Day
|
||||
holiday.en-US5.date=20210531
|
||||
holiday.en-US5.date=20150525
|
||||
holiday.en-US6.name=Independence Day
|
||||
holiday.en-US6.date=20210704
|
||||
holiday.en-US6.date=20150704
|
||||
holiday.en-US7.name=Labor Day
|
||||
holiday.en-US7.date=20210906
|
||||
holiday.en-US7.date=20150907
|
||||
holiday.en-US8.name=Columbus Day
|
||||
holiday.en-US8.date=20211011
|
||||
holiday.en-US8.date=20151012
|
||||
holiday.en-US9.name=Veterans Day
|
||||
holiday.en-US9.date=20211111
|
||||
holiday.en-US9.date=20151111
|
||||
holiday.en-US10.name=Thanksgiving Day
|
||||
holiday.en-US10.date=20211125
|
||||
holiday.en-US10.date=20151126
|
||||
holiday.en-US11.name=Christmas Day
|
||||
holiday.en-US11.date=20211225
|
||||
holiday.en-US11.date=20151225
|
||||
holiday.en-US12.name=New Year's Day
|
||||
holiday.en-US12.date=20220101
|
||||
holiday.en-US12.date=20160101
|
||||
holiday.en-US13.name=Birthday of Martin Luther King, Jr.
|
||||
holiday.en-US13.date=20220117
|
||||
holiday.en-US13.date=20160118
|
||||
holiday.en-US14.name=Washington's Birthday
|
||||
holiday.en-US14.date=20220221
|
||||
holiday.en-US14.date=20160215
|
||||
holiday.en-US15.name=Patriots' Day
|
||||
holiday.en-US15.date=20220418
|
||||
holiday.en-US15.date=20160418
|
||||
holiday.en-US16.name=Memorial Day
|
||||
holiday.en-US16.date=20220530
|
||||
holiday.en-US16.date=20160530
|
||||
holiday.en-US17.name=Independence Day
|
||||
holiday.en-US17.date=20220704
|
||||
holiday.en-US17.date=20160704
|
||||
holiday.en-US18.name=Labor Day
|
||||
holiday.en-US18.date=20220905
|
||||
holiday.en-US18.date=20160905
|
||||
holiday.en-US19.name=Columbus Day
|
||||
holiday.en-US19.date=20221010
|
||||
holiday.en-US19.date=20161010
|
||||
holiday.en-US20.name=Veterans Day
|
||||
holiday.en-US20.date=20221111
|
||||
holiday.en-US20.date=20161111
|
||||
holiday.en-US21.name=Thanksgiving Day
|
||||
holiday.en-US21.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
|
||||
holiday.en-US21.date=20161124
|
||||
holiday.en-US22.name=Christmas Day
|
||||
holiday.en-US22.date=20161225
|
||||
|
||||
77
doc/rc/holidays.en-ZA.rc
Normal file
77
doc/rc/holidays.en-ZA.rc
Normal file
@@ -0,0 +1,77 @@
|
||||
###############################################################################
|
||||
# International Holiday Data provided by Holidata.net
|
||||
# http://holidata.net/en-ZA/2015.json
|
||||
# http://holidata.net/en-ZA/2016.json
|
||||
#
|
||||
# Copyright 2006 - 2016, Paul Beckingham, Federico Hernandez.
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to deal
|
||||
# in the Software without restriction, including without limitation the rights
|
||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
# copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be included
|
||||
# in all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
# SOFTWARE.
|
||||
#
|
||||
# http://www.opensource.org/licenses/mit-license.php
|
||||
#
|
||||
###############################################################################
|
||||
|
||||
holiday.en-ZA1.name=New Year's Day
|
||||
holiday.en-ZA1.date=20150101
|
||||
holiday.en-ZA2.name=Human Rights Day
|
||||
holiday.en-ZA2.date=20150321
|
||||
holiday.en-ZA3.name=Good Friday
|
||||
holiday.en-ZA3.date=20150403
|
||||
holiday.en-ZA4.name=Family Day
|
||||
holiday.en-ZA4.date=20150406
|
||||
holiday.en-ZA5.name=Freedom Day
|
||||
holiday.en-ZA5.date=20150427
|
||||
holiday.en-ZA6.name=Workers' Day
|
||||
holiday.en-ZA6.date=20150501
|
||||
holiday.en-ZA7.name=Youth Day
|
||||
holiday.en-ZA7.date=20150616
|
||||
holiday.en-ZA8.name=National Women's Day
|
||||
holiday.en-ZA8.date=20150809
|
||||
holiday.en-ZA9.name=Heritage Day
|
||||
holiday.en-ZA9.date=20150924
|
||||
holiday.en-ZA10.name=Day of Reconciliation
|
||||
holiday.en-ZA10.date=20151217
|
||||
holiday.en-ZA11.name=Christmas Day
|
||||
holiday.en-ZA11.date=20151225
|
||||
holiday.en-ZA12.name=Day of Goodwill
|
||||
holiday.en-ZA12.date=20151226
|
||||
holiday.en-ZA13.name=New Year's Day
|
||||
holiday.en-ZA13.date=20160101
|
||||
holiday.en-ZA14.name=Human Rights Day
|
||||
holiday.en-ZA14.date=20160321
|
||||
holiday.en-ZA15.name=Good Friday
|
||||
holiday.en-ZA15.date=20160325
|
||||
holiday.en-ZA16.name=Family Day
|
||||
holiday.en-ZA16.date=20160328
|
||||
holiday.en-ZA17.name=Freedom Day
|
||||
holiday.en-ZA17.date=20160427
|
||||
holiday.en-ZA18.name=Workers' Day
|
||||
holiday.en-ZA18.date=20160501
|
||||
holiday.en-ZA19.name=Youth Day
|
||||
holiday.en-ZA19.date=20160616
|
||||
holiday.en-ZA20.name=National Women's Day
|
||||
holiday.en-ZA20.date=20160809
|
||||
holiday.en-ZA21.name=Heritage Day
|
||||
holiday.en-ZA21.date=20160924
|
||||
holiday.en-ZA22.name=Day of Reconciliation
|
||||
holiday.en-ZA22.date=20161217
|
||||
holiday.en-ZA23.name=Christmas Day
|
||||
holiday.en-ZA23.date=20161225
|
||||
holiday.en-ZA24.name=Day of Goodwill
|
||||
holiday.en-ZA24.date=20161226
|
||||
@@ -1,9 +1,9 @@
|
||||
###############################################################################
|
||||
# International Holiday Data provided by Holidata.net
|
||||
# https://holidata.net/es-CO/2021.json
|
||||
# https://holidata.net/es-CO/2022.json
|
||||
# http://holidata.net/es-CO/2015.json
|
||||
# http://holidata.net/es-CO/2016.json
|
||||
#
|
||||
# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
|
||||
# Copyright 2006 - 2016, Paul Beckingham, Federico Hernandez.
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -23,83 +23,83 @@
|
||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
# SOFTWARE.
|
||||
#
|
||||
# https://www.opensource.org/licenses/mit-license.php
|
||||
# http://www.opensource.org/licenses/mit-license.php
|
||||
#
|
||||
###############################################################################
|
||||
|
||||
holiday.es-CO1.name=Año Nuevo
|
||||
holiday.es-CO1.date=20210101
|
||||
holiday.es-CO1.date=20150101
|
||||
holiday.es-CO2.name=Día de los Reyes Magos
|
||||
holiday.es-CO2.date=20210111
|
||||
holiday.es-CO2.date=20150112
|
||||
holiday.es-CO3.name=Día de San José
|
||||
holiday.es-CO3.date=20210322
|
||||
holiday.es-CO3.date=20150323
|
||||
holiday.es-CO4.name=Jueves Santo
|
||||
holiday.es-CO4.date=20210401
|
||||
holiday.es-CO4.date=20150402
|
||||
holiday.es-CO5.name=Viernes Santo
|
||||
holiday.es-CO5.date=20210402
|
||||
holiday.es-CO5.date=20150403
|
||||
holiday.es-CO6.name=Domingo de Pascua
|
||||
holiday.es-CO6.date=20210404
|
||||
holiday.es-CO6.date=20150405
|
||||
holiday.es-CO7.name=Día del Trabajo
|
||||
holiday.es-CO7.date=20210501
|
||||
holiday.es-CO7.date=20150501
|
||||
holiday.es-CO8.name=La Ascensión del Señor
|
||||
holiday.es-CO8.date=20210517
|
||||
holiday.es-CO8.date=20150518
|
||||
holiday.es-CO9.name=Corpus Christi
|
||||
holiday.es-CO9.date=20210607
|
||||
holiday.es-CO9.date=20150608
|
||||
holiday.es-CO10.name=El Sagrado Corazón de Jesús
|
||||
holiday.es-CO10.date=20210614
|
||||
holiday.es-CO10.date=20150615
|
||||
holiday.es-CO11.name=San Pedro y San Pablo
|
||||
holiday.es-CO11.date=20210705
|
||||
holiday.es-CO11.date=20150629
|
||||
holiday.es-CO12.name=Grito de Independencia
|
||||
holiday.es-CO12.date=20210720
|
||||
holiday.es-CO12.date=20150720
|
||||
holiday.es-CO13.name=Batalla de Boyacá
|
||||
holiday.es-CO13.date=20210807
|
||||
holiday.es-CO13.date=20150807
|
||||
holiday.es-CO14.name=Asunción de la Virgen
|
||||
holiday.es-CO14.date=20210816
|
||||
holiday.es-CO14.date=20150817
|
||||
holiday.es-CO15.name=Día de la Raza
|
||||
holiday.es-CO15.date=20211018
|
||||
holiday.es-CO15.date=20151012
|
||||
holiday.es-CO16.name=Todos los Santos
|
||||
holiday.es-CO16.date=20211101
|
||||
holiday.es-CO16.date=20151102
|
||||
holiday.es-CO17.name=Independencia de Cartagena
|
||||
holiday.es-CO17.date=20211115
|
||||
holiday.es-CO17.date=20151116
|
||||
holiday.es-CO18.name=Inmaculada Concepción
|
||||
holiday.es-CO18.date=20211208
|
||||
holiday.es-CO18.date=20151208
|
||||
holiday.es-CO19.name=Navidad
|
||||
holiday.es-CO19.date=20211225
|
||||
holiday.es-CO19.date=20151225
|
||||
holiday.es-CO20.name=Año Nuevo
|
||||
holiday.es-CO20.date=20220101
|
||||
holiday.es-CO20.date=20160101
|
||||
holiday.es-CO21.name=Día de los Reyes Magos
|
||||
holiday.es-CO21.date=20220110
|
||||
holiday.es-CO21.date=20160111
|
||||
holiday.es-CO22.name=Día de San José
|
||||
holiday.es-CO22.date=20220321
|
||||
holiday.es-CO22.date=20160321
|
||||
holiday.es-CO23.name=Jueves Santo
|
||||
holiday.es-CO23.date=20220414
|
||||
holiday.es-CO23.date=20160324
|
||||
holiday.es-CO24.name=Viernes Santo
|
||||
holiday.es-CO24.date=20220415
|
||||
holiday.es-CO24.date=20160325
|
||||
holiday.es-CO25.name=Domingo de Pascua
|
||||
holiday.es-CO25.date=20220417
|
||||
holiday.es-CO25.date=20160326
|
||||
holiday.es-CO26.name=Día del Trabajo
|
||||
holiday.es-CO26.date=20220501
|
||||
holiday.es-CO26.date=20160501
|
||||
holiday.es-CO27.name=La Ascensión del Señor
|
||||
holiday.es-CO27.date=20220530
|
||||
holiday.es-CO27.date=20160509
|
||||
holiday.es-CO28.name=Corpus Christi
|
||||
holiday.es-CO28.date=20220620
|
||||
holiday.es-CO28.date=20160530
|
||||
holiday.es-CO29.name=El Sagrado Corazón de Jesús
|
||||
holiday.es-CO29.date=20220627
|
||||
holiday.es-CO29.date=20160606
|
||||
holiday.es-CO30.name=San Pedro y San Pablo
|
||||
holiday.es-CO30.date=20220704
|
||||
holiday.es-CO30.date=20160704
|
||||
holiday.es-CO31.name=Grito de Independencia
|
||||
holiday.es-CO31.date=20220720
|
||||
holiday.es-CO31.date=20160720
|
||||
holiday.es-CO32.name=Batalla de Boyacá
|
||||
holiday.es-CO32.date=20220807
|
||||
holiday.es-CO32.date=20160807
|
||||
holiday.es-CO33.name=Asunción de la Virgen
|
||||
holiday.es-CO33.date=20220815
|
||||
holiday.es-CO33.date=20160815
|
||||
holiday.es-CO34.name=Día de la Raza
|
||||
holiday.es-CO34.date=20221017
|
||||
holiday.es-CO34.date=20161017
|
||||
holiday.es-CO35.name=Todos los Santos
|
||||
holiday.es-CO35.date=20221107
|
||||
holiday.es-CO35.date=20161107
|
||||
holiday.es-CO36.name=Independencia de Cartagena
|
||||
holiday.es-CO36.date=20221114
|
||||
holiday.es-CO36.date=20161114
|
||||
holiday.es-CO37.name=Inmaculada Concepción
|
||||
holiday.es-CO37.date=20221208
|
||||
holiday.es-CO37.date=20161208
|
||||
holiday.es-CO38.name=Navidad
|
||||
holiday.es-CO38.date=20221225
|
||||
holiday.es-CO38.date=20161225
|
||||
|
||||
75
doc/rc/holidays.es-EC.rc
Normal file
75
doc/rc/holidays.es-EC.rc
Normal file
@@ -0,0 +1,75 @@
|
||||
###############################################################################
|
||||
# International Holiday Data provided by Holidata.net
|
||||
# http://holidata.net/es-EC/2015.json
|
||||
# http://holidata.net/es-EC/2016.json
|
||||
#
|
||||
# Copyright 2006 - 2016, Paul Beckingham, Federico Hernandez.
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to deal
|
||||
# in the Software without restriction, including without limitation the rights
|
||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
# copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be included
|
||||
# in all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
# SOFTWARE.
|
||||
#
|
||||
# http://www.opensource.org/licenses/mit-license.php
|
||||
#
|
||||
###############################################################################
|
||||
|
||||
holiday.es-EC1.name=Año Nuevo
|
||||
holiday.es-EC1.date=20150101
|
||||
holiday.es-EC2.name=Año Nuevo
|
||||
holiday.es-EC2.date=20150102
|
||||
holiday.es-EC3.name=Carnaval
|
||||
holiday.es-EC3.date=20150216
|
||||
holiday.es-EC4.name=Carnaval
|
||||
holiday.es-EC4.date=20150217
|
||||
holiday.es-EC5.name=Viernes Santo
|
||||
holiday.es-EC5.date=20150403
|
||||
holiday.es-EC6.name=Día del Trabajo
|
||||
holiday.es-EC6.date=20150501
|
||||
holiday.es-EC7.name=Batalla del Pichincha
|
||||
holiday.es-EC7.date=20150524
|
||||
holiday.es-EC8.name=Primer Grito de Independencia
|
||||
holiday.es-EC8.date=20150810
|
||||
holiday.es-EC9.name=Independencia de Guayaquil
|
||||
holiday.es-EC9.date=20151009
|
||||
holiday.es-EC10.name=Día de Difuntos
|
||||
holiday.es-EC10.date=20151102
|
||||
holiday.es-EC11.name=Independencia de Cuenca
|
||||
holiday.es-EC11.date=20151103
|
||||
holiday.es-EC12.name=Navidad
|
||||
holiday.es-EC12.date=20151225
|
||||
holiday.es-EC13.name=Año Nuevo
|
||||
holiday.es-EC13.date=20160101
|
||||
holiday.es-EC14.name=Carnaval
|
||||
holiday.es-EC14.date=20160208
|
||||
holiday.es-EC15.name=Carnaval
|
||||
holiday.es-EC15.date=20160209
|
||||
holiday.es-EC16.name=Viernes Santo
|
||||
holiday.es-EC16.date=20160325
|
||||
holiday.es-EC17.name=Día del Trabajo
|
||||
holiday.es-EC17.date=20160501
|
||||
holiday.es-EC18.name=Batalla del Pichincha
|
||||
holiday.es-EC18.date=20160524
|
||||
holiday.es-EC19.name=Primer Grito de Independencia
|
||||
holiday.es-EC19.date=20160810
|
||||
holiday.es-EC20.name=Independencia de Guayaquil
|
||||
holiday.es-EC20.date=20161009
|
||||
holiday.es-EC21.name=Día de Difuntos
|
||||
holiday.es-EC21.date=20161102
|
||||
holiday.es-EC22.name=Independencia de Cuenca
|
||||
holiday.es-EC22.date=20161103
|
||||
holiday.es-EC23.name=Navidad
|
||||
holiday.es-EC23.date=20161225
|
||||
@@ -1,9 +1,9 @@
|
||||
###############################################################################
|
||||
# International Holiday Data provided by Holidata.net
|
||||
# https://holidata.net/es-ES/2021.json
|
||||
# https://holidata.net/es-ES/2022.json
|
||||
# http://holidata.net/es-ES/2015.json
|
||||
# http://holidata.net/es-ES/2016.json
|
||||
#
|
||||
# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
|
||||
# Copyright 2006 - 2016, Paul Beckingham, Federico Hernandez.
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -23,133 +23,59 @@
|
||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
# SOFTWARE.
|
||||
#
|
||||
# https://www.opensource.org/licenses/mit-license.php
|
||||
# http://www.opensource.org/licenses/mit-license.php
|
||||
#
|
||||
###############################################################################
|
||||
|
||||
holiday.es-ES1.name=Año Nuevo
|
||||
holiday.es-ES1.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
|
||||
holiday.es-ES1.date=20150101
|
||||
holiday.es-ES2.name=Día de los Reyes
|
||||
holiday.es-ES2.date=20150106
|
||||
holiday.es-ES3.name=Viernes Santo
|
||||
holiday.es-ES3.date=20150403
|
||||
holiday.es-ES4.name=Pascua
|
||||
holiday.es-ES4.date=20150405
|
||||
holiday.es-ES5.name=Fiesta del Trabajo
|
||||
holiday.es-ES5.date=20150501
|
||||
holiday.es-ES6.name=Asunción de la Virgen
|
||||
holiday.es-ES6.date=20150815
|
||||
holiday.es-ES7.name=Fiesta Nacional de España
|
||||
holiday.es-ES7.date=20151012
|
||||
holiday.es-ES8.name=Dia de todos los Santos
|
||||
holiday.es-ES8.date=20151101
|
||||
holiday.es-ES9.name=Dia de la Constitución
|
||||
holiday.es-ES9.date=20151206
|
||||
holiday.es-ES10.name=Inmaculada Concepción
|
||||
holiday.es-ES10.date=20151208
|
||||
holiday.es-ES11.name=Noche Buena
|
||||
holiday.es-ES11.date=20151224
|
||||
holiday.es-ES12.name=Navidad
|
||||
holiday.es-ES12.date=20151225
|
||||
holiday.es-ES13.name=Noche Vieja
|
||||
holiday.es-ES13.date=20151231
|
||||
holiday.es-ES14.name=Año Nuevo
|
||||
holiday.es-ES14.date=20160101
|
||||
holiday.es-ES15.name=Día de los Reyes
|
||||
holiday.es-ES15.date=20160106
|
||||
holiday.es-ES16.name=Viernes Santo
|
||||
holiday.es-ES16.date=20160325
|
||||
holiday.es-ES17.name=Pascua
|
||||
holiday.es-ES17.date=20160327
|
||||
holiday.es-ES18.name=Fiesta del Trabajo
|
||||
holiday.es-ES18.date=20160501
|
||||
holiday.es-ES19.name=Asunción de la Virgen
|
||||
holiday.es-ES19.date=20160815
|
||||
holiday.es-ES20.name=Fiesta Nacional de España
|
||||
holiday.es-ES20.date=20161012
|
||||
holiday.es-ES21.name=Dia de todos los Santos
|
||||
holiday.es-ES21.date=20161101
|
||||
holiday.es-ES22.name=Dia de la Constitución
|
||||
holiday.es-ES22.date=20161206
|
||||
holiday.es-ES23.name=Inmaculada Concepción
|
||||
holiday.es-ES23.date=20161208
|
||||
holiday.es-ES24.name=Noche Buena
|
||||
holiday.es-ES24.date=20161224
|
||||
holiday.es-ES25.name=Navidad
|
||||
holiday.es-ES25.date=20161225
|
||||
holiday.es-ES26.name=Noche Vieja
|
||||
holiday.es-ES26.date=20161231
|
||||
|
||||
69
doc/rc/holidays.es-MX.rc
Normal file
69
doc/rc/holidays.es-MX.rc
Normal file
@@ -0,0 +1,69 @@
|
||||
###############################################################################
|
||||
# International Holiday Data provided by Holidata.net
|
||||
# http://holidata.net/es-MX/2015.json
|
||||
# http://holidata.net/es-MX/2016.json
|
||||
#
|
||||
# Copyright 2006 - 2016, Paul Beckingham, Federico Hernandez.
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to deal
|
||||
# in the Software without restriction, including without limitation the rights
|
||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
# copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be included
|
||||
# in all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
# SOFTWARE.
|
||||
#
|
||||
# http://www.opensource.org/licenses/mit-license.php
|
||||
#
|
||||
###############################################################################
|
||||
|
||||
holiday.es-MX1.name=Año Nuevo
|
||||
holiday.es-MX1.date=20150101
|
||||
holiday.es-MX2.name=Día de la Constitución
|
||||
holiday.es-MX2.date=20150202
|
||||
holiday.es-MX3.name=Natalicio de Benito Juárez
|
||||
holiday.es-MX3.date=20150316
|
||||
holiday.es-MX4.name=Jueves Santo
|
||||
holiday.es-MX4.date=20150402
|
||||
holiday.es-MX5.name=Viernes Santo
|
||||
holiday.es-MX5.date=20150403
|
||||
holiday.es-MX6.name=Día del Trabajo
|
||||
holiday.es-MX6.date=20150501
|
||||
holiday.es-MX7.name=Día de la Independencia
|
||||
holiday.es-MX7.date=20150916
|
||||
holiday.es-MX8.name=Día de la Revolución
|
||||
holiday.es-MX8.date=20151116
|
||||
holiday.es-MX9.name=Nuestra Señora de Guadalupe
|
||||
holiday.es-MX9.date=20151212
|
||||
holiday.es-MX10.name=Navidad
|
||||
holiday.es-MX10.date=20151225
|
||||
holiday.es-MX11.name=Año Nuevo
|
||||
holiday.es-MX11.date=20160101
|
||||
holiday.es-MX12.name=Día de la Constitución
|
||||
holiday.es-MX12.date=20160201
|
||||
holiday.es-MX13.name=Natalicio de Benito Juárez
|
||||
holiday.es-MX13.date=20160314
|
||||
holiday.es-MX14.name=Jueves Santo
|
||||
holiday.es-MX14.date=20160324
|
||||
holiday.es-MX15.name=Viernes Santo
|
||||
holiday.es-MX15.date=20160325
|
||||
holiday.es-MX16.name=Día del Trabajo
|
||||
holiday.es-MX16.date=20160501
|
||||
holiday.es-MX17.name=Día de la Independencia
|
||||
holiday.es-MX17.date=20160916
|
||||
holiday.es-MX18.name=Día de la Revolución
|
||||
holiday.es-MX18.date=20161121
|
||||
holiday.es-MX19.name=Nuestra Señora de Guadalupe
|
||||
holiday.es-MX19.date=20161212
|
||||
holiday.es-MX20.name=Navidad
|
||||
holiday.es-MX20.date=20161225
|
||||
@@ -1,9 +1,9 @@
|
||||
###############################################################################
|
||||
# International Holiday Data provided by Holidata.net
|
||||
# https://holidata.net/es-US/2021.json
|
||||
# https://holidata.net/es-US/2022.json
|
||||
# http://holidata.net/es-US/2015.json
|
||||
# http://holidata.net/es-US/2016.json
|
||||
#
|
||||
# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
|
||||
# Copyright 2006 - 2016, Paul Beckingham, Federico Hernandez.
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to deal
|
||||
@@ -23,55 +23,51 @@
|
||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
# SOFTWARE.
|
||||
#
|
||||
# https://www.opensource.org/licenses/mit-license.php
|
||||
# http://www.opensource.org/licenses/mit-license.php
|
||||
#
|
||||
###############################################################################
|
||||
|
||||
holiday.es-US1.name=Año Neuvo
|
||||
holiday.es-US1.date=20210101
|
||||
holiday.es-US1.date=20150101
|
||||
holiday.es-US2.name=Cumpleaños de Martin Luther King, Jr.
|
||||
holiday.es-US2.date=20210118
|
||||
holiday.es-US2.date=20150119
|
||||
holiday.es-US3.name=Día del Presidente
|
||||
holiday.es-US3.date=20210215
|
||||
holiday.es-US3.date=20150216
|
||||
holiday.es-US4.name=Día del Patriota
|
||||
holiday.es-US4.date=20210419
|
||||
holiday.es-US4.date=20150420
|
||||
holiday.es-US5.name=Día de los Caídos
|
||||
holiday.es-US5.date=20210531
|
||||
holiday.es-US5.date=20150525
|
||||
holiday.es-US6.name=Día de la Independiencia
|
||||
holiday.es-US6.date=20210704
|
||||
holiday.es-US6.date=20150704
|
||||
holiday.es-US7.name=Día del Trabajo
|
||||
holiday.es-US7.date=20210906
|
||||
holiday.es-US7.date=20150907
|
||||
holiday.es-US8.name=Día de Columbus
|
||||
holiday.es-US8.date=20211011
|
||||
holiday.es-US8.date=20151012
|
||||
holiday.es-US9.name=Día de los Veteranos
|
||||
holiday.es-US9.date=20211111
|
||||
holiday.es-US9.date=20151111
|
||||
holiday.es-US10.name=Día de Acción de Gracias
|
||||
holiday.es-US10.date=20211125
|
||||
holiday.es-US10.date=20151126
|
||||
holiday.es-US11.name=Navidad
|
||||
holiday.es-US11.date=20211225
|
||||
holiday.es-US11.date=20151225
|
||||
holiday.es-US12.name=Año Neuvo
|
||||
holiday.es-US12.date=20220101
|
||||
holiday.es-US12.date=20160101
|
||||
holiday.es-US13.name=Cumpleaños de Martin Luther King, Jr.
|
||||
holiday.es-US13.date=20220117
|
||||
holiday.es-US13.date=20160118
|
||||
holiday.es-US14.name=Día del Presidente
|
||||
holiday.es-US14.date=20220221
|
||||
holiday.es-US14.date=20160215
|
||||
holiday.es-US15.name=Día del Patriota
|
||||
holiday.es-US15.date=20220418
|
||||
holiday.es-US15.date=20160418
|
||||
holiday.es-US16.name=Día de los Caídos
|
||||
holiday.es-US16.date=20220530
|
||||
holiday.es-US16.date=20160530
|
||||
holiday.es-US17.name=Día de la Independiencia
|
||||
holiday.es-US17.date=20220704
|
||||
holiday.es-US17.date=20160704
|
||||
holiday.es-US18.name=Día del Trabajo
|
||||
holiday.es-US18.date=20220905
|
||||
holiday.es-US18.date=20160905
|
||||
holiday.es-US19.name=Día de Columbus
|
||||
holiday.es-US19.date=20221010
|
||||
holiday.es-US19.date=20161010
|
||||
holiday.es-US20.name=Día de los Veteranos
|
||||
holiday.es-US20.date=20221111
|
||||
holiday.es-US20.date=20161111
|
||||
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
|
||||
holiday.es-US21.date=20161124
|
||||
holiday.es-US22.name=Navidad
|
||||
holiday.es-US22.date=20161225
|
||||
|
||||
77
doc/rc/holidays.et-EE.rc
Normal file
77
doc/rc/holidays.et-EE.rc
Normal file
@@ -0,0 +1,77 @@
|
||||
###############################################################################
|
||||
# International Holiday Data provided by Holidata.net
|
||||
# http://holidata.net/et-EE/2015.json
|
||||
# http://holidata.net/et-EE/2016.json
|
||||
#
|
||||
# Copyright 2006 - 2016, Paul Beckingham, Federico Hernandez.
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to deal
|
||||
# in the Software without restriction, including without limitation the rights
|
||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
# copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be included
|
||||
# in all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
||||
# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
||||
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
# SOFTWARE.
|
||||
#
|
||||
# http://www.opensource.org/licenses/mit-license.php
|
||||
#
|
||||
###############################################################################
|
||||
|
||||
holiday.et-EE1.name=uusaasta
|
||||
holiday.et-EE1.date=20150101
|
||||
holiday.et-EE2.name=iseseisvuspäev
|
||||
holiday.et-EE2.date=20150224
|
||||
holiday.et-EE3.name=suur reede
|
||||
holiday.et-EE3.date=20150403
|
||||
holiday.et-EE4.name=ülestõusmispühade 1. püha
|
||||
holiday.et-EE4.date=20150405
|
||||
holiday.et-EE5.name=kevadpüha
|
||||
holiday.et-EE5.date=20150501
|
||||
holiday.et-EE6.name=nelipühade 1. püha
|
||||
holiday.et-EE6.date=20150524
|
||||
holiday.et-EE7.name=võidupüha
|
||||
holiday.et-EE7.date=20150623
|
||||
holiday.et-EE8.name=jaanipäev
|
||||
holiday.et-EE8.date=20150624
|
||||
holiday.et-EE9.name=taasiseseisvumispäev
|
||||
holiday.et-EE9.date=20150820
|
||||
holiday.et-EE10.name=jõululaupäev
|
||||
holiday.et-EE10.date=20151224
|
||||
holiday.et-EE11.name=esimene jõulupüha
|
||||
holiday.et-EE11.date=20151225
|
||||
holiday.et-EE12.name=teine jõulupüha
|
||||
holiday.et-EE12.date=20151226
|
||||
holiday.et-EE13.name=uusaasta
|
||||
holiday.et-EE13.date=20160101
|
||||
holiday.et-EE14.name=iseseisvuspäev
|
||||
holiday.et-EE14.date=20160224
|
||||
holiday.et-EE15.name=suur reede
|
||||
holiday.et-EE15.date=20160325
|
||||
holiday.et-EE16.name=ülestõusmispühade 1. püha
|
||||
holiday.et-EE16.date=20160327
|
||||
holiday.et-EE17.name=kevadpüha
|
||||
holiday.et-EE17.date=20160501
|
||||
holiday.et-EE18.name=nelipühade 1. püha
|
||||
holiday.et-EE18.date=20160515
|
||||
holiday.et-EE19.name=võidupüha
|
||||
holiday.et-EE19.date=20160623
|
||||
holiday.et-EE20.name=jaanipäev
|
||||
holiday.et-EE20.date=20160624
|
||||
holiday.et-EE21.name=taasiseseisvumispäev
|
||||
holiday.et-EE21.date=20160820
|
||||
holiday.et-EE22.name=jõululaupäev
|
||||
holiday.et-EE22.date=20161224
|
||||
holiday.et-EE23.name=esimene jõulupüha
|
||||
holiday.et-EE23.date=20161225
|
||||
holiday.et-EE24.name=teine jõulupüha
|
||||
holiday.et-EE24.date=20161226
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user