Merge branch '2.6.0'

This commit is contained in:
Tomas Babej 2021-10-02 22:04:54 -04:00
commit c010855bac
No known key found for this signature in database
GPG key ID: B0747C6578F7D2F5
456 changed files with 17264 additions and 12446 deletions

1
.github/FUNDING.yml vendored Normal file
View file

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

View file

@ -6,9 +6,6 @@ jobs:
fail-fast: false
matrix:
include:
- name: "Centos 7"
runner: ubuntu-latest
dockerfile: centos7
- name: "Centos 8"
runner: ubuntu-latest
dockerfile: centos8
@ -21,9 +18,9 @@ jobs:
- name: "Fedora 33"
runner: ubuntu-latest
dockerfile: fedora33
- name: "Debian Stable"
- name: "Fedora 34"
runner: ubuntu-latest
dockerfile: debianstable
dockerfile: fedora34
- name: "Debian Testing"
runner: ubuntu-latest
dockerfile: debiantesting
@ -33,6 +30,9 @@ jobs:
- name: "Ubuntu 20.04"
runner: ubuntu-latest
dockerfile: ubuntu2004
- name: "Ubuntu 21.04"
runner: ubuntu-latest
dockerfile: ubuntu2104
- name: "OpenSUSE 15.0"
runner: ubuntu-latest
dockerfile: opensuse1500

16
AUTHORS
View file

@ -3,6 +3,7 @@ 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)
@ -13,7 +14,6 @@ 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:
@ -150,9 +150,14 @@ The following submitted code, packages or analysis, and deserve special thanks:
Janik Rabe
mrossinek
taiyu-len
Lionel Miller
Chad Phillips
Lionel Miller
Florian Heiderich
Anthony VB
Julien Rabinow
Daniel Mowitz
Scott Mcdermott
Bharatvaj
Thanks to the following, who submitted detailed bug reports and excellent
suggestions:
@ -336,5 +341,8 @@ suggestions:
Martin F. Krafft
tom-doerr
ad-si
Adrien Lemaire
Wray Zheng
coaxial
Arvedui
reportaman
Pablo Vizcay
Jake C.

View file

@ -7,9 +7,10 @@ include (CheckStructHasMember)
set (HAVE_CMAKE true)
project (task)
set (PROJECT_VERSION "2.5.3")
include (CXXSniffer)
set (PROJECT_VERSION "2.6.0")
OPTION (ENABLE_WASM "Enable 'wasm' support" OFF)
if (ENABLE_WASM)
@ -27,13 +28,13 @@ else (ENABLE_SYNC)
endif (ENABLE_SYNC)
message ("-- Looking for libshared")
if (EXISTS ${CMAKE_SOURCE_DIR}/src/libshared/.git)
if (EXISTS ${CMAKE_SOURCE_DIR}/src/libshared/src)
message ("-- Found libshared")
else (EXISTS ${CMAKE_SOURCE_DIR}/src/libshared/.git)
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/.git)
endif (EXISTS ${CMAKE_SOURCE_DIR}/src/libshared/src)
message ("-- Looking for SHA1 references")
if (EXISTS ${CMAKE_SOURCE_DIR}/.git/index)
@ -111,6 +112,17 @@ else (HAVE_UUID_UNPARSE_LOWER)
message ("-- Found libuuid, using internal uuid_unparse_lower")
endif (HAVE_UUID_UNPARSE_LOWER)
if (HAIKU)
# search for socket() in libnetwork on Haiku
message("-- Looking for libnetwork")
find_library (NETWORK_LIBRARY NAMES network)
if (NETWORK_LIBRARY)
set (TASK_LIBRARIES ${TASK_LIBRARIES} ${NETWORK_LIBRARY})
else (NETWORK_LIBRARY)
message(FATAL_ERROR "-- libnetwork not found.")
endif (NETWORK_LIBRARY)
endif (HAIKU)
if (SOLARIS)
# accept() is in libsocket according to its manpage
message("-- Looking for libsocket")
@ -153,6 +165,18 @@ foreach (doc_FILE ${doc_FILES})
install (FILES ${doc_FILE} DESTINATION ${TASK_DOCDIR})
endforeach (doc_FILE)
add_custom_command(OUTPUT run-review
COMMAND docker build -q --build-arg PR=$(PR) --build-arg LIBPR=$(LIBPR) -t taskwarrior-review:$(PR)s$(LIBPR) - < scripts/review-dockerfile
COMMAND docker run --rm --memory 1g --hostname pr-$(PR)s$(LIBPR) -it taskwarrior-review:$(PR)s$(LIBPR) bash || :
)
add_custom_target(review DEPENDS run-review)
add_custom_command(OUTPUT run-reproduce
COMMAND docker build -q --build-arg RELEASE=$(RELEASE) -t taskwarrior-reproduce:$(RELEASE) - < scripts/reproduce-dockerfile
COMMAND docker run --rm --memory 1g --hostname tw-$(RELEASE) -it taskwarrior-reproduce:$(RELEASE) bash || :
)
add_custom_target(reproduce DEPENDS run-reproduce)
# ---
set (CPACK_SOURCE_GENERATOR "TGZ")
@ -161,5 +185,7 @@ set (CPACK_SOURCE_IGNORE_FILES "CMakeCache" "CMakeFiles" "CPackConfig" "CPackSo
"_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"
".github/" "/\\\\.gitignore" "/\\\\.git/" "swp$" "src/lex$" ".*tar.gz")
"swp$" "src/lex$" "task-.*.tar.gz" "commit.h" "cmake.h$" "\\\\.gitmodules"
"src/libshared/\\\\.git" ".github/" ".*\\\\.gitignore$"
"src/liblibshared.a" "docker-compose.yml" "\\\\.git/")
include (CPack)

View file

@ -1,6 +1,6 @@
Taskwarrior - a command line task list manager.
Copyright 2006 - 2021, Paul Beckingham, Federico Hernandez.
Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal

147
ChangeLog
View file

@ -1,9 +1,148 @@
2.5.3 () -
2.6.0 () -
- 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
------ current release ---------------------------
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.
------ current release ---------------------------
------ old releases ------------------------------
2.5.2 (2020-12-05) - b0c17d11639dc6e783befd89c8508f2abb9b4287
@ -269,8 +408,6 @@
- The 'run_all' script was not correctly using exit code 0 when all tests pass
(thanks to Gordon Ball).
------ old releases ------------------------------
2.5.0 (2015-10-21) dd5968a61b1fab258b38879cfdbb7d67f1bcd550
- TW-20 Task edit loses annotation precision, causing journal updating code
@ -1305,7 +1442,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
http://holidata.net, and brings the installed holiday files up to date.
https://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

View file

@ -2,10 +2,10 @@
## Satisfy the Requirements:
* CMake 3.0 or later
* gcc 5.0 or later, clang 3.4 or later, or a compiler with full C++14 support
* gcc 7.0 or later, clang 6.0 or later, or a compiler with full C++17 support
* libuuid (if not on macOS)
* gnutls (optional)
* python 2.7 or 3 (optional, for running the test suite)
* python 3 (optional, for running the test suite)
## Obtain and build code:
```
@ -20,7 +20,7 @@
```
## Running Test Suite:
```
$ cd tests
$ cd test
$ make VERBOSE=1 # Shows details
$ ./run_all # Runs all tests silently > all.log
$ ./problems # Enumerate test failures in all.log
@ -44,9 +44,9 @@
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 us in the #taskwarrior IRC channel on freenode.net or libera.chat.
Many great ideas, suggestions, testing and discussions have taken place
there. It is also the quickest way to get help, or confirm a bug.
* Review documentation: there are man pages, online articles, tutorials and
so on, and these may contain errors, or they may not convey ideas in the
@ -148,10 +148,9 @@
# Current Code Base Condition
**'master' branch**:
* 2.5.1 Current release, locked.
* 2.5.3 Current release, locked.
**'2.6.0' branch**:
* Current development branch.
**'2.6.0' branch**:
* Current development branch no plans yet.
---
2018-05-13 Updated for 2.5.2

12
INSTALL
View file

@ -14,9 +14,9 @@ from source. More information on CMake can be obtained at https://cmake.org
You will also need:
- make
You will need a C++ compiler that supports full C++14, which includes:
- gcc 5.0 (released 2013-12-23)
- clang 3.4 (released 2014-01-02)
You will need a C++ compiler that supports full C++17, which includes:
- gcc 7.1 (released 2017-05-02)
- clang 5.0 (released 2017-09-07)
You will need the following libraries:
- libuuid (not needed for OSX)
@ -142,9 +142,9 @@ Darwin, 32bit
See:
https://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
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
OpenBSD

View file

@ -1,6 +1,8 @@
Taskwarrior - a command line task list manager.
The MIT License
Copyright 2006 - 2021, Paul Beckingham, Federico Hernandez.
https://www.opensource.org/licenses/mit-license.php
Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
@ -20,4 +22,3 @@ 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

138
NEWS
View file

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

View file

@ -1,25 +1,63 @@
# Taskwarrior
<div align="center">
<img src="https://avatars.githubusercontent.com/u/36100920?s=200&u=24da05914c20c4ccfe8485310f7b83049407fa9a&v=4"></br>
[![GitHub Actions build status](https://github.com/GothenburgBitFactory/taskwarrior/workflows/tests/badge.svg?branch=master)](https://github.com/GothenburgBitFactory/taskwarrior/actions)
[![GitHub Actions build status](https://github.com/GothenburgBitFactory/taskwarrior/workflows/tests/badge.svg?branch=2.6.0)](https://github.com/GothenburgBitFactory/taskwarrior/actions)
[![Release](https://img.shields.io/github/v/release/GothenburgBitFactory/taskwarrior)](https://github.com/GothenburgBitFactory/taskwarrior/releases/latest)
[![Release date](https://img.shields.io/github/release-date/GothenburgBitFactory/taskwarrior)](https://github.com/GothenburgBitFactory/taskwarrior/releases/latest)
![Commits since release](https://img.shields.io/github/commits-since/GothenburgBitFactory/taskwarrior/latest)
[![GitHub Sponsors](https://img.shields.io/github/sponsors/GothenburgBitFactory?color=green)](https://github.com/sponsors/GothenburgBitFactory/)
</br>
[![Twitter](https://img.shields.io/twitter/follow/taskwarrior?style=social)](https://twitter.com/taskwarrior)
</div>
Thank you for taking a look at Taskwarrior!
## Taskwarrior
![OS-X downloads](https://img.shields.io/homebrew/installs/dy/task?label=OS-X%20downloads)
![Github downloads](https://img.shields.io/github/downloads/GothenburgBitFactory/taskwarrior/total?label=Github%20downloads)
![Linux downloads](https://img.shields.io/badge/Linux%20downloads-unknown-gray)
Taskwarrior is a 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 is a command line task list management utility with a [multitude of
features](https://taskwarrior.org/docs/), developed as a portable open source project
with an active and quite vast [ecosystem of tools, hooks and
extensions](https://taskwarrior.org/tools/).
## Install
[![Arch](https://img.shields.io/archlinux/v/community/x86_64/task)](https://archlinux.org/packages/community/x86_64/task/)
[![Debian](https://img.shields.io/debian/v/task/testing)](https://packages.debian.org/search?keywords=task&searchon=names&suite=all&section=all)
[![Fedora](https://img.shields.io/fedora/v/task)](https://bodhi.fedoraproject.org/updates/?packages=task)
[![Homebrew](https://img.shields.io/homebrew/v/task)](https://formulae.brew.sh/formula/task#default)
[![Ubuntu](https://img.shields.io/ubuntu/v/task)](https://packages.ubuntu.com/search?keywords=task&searchon=names&suite=hirsute&section=all)
Taskwarrior is packaged on a wide range of [Linux/Unix systems, Mac OS and
Windows](https://taskwarrior.org/download/). Check out the latest available
packages in repositories of your OS distribution of choice [on
Repology](https://repology.org/project/taskwarrior/versions).
Alternatively, you can build Taskwarrior from source.
## Documentation
There is extensive online documentation.
You'll find all the details at [taskwarrior.org/docs](https://taskwarrior.org/docs)
The [online documentation](https://taskwarrior.org/docs), downloads, news and
more are available on our website, [taskwarrior.org](https://taskwarrior.org).
At the site you'll find online documentation, downloads, news and more.
We also recommend following [@taskwarrior on
Twitter](https://twitter.com/taskwarrior), where we share info about new
features, releases and various tips and tricks for new Taskwarrior users.
## Support
## Community
[![Twitter](https://img.shields.io/twitter/follow/taskwarrior?style=social)](https://twitter.com/taskwarrior)
[![Reddit](https://img.shields.io/reddit/subreddit-subscribers/taskwarrior?style=social)](https://reddit.com/r/taskwarrior/)
[![Libera.chat](https://img.shields.io/badge/IRC%20libera.chat-online-green)](https://web.libera.chat/#taskwarrior)
[![Discord](https://img.shields.io/discord/796949983734661191?label=discord)](https://discord.gg/eRXEHk8w62)
[![Github discussions](https://img.shields.io/github/discussions/GothenburgBitFactory/taskwarrior?label=GitHub%20discussions)](https://github.com/GothenburgBitFactory/taskwarrior/discussions)
For support options, take a look at [taskwarrior.org/support](https://taskwarrior.org/support)
Taskwarrior has a lively community on many places on the internet.
Please use pull requests, or alternately send your code patches to
Best place to ask questions is our [discussions forum on
Github](https://github.com/GothenburgBitFactory/taskwarrior/discussions). For
other support options, take a look at
[taskwarrior.org/support](https://taskwarrior.org/support)
For code contributions, please use pull requests, or alternately send your code patches to
[support@gothenburgbitfactory.org](mailto:support@gothenburgbitfactory.org)
## Branching Model
@ -32,8 +70,7 @@ We use the following branching model:
* `2.6.0` is the current development branch. All work is done here, and upon
release it will be merged to `master`. This development branch is not stable,
may not even build or pass tests, and should be treated accordingly.
Make backups.
and should be treated accordingly. Make backups.
## Installing
@ -42,7 +79,9 @@ There are many binary packages available, but to install from source requires:
* git
* cmake
* make
* C++ compiler, currently gcc 5.0+ or clang 3.4+ for full C++14 support
* C++ compiler, currently gcc 7.1+ or clang 5.0+ for full C++17 support
* libuuid
* GnuTLS (optional, required for sync)
Download the tarball, and expand it:
@ -55,17 +94,6 @@ Or clone this repository:
$ git clone --recursive -b 2.6.0 https://github.com/GothenburgBitFactory/taskwarrior.git
$ cd taskwarrior
In case of errors with libshared - URL pointing to git.tasktools.org in either .git/config or .gitmodules:
$ sed -i 's/git.tasktools.org\/TM/github.com\/GothenburgBitFactory/' .git/config
$ git submodule update
or
$ sed -i 's/git.tasktools.org\/TM/github.com\/GothenburgBitFactory/' .gitmodules
$ git submodule init
$ git submodule update
Then build:
$ cmake -DCMAKE_BUILD_TYPE=release .
@ -77,14 +105,27 @@ Then build:
$ sudo make install
## Contributing
[![Contributors](https://img.shields.io/github/contributors/GothenburgBitFactory/taskwarrior)](https://github.com/GothenburgBitFactory/taskwarrior/graphs/contributors)
[![Milestone progress](https://img.shields.io/github/milestones/progress/GothenburgBitFactory/taskwarrior/26?label=current%20milestone%20issues)](https://github.com/GothenburgBitFactory/taskwarrior/milestone/26)
[![Good first issus](https://img.shields.io/github/issues/GothenburgBitFactory/taskwarrior/good%20first%20issue)](https://github.com/GothenburgBitFactory/taskwarrior/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22)
Your contributions are especially welcome.
Whether it comes in the form of code patches, ideas, discussion, bug reports, encouragement or criticism, your input is needed.
Visit [Github](https://github.com/GothenburgBitFactory/taskwarrior) and participate in the future of Taskwarrior.
## Sponsoring
[![GitHub Sponsors](https://img.shields.io/github/sponsors/GothenburgBitFactory?color=green)](https://github.com/sponsors/GothenburgBitFactory/)
Taskwarrior is a result of work of mostly small group of volunteers, and has been in development since 2006.
If you are a happy Taskwarrior user, please consider [sponsoring us through
Github Sponsors](https://github.com/sponsors/GothenburgBitFactory/).
Every sponsorship matters, as it directly increases the number of hours core
developers can contribute to the project and makes the project more sustainable.
## License
Taskwarrior is released under the MIT license.
For details check the [LICENSE](LICENSE) file.

View file

@ -227,8 +227,8 @@ rule 'color.deleted' has the highest precedence, and 'color.uda.' the lowest.
The keyword rule shown here as 'keyword.' corresponds to a wildcard pattern,
meaning 'color.keyword.*', or in other words all the keyword rules.
There is also 'color.project.none', 'color.tag.none' and 'color.pri.none' to
specifically represent missing data.
There is also 'color.project.none', 'color.tag.none' and
'color.uda.priority.none' to specifically represent missing data.
.SH THEMES
Taskwarrior supports themes. What this really means is that with the ability to
@ -236,11 +236,10 @@ 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 (note that your installation may use a slightly different path
from the example):
your .taskrc file:
.RS
include ${CMAKE_INSTALL_PREFIX}/${TASK_RCDIR}/dark-256.theme
include dark-256.theme
.RE
You can use any of the standard Taskwarrior themes:
@ -288,7 +287,7 @@ Better yet, create your own, and share it. We will gladly host the theme file
on <https://taskwarrior.org>.
.SH "CREDITS & COPYRIGHTS"
Copyright (C) 2006 \- 2021 P. Beckingham, F. Hernandez.
Copyright (C) 2006 \- 2021 T. Babej, P. Beckingham, F. Hernandez.
Taskwarrior is distributed under the MIT license. See
https://www.opensource.org/licenses/mit-license.php for more information.

View file

@ -147,7 +147,7 @@ Weaknesses:
- You need to manage your own server, or gain access to a hosted server.
.SH "CREDITS & COPYRIGHTS"
Copyright (C) 2006 \- 2021 P. Beckingham, F. Hernandez.
Copyright (C) 2006 \- 2021 T. Babej, P. Beckingham, F. Hernandez.
Taskwarrior is distributed under the MIT license. See
https://www.opensource.org/licenses/mit-license.php for more information.

View file

@ -55,6 +55,7 @@ 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>
@ -75,6 +76,10 @@ 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
@ -93,7 +98,10 @@ 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).
generated, as with verbose=nothing). Those commands which are explicitly affected
by the
.I context
are denoted as such.
.SH READ SUBCOMMANDS
@ -130,16 +138,16 @@ Shows all tasks matching the filter, that block other tasks.
.TP
.B task <filter> burndown.daily
Shows a graphical burndown chart, by day.
Shows a graphical burndown chart, by day. Is affected by the context.
.TP
.B task <filter> burndown.weekly
Shows a graphical burndown chart, by week. Note that 'burndown' is an alias to
the 'burndown.weekly' report.
the 'burndown.weekly' report. Is affected by the context.
.TP
.B task <filter> burndown.monthly
Shows a graphical burndown chart, by month.
Shows a graphical burndown chart, by month. Is affected by the context.
.TP
.B task calendar [due|<month> <year>|<year>] [y]
@ -171,7 +179,7 @@ Shows all tasks matching the filter that are completed.
.TP
.B task <filter> count
Displays only a count of tasks matching the filter.
Displays only a count of tasks matching the filter. Is affected by the context.
.TP
.B task <filter> export
@ -214,20 +222,20 @@ Shows the long usage text.
.TP
.B task <filter> history.annual
Shows a report of task history by year.
Shows a report of task history by year. Is affected by the context.
.TP
.B task <filter> history.monthly
Shows a report of task history by month. Note that 'history' is
an alias to 'history.monthly'.
an alias to 'history.monthly'. Is affected by the context.
.TP
.B task <filter> history.weekly
Shows a report of task history by week.
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.
Shows a report of task history by day. Is affected by the context.
.TP
.B task <filter> ids
@ -296,7 +304,7 @@ value.
.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 has no wait date.
date that is past and is not waiting.
.TP
.B task <filter> oldest
@ -309,7 +317,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.
number of tasks for each. Is affected by the context.
.TP
.B task <filter> recurring
@ -328,7 +336,8 @@ Shows all waiting tasks matching the filter.
.TP
.B task add <mods>
Adds a new pending task to the task list.
Adds a new pending task to the task list. It is affected by the currently set
context.
.TP
.B task <filter> annotate <mods>
@ -340,28 +349,28 @@ Appends description text to an existing task.
.TP
.B task <filter> delete <mods>
Deletes the specified task from task list.
Deletes the specified task from task list. Is affected by the context.
.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.
annotation is deleted. Is affected by the context.
.TP
.B task <filter> done <mods>
Marks the specified task as done.
Marks the specified task as done. Is affected by the context.
.TP
.B task <filter> duplicate <mods>
Duplicates the specified task and allows modifications.
Duplicates the specified task and allows modifications. Is affected by the context.
.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.
provided for exceptional circumstances. Use carefully. Is affected by the context.
.TP
.B task import [<file> ...]
@ -381,7 +390,8 @@ few example scripts, such as:
.TP
.B task log <mods>
Adds a new task that is already completed, to the task list.
Adds a new task that is already completed, to the task list. It is affected by
the currently set context.
.TP
.B task <filter> modify <mods>
@ -389,25 +399,26 @@ Modifies the existing task with provided information.
.TP
.B task <filter> prepend <mods>
Prepends description text to an existing task.
Prepends description text to an existing task. Is affected by the context.
.TP
.B task <filter> purge
Permanently removes the specified tasks from the data files. Only
tasks that are alredy deleted can be purged. This command has a
tasks that are already deleted can be purged. This command has a
local-only effect and changes introduced by it are not synced.
Is affected by the context.
Warning: causes permanent, non-revertible loss of data.
.TP
.B task <filter> start <mods>
Marks the specified tasks as started.
Marks the specified tasks as started. Is affected by the context.
.TP
.B task <filter> stop <mods>
Removes the
.I start
time from the specified task.
time from the specified task. Is affected by the context.
.SH MISCELLANEOUS SUBCOMMANDS
@ -510,6 +521,12 @@ 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
@ -523,11 +540,11 @@ displayed.
.TP
.B task <filter> stats
Shows statistics of the tasks defined by the filter.
Shows statistics of the tasks defined by the filter. Is affected by the context.
.TP
.B task <filter> summary
Shows a report of aggregated task status by project.
Shows a report of aggregated task status by project. Is affected by the context.
.TP
.B task sync [init]
@ -553,7 +570,7 @@ This is a workaround to avoid a recurrence bug that duplicates recurring tasks.
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.
virtual tag. Is affected by the context.
.TP
.B task timesheet [<weeks>]
@ -718,15 +735,16 @@ 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
CHILD Matches if the task has a parent (deprecated in 2.6.0)
COMPLETED Matches if the task has completed status
DELETED Matches if the task has deleted status
DUE Matches if the task is due
INSTANCE Matches if the task is a recurrent instance
LATEST Matches if the task is the newest added task
MONTH Matches if the task is due this month
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
PARENT Matches if the task is a parent (deprecated in 2.6.0)
PENDING Matches if the task has pending status
PRIORITY Matches if the task has a priority
PROJECT Matches if the task has a project
@ -734,6 +752,7 @@ are:
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
@ -783,9 +802,10 @@ to 25 lines.
.TP
.B wait:<wait-date>
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.
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.
.TP
.B depends:<id1,id2 ...>
@ -807,6 +827,8 @@ Attribute modifiers improve filters. Supported modifiers are:
.br
.B after (synonyms over, above)
.br
.B by
.br
.B none
.br
.B any
@ -854,6 +876,24 @@ 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:
@ -1074,7 +1114,7 @@ task ... wait:later
.br
task ... wait:someday
This sets the wait date to 1/18/2038.
This sets the wait date to 12/30/9999.
.TP
Next occurring weekday
@ -1143,9 +1183,31 @@ Every two years.
.RE
.SH 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.
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
purge
start
stats
stop
summary
tags
All other commands are NOT affected by the context.
$ task list
ID Age Project Description Urg
@ -1160,6 +1222,21 @@ result affected by the current active 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.
@ -1170,37 +1247,92 @@ 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
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
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' with a value of 'project:Home'? (yes/no) yes
Are you sure you want to add 'context.home.read' with a value of 'project:Home'? (yes/no) yes
Are you sure you want to add 'context.home.write' with a value of 'project:Home'? (yes/no) yes
Context 'home' successfully defined.
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'? (yes/no) yes
Context 'home' successfully undefined.
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.
To check what is the currently active context, use the 'show' subcommand.
$ task context show
Context 'home' with filter 'project:Home' is currently applied.
Context 'home' with
* read filter: '+home'
* write filter: '+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.home' with a value of 'project:Family or +paul or +nancy'? (yes/no) yes
Are you sure you want to add 'context.family.read' with a value of 'project:Family or +paul or +nancy'? (yes/no) yes
Are you sure you want to add 'context.family.write' with a value of 'project:Family or +paul or +nancy'? (yes/no) no
Context 'family' successfully defined.
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>" configuration variable.
"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
.SH COMMAND ABBREVIATION
All Taskwarrior commands may be abbreviated as long as a unique prefix is used,
@ -1278,12 +1410,15 @@ 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.
Specifies an alternate configuration file with highest priority.
.TP
.B TASKRC=/tmp/.taskrc task ..
The environment variable overrides the default and the command line
specification of the .taskrc file.
.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.
.TP
.B task rc.<name>:<value> ...
@ -1292,8 +1427,8 @@ Specifies individual configuration file overrides.
.TP
.B TASKDATA=/tmp/.task task ...
The environment variable overrides the default, the command line, and
the 'data.location' configuration setting of the task data directory.
The environment variable overrides the default, and the 'data.location'
configuration setting of the task data directory.
.SH MORE EXAMPLES
@ -1311,7 +1446,10 @@ 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.
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
.TP
~/.task
@ -1332,7 +1470,7 @@ 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 P. Beckingham, F. Hernandez.
Copyright (C) 2006 \- 2021 T. Babej, P. Beckingham, F. Hernandez.
Taskwarrior is distributed under the MIT license. See
https://www.opensource.org/licenses/mit-license.php for more information.

View file

@ -9,6 +9,8 @@ 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
@ -34,6 +36,12 @@ 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:
@ -77,8 +85,15 @@ 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.
The entry must be on a single line, no continuations.
$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).
.RS
# <comment>
@ -144,9 +159,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 ${CMAKE_INSTALL_PREFIX}/${TASK_RCDIR}/holidays.en-US.rc
include holidays.en-US.rc
.br
include ${CMAKE_INSTALL_PREFIX}/${TASK_RCDIR}/dark-16.theme
include dark-16.theme
.RE
This includes two standard files that are distributed with Taskwarrior, which
@ -154,7 +169,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 and command line arguments.
These environment variables override defaults, but not command-line arguments.
.TP
.B TASKDATA=~/.task
@ -163,6 +178,17 @@ 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:
@ -270,29 +296,31 @@ control specific occasions when output is generated. This list may contain:
header Messages that appear before report output (this includes .taskrc/.task overrides and the "[task next]" message)
footnote Messages that appear after report output (mostly status messages and change descriptions)
label Column labels on tabular reports
new-id Provides feedback of any new task IDs
new-uuid Provides feedback of any new task UUIDs. Deprecated, to be
merged with new-id.
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.
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
unwait Notification when a task leaves the 'waiting' state
context Show the current context. Displayed in footnote.
override Notification when configuration options are overridden
recur Notification when a new recurring task instance is created
default Notifications about taskwarrior choosing to perform a default action.
"affected", "new-id", "new-uuid", "project", "unwait", "override" and "recur"
The tokens "affected", "new-id", "new-uuid", "project", "override" and "recur"
imply "footnote".
The token "default" implies "header".
Note that the "1" 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,unwait,override
verbose=blank,header,footnote,label,new-id,affected,edit,special,project,sync,filter,override,recur
verbose=0
verbose=blank,label,new-id,edit
@ -405,12 +433,6 @@ array.
With json.array=0, export writes raw JSON objects to STDOUT, one per line.
Defaults to "1".
.TP
.B json.depends.array=1
Determines whether the export command encodes dependencies as an array of string
UUIDs, or one comma-separated string.
Defaults to "1".
.TP
.B _forcecolor=1
Taskwarrior shuts off color automatically when the output is not sent directly
@ -440,7 +462,7 @@ 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 +.
The character or string to show in the depends.indicator column. Defaults to D.
.TP
.B uda.<name>.indicator=U
@ -515,7 +537,7 @@ 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
.B obfuscate=0
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'.
@ -527,6 +549,12 @@ 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
@ -662,6 +690,8 @@ field that is set. Otherwise, they are set to the corresponding values of
.B date.iso=1
Enables ISO-8601 date support. The default value is "1".
.SS CALENDAR
.TP
.B weekstart=Sunday
Determines the day a week starts. Valid values are Sunday or Monday only. The
@ -703,7 +733,7 @@ The offset value to apply to the first month in the calendar report. The default
value is "-1".
.TP
.B calendar.holidays=full
.B calendar.holidays=none
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
@ -714,6 +744,12 @@ turned off by setting the variable to none. The default value is "none".
.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.
.SS JOURNAL ENTRIES
.TP
@ -739,7 +775,7 @@ the 'info' command. Default value is "1".
.SS HOLIDAYS
Holidays are entered either directly in the .taskrc file or via an include file
that is specified in .taskrc. For each holiday the name and the date is
that is specified in .taskrc. For single-day holidays the name and the date is
required to be given:
.RS
@ -748,10 +784,20 @@ 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 Day
holiday.sysadmin.name=System Administrator Appreciation Week
.br
holiday.sysadmin.date=20100730
holiday.sysadmin.start=20100730
.br
holiday.sysadmin.end=20100805
.RE
.RE
@ -781,16 +827,10 @@ be included like this:
.RS
.RS
.br
include ${CMAKE_INSTALL_PREFIX}/${TASK_RCDIR}/holidays.en-US.rc
include 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
@ -984,6 +1024,11 @@ 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.
@ -1254,6 +1299,12 @@ 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
@ -1449,10 +1500,27 @@ Stores the value of the currently active context.
.RE
.TP
.B context.<name>=<filter>
.RS
Stores the definition of the context with the name <name>.
.B context.<name>.read=<filter>
.RE
.br
.B context.<name>.write=<modifications>
.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.
.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
@ -1512,7 +1580,7 @@ Default is "NORMAL". See GnuTLS documentation for full details.
.RE
.SH "CREDITS & COPYRIGHTS"
Copyright (C) 2006 \- 2021 P. Beckingham, F. Hernandez.
Copyright (C) 2006 \- 2021 T. Babej, P. Beckingham, F. Hernandez.
This man page was originally written by Federico Hernandez.

View file

@ -1,6 +1,6 @@
###############################################################################
#
# Copyright 2006 - 2021, Paul Beckingham, Federico Hernandez.
# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
@ -57,7 +57,7 @@ color.uda.priority.L=
# Tags
color.tag.next=bold yellow
color.tag.none=
color.tagged=green
color.tagged=
# Due
color.due=red

View file

@ -1,6 +1,6 @@
###############################################################################
#
# Copyright 2006 - 2021, Paul Beckingham, Federico Hernandez.
# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
@ -57,7 +57,7 @@ color.uda.priority.M=color250
# Tags
color.tag.next=rgb440
color.tag.none=
color.tagged=rgb031
color.tagged=
# Due
color.due.today=rgb400

View file

@ -1,6 +1,6 @@
###############################################################################
#
# Copyright 2006 - 2021, Paul Beckingham, Federico Hernandez.
# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
@ -57,7 +57,7 @@ color.uda.priority.M=rgb025
# Tags
color.tag.next=rgb550
color.tag.none=
color.tagged=color246
color.tagged=
# Due
color.due.today=color252

View file

@ -1,6 +1,6 @@
###############################################################################
#
# Copyright 2006 - 2021, Paul Beckingham, Federico Hernandez.
# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal

View file

@ -1,6 +1,6 @@
###############################################################################
#
# Copyright 2006 - 2021, Paul Beckingham, Federico Hernandez.
# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal

View file

@ -1,6 +1,6 @@
###############################################################################
#
# Copyright 2006 - 2021, Paul Beckingham, Federico Hernandez.
# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
@ -57,7 +57,7 @@ color.uda.priority.M=rgb030
# Tags
color.tag.next=rgb440
color.tag.none=
color.tagged=color246
color.tagged=
# Due
color.due.today=color252

View file

@ -1,6 +1,6 @@
###############################################################################
#
# Copyright 2006 - 2021, Paul Beckingham, Federico Hernandez.
# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
@ -57,7 +57,7 @@ color.uda.priority.M=rgb400
# Tags
color.tag.next=rgb511
color.tag.none=
color.tagged=color246
color.tagged=
# Due
color.due.today=color252

View file

@ -1,6 +1,6 @@
###############################################################################
#
# Copyright 2006 - 2021, Paul Beckingham, Federico Hernandez.
# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
@ -57,7 +57,7 @@ color.uda.priority.L=rgb325
# Tags
color.tag.next=
color.tag.none=
color.tagged=rgb334
color.tagged=
# Due
color.due=rgb015

View file

@ -1,6 +1,6 @@
###############################################################################
#
# Copyright 2006 - 2021, Paul Beckingham, Federico Hernandez.
# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
@ -57,7 +57,7 @@ color.uda.priority.L=rgb010
# Tags
color.tag.next=
color.tag.none=
color.tagged=rgb342
color.tagged=
# Due
color.due=rgb440

View file

@ -1,9 +1,9 @@
###############################################################################
# International Holiday Data provided by Holidata.net
# https://holidata.net/cs-CZ/2020.json
# https://holidata.net/cs-CZ/2021.json
# https://holidata.net/cs-CZ/2022.json
#
# Copyright 2006 - 2021, Paul Beckingham, Federico Hernandez.
# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
@ -28,58 +28,58 @@
###############################################################################
holiday.cs-CZ1.name=Nový rok
holiday.cs-CZ1.date=20200101
holiday.cs-CZ1.date=20210101
holiday.cs-CZ2.name=Den obnovy samostatného českého státu
holiday.cs-CZ2.date=20200101
holiday.cs-CZ2.date=20210101
holiday.cs-CZ3.name=Velký pátek
holiday.cs-CZ3.date=20200410
holiday.cs-CZ3.date=20210402
holiday.cs-CZ4.name=Velikonoční pondělí
holiday.cs-CZ4.date=20200413
holiday.cs-CZ4.date=20210405
holiday.cs-CZ5.name=Svátek práce
holiday.cs-CZ5.date=20200501
holiday.cs-CZ5.date=20210501
holiday.cs-CZ6.name=Den vítězství
holiday.cs-CZ6.date=20200508
holiday.cs-CZ6.date=20210508
holiday.cs-CZ7.name=Den slovanských věrozvěstů Cyrila a Metoděje
holiday.cs-CZ7.date=20200705
holiday.cs-CZ7.date=20210705
holiday.cs-CZ8.name=Den upálení mistra Jana Husa
holiday.cs-CZ8.date=20200706
holiday.cs-CZ8.date=20210706
holiday.cs-CZ9.name=Den české státnosti
holiday.cs-CZ9.date=20200928
holiday.cs-CZ9.date=20210928
holiday.cs-CZ10.name=Den vzniku samostatného československého státu
holiday.cs-CZ10.date=20201028
holiday.cs-CZ10.date=20211028
holiday.cs-CZ11.name=Den boje za svobodu a demokracii a Mezinárodní den studentstva
holiday.cs-CZ11.date=20201117
holiday.cs-CZ11.date=20211117
holiday.cs-CZ12.name=Štědrý den
holiday.cs-CZ12.date=20201224
holiday.cs-CZ12.date=20211224
holiday.cs-CZ13.name=1. svátek vánoční
holiday.cs-CZ13.date=20201225
holiday.cs-CZ13.date=20211225
holiday.cs-CZ14.name=2. svátek vánoční
holiday.cs-CZ14.date=20201226
holiday.cs-CZ14.date=20211226
holiday.cs-CZ15.name=Nový rok
holiday.cs-CZ15.date=20210101
holiday.cs-CZ15.date=20220101
holiday.cs-CZ16.name=Den obnovy samostatného českého státu
holiday.cs-CZ16.date=20210101
holiday.cs-CZ16.date=20220101
holiday.cs-CZ17.name=Velký pátek
holiday.cs-CZ17.date=20210402
holiday.cs-CZ17.date=20220415
holiday.cs-CZ18.name=Velikonoční pondělí
holiday.cs-CZ18.date=20210405
holiday.cs-CZ18.date=20220418
holiday.cs-CZ19.name=Svátek práce
holiday.cs-CZ19.date=20210501
holiday.cs-CZ19.date=20220501
holiday.cs-CZ20.name=Den vítězství
holiday.cs-CZ20.date=20210508
holiday.cs-CZ20.date=20220508
holiday.cs-CZ21.name=Den slovanských věrozvěstů Cyrila a Metoděje
holiday.cs-CZ21.date=20210705
holiday.cs-CZ21.date=20220705
holiday.cs-CZ22.name=Den upálení mistra Jana Husa
holiday.cs-CZ22.date=20210706
holiday.cs-CZ22.date=20220706
holiday.cs-CZ23.name=Den české státnosti
holiday.cs-CZ23.date=20210928
holiday.cs-CZ23.date=20220928
holiday.cs-CZ24.name=Den vzniku samostatného československého státu
holiday.cs-CZ24.date=20211028
holiday.cs-CZ24.date=20221028
holiday.cs-CZ25.name=Den boje za svobodu a demokracii a Mezinárodní den studentstva
holiday.cs-CZ25.date=20211117
holiday.cs-CZ25.date=20221117
holiday.cs-CZ26.name=Štědrý den
holiday.cs-CZ26.date=20211224
holiday.cs-CZ26.date=20221224
holiday.cs-CZ27.name=1. svátek vánoční
holiday.cs-CZ27.date=20211225
holiday.cs-CZ27.date=20221225
holiday.cs-CZ28.name=2. svátek vánoční
holiday.cs-CZ28.date=20211226
holiday.cs-CZ28.date=20221226

View file

@ -1,9 +1,9 @@
###############################################################################
# International Holiday Data provided by Holidata.net
# https://holidata.net/da-DK/2020.json
# https://holidata.net/da-DK/2021.json
# https://holidata.net/da-DK/2022.json
#
# Copyright 2006 - 2021, Paul Beckingham, Federico Hernandez.
# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
@ -28,50 +28,50 @@
###############################################################################
holiday.da-DK1.name=Nytårsdag
holiday.da-DK1.date=20200101
holiday.da-DK1.date=20210101
holiday.da-DK2.name=Skærtorsdag
holiday.da-DK2.date=20200409
holiday.da-DK2.date=20210401
holiday.da-DK3.name=Langfredag
holiday.da-DK3.date=20200410
holiday.da-DK3.date=20210402
holiday.da-DK4.name=Påskedag
holiday.da-DK4.date=20200412
holiday.da-DK4.date=20210404
holiday.da-DK5.name=Anden påskedag
holiday.da-DK5.date=20200413
holiday.da-DK5.date=20210405
holiday.da-DK6.name=Store bededag
holiday.da-DK6.date=20200508
holiday.da-DK6.date=20210430
holiday.da-DK7.name=Kristi himmelfartsdag
holiday.da-DK7.date=20200521
holiday.da-DK7.date=20210513
holiday.da-DK8.name=Pinsedag
holiday.da-DK8.date=20200531
holiday.da-DK8.date=20210523
holiday.da-DK9.name=Anden pinsedag
holiday.da-DK9.date=20200601
holiday.da-DK9.date=20210524
holiday.da-DK10.name=Grundlovsdag
holiday.da-DK10.date=20200605
holiday.da-DK10.date=20210605
holiday.da-DK11.name=Juledag
holiday.da-DK11.date=20201225
holiday.da-DK11.date=20211225
holiday.da-DK12.name=Anden juledag
holiday.da-DK12.date=20201226
holiday.da-DK12.date=20211226
holiday.da-DK13.name=Nytårsdag
holiday.da-DK13.date=20210101
holiday.da-DK13.date=20220101
holiday.da-DK14.name=Skærtorsdag
holiday.da-DK14.date=20210401
holiday.da-DK14.date=20220414
holiday.da-DK15.name=Langfredag
holiday.da-DK15.date=20210402
holiday.da-DK15.date=20220415
holiday.da-DK16.name=Påskedag
holiday.da-DK16.date=20210404
holiday.da-DK16.date=20220417
holiday.da-DK17.name=Anden påskedag
holiday.da-DK17.date=20210405
holiday.da-DK17.date=20220418
holiday.da-DK18.name=Store bededag
holiday.da-DK18.date=20210430
holiday.da-DK18.date=20220513
holiday.da-DK19.name=Kristi himmelfartsdag
holiday.da-DK19.date=20210513
holiday.da-DK20.name=Pinsedag
holiday.da-DK20.date=20210523
holiday.da-DK21.name=Anden pinsedag
holiday.da-DK21.date=20210524
holiday.da-DK22.name=Grundlovsdag
holiday.da-DK22.date=20210605
holiday.da-DK19.date=20220526
holiday.da-DK20.name=Grundlovsdag
holiday.da-DK20.date=20220605
holiday.da-DK21.name=Pinsedag
holiday.da-DK21.date=20220605
holiday.da-DK22.name=Anden pinsedag
holiday.da-DK22.date=20220606
holiday.da-DK23.name=Juledag
holiday.da-DK23.date=20211225
holiday.da-DK23.date=20221225
holiday.da-DK24.name=Anden juledag
holiday.da-DK24.date=20211226
holiday.da-DK24.date=20221226

View file

@ -1,9 +1,9 @@
###############################################################################
# International Holiday Data provided by Holidata.net
# https://holidata.net/de-AT/2020.json
# https://holidata.net/de-AT/2021.json
# https://holidata.net/de-AT/2022.json
#
# Copyright 2006 - 2021, Paul Beckingham, Federico Hernandez.
# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
@ -28,98 +28,98 @@
###############################################################################
holiday.de-AT1.name=Neujahr
holiday.de-AT1.date=20200101
holiday.de-AT1.date=20210101
holiday.de-AT2.name=Heilige drei Könige
holiday.de-AT2.date=20200106
holiday.de-AT2.date=20210106
holiday.de-AT3.name=Josef
holiday.de-AT3.date=20200319
holiday.de-AT3.date=20210319
holiday.de-AT4.name=Karfreitag
holiday.de-AT4.date=20200410
holiday.de-AT4.date=20210402
holiday.de-AT5.name=Ostersonntag
holiday.de-AT5.date=20200412
holiday.de-AT5.date=20210404
holiday.de-AT6.name=Ostermontag
holiday.de-AT6.date=20200413
holiday.de-AT6.date=20210405
holiday.de-AT7.name=Staatsfeiertag
holiday.de-AT7.date=20200501
holiday.de-AT7.date=20210501
holiday.de-AT8.name=Florian
holiday.de-AT8.date=20200504
holiday.de-AT8.date=20210504
holiday.de-AT9.name=Christi Himmelfahrt
holiday.de-AT9.date=20200521
holiday.de-AT9.date=20210513
holiday.de-AT10.name=Pfingstsonntag
holiday.de-AT10.date=20200531
holiday.de-AT10.date=20210523
holiday.de-AT11.name=Pfingstmontag
holiday.de-AT11.date=20200601
holiday.de-AT11.date=20210524
holiday.de-AT12.name=Fronleichnam
holiday.de-AT12.date=20200611
holiday.de-AT12.date=20210603
holiday.de-AT13.name=Mariä Himmelfahrt
holiday.de-AT13.date=20200815
holiday.de-AT13.date=20210815
holiday.de-AT14.name=Rupert
holiday.de-AT14.date=20200924
holiday.de-AT14.date=20210924
holiday.de-AT15.name=Tag der Volksabstimmung
holiday.de-AT15.date=20201010
holiday.de-AT15.date=20211010
holiday.de-AT16.name=Nationalfeiertag
holiday.de-AT16.date=20201026
holiday.de-AT16.date=20211026
holiday.de-AT17.name=Allerheiligen
holiday.de-AT17.date=20201101
holiday.de-AT17.date=20211101
holiday.de-AT18.name=Martin
holiday.de-AT18.date=20201111
holiday.de-AT18.date=20211111
holiday.de-AT19.name=Leopold
holiday.de-AT19.date=20201115
holiday.de-AT19.date=20211115
holiday.de-AT20.name=Mariä Empfängnis
holiday.de-AT20.date=20201208
holiday.de-AT20.date=20211208
holiday.de-AT21.name=Heiliger Abend
holiday.de-AT21.date=20201224
holiday.de-AT21.date=20211224
holiday.de-AT22.name=Christtag
holiday.de-AT22.date=20201225
holiday.de-AT22.date=20211225
holiday.de-AT23.name=Stefanitag
holiday.de-AT23.date=20201226
holiday.de-AT23.date=20211226
holiday.de-AT24.name=Silvester
holiday.de-AT24.date=20201231
holiday.de-AT24.date=20211231
holiday.de-AT25.name=Neujahr
holiday.de-AT25.date=20210101
holiday.de-AT25.date=20220101
holiday.de-AT26.name=Heilige drei Könige
holiday.de-AT26.date=20210106
holiday.de-AT26.date=20220106
holiday.de-AT27.name=Josef
holiday.de-AT27.date=20210319
holiday.de-AT27.date=20220319
holiday.de-AT28.name=Karfreitag
holiday.de-AT28.date=20210402
holiday.de-AT28.date=20220415
holiday.de-AT29.name=Ostersonntag
holiday.de-AT29.date=20210404
holiday.de-AT29.date=20220417
holiday.de-AT30.name=Ostermontag
holiday.de-AT30.date=20210405
holiday.de-AT30.date=20220418
holiday.de-AT31.name=Staatsfeiertag
holiday.de-AT31.date=20210501
holiday.de-AT31.date=20220501
holiday.de-AT32.name=Florian
holiday.de-AT32.date=20210504
holiday.de-AT32.date=20220504
holiday.de-AT33.name=Christi Himmelfahrt
holiday.de-AT33.date=20210513
holiday.de-AT33.date=20220526
holiday.de-AT34.name=Pfingstsonntag
holiday.de-AT34.date=20210523
holiday.de-AT34.date=20220605
holiday.de-AT35.name=Pfingstmontag
holiday.de-AT35.date=20210524
holiday.de-AT35.date=20220606
holiday.de-AT36.name=Fronleichnam
holiday.de-AT36.date=20210603
holiday.de-AT36.date=20220616
holiday.de-AT37.name=Mariä Himmelfahrt
holiday.de-AT37.date=20210815
holiday.de-AT37.date=20220815
holiday.de-AT38.name=Rupert
holiday.de-AT38.date=20210924
holiday.de-AT38.date=20220924
holiday.de-AT39.name=Tag der Volksabstimmung
holiday.de-AT39.date=20211010
holiday.de-AT39.date=20221010
holiday.de-AT40.name=Nationalfeiertag
holiday.de-AT40.date=20211026
holiday.de-AT40.date=20221026
holiday.de-AT41.name=Allerheiligen
holiday.de-AT41.date=20211101
holiday.de-AT41.date=20221101
holiday.de-AT42.name=Martin
holiday.de-AT42.date=20211111
holiday.de-AT42.date=20221111
holiday.de-AT43.name=Leopold
holiday.de-AT43.date=20211115
holiday.de-AT43.date=20221115
holiday.de-AT44.name=Mariä Empfängnis
holiday.de-AT44.date=20211208
holiday.de-AT44.date=20221208
holiday.de-AT45.name=Heiliger Abend
holiday.de-AT45.date=20211224
holiday.de-AT45.date=20221224
holiday.de-AT46.name=Christtag
holiday.de-AT46.date=20211225
holiday.de-AT46.date=20221225
holiday.de-AT47.name=Stefanitag
holiday.de-AT47.date=20211226
holiday.de-AT47.date=20221226
holiday.de-AT48.name=Silvester
holiday.de-AT48.date=20211231
holiday.de-AT48.date=20221231

View file

@ -1,9 +1,9 @@
###############################################################################
# International Holiday Data provided by Holidata.net
# https://holidata.net/de-BE/2020.json
# https://holidata.net/de-BE/2021.json
# https://holidata.net/de-BE/2022.json
#
# Copyright 2006 - 2021, Paul Beckingham, Federico Hernandez.
# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
@ -28,50 +28,50 @@
###############################################################################
holiday.de-BE1.name=Neujahr
holiday.de-BE1.date=20200101
holiday.de-BE1.date=20210101
holiday.de-BE2.name=Ostern
holiday.de-BE2.date=20200412
holiday.de-BE2.date=20210404
holiday.de-BE3.name=Ostermontag
holiday.de-BE3.date=20200413
holiday.de-BE3.date=20210405
holiday.de-BE4.name=Tag der Arbeit
holiday.de-BE4.date=20200501
holiday.de-BE4.date=20210501
holiday.de-BE5.name=Christi Himmelfahrt
holiday.de-BE5.date=20200521
holiday.de-BE5.date=20210513
holiday.de-BE6.name=Pfingsten
holiday.de-BE6.date=20200531
holiday.de-BE6.date=20210523
holiday.de-BE7.name=Pfingstmontag
holiday.de-BE7.date=20200601
holiday.de-BE7.date=20210524
holiday.de-BE8.name=Nationalfeiertag
holiday.de-BE8.date=20200721
holiday.de-BE8.date=20210721
holiday.de-BE9.name=Mariä Himmelfahrt
holiday.de-BE9.date=20200815
holiday.de-BE9.date=20210815
holiday.de-BE10.name=Allerheiligen
holiday.de-BE10.date=20201101
holiday.de-BE10.date=20211101
holiday.de-BE11.name=Waffenstillstand
holiday.de-BE11.date=20201111
holiday.de-BE11.date=20211111
holiday.de-BE12.name=Weihnacht
holiday.de-BE12.date=20201225
holiday.de-BE12.date=20211225
holiday.de-BE13.name=Neujahr
holiday.de-BE13.date=20210101
holiday.de-BE13.date=20220101
holiday.de-BE14.name=Ostern
holiday.de-BE14.date=20210404
holiday.de-BE14.date=20220417
holiday.de-BE15.name=Ostermontag
holiday.de-BE15.date=20210405
holiday.de-BE15.date=20220418
holiday.de-BE16.name=Tag der Arbeit
holiday.de-BE16.date=20210501
holiday.de-BE16.date=20220501
holiday.de-BE17.name=Christi Himmelfahrt
holiday.de-BE17.date=20210513
holiday.de-BE17.date=20220526
holiday.de-BE18.name=Pfingsten
holiday.de-BE18.date=20210523
holiday.de-BE18.date=20220605
holiday.de-BE19.name=Pfingstmontag
holiday.de-BE19.date=20210524
holiday.de-BE19.date=20220606
holiday.de-BE20.name=Nationalfeiertag
holiday.de-BE20.date=20210721
holiday.de-BE20.date=20220721
holiday.de-BE21.name=Mariä Himmelfahrt
holiday.de-BE21.date=20210815
holiday.de-BE21.date=20220815
holiday.de-BE22.name=Allerheiligen
holiday.de-BE22.date=20211101
holiday.de-BE22.date=20221101
holiday.de-BE23.name=Waffenstillstand
holiday.de-BE23.date=20211111
holiday.de-BE23.date=20221111
holiday.de-BE24.name=Weihnacht
holiday.de-BE24.date=20211225
holiday.de-BE24.date=20221225

View file

@ -1,9 +1,9 @@
###############################################################################
# International Holiday Data provided by Holidata.net
# https://holidata.net/de-CH/2020.json
# https://holidata.net/de-CH/2021.json
# https://holidata.net/de-CH/2022.json
#
# Copyright 2006 - 2021, Paul Beckingham, Federico Hernandez.
# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
@ -28,74 +28,74 @@
###############################################################################
holiday.de-CH1.name=Neujahrstag
holiday.de-CH1.date=20200101
holiday.de-CH1.date=20210101
holiday.de-CH2.name=Berchtoldstag
holiday.de-CH2.date=20200102
holiday.de-CH2.date=20210102
holiday.de-CH3.name=Heilige Drei Könige
holiday.de-CH3.date=20200106
holiday.de-CH3.date=20210106
holiday.de-CH4.name=Josefstag
holiday.de-CH4.date=20200319
holiday.de-CH4.date=20210319
holiday.de-CH5.name=Karfreitag
holiday.de-CH5.date=20200410
holiday.de-CH5.date=20210402
holiday.de-CH6.name=Ostersonntag
holiday.de-CH6.date=20200412
holiday.de-CH6.date=20210404
holiday.de-CH7.name=Ostermontag
holiday.de-CH7.date=20200413
holiday.de-CH7.date=20210405
holiday.de-CH8.name=Tag der Arbeit
holiday.de-CH8.date=20200501
holiday.de-CH8.date=20210501
holiday.de-CH9.name=Auffahrt
holiday.de-CH9.date=20200521
holiday.de-CH9.date=20210513
holiday.de-CH10.name=Pfingstsonntag
holiday.de-CH10.date=20200531
holiday.de-CH10.date=20210523
holiday.de-CH11.name=Pfingstmontag
holiday.de-CH11.date=20200601
holiday.de-CH11.date=20210524
holiday.de-CH12.name=Fronleichnam
holiday.de-CH12.date=20200611
holiday.de-CH12.date=20210603
holiday.de-CH13.name=Bundesfeier
holiday.de-CH13.date=20200801
holiday.de-CH13.date=20210801
holiday.de-CH14.name=Mariä Himmelfahrt
holiday.de-CH14.date=20200815
holiday.de-CH14.date=20210815
holiday.de-CH15.name=Allerheiligen
holiday.de-CH15.date=20201101
holiday.de-CH15.date=20211101
holiday.de-CH16.name=Mariä Empfängnis
holiday.de-CH16.date=20201208
holiday.de-CH16.date=20211208
holiday.de-CH17.name=Weihnachtstag
holiday.de-CH17.date=20201225
holiday.de-CH17.date=20211225
holiday.de-CH18.name=Stephanstag
holiday.de-CH18.date=20201226
holiday.de-CH18.date=20211226
holiday.de-CH19.name=Neujahrstag
holiday.de-CH19.date=20210101
holiday.de-CH19.date=20220101
holiday.de-CH20.name=Berchtoldstag
holiday.de-CH20.date=20210102
holiday.de-CH20.date=20220102
holiday.de-CH21.name=Heilige Drei Könige
holiday.de-CH21.date=20210106
holiday.de-CH21.date=20220106
holiday.de-CH22.name=Josefstag
holiday.de-CH22.date=20210319
holiday.de-CH22.date=20220319
holiday.de-CH23.name=Karfreitag
holiday.de-CH23.date=20210402
holiday.de-CH23.date=20220415
holiday.de-CH24.name=Ostersonntag
holiday.de-CH24.date=20210404
holiday.de-CH24.date=20220417
holiday.de-CH25.name=Ostermontag
holiday.de-CH25.date=20210405
holiday.de-CH25.date=20220418
holiday.de-CH26.name=Tag der Arbeit
holiday.de-CH26.date=20210501
holiday.de-CH26.date=20220501
holiday.de-CH27.name=Auffahrt
holiday.de-CH27.date=20210513
holiday.de-CH27.date=20220526
holiday.de-CH28.name=Pfingstsonntag
holiday.de-CH28.date=20210523
holiday.de-CH28.date=20220605
holiday.de-CH29.name=Pfingstmontag
holiday.de-CH29.date=20210524
holiday.de-CH29.date=20220606
holiday.de-CH30.name=Fronleichnam
holiday.de-CH30.date=20210603
holiday.de-CH30.date=20220616
holiday.de-CH31.name=Bundesfeier
holiday.de-CH31.date=20210801
holiday.de-CH31.date=20220801
holiday.de-CH32.name=Mariä Himmelfahrt
holiday.de-CH32.date=20210815
holiday.de-CH32.date=20220815
holiday.de-CH33.name=Allerheiligen
holiday.de-CH33.date=20211101
holiday.de-CH33.date=20221101
holiday.de-CH34.name=Mariä Empfängnis
holiday.de-CH34.date=20211208
holiday.de-CH34.date=20221208
holiday.de-CH35.name=Weihnachtstag
holiday.de-CH35.date=20211225
holiday.de-CH35.date=20221225
holiday.de-CH36.name=Stephanstag
holiday.de-CH36.date=20211226
holiday.de-CH36.date=20221226

View file

@ -1,9 +1,9 @@
###############################################################################
# International Holiday Data provided by Holidata.net
# https://holidata.net/de-DE/2020.json
# https://holidata.net/de-DE/2021.json
# https://holidata.net/de-DE/2022.json
#
# Copyright 2006 - 2021, Paul Beckingham, Federico Hernandez.
# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
@ -28,84 +28,82 @@
###############################################################################
holiday.de-DE1.name=Neujahr
holiday.de-DE1.date=20200101
holiday.de-DE1.date=20210101
holiday.de-DE2.name=Heilige drei Könige
holiday.de-DE2.date=20200106
holiday.de-DE2.date=20210106
holiday.de-DE3.name=Internationaler Frauentag
holiday.de-DE3.date=20200308
holiday.de-DE3.date=20210308
holiday.de-DE4.name=Karfreitag
holiday.de-DE4.date=20200410
holiday.de-DE4.date=20210402
holiday.de-DE5.name=Ostern
holiday.de-DE5.date=20200412
holiday.de-DE5.date=20210404
holiday.de-DE6.name=Ostermontag
holiday.de-DE6.date=20200413
holiday.de-DE6.date=20210405
holiday.de-DE7.name=Erster Maifeiertag
holiday.de-DE7.date=20200501
holiday.de-DE8.name=75. Jahrestag der Befreiung vom Nationalsozialismus und der Beendigung des Zweiten Weltkrieges in Europa
holiday.de-DE8.date=20200508
holiday.de-DE9.name=Christi Himmelfahrt
holiday.de-DE9.date=20200521
holiday.de-DE10.name=Pfingstsonntag
holiday.de-DE10.date=20200531
holiday.de-DE11.name=Pfingstmontag
holiday.de-DE11.date=20200601
holiday.de-DE12.name=Fronleichnam
holiday.de-DE12.date=20200611
holiday.de-DE13.name=Mariä Himmelfahrt
holiday.de-DE13.date=20200815
holiday.de-DE14.name=Tag der Deutschen Einheit
holiday.de-DE14.date=20201003
holiday.de-DE15.name=Reformationstag
holiday.de-DE15.date=20201031
holiday.de-DE16.name=Allerheiligen
holiday.de-DE16.date=20201101
holiday.de-DE17.name=Buß- und Bettag
holiday.de-DE17.date=20201118
holiday.de-DE18.name=Heilig Abend
holiday.de-DE18.date=20201224
holiday.de-DE19.name=Weihnachtstag
holiday.de-DE19.date=20201225
holiday.de-DE20.name=Zweiter Weihnachtstag
holiday.de-DE20.date=20201226
holiday.de-DE21.name=Silvester
holiday.de-DE21.date=20201231
holiday.de-DE22.name=Neujahr
holiday.de-DE22.date=20210101
holiday.de-DE23.name=Heilige drei Könige
holiday.de-DE23.date=20210106
holiday.de-DE24.name=Internationaler Frauentag
holiday.de-DE24.date=20210308
holiday.de-DE25.name=Karfreitag
holiday.de-DE25.date=20210402
holiday.de-DE26.name=Ostern
holiday.de-DE26.date=20210404
holiday.de-DE27.name=Ostermontag
holiday.de-DE27.date=20210405
holiday.de-DE28.name=Erster Maifeiertag
holiday.de-DE28.date=20210501
holiday.de-DE29.name=Christi Himmelfahrt
holiday.de-DE29.date=20210513
holiday.de-DE30.name=Pfingstsonntag
holiday.de-DE30.date=20210523
holiday.de-DE31.name=Pfingstmontag
holiday.de-DE31.date=20210524
holiday.de-DE32.name=Fronleichnam
holiday.de-DE32.date=20210603
holiday.de-DE33.name=Mariä Himmelfahrt
holiday.de-DE33.date=20210815
holiday.de-DE34.name=Tag der Deutschen Einheit
holiday.de-DE34.date=20211003
holiday.de-DE35.name=Reformationstag
holiday.de-DE35.date=20211031
holiday.de-DE36.name=Allerheiligen
holiday.de-DE36.date=20211101
holiday.de-DE37.name=Buß- und Bettag
holiday.de-DE37.date=20211117
holiday.de-DE38.name=Heilig Abend
holiday.de-DE38.date=20211224
holiday.de-DE39.name=Weihnachtstag
holiday.de-DE39.date=20211225
holiday.de-DE40.name=Zweiter Weihnachtstag
holiday.de-DE40.date=20211226
holiday.de-DE41.name=Silvester
holiday.de-DE41.date=20211231
holiday.de-DE7.date=20210501
holiday.de-DE8.name=Christi Himmelfahrt
holiday.de-DE8.date=20210513
holiday.de-DE9.name=Pfingstsonntag
holiday.de-DE9.date=20210523
holiday.de-DE10.name=Pfingstmontag
holiday.de-DE10.date=20210524
holiday.de-DE11.name=Fronleichnam
holiday.de-DE11.date=20210603
holiday.de-DE12.name=Mariä Himmelfahrt
holiday.de-DE12.date=20210815
holiday.de-DE13.name=Tag der Deutschen Einheit
holiday.de-DE13.date=20211003
holiday.de-DE14.name=Reformationstag
holiday.de-DE14.date=20211031
holiday.de-DE15.name=Allerheiligen
holiday.de-DE15.date=20211101
holiday.de-DE16.name=Buß- und Bettag
holiday.de-DE16.date=20211117
holiday.de-DE17.name=Heilig Abend
holiday.de-DE17.date=20211224
holiday.de-DE18.name=Weihnachtstag
holiday.de-DE18.date=20211225
holiday.de-DE19.name=Zweiter Weihnachtstag
holiday.de-DE19.date=20211226
holiday.de-DE20.name=Silvester
holiday.de-DE20.date=20211231
holiday.de-DE21.name=Neujahr
holiday.de-DE21.date=20220101
holiday.de-DE22.name=Heilige drei Könige
holiday.de-DE22.date=20220106
holiday.de-DE23.name=Internationaler Frauentag
holiday.de-DE23.date=20220308
holiday.de-DE24.name=Karfreitag
holiday.de-DE24.date=20220415
holiday.de-DE25.name=Ostern
holiday.de-DE25.date=20220417
holiday.de-DE26.name=Ostermontag
holiday.de-DE26.date=20220418
holiday.de-DE27.name=Erster Maifeiertag
holiday.de-DE27.date=20220501
holiday.de-DE28.name=Christi Himmelfahrt
holiday.de-DE28.date=20220526
holiday.de-DE29.name=Pfingstsonntag
holiday.de-DE29.date=20220605
holiday.de-DE30.name=Pfingstmontag
holiday.de-DE30.date=20220606
holiday.de-DE31.name=Fronleichnam
holiday.de-DE31.date=20220616
holiday.de-DE32.name=Mariä Himmelfahrt
holiday.de-DE32.date=20220815
holiday.de-DE33.name=Tag der Deutschen Einheit
holiday.de-DE33.date=20221003
holiday.de-DE34.name=Reformationstag
holiday.de-DE34.date=20221031
holiday.de-DE35.name=Allerheiligen
holiday.de-DE35.date=20221101
holiday.de-DE36.name=Buß- und Bettag
holiday.de-DE36.date=20221116
holiday.de-DE37.name=Heilig Abend
holiday.de-DE37.date=20221224
holiday.de-DE38.name=Weihnachtstag
holiday.de-DE38.date=20221225
holiday.de-DE39.name=Zweiter Weihnachtstag
holiday.de-DE39.date=20221226
holiday.de-DE40.name=Silvester
holiday.de-DE40.date=20221231

View file

@ -1,9 +1,9 @@
###############################################################################
# International Holiday Data provided by Holidata.net
# https://holidata.net/el-GR/2020.json
# https://holidata.net/el-GR/2021.json
# https://holidata.net/el-GR/2022.json
#
# Copyright 2006 - 2021, Paul Beckingham, Federico Hernandez.
# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
@ -28,58 +28,58 @@
###############################################################################
holiday.el-GR1.name=Πρωτοχρονιά
holiday.el-GR1.date=20200101
holiday.el-GR1.date=20210101
holiday.el-GR2.name=Θεοφάνεια
holiday.el-GR2.date=20200106
holiday.el-GR2.date=20210106
holiday.el-GR3.name=Καθαρά Δευτέρα
holiday.el-GR3.date=20200302
holiday.el-GR3.date=20210315
holiday.el-GR4.name=Ευαγγελισμός της Θεοτόκου και Εθνική Ημέρα Ανεξαρτησίας της Ελλάδας
holiday.el-GR4.date=20200325
holiday.el-GR4.date=20210325
holiday.el-GR5.name=Μεγάλη Παρασκευή
holiday.el-GR5.date=20200417
holiday.el-GR5.date=20210430
holiday.el-GR6.name=Μεγάλο Σάββατο
holiday.el-GR6.date=20200418
holiday.el-GR7.name=Πάσχα
holiday.el-GR7.date=20200419
holiday.el-GR8.name=Δευτέρα του Πάσχα
holiday.el-GR8.date=20200420
holiday.el-GR9.name=Πρωτομαγιά
holiday.el-GR9.date=20200501
holiday.el-GR6.date=20210501
holiday.el-GR7.name=Πρωτομαγιά
holiday.el-GR7.date=20210501
holiday.el-GR8.name=Πάσχα
holiday.el-GR8.date=20210502
holiday.el-GR9.name=Δευτέρα του Πάσχα
holiday.el-GR9.date=20210503
holiday.el-GR10.name=Δευτέρα του Αγίου Πνεύματος
holiday.el-GR10.date=20200608
holiday.el-GR10.date=20210621
holiday.el-GR11.name=Κοίμηση της Θεοτόκου
holiday.el-GR11.date=20200815
holiday.el-GR11.date=20210815
holiday.el-GR12.name=Ημέρα του ΌΧΙ
holiday.el-GR12.date=20201028
holiday.el-GR12.date=20211028
holiday.el-GR13.name=Χριστούγεννα
holiday.el-GR13.date=20201225
holiday.el-GR13.date=20211225
holiday.el-GR14.name=Επόμενη ημέρα Χριστουγέννων
holiday.el-GR14.date=20201226
holiday.el-GR14.date=20211226
holiday.el-GR15.name=Πρωτοχρονιά
holiday.el-GR15.date=20210101
holiday.el-GR15.date=20220101
holiday.el-GR16.name=Θεοφάνεια
holiday.el-GR16.date=20210106
holiday.el-GR16.date=20220106
holiday.el-GR17.name=Καθαρά Δευτέρα
holiday.el-GR17.date=20210315
holiday.el-GR17.date=20220307
holiday.el-GR18.name=Ευαγγελισμός της Θεοτόκου και Εθνική Ημέρα Ανεξαρτησίας της Ελλάδας
holiday.el-GR18.date=20210325
holiday.el-GR18.date=20220325
holiday.el-GR19.name=Μεγάλη Παρασκευή
holiday.el-GR19.date=20210430
holiday.el-GR19.date=20220422
holiday.el-GR20.name=Μεγάλο Σάββατο
holiday.el-GR20.date=20210501
holiday.el-GR21.name=Πρωτομαγιά
holiday.el-GR21.date=20210501
holiday.el-GR22.name=Πάσχα
holiday.el-GR22.date=20210502
holiday.el-GR23.name=Δευτέρα του Πάσχα
holiday.el-GR23.date=20210503
holiday.el-GR20.date=20220423
holiday.el-GR21.name=Πάσχα
holiday.el-GR21.date=20220424
holiday.el-GR22.name=Δευτέρα του Πάσχα
holiday.el-GR22.date=20220425
holiday.el-GR23.name=Πρωτομαγιά
holiday.el-GR23.date=20220501
holiday.el-GR24.name=Δευτέρα του Αγίου Πνεύματος
holiday.el-GR24.date=20210621
holiday.el-GR24.date=20220613
holiday.el-GR25.name=Κοίμηση της Θεοτόκου
holiday.el-GR25.date=20210815
holiday.el-GR25.date=20220815
holiday.el-GR26.name=Ημέρα του ΌΧΙ
holiday.el-GR26.date=20211028
holiday.el-GR26.date=20221028
holiday.el-GR27.name=Χριστούγεννα
holiday.el-GR27.date=20211225
holiday.el-GR27.date=20221225
holiday.el-GR28.name=Επόμενη ημέρα Χριστουγέννων
holiday.el-GR28.date=20211226
holiday.el-GR28.date=20221226

View file

@ -1,9 +1,9 @@
###############################################################################
# International Holiday Data provided by Holidata.net
# https://holidata.net/en-CA/2020.json
# https://holidata.net/en-CA/2021.json
# https://holidata.net/en-CA/2022.json
#
# Copyright 2006 - 2021, Paul Beckingham, Federico Hernandez.
# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
@ -28,78 +28,78 @@
###############################################################################
holiday.en-CA1.name=New Year's Day
holiday.en-CA1.date=20200101
holiday.en-CA1.date=20210101
holiday.en-CA2.name=Family Day
holiday.en-CA2.date=20200217
holiday.en-CA2.date=20210215
holiday.en-CA3.name=Louis Riel Day
holiday.en-CA3.date=20200217
holiday.en-CA3.date=20210215
holiday.en-CA4.name=Islander Day
holiday.en-CA4.date=20200217
holiday.en-CA4.date=20210215
holiday.en-CA5.name=Good Friday
holiday.en-CA5.date=20200410
holiday.en-CA5.date=20210402
holiday.en-CA6.name=Easter Monday
holiday.en-CA6.date=20200413
holiday.en-CA6.date=20210405
holiday.en-CA7.name=National Patriots' Day
holiday.en-CA7.date=20200518
holiday.en-CA7.date=20210524
holiday.en-CA8.name=Victoria Day
holiday.en-CA8.date=20200518
holiday.en-CA8.date=20210524
holiday.en-CA9.name=National Holiday
holiday.en-CA9.date=20200624
holiday.en-CA9.date=20210624
holiday.en-CA10.name=Canada Day
holiday.en-CA10.date=20200701
holiday.en-CA10.date=20210701
holiday.en-CA11.name=August Civic Holiday
holiday.en-CA11.date=20200803
holiday.en-CA11.date=20210802
holiday.en-CA12.name=Saskatchewan Day
holiday.en-CA12.date=20200803
holiday.en-CA12.date=20210802
holiday.en-CA13.name=Heritage Day
holiday.en-CA13.date=20200803
holiday.en-CA13.date=20210802
holiday.en-CA14.name=New Brunswick Day
holiday.en-CA14.date=20200803
holiday.en-CA14.date=20210802
holiday.en-CA15.name=Labour Day
holiday.en-CA15.date=20200907
holiday.en-CA15.date=20210906
holiday.en-CA16.name=Thanksgiving Day
holiday.en-CA16.date=20201012
holiday.en-CA16.date=20211011
holiday.en-CA17.name=Remembrance Day
holiday.en-CA17.date=20201111
holiday.en-CA17.date=20211111
holiday.en-CA18.name=Christmas Day
holiday.en-CA18.date=20201225
holiday.en-CA18.date=20211225
holiday.en-CA19.name=Boxing Day
holiday.en-CA19.date=20201226
holiday.en-CA19.date=20211226
holiday.en-CA20.name=New Year's Day
holiday.en-CA20.date=20210101
holiday.en-CA20.date=20220101
holiday.en-CA21.name=Family Day
holiday.en-CA21.date=20210215
holiday.en-CA21.date=20220221
holiday.en-CA22.name=Louis Riel Day
holiday.en-CA22.date=20210215
holiday.en-CA22.date=20220221
holiday.en-CA23.name=Islander Day
holiday.en-CA23.date=20210215
holiday.en-CA23.date=20220221
holiday.en-CA24.name=Good Friday
holiday.en-CA24.date=20210402
holiday.en-CA24.date=20220415
holiday.en-CA25.name=Easter Monday
holiday.en-CA25.date=20210405
holiday.en-CA25.date=20220418
holiday.en-CA26.name=National Patriots' Day
holiday.en-CA26.date=20210524
holiday.en-CA26.date=20220523
holiday.en-CA27.name=Victoria Day
holiday.en-CA27.date=20210524
holiday.en-CA27.date=20220523
holiday.en-CA28.name=National Holiday
holiday.en-CA28.date=20210624
holiday.en-CA28.date=20220624
holiday.en-CA29.name=Canada Day
holiday.en-CA29.date=20210701
holiday.en-CA29.date=20220701
holiday.en-CA30.name=August Civic Holiday
holiday.en-CA30.date=20210802
holiday.en-CA30.date=20220801
holiday.en-CA31.name=Saskatchewan Day
holiday.en-CA31.date=20210802
holiday.en-CA31.date=20220801
holiday.en-CA32.name=Heritage Day
holiday.en-CA32.date=20210802
holiday.en-CA32.date=20220801
holiday.en-CA33.name=New Brunswick Day
holiday.en-CA33.date=20210802
holiday.en-CA33.date=20220801
holiday.en-CA34.name=Labour Day
holiday.en-CA34.date=20210906
holiday.en-CA34.date=20220905
holiday.en-CA35.name=Thanksgiving Day
holiday.en-CA35.date=20211011
holiday.en-CA35.date=20221010
holiday.en-CA36.name=Remembrance Day
holiday.en-CA36.date=20211111
holiday.en-CA36.date=20221111
holiday.en-CA37.name=Christmas Day
holiday.en-CA37.date=20211225
holiday.en-CA37.date=20221225
holiday.en-CA38.name=Boxing Day
holiday.en-CA38.date=20211226
holiday.en-CA38.date=20221226

View file

@ -1,9 +1,9 @@
###############################################################################
# International Holiday Data provided by Holidata.net
# https://holidata.net/en-GB/2020.json
# https://holidata.net/en-GB/2021.json
# https://holidata.net/en-GB/2022.json
#
# Copyright 2006 - 2021, Paul Beckingham, Federico Hernandez.
# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
@ -28,40 +28,42 @@
###############################################################################
holiday.en-GB1.name=New Year's Day
holiday.en-GB1.date=20200101
holiday.en-GB1.date=20210101
holiday.en-GB2.name=Good Friday
holiday.en-GB2.date=20200410
holiday.en-GB2.date=20210402
holiday.en-GB3.name=Easter Monday
holiday.en-GB3.date=20200413
holiday.en-GB3.date=20210405
holiday.en-GB4.name=Early May Bank Holiday
holiday.en-GB4.date=20200504
holiday.en-GB4.date=20210503
holiday.en-GB5.name=Spring Bank Holiday
holiday.en-GB5.date=20200525
holiday.en-GB5.date=20210531
holiday.en-GB6.name=August Bank Holiday
holiday.en-GB6.date=20200831
holiday.en-GB6.date=20210830
holiday.en-GB7.name=Christmas Day
holiday.en-GB7.date=20201225
holiday.en-GB7.date=20211225
holiday.en-GB8.name=Boxing Day
holiday.en-GB8.date=20201226
holiday.en-GB9.name=Boxing Day (observed)
holiday.en-GB9.date=20201228
holiday.en-GB10.name=New Year's Day
holiday.en-GB10.date=20210101
holiday.en-GB11.name=Good Friday
holiday.en-GB11.date=20210402
holiday.en-GB12.name=Easter Monday
holiday.en-GB12.date=20210405
holiday.en-GB13.name=Early May Bank Holiday
holiday.en-GB13.date=20210503
holiday.en-GB14.name=Spring Bank Holiday
holiday.en-GB14.date=20210531
holiday.en-GB15.name=August Bank Holiday
holiday.en-GB15.date=20210830
holiday.en-GB16.name=Christmas Day
holiday.en-GB16.date=20211225
holiday.en-GB17.name=Boxing Day
holiday.en-GB17.date=20211226
holiday.en-GB18.name=Christmas Day (observed)
holiday.en-GB18.date=20211227
holiday.en-GB19.name=Boxing Day (observed)
holiday.en-GB19.date=20211228
holiday.en-GB8.date=20211226
holiday.en-GB9.name=Christmas Day (observed)
holiday.en-GB9.date=20211227
holiday.en-GB10.name=Boxing Day (observed)
holiday.en-GB10.date=20211228
holiday.en-GB11.name=New Year's Day
holiday.en-GB11.date=20220101
holiday.en-GB12.name=New Year's Day (observed)
holiday.en-GB12.date=20220103
holiday.en-GB13.name=Good Friday
holiday.en-GB13.date=20220415
holiday.en-GB14.name=Easter Monday
holiday.en-GB14.date=20220418
holiday.en-GB15.name=Early May Bank Holiday
holiday.en-GB15.date=20220502
holiday.en-GB16.name=Spring Bank Holiday
holiday.en-GB16.date=20220530
holiday.en-GB17.name=August Bank Holiday
holiday.en-GB17.date=20220829
holiday.en-GB18.name=Christmas Day
holiday.en-GB18.date=20221225
holiday.en-GB19.name=Boxing Day
holiday.en-GB19.date=20221226
holiday.en-GB20.name=Christmas Day (observed)
holiday.en-GB20.date=20221227

View file

@ -1,9 +1,9 @@
###############################################################################
# International Holiday Data provided by Holidata.net
# https://holidata.net/en-NZ/2020.json
# https://holidata.net/en-NZ/2021.json
# https://holidata.net/en-NZ/2022.json
#
# Copyright 2006 - 2021, Paul Beckingham, Federico Hernandez.
# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
@ -28,54 +28,56 @@
###############################################################################
holiday.en-NZ1.name=New Year's Day
holiday.en-NZ1.date=20200101
holiday.en-NZ1.date=20210101
holiday.en-NZ2.name=Day after New Year's Day
holiday.en-NZ2.date=20200102
holiday.en-NZ2.date=20210104
holiday.en-NZ3.name=Waitangi Day
holiday.en-NZ3.date=20200206
holiday.en-NZ4.name=Good Friday
holiday.en-NZ4.date=20200410
holiday.en-NZ5.name=Easter Monday
holiday.en-NZ5.date=20200413
holiday.en-NZ6.name=ANZAC Day
holiday.en-NZ6.date=20200425
holiday.en-NZ7.name=ANZAC Day (observed)
holiday.en-NZ7.date=20200427
holiday.en-NZ8.name=Queen's Birthday
holiday.en-NZ8.date=20200601
holiday.en-NZ9.name=Labour Day
holiday.en-NZ9.date=20201026
holiday.en-NZ10.name=Christmas Day
holiday.en-NZ10.date=20201225
holiday.en-NZ11.name=Boxing Day
holiday.en-NZ11.date=20201226
holiday.en-NZ12.name=Boxing Day (observed)
holiday.en-NZ12.date=20201228
holiday.en-NZ13.name=New Year's Day
holiday.en-NZ13.date=20210101
holiday.en-NZ14.name=Day after New Year's Day
holiday.en-NZ14.date=20210104
holiday.en-NZ15.name=Waitangi Day
holiday.en-NZ15.date=20210206
holiday.en-NZ16.name=Waitangi Day (observed)
holiday.en-NZ16.date=20210208
holiday.en-NZ17.name=Good Friday
holiday.en-NZ17.date=20210402
holiday.en-NZ18.name=Easter Monday
holiday.en-NZ18.date=20210405
holiday.en-NZ19.name=ANZAC Day
holiday.en-NZ19.date=20210425
holiday.en-NZ20.name=ANZAC Day (observed)
holiday.en-NZ20.date=20210426
holiday.en-NZ21.name=Queen's Birthday
holiday.en-NZ21.date=20210607
holiday.en-NZ22.name=Labour Day
holiday.en-NZ22.date=20211025
holiday.en-NZ23.name=Christmas Day
holiday.en-NZ23.date=20211225
holiday.en-NZ24.name=Boxing Day
holiday.en-NZ24.date=20211226
holiday.en-NZ25.name=Christmas Day (observed)
holiday.en-NZ25.date=20211227
holiday.en-NZ26.name=Boxing Day (observed)
holiday.en-NZ26.date=20211228
holiday.en-NZ3.date=20210206
holiday.en-NZ4.name=Waitangi Day (observed)
holiday.en-NZ4.date=20210208
holiday.en-NZ5.name=Good Friday
holiday.en-NZ5.date=20210402
holiday.en-NZ6.name=Easter Monday
holiday.en-NZ6.date=20210405
holiday.en-NZ7.name=ANZAC Day
holiday.en-NZ7.date=20210425
holiday.en-NZ8.name=ANZAC Day (observed)
holiday.en-NZ8.date=20210426
holiday.en-NZ9.name=Queen's Birthday
holiday.en-NZ9.date=20210607
holiday.en-NZ10.name=Labour Day
holiday.en-NZ10.date=20211025
holiday.en-NZ11.name=Christmas Day
holiday.en-NZ11.date=20211225
holiday.en-NZ12.name=Boxing Day
holiday.en-NZ12.date=20211226
holiday.en-NZ13.name=Christmas Day (observed)
holiday.en-NZ13.date=20211227
holiday.en-NZ14.name=Boxing Day (observed)
holiday.en-NZ14.date=20211228
holiday.en-NZ15.name=New Year's Day
holiday.en-NZ15.date=20220101
holiday.en-NZ16.name=New Year's Day (observed)
holiday.en-NZ16.date=20220103
holiday.en-NZ17.name=Day after New Year's Day
holiday.en-NZ17.date=20220104
holiday.en-NZ18.name=Waitangi Day
holiday.en-NZ18.date=20220206
holiday.en-NZ19.name=Waitangi Day (observed)
holiday.en-NZ19.date=20220207
holiday.en-NZ20.name=Good Friday
holiday.en-NZ20.date=20220415
holiday.en-NZ21.name=Easter Monday
holiday.en-NZ21.date=20220418
holiday.en-NZ22.name=ANZAC Day
holiday.en-NZ22.date=20220425
holiday.en-NZ23.name=Queen's Birthday
holiday.en-NZ23.date=20220606
holiday.en-NZ24.name=Labour Day
holiday.en-NZ24.date=20221024
holiday.en-NZ25.name=Christmas Day
holiday.en-NZ25.date=20221225
holiday.en-NZ26.name=Boxing Day
holiday.en-NZ26.date=20221226
holiday.en-NZ27.name=Christmas Day (observed)
holiday.en-NZ27.date=20221227

View file

@ -1,9 +1,9 @@
###############################################################################
# International Holiday Data provided by Holidata.net
# https://holidata.net/en-US/2020.json
# https://holidata.net/en-US/2021.json
# https://holidata.net/en-US/2022.json
#
# Copyright 2006 - 2021, Paul Beckingham, Federico Hernandez.
# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
@ -28,50 +28,50 @@
###############################################################################
holiday.en-US1.name=New Year's Day
holiday.en-US1.date=20200101
holiday.en-US1.date=20210101
holiday.en-US2.name=Birthday of Martin Luther King, Jr.
holiday.en-US2.date=20200120
holiday.en-US2.date=20210118
holiday.en-US3.name=Washington's Birthday
holiday.en-US3.date=20200217
holiday.en-US3.date=20210215
holiday.en-US4.name=Patriots' Day
holiday.en-US4.date=20200420
holiday.en-US4.date=20210419
holiday.en-US5.name=Memorial Day
holiday.en-US5.date=20200525
holiday.en-US5.date=20210531
holiday.en-US6.name=Independence Day
holiday.en-US6.date=20200704
holiday.en-US6.date=20210704
holiday.en-US7.name=Labor Day
holiday.en-US7.date=20200907
holiday.en-US7.date=20210906
holiday.en-US8.name=Columbus Day
holiday.en-US8.date=20201012
holiday.en-US8.date=20211011
holiday.en-US9.name=Veterans Day
holiday.en-US9.date=20201111
holiday.en-US9.date=20211111
holiday.en-US10.name=Thanksgiving Day
holiday.en-US10.date=20201126
holiday.en-US11.name=Day after Thanksgiving
holiday.en-US11.date=20201127
holiday.en-US12.name=Christmas Eve
holiday.en-US12.date=20201224
holiday.en-US13.name=Christmas Day
holiday.en-US13.date=20201225
holiday.en-US14.name=New Year's Day
holiday.en-US14.date=20210101
holiday.en-US15.name=Birthday of Martin Luther King, Jr.
holiday.en-US15.date=20210118
holiday.en-US16.name=Washington's Birthday
holiday.en-US16.date=20210215
holiday.en-US17.name=Patriots' Day
holiday.en-US17.date=20210419
holiday.en-US18.name=Memorial Day
holiday.en-US18.date=20210531
holiday.en-US19.name=Independence Day
holiday.en-US19.date=20210704
holiday.en-US20.name=Labor Day
holiday.en-US20.date=20210906
holiday.en-US21.name=Columbus Day
holiday.en-US21.date=20211011
holiday.en-US22.name=Veterans Day
holiday.en-US22.date=20211111
holiday.en-US23.name=Thanksgiving Day
holiday.en-US23.date=20211125
holiday.en-US10.date=20211125
holiday.en-US11.name=Christmas Day
holiday.en-US11.date=20211225
holiday.en-US12.name=New Year's Day
holiday.en-US12.date=20220101
holiday.en-US13.name=Birthday of Martin Luther King, Jr.
holiday.en-US13.date=20220117
holiday.en-US14.name=Washington's Birthday
holiday.en-US14.date=20220221
holiday.en-US15.name=Patriots' Day
holiday.en-US15.date=20220418
holiday.en-US16.name=Memorial Day
holiday.en-US16.date=20220530
holiday.en-US17.name=Independence Day
holiday.en-US17.date=20220704
holiday.en-US18.name=Labor Day
holiday.en-US18.date=20220905
holiday.en-US19.name=Columbus Day
holiday.en-US19.date=20221010
holiday.en-US20.name=Veterans Day
holiday.en-US20.date=20221111
holiday.en-US21.name=Thanksgiving Day
holiday.en-US21.date=20221124
holiday.en-US22.name=Day after Thanksgiving
holiday.en-US22.date=20221125
holiday.en-US23.name=Christmas Eve
holiday.en-US23.date=20221224
holiday.en-US24.name=Christmas Day
holiday.en-US24.date=20211225
holiday.en-US24.date=20221225

View file

@ -1,9 +1,9 @@
###############################################################################
# International Holiday Data provided by Holidata.net
# https://holidata.net/es-CO/2020.json
# https://holidata.net/es-CO/2021.json
# https://holidata.net/es-CO/2022.json
#
# Copyright 2006 - 2021, Paul Beckingham, Federico Hernandez.
# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
@ -28,78 +28,78 @@
###############################################################################
holiday.es-CO1.name=Año Nuevo
holiday.es-CO1.date=20200101
holiday.es-CO1.date=20210101
holiday.es-CO2.name=Día de los Reyes Magos
holiday.es-CO2.date=20200106
holiday.es-CO2.date=20210111
holiday.es-CO3.name=Día de San José
holiday.es-CO3.date=20200323
holiday.es-CO3.date=20210322
holiday.es-CO4.name=Jueves Santo
holiday.es-CO4.date=20200409
holiday.es-CO4.date=20210401
holiday.es-CO5.name=Viernes Santo
holiday.es-CO5.date=20200410
holiday.es-CO5.date=20210402
holiday.es-CO6.name=Domingo de Pascua
holiday.es-CO6.date=20200412
holiday.es-CO6.date=20210404
holiday.es-CO7.name=Día del Trabajo
holiday.es-CO7.date=20200501
holiday.es-CO7.date=20210501
holiday.es-CO8.name=La Ascensión del Señor
holiday.es-CO8.date=20200525
holiday.es-CO8.date=20210517
holiday.es-CO9.name=Corpus Christi
holiday.es-CO9.date=20200615
holiday.es-CO9.date=20210607
holiday.es-CO10.name=El Sagrado Corazón de Jesús
holiday.es-CO10.date=20200622
holiday.es-CO10.date=20210614
holiday.es-CO11.name=San Pedro y San Pablo
holiday.es-CO11.date=20200629
holiday.es-CO11.date=20210705
holiday.es-CO12.name=Grito de Independencia
holiday.es-CO12.date=20200720
holiday.es-CO12.date=20210720
holiday.es-CO13.name=Batalla de Boyacá
holiday.es-CO13.date=20200807
holiday.es-CO13.date=20210807
holiday.es-CO14.name=Asunción de la Virgen
holiday.es-CO14.date=20200817
holiday.es-CO14.date=20210816
holiday.es-CO15.name=Día de la Raza
holiday.es-CO15.date=20201012
holiday.es-CO15.date=20211018
holiday.es-CO16.name=Todos los Santos
holiday.es-CO16.date=20201102
holiday.es-CO16.date=20211101
holiday.es-CO17.name=Independencia de Cartagena
holiday.es-CO17.date=20201116
holiday.es-CO17.date=20211115
holiday.es-CO18.name=Inmaculada Concepción
holiday.es-CO18.date=20201208
holiday.es-CO18.date=20211208
holiday.es-CO19.name=Navidad
holiday.es-CO19.date=20201225
holiday.es-CO19.date=20211225
holiday.es-CO20.name=Año Nuevo
holiday.es-CO20.date=20210101
holiday.es-CO20.date=20220101
holiday.es-CO21.name=Día de los Reyes Magos
holiday.es-CO21.date=20210111
holiday.es-CO21.date=20220110
holiday.es-CO22.name=Día de San José
holiday.es-CO22.date=20210322
holiday.es-CO22.date=20220321
holiday.es-CO23.name=Jueves Santo
holiday.es-CO23.date=20210401
holiday.es-CO23.date=20220414
holiday.es-CO24.name=Viernes Santo
holiday.es-CO24.date=20210402
holiday.es-CO24.date=20220415
holiday.es-CO25.name=Domingo de Pascua
holiday.es-CO25.date=20210404
holiday.es-CO25.date=20220417
holiday.es-CO26.name=Día del Trabajo
holiday.es-CO26.date=20210501
holiday.es-CO26.date=20220501
holiday.es-CO27.name=La Ascensión del Señor
holiday.es-CO27.date=20210517
holiday.es-CO27.date=20220530
holiday.es-CO28.name=Corpus Christi
holiday.es-CO28.date=20210607
holiday.es-CO28.date=20220620
holiday.es-CO29.name=El Sagrado Corazón de Jesús
holiday.es-CO29.date=20210614
holiday.es-CO29.date=20220627
holiday.es-CO30.name=San Pedro y San Pablo
holiday.es-CO30.date=20210705
holiday.es-CO30.date=20220704
holiday.es-CO31.name=Grito de Independencia
holiday.es-CO31.date=20210720
holiday.es-CO31.date=20220720
holiday.es-CO32.name=Batalla de Boyacá
holiday.es-CO32.date=20210807
holiday.es-CO32.date=20220807
holiday.es-CO33.name=Asunción de la Virgen
holiday.es-CO33.date=20210816
holiday.es-CO33.date=20220815
holiday.es-CO34.name=Día de la Raza
holiday.es-CO34.date=20211018
holiday.es-CO34.date=20221017
holiday.es-CO35.name=Todos los Santos
holiday.es-CO35.date=20211101
holiday.es-CO35.date=20221107
holiday.es-CO36.name=Independencia de Cartagena
holiday.es-CO36.date=20211115
holiday.es-CO36.date=20221114
holiday.es-CO37.name=Inmaculada Concepción
holiday.es-CO37.date=20211208
holiday.es-CO37.date=20221208
holiday.es-CO38.name=Navidad
holiday.es-CO38.date=20211225
holiday.es-CO38.date=20221225

View file

@ -1,9 +1,9 @@
###############################################################################
# International Holiday Data provided by Holidata.net
# https://holidata.net/es-ES/2020.json
# https://holidata.net/es-ES/2021.json
# https://holidata.net/es-ES/2022.json
#
# Copyright 2006 - 2021, Paul Beckingham, Federico Hernandez.
# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
@ -28,54 +28,128 @@
###############################################################################
holiday.es-ES1.name=Año Nuevo
holiday.es-ES1.date=20200101
holiday.es-ES2.name=Día de los Reyes
holiday.es-ES2.date=20200106
holiday.es-ES3.name=Viernes Santo
holiday.es-ES3.date=20200410
holiday.es-ES4.name=Pascua
holiday.es-ES4.date=20200412
holiday.es-ES5.name=Fiesta del Trabajo
holiday.es-ES5.date=20200501
holiday.es-ES6.name=Asunción de la Virgen
holiday.es-ES6.date=20200815
holiday.es-ES7.name=Fiesta Nacional de España
holiday.es-ES7.date=20201012
holiday.es-ES8.name=Dia de todos los Santos
holiday.es-ES8.date=20201101
holiday.es-ES9.name=Dia de la Constitución
holiday.es-ES9.date=20201206
holiday.es-ES10.name=Inmaculada Concepción
holiday.es-ES10.date=20201208
holiday.es-ES11.name=Noche Buena
holiday.es-ES11.date=20201224
holiday.es-ES12.name=Navidad
holiday.es-ES12.date=20201225
holiday.es-ES13.name=Noche Vieja
holiday.es-ES13.date=20201231
holiday.es-ES14.name=Año Nuevo
holiday.es-ES14.date=20210101
holiday.es-ES15.name=Día de los Reyes
holiday.es-ES15.date=20210106
holiday.es-ES16.name=Viernes Santo
holiday.es-ES16.date=20210402
holiday.es-ES17.name=Pascua
holiday.es-ES17.date=20210404
holiday.es-ES18.name=Fiesta del Trabajo
holiday.es-ES18.date=20210501
holiday.es-ES19.name=Asunción de la Virgen
holiday.es-ES19.date=20210815
holiday.es-ES20.name=Fiesta Nacional de España
holiday.es-ES20.date=20211012
holiday.es-ES21.name=Dia de todos los Santos
holiday.es-ES21.date=20211101
holiday.es-ES22.name=Dia de la Constitución
holiday.es-ES22.date=20211206
holiday.es-ES23.name=Inmaculada Concepción
holiday.es-ES23.date=20211208
holiday.es-ES24.name=Noche Buena
holiday.es-ES24.date=20211224
holiday.es-ES25.name=Navidad
holiday.es-ES25.date=20211225
holiday.es-ES26.name=Noche Vieja
holiday.es-ES26.date=20211231
holiday.es-ES1.date=20210101
holiday.es-ES2.name=Epifanía del Señor
holiday.es-ES2.date=20210106
holiday.es-ES3.name=Día de Andalucía
holiday.es-ES3.date=20210301
holiday.es-ES4.name=Día de las Illes Balears
holiday.es-ES4.date=20210301
holiday.es-ES5.name=Estatuto de Autonomía de la Ciudad de Melilla
holiday.es-ES5.date=20210313
holiday.es-ES6.name=San José
holiday.es-ES6.date=20210319
holiday.es-ES7.name=Jueves Santo
holiday.es-ES7.date=20210401
holiday.es-ES8.name=Viernes Santo
holiday.es-ES8.date=20210402
holiday.es-ES9.name=Pascua
holiday.es-ES9.date=20210404
holiday.es-ES10.name=Lunes de Pascua
holiday.es-ES10.date=20210405
holiday.es-ES11.name=Fiesta de Castilla y León
holiday.es-ES11.date=20210423
holiday.es-ES12.name=San Jorge / Día de Aragón
holiday.es-ES12.date=20210423
holiday.es-ES13.name=Fiesta del Trabajo
holiday.es-ES13.date=20210501
holiday.es-ES14.name=Lunes siguiente al Día de la Comunidad de Madrid
holiday.es-ES14.date=20210503
holiday.es-ES15.name=Día de las Letras Gallegas
holiday.es-ES15.date=20210517
holiday.es-ES16.name=Día de Castilla-La Mancha
holiday.es-ES16.date=20210531
holiday.es-ES17.name=Corpus Christi
holiday.es-ES17.date=20210603
holiday.es-ES18.name=Día de la Región de Murcia
holiday.es-ES18.date=20210609
holiday.es-ES19.name=Día de La Rioja
holiday.es-ES19.date=20210609
holiday.es-ES20.name=San Juan
holiday.es-ES20.date=20210624
holiday.es-ES21.name=Fiesta del Sacrificio (Eidul Adha)
holiday.es-ES21.date=20210720
holiday.es-ES22.name=Fiesta del Sacrificio (Aid El Kebir)
holiday.es-ES22.date=20210721
holiday.es-ES23.name=Santiago Apóstol / Día Nacional de Galicia
holiday.es-ES23.date=20210725
holiday.es-ES24.name=Día de las Instituciones de Cantabria
holiday.es-ES24.date=20210728
holiday.es-ES25.name=Asunción de la Virgen
holiday.es-ES25.date=20210815
holiday.es-ES26.name=Lunes siguiente a la Asunción de la Virgen
holiday.es-ES26.date=20210816
holiday.es-ES27.name=Día de Ceuta
holiday.es-ES27.date=20210902
holiday.es-ES28.name=Día de Asturias
holiday.es-ES28.date=20210908
holiday.es-ES29.name=Día de Extremadura
holiday.es-ES29.date=20210908
holiday.es-ES30.name=Fiesta Nacional de Cataluña
holiday.es-ES30.date=20210911
holiday.es-ES31.name=La Bien Aparecida
holiday.es-ES31.date=20210915
holiday.es-ES32.name=Día de la Comunitat Valenciana
holiday.es-ES32.date=20211009
holiday.es-ES33.name=Fiesta Nacional de España
holiday.es-ES33.date=20211012
holiday.es-ES34.name=Todos los Santos
holiday.es-ES34.date=20211101
holiday.es-ES35.name=Día de la Constitución Española
holiday.es-ES35.date=20211206
holiday.es-ES36.name=Inmaculada Concepción
holiday.es-ES36.date=20211208
holiday.es-ES37.name=Natividad del Señor
holiday.es-ES37.date=20211225
holiday.es-ES38.name=Año Nuevo
holiday.es-ES38.date=20220101
holiday.es-ES39.name=Epifanía del Señor
holiday.es-ES39.date=20220106
holiday.es-ES40.name=Día de Andalucía
holiday.es-ES40.date=20220228
holiday.es-ES41.name=Estatuto de Autonomía de la Ciudad de Melilla
holiday.es-ES41.date=20220313
holiday.es-ES42.name=Viernes Santo
holiday.es-ES42.date=20220415
holiday.es-ES43.name=Pascua
holiday.es-ES43.date=20220417
holiday.es-ES44.name=Fiesta de Castilla y León
holiday.es-ES44.date=20220423
holiday.es-ES45.name=San Jorge / Día de Aragón
holiday.es-ES45.date=20220423
holiday.es-ES46.name=Fiesta del Trabajo
holiday.es-ES46.date=20220501
holiday.es-ES47.name=Fiesta de la Comunidad de Madrid
holiday.es-ES47.date=20220502
holiday.es-ES48.name=Día de las Letras Gallegas
holiday.es-ES48.date=20220517
holiday.es-ES49.name=Día de Canarias
holiday.es-ES49.date=20220530
holiday.es-ES50.name=Día de Castilla-La Mancha
holiday.es-ES50.date=20220531
holiday.es-ES51.name=Día de la Región de Murcia
holiday.es-ES51.date=20220609
holiday.es-ES52.name=Día de La Rioja
holiday.es-ES52.date=20220609
holiday.es-ES53.name=Santiago Apóstol / Día Nacional de Galicia
holiday.es-ES53.date=20220725
holiday.es-ES54.name=Asunción de la Virgen
holiday.es-ES54.date=20220815
holiday.es-ES55.name=Día de Asturias
holiday.es-ES55.date=20220908
holiday.es-ES56.name=Día de Extremadura
holiday.es-ES56.date=20220908
holiday.es-ES57.name=Fiesta Nacional de Cataluña
holiday.es-ES57.date=20220911
holiday.es-ES58.name=Día de la Comunitat Valenciana
holiday.es-ES58.date=20221009
holiday.es-ES59.name=Fiesta Nacional de España
holiday.es-ES59.date=20221012
holiday.es-ES60.name=Todos los Santos
holiday.es-ES60.date=20221101
holiday.es-ES61.name=Día de la Constitución Española
holiday.es-ES61.date=20221206
holiday.es-ES62.name=Inmaculada Concepción
holiday.es-ES62.date=20221208
holiday.es-ES63.name=Natividad del Señor
holiday.es-ES63.date=20221225

View file

@ -1,9 +1,9 @@
###############################################################################
# International Holiday Data provided by Holidata.net
# https://holidata.net/es-US/2020.json
# https://holidata.net/es-US/2021.json
# https://holidata.net/es-US/2022.json
#
# Copyright 2006 - 2021, Paul Beckingham, Federico Hernandez.
# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
@ -28,50 +28,50 @@
###############################################################################
holiday.es-US1.name=Año Neuvo
holiday.es-US1.date=20200101
holiday.es-US1.date=20210101
holiday.es-US2.name=Cumpleaños de Martin Luther King, Jr.
holiday.es-US2.date=20200120
holiday.es-US2.date=20210118
holiday.es-US3.name=Día del Presidente
holiday.es-US3.date=20200217
holiday.es-US3.date=20210215
holiday.es-US4.name=Día del Patriota
holiday.es-US4.date=20200420
holiday.es-US4.date=20210419
holiday.es-US5.name=Día de los Caídos
holiday.es-US5.date=20200525
holiday.es-US5.date=20210531
holiday.es-US6.name=Día de la Independiencia
holiday.es-US6.date=20200704
holiday.es-US6.date=20210704
holiday.es-US7.name=Día del Trabajo
holiday.es-US7.date=20200907
holiday.es-US7.date=20210906
holiday.es-US8.name=Día de Columbus
holiday.es-US8.date=20201012
holiday.es-US8.date=20211011
holiday.es-US9.name=Día de los Veteranos
holiday.es-US9.date=20201111
holiday.es-US9.date=20211111
holiday.es-US10.name=Día de Acción de Gracias
holiday.es-US10.date=20201126
holiday.es-US11.name=Día después de Acción de Gracias
holiday.es-US11.date=20201127
holiday.es-US12.name=Nochebuena
holiday.es-US12.date=20201224
holiday.es-US13.name=Navidad
holiday.es-US13.date=20201225
holiday.es-US14.name=Año Neuvo
holiday.es-US14.date=20210101
holiday.es-US15.name=Cumpleaños de Martin Luther King, Jr.
holiday.es-US15.date=20210118
holiday.es-US16.name=Día del Presidente
holiday.es-US16.date=20210215
holiday.es-US17.name=Día del Patriota
holiday.es-US17.date=20210419
holiday.es-US18.name=Día de los Caídos
holiday.es-US18.date=20210531
holiday.es-US19.name=Día de la Independiencia
holiday.es-US19.date=20210704
holiday.es-US20.name=Día del Trabajo
holiday.es-US20.date=20210906
holiday.es-US21.name=Día de Columbus
holiday.es-US21.date=20211011
holiday.es-US22.name=Día de los Veteranos
holiday.es-US22.date=20211111
holiday.es-US23.name=Día de Acción de Gracias
holiday.es-US23.date=20211125
holiday.es-US10.date=20211125
holiday.es-US11.name=Navidad
holiday.es-US11.date=20211225
holiday.es-US12.name=Año Neuvo
holiday.es-US12.date=20220101
holiday.es-US13.name=Cumpleaños de Martin Luther King, Jr.
holiday.es-US13.date=20220117
holiday.es-US14.name=Día del Presidente
holiday.es-US14.date=20220221
holiday.es-US15.name=Día del Patriota
holiday.es-US15.date=20220418
holiday.es-US16.name=Día de los Caídos
holiday.es-US16.date=20220530
holiday.es-US17.name=Día de la Independiencia
holiday.es-US17.date=20220704
holiday.es-US18.name=Día del Trabajo
holiday.es-US18.date=20220905
holiday.es-US19.name=Día de Columbus
holiday.es-US19.date=20221010
holiday.es-US20.name=Día de los Veteranos
holiday.es-US20.date=20221111
holiday.es-US21.name=Día de Acción de Gracias
holiday.es-US21.date=20221124
holiday.es-US22.name=Día después de Acción de Gracias
holiday.es-US22.date=20221125
holiday.es-US23.name=Nochebuena
holiday.es-US23.date=20221224
holiday.es-US24.name=Navidad
holiday.es-US24.date=20211225
holiday.es-US24.date=20221225

View file

@ -1,9 +1,9 @@
###############################################################################
# International Holiday Data provided by Holidata.net
# https://holidata.net/fi-FI/2020.json
# https://holidata.net/fi-FI/2021.json
# https://holidata.net/fi-FI/2022.json
#
# Copyright 2006 - 2021, Paul Beckingham, Federico Hernandez.
# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
@ -28,54 +28,54 @@
###############################################################################
holiday.fi-FI1.name=Uudenvuodenpäivä
holiday.fi-FI1.date=20200101
holiday.fi-FI1.date=20210101
holiday.fi-FI2.name=Loppiainen
holiday.fi-FI2.date=20200106
holiday.fi-FI2.date=20210106
holiday.fi-FI3.name=Pitkäperjantai
holiday.fi-FI3.date=20200410
holiday.fi-FI3.date=20210402
holiday.fi-FI4.name=Pääsiäispäivä
holiday.fi-FI4.date=20200412
holiday.fi-FI4.date=20210404
holiday.fi-FI5.name=2. pääsiäispäivä
holiday.fi-FI5.date=20200413
holiday.fi-FI5.date=20210405
holiday.fi-FI6.name=Vappu
holiday.fi-FI6.date=20200501
holiday.fi-FI6.date=20210501
holiday.fi-FI7.name=Helatorstai
holiday.fi-FI7.date=20200521
holiday.fi-FI7.date=20210513
holiday.fi-FI8.name=Helluntaipäivä
holiday.fi-FI8.date=20200531
holiday.fi-FI8.date=20210523
holiday.fi-FI9.name=Juhannuspäivä
holiday.fi-FI9.date=20200620
holiday.fi-FI9.date=20210626
holiday.fi-FI10.name=Pyhäinpäivä
holiday.fi-FI10.date=20201031
holiday.fi-FI10.date=20211106
holiday.fi-FI11.name=Itsenäisyyspäivä
holiday.fi-FI11.date=20201206
holiday.fi-FI11.date=20211206
holiday.fi-FI12.name=Joulupäivä
holiday.fi-FI12.date=20201225
holiday.fi-FI12.date=20211225
holiday.fi-FI13.name=Tapaninpäivä
holiday.fi-FI13.date=20201226
holiday.fi-FI13.date=20211226
holiday.fi-FI14.name=Uudenvuodenpäivä
holiday.fi-FI14.date=20210101
holiday.fi-FI14.date=20220101
holiday.fi-FI15.name=Loppiainen
holiday.fi-FI15.date=20210106
holiday.fi-FI15.date=20220106
holiday.fi-FI16.name=Pitkäperjantai
holiday.fi-FI16.date=20210402
holiday.fi-FI16.date=20220415
holiday.fi-FI17.name=Pääsiäispäivä
holiday.fi-FI17.date=20210404
holiday.fi-FI17.date=20220417
holiday.fi-FI18.name=2. pääsiäispäivä
holiday.fi-FI18.date=20210405
holiday.fi-FI18.date=20220418
holiday.fi-FI19.name=Vappu
holiday.fi-FI19.date=20210501
holiday.fi-FI19.date=20220501
holiday.fi-FI20.name=Helatorstai
holiday.fi-FI20.date=20210513
holiday.fi-FI20.date=20220526
holiday.fi-FI21.name=Helluntaipäivä
holiday.fi-FI21.date=20210523
holiday.fi-FI21.date=20220605
holiday.fi-FI22.name=Juhannuspäivä
holiday.fi-FI22.date=20210626
holiday.fi-FI22.date=20220625
holiday.fi-FI23.name=Pyhäinpäivä
holiday.fi-FI23.date=20211106
holiday.fi-FI23.date=20221105
holiday.fi-FI24.name=Itsenäisyyspäivä
holiday.fi-FI24.date=20211206
holiday.fi-FI24.date=20221206
holiday.fi-FI25.name=Joulupäivä
holiday.fi-FI25.date=20211225
holiday.fi-FI25.date=20221225
holiday.fi-FI26.name=Tapaninpäivä
holiday.fi-FI26.date=20211226
holiday.fi-FI26.date=20221226

View file

@ -1,9 +1,9 @@
###############################################################################
# International Holiday Data provided by Holidata.net
# https://holidata.net/fr-BE/2020.json
# https://holidata.net/fr-BE/2021.json
# https://holidata.net/fr-BE/2022.json
#
# Copyright 2006 - 2021, Paul Beckingham, Federico Hernandez.
# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
@ -28,50 +28,50 @@
###############################################################################
holiday.fr-BE1.name=Nouvel An
holiday.fr-BE1.date=20200101
holiday.fr-BE1.date=20210101
holiday.fr-BE2.name=Pâques
holiday.fr-BE2.date=20200412
holiday.fr-BE2.date=20210404
holiday.fr-BE3.name=Lundi de Pâques
holiday.fr-BE3.date=20200413
holiday.fr-BE3.date=20210405
holiday.fr-BE4.name=Fête du Travail
holiday.fr-BE4.date=20200501
holiday.fr-BE4.date=20210501
holiday.fr-BE5.name=Ascension
holiday.fr-BE5.date=20200521
holiday.fr-BE5.date=20210513
holiday.fr-BE6.name=Pentecôte
holiday.fr-BE6.date=20200531
holiday.fr-BE6.date=20210523
holiday.fr-BE7.name=Lundi de Pentecôte
holiday.fr-BE7.date=20200601
holiday.fr-BE7.date=20210524
holiday.fr-BE8.name=Fête nationale
holiday.fr-BE8.date=20200721
holiday.fr-BE8.date=20210721
holiday.fr-BE9.name=Assomption
holiday.fr-BE9.date=20200815
holiday.fr-BE9.date=20210815
holiday.fr-BE10.name=Toussaint
holiday.fr-BE10.date=20201101
holiday.fr-BE10.date=20211101
holiday.fr-BE11.name=Jour de l'armistice
holiday.fr-BE11.date=20201111
holiday.fr-BE11.date=20211111
holiday.fr-BE12.name=Noël
holiday.fr-BE12.date=20201225
holiday.fr-BE12.date=20211225
holiday.fr-BE13.name=Nouvel An
holiday.fr-BE13.date=20210101
holiday.fr-BE13.date=20220101
holiday.fr-BE14.name=Pâques
holiday.fr-BE14.date=20210404
holiday.fr-BE14.date=20220417
holiday.fr-BE15.name=Lundi de Pâques
holiday.fr-BE15.date=20210405
holiday.fr-BE15.date=20220418
holiday.fr-BE16.name=Fête du Travail
holiday.fr-BE16.date=20210501
holiday.fr-BE16.date=20220501
holiday.fr-BE17.name=Ascension
holiday.fr-BE17.date=20210513
holiday.fr-BE17.date=20220526
holiday.fr-BE18.name=Pentecôte
holiday.fr-BE18.date=20210523
holiday.fr-BE18.date=20220605
holiday.fr-BE19.name=Lundi de Pentecôte
holiday.fr-BE19.date=20210524
holiday.fr-BE19.date=20220606
holiday.fr-BE20.name=Fête nationale
holiday.fr-BE20.date=20210721
holiday.fr-BE20.date=20220721
holiday.fr-BE21.name=Assomption
holiday.fr-BE21.date=20210815
holiday.fr-BE21.date=20220815
holiday.fr-BE22.name=Toussaint
holiday.fr-BE22.date=20211101
holiday.fr-BE22.date=20221101
holiday.fr-BE23.name=Jour de l'armistice
holiday.fr-BE23.date=20211111
holiday.fr-BE23.date=20221111
holiday.fr-BE24.name=Noël
holiday.fr-BE24.date=20211225
holiday.fr-BE24.date=20221225

109
doc/rc/holidays.fr-CA.rc Normal file
View file

@ -0,0 +1,109 @@
###############################################################################
# International Holiday Data provided by Holidata.net
# https://holidata.net/fr-CA/2021.json
# https://holidata.net/fr-CA/2022.json
#
# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included
# in all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
#
# https://www.opensource.org/licenses/mit-license.php
#
###############################################################################
holiday.fr-CA1.name=Jour de l'An
holiday.fr-CA1.date=20210101
holiday.fr-CA2.name=Fête de la Famille
holiday.fr-CA2.date=20210215
holiday.fr-CA3.name=Journée Louis Riel
holiday.fr-CA3.date=20210215
holiday.fr-CA4.name=Fête des Insulaires
holiday.fr-CA4.date=20210215
holiday.fr-CA5.name=Vendredi Saint
holiday.fr-CA5.date=20210402
holiday.fr-CA6.name=Lundi de Pâques
holiday.fr-CA6.date=20210405
holiday.fr-CA7.name=Fête de la Reine Victoria
holiday.fr-CA7.date=20210524
holiday.fr-CA8.name=Journée Nationale des Patriotes
holiday.fr-CA8.date=20210524
holiday.fr-CA9.name=Fête Nationale
holiday.fr-CA9.date=20210624
holiday.fr-CA10.name=Fête du Canada
holiday.fr-CA10.date=20210701
holiday.fr-CA11.name=Premier lundi d'août
holiday.fr-CA11.date=20210802
holiday.fr-CA12.name=Fête du Patrimoine
holiday.fr-CA12.date=20210802
holiday.fr-CA13.name=Fête de la Saskatchewan
holiday.fr-CA13.date=20210802
holiday.fr-CA14.name=Jour de la Fondation
holiday.fr-CA14.date=20210802
holiday.fr-CA15.name=Jour du Nouveau-Brunswick
holiday.fr-CA15.date=20210802
holiday.fr-CA16.name=Fête du Travail
holiday.fr-CA16.date=20210906
holiday.fr-CA17.name=Jour de l'Action de grâce
holiday.fr-CA17.date=20211011
holiday.fr-CA18.name=Jour du Souvenir
holiday.fr-CA18.date=20211111
holiday.fr-CA19.name=Jour de Noël
holiday.fr-CA19.date=20211225
holiday.fr-CA20.name=Lendemain de Noël
holiday.fr-CA20.date=20211226
holiday.fr-CA21.name=Jour de l'An
holiday.fr-CA21.date=20220101
holiday.fr-CA22.name=Fête de la Famille
holiday.fr-CA22.date=20220221
holiday.fr-CA23.name=Journée Louis Riel
holiday.fr-CA23.date=20220221
holiday.fr-CA24.name=Fête des Insulaires
holiday.fr-CA24.date=20220221
holiday.fr-CA25.name=Vendredi Saint
holiday.fr-CA25.date=20220415
holiday.fr-CA26.name=Lundi de Pâques
holiday.fr-CA26.date=20220418
holiday.fr-CA27.name=Fête de la Reine Victoria
holiday.fr-CA27.date=20220523
holiday.fr-CA28.name=Journée Nationale des Patriotes
holiday.fr-CA28.date=20220523
holiday.fr-CA29.name=Fête Nationale
holiday.fr-CA29.date=20220624
holiday.fr-CA30.name=Fête du Canada
holiday.fr-CA30.date=20220701
holiday.fr-CA31.name=Premier lundi d'août
holiday.fr-CA31.date=20220801
holiday.fr-CA32.name=Fête du Patrimoine
holiday.fr-CA32.date=20220801
holiday.fr-CA33.name=Fête de la Saskatchewan
holiday.fr-CA33.date=20220801
holiday.fr-CA34.name=Jour de la Fondation
holiday.fr-CA34.date=20220801
holiday.fr-CA35.name=Jour du Nouveau-Brunswick
holiday.fr-CA35.date=20220801
holiday.fr-CA36.name=Fête du Travail
holiday.fr-CA36.date=20220905
holiday.fr-CA37.name=Jour de l'Action de grâce
holiday.fr-CA37.date=20221010
holiday.fr-CA38.name=Jour du Souvenir
holiday.fr-CA38.date=20221111
holiday.fr-CA39.name=Jour de Noël
holiday.fr-CA39.date=20221225
holiday.fr-CA40.name=Lendemain de Noël
holiday.fr-CA40.date=20221226

View file

@ -1,9 +1,9 @@
###############################################################################
# International Holiday Data provided by Holidata.net
# https://holidata.net/fr-FR/2020.json
# https://holidata.net/fr-FR/2021.json
# https://holidata.net/fr-FR/2022.json
#
# Copyright 2006 - 2021, Paul Beckingham, Federico Hernandez.
# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
@ -28,50 +28,50 @@
###############################################################################
holiday.fr-FR1.name=Jour de l'an
holiday.fr-FR1.date=20200101
holiday.fr-FR1.date=20210101
holiday.fr-FR2.name=Lundi de Pâques
holiday.fr-FR2.date=20200413
holiday.fr-FR2.date=20210405
holiday.fr-FR3.name=Fête du premier mai
holiday.fr-FR3.date=20200501
holiday.fr-FR3.date=20210501
holiday.fr-FR4.name=Armistice 1945
holiday.fr-FR4.date=20200508
holiday.fr-FR5.name=Ascencion
holiday.fr-FR5.date=20200521
holiday.fr-FR4.date=20210508
holiday.fr-FR5.name=Ascension
holiday.fr-FR5.date=20210513
holiday.fr-FR6.name=Pentecôte
holiday.fr-FR6.date=20200531
holiday.fr-FR6.date=20210523
holiday.fr-FR7.name=Lundi de Pentecôte
holiday.fr-FR7.date=20200601
holiday.fr-FR7.date=20210524
holiday.fr-FR8.name=Fête nationale
holiday.fr-FR8.date=20200714
holiday.fr-FR8.date=20210714
holiday.fr-FR9.name=Assomption
holiday.fr-FR9.date=20200815
holiday.fr-FR9.date=20210815
holiday.fr-FR10.name=Toussaint
holiday.fr-FR10.date=20201101
holiday.fr-FR10.date=20211101
holiday.fr-FR11.name=Armistice 1918
holiday.fr-FR11.date=20201111
holiday.fr-FR11.date=20211111
holiday.fr-FR12.name=Noël
holiday.fr-FR12.date=20201225
holiday.fr-FR12.date=20211225
holiday.fr-FR13.name=Jour de l'an
holiday.fr-FR13.date=20210101
holiday.fr-FR13.date=20220101
holiday.fr-FR14.name=Lundi de Pâques
holiday.fr-FR14.date=20210405
holiday.fr-FR14.date=20220418
holiday.fr-FR15.name=Fête du premier mai
holiday.fr-FR15.date=20210501
holiday.fr-FR15.date=20220501
holiday.fr-FR16.name=Armistice 1945
holiday.fr-FR16.date=20210508
holiday.fr-FR17.name=Ascencion
holiday.fr-FR17.date=20210513
holiday.fr-FR16.date=20220508
holiday.fr-FR17.name=Ascension
holiday.fr-FR17.date=20220526
holiday.fr-FR18.name=Pentecôte
holiday.fr-FR18.date=20210523
holiday.fr-FR18.date=20220605
holiday.fr-FR19.name=Lundi de Pentecôte
holiday.fr-FR19.date=20210524
holiday.fr-FR19.date=20220606
holiday.fr-FR20.name=Fête nationale
holiday.fr-FR20.date=20210714
holiday.fr-FR20.date=20220714
holiday.fr-FR21.name=Assomption
holiday.fr-FR21.date=20210815
holiday.fr-FR21.date=20220815
holiday.fr-FR22.name=Toussaint
holiday.fr-FR22.date=20211101
holiday.fr-FR22.date=20221101
holiday.fr-FR23.name=Armistice 1918
holiday.fr-FR23.date=20211111
holiday.fr-FR23.date=20221111
holiday.fr-FR24.name=Noël
holiday.fr-FR24.date=20211225
holiday.fr-FR24.date=20221225

View file

@ -1,9 +1,9 @@
###############################################################################
# International Holiday Data provided by Holidata.net
# https://holidata.net/hr-HR/2020.json
# https://holidata.net/hr-HR/2021.json
# https://holidata.net/hr-HR/2022.json
#
# Copyright 2006 - 2021, Paul Beckingham, Federico Hernandez.
# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
@ -28,62 +28,60 @@
###############################################################################
holiday.hr-HR1.name=Nova Godina
holiday.hr-HR1.date=20200101
holiday.hr-HR1.date=20210101
holiday.hr-HR2.name=Bogojavljenje
holiday.hr-HR2.date=20200106
holiday.hr-HR2.date=20210106
holiday.hr-HR3.name=Uskrs
holiday.hr-HR3.date=20200412
holiday.hr-HR3.date=20210404
holiday.hr-HR4.name=Uskrsni ponedjeljak
holiday.hr-HR4.date=20200413
holiday.hr-HR4.date=20210405
holiday.hr-HR5.name=Praznik rada
holiday.hr-HR5.date=20200501
holiday.hr-HR5.date=20210501
holiday.hr-HR6.name=Tijelovo
holiday.hr-HR6.date=20200611
holiday.hr-HR6.date=20210603
holiday.hr-HR7.name=Dan antifašističke borbe
holiday.hr-HR7.date=20200622
holiday.hr-HR7.date=20210622
holiday.hr-HR8.name=Dan državnosti
holiday.hr-HR8.date=20200625
holiday.hr-HR8.date=20210625
holiday.hr-HR9.name=Dan pobjede i domovinske zahvalnosti i Dan hrvatskih branitelja
holiday.hr-HR9.date=20200805
holiday.hr-HR9.date=20210805
holiday.hr-HR10.name=Velika Gospa
holiday.hr-HR10.date=20200815
holiday.hr-HR10.date=20210815
holiday.hr-HR11.name=Dan neovisnosti
holiday.hr-HR11.date=20201008
holiday.hr-HR11.date=20211008
holiday.hr-HR12.name=Svi sveti
holiday.hr-HR12.date=20201101
holiday.hr-HR12.date=20211101
holiday.hr-HR13.name=Dan sjećanja na žrtve Domovinskog rata i Dan sjećanja na žrtvu Vukovara i Škabrnje
holiday.hr-HR13.date=20201118
holiday.hr-HR13.date=20211118
holiday.hr-HR14.name=Božić
holiday.hr-HR14.date=20201225
holiday.hr-HR14.date=20211225
holiday.hr-HR15.name=Sveti Stjepan
holiday.hr-HR15.date=20201226
holiday.hr-HR15.date=20211226
holiday.hr-HR16.name=Nova Godina
holiday.hr-HR16.date=20210101
holiday.hr-HR17.name=Bogojavljenje
holiday.hr-HR17.date=20210106
holiday.hr-HR16.date=20220101
holiday.hr-HR17.name=Sveta tri kralja
holiday.hr-HR17.date=20220106
holiday.hr-HR18.name=Uskrs
holiday.hr-HR18.date=20210404
holiday.hr-HR19.name=Uskrsni ponedjeljak
holiday.hr-HR19.date=20210405
holiday.hr-HR18.date=20220417
holiday.hr-HR19.name=Uskršnji ponedjeljak
holiday.hr-HR19.date=20220418
holiday.hr-HR20.name=Praznik rada
holiday.hr-HR20.date=20210501
holiday.hr-HR21.name=Tijelovo
holiday.hr-HR21.date=20210603
holiday.hr-HR22.name=Dan antifašističke borbe
holiday.hr-HR22.date=20210622
holiday.hr-HR23.name=Dan državnosti
holiday.hr-HR23.date=20210625
holiday.hr-HR20.date=20220501
holiday.hr-HR21.name=Dan državnosti
holiday.hr-HR21.date=20220530
holiday.hr-HR22.name=Tijelovo
holiday.hr-HR22.date=20220616
holiday.hr-HR23.name=Dan antifašističke borbe
holiday.hr-HR23.date=20220622
holiday.hr-HR24.name=Dan pobjede i domovinske zahvalnosti i Dan hrvatskih branitelja
holiday.hr-HR24.date=20210805
holiday.hr-HR24.date=20220805
holiday.hr-HR25.name=Velika Gospa
holiday.hr-HR25.date=20210815
holiday.hr-HR26.name=Dan neovisnosti
holiday.hr-HR26.date=20211008
holiday.hr-HR27.name=Svi sveti
holiday.hr-HR27.date=20211101
holiday.hr-HR28.name=Dan sjećanja na žrtve Domovinskog rata i Dan sjećanja na žrtvu Vukovara i Škabrnje
holiday.hr-HR28.date=20211118
holiday.hr-HR29.name=Božić
holiday.hr-HR29.date=20211225
holiday.hr-HR30.name=Sveti Stjepan
holiday.hr-HR30.date=20211226
holiday.hr-HR25.date=20220815
holiday.hr-HR26.name=Dan svih svetih
holiday.hr-HR26.date=20221101
holiday.hr-HR27.name=Dan sjećanja na žrtve Domovinskog rata i Dan sjećanja na žrtvu Vukovara i Škabrnje
holiday.hr-HR27.date=20221118
holiday.hr-HR28.name=Božić
holiday.hr-HR28.date=20221225
holiday.hr-HR29.name=Sveti Stjepan
holiday.hr-HR29.date=20221226

83
doc/rc/holidays.hu-HU.rc Normal file
View file

@ -0,0 +1,83 @@
###############################################################################
# International Holiday Data provided by Holidata.net
# https://holidata.net/hu-HU/2021.json
# https://holidata.net/hu-HU/2022.json
#
# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included
# in all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
#
# https://www.opensource.org/licenses/mit-license.php
#
###############################################################################
holiday.hu-HU1.name=Újév
holiday.hu-HU1.date=20210101
holiday.hu-HU2.name=Az 1848-as forradalom ünnepe
holiday.hu-HU2.date=20210315
holiday.hu-HU3.name=Nagypéntek
holiday.hu-HU3.date=20210402
holiday.hu-HU4.name=Húsvét
holiday.hu-HU4.date=20210404
holiday.hu-HU5.name=Húsvéthétfő
holiday.hu-HU5.date=20210405
holiday.hu-HU6.name=A munka ünnepe
holiday.hu-HU6.date=20210501
holiday.hu-HU7.name=Pünkösd
holiday.hu-HU7.date=20210523
holiday.hu-HU8.name=Pünkösdhétfő
holiday.hu-HU8.date=20210524
holiday.hu-HU9.name=Az államalapítás ünnepe
holiday.hu-HU9.date=20210820
holiday.hu-HU10.name=Az 1956-os forradalom ünnepe
holiday.hu-HU10.date=20211023
holiday.hu-HU11.name=Mindenszentek
holiday.hu-HU11.date=20211101
holiday.hu-HU12.name=Munkaszüneti Nap
holiday.hu-HU12.date=20211224
holiday.hu-HU13.name=Karácsony
holiday.hu-HU13.date=20211225
holiday.hu-HU14.name=Karácsony
holiday.hu-HU14.date=20211226
holiday.hu-HU15.name=Újév
holiday.hu-HU15.date=20220101
holiday.hu-HU16.name=Az 1848-as forradalom ünnepe
holiday.hu-HU16.date=20220315
holiday.hu-HU17.name=Nagypéntek
holiday.hu-HU17.date=20220415
holiday.hu-HU18.name=Húsvét
holiday.hu-HU18.date=20220417
holiday.hu-HU19.name=Húsvéthétfő
holiday.hu-HU19.date=20220418
holiday.hu-HU20.name=A munka ünnepe
holiday.hu-HU20.date=20220501
holiday.hu-HU21.name=Pünkösd
holiday.hu-HU21.date=20220605
holiday.hu-HU22.name=Pünkösdhétfő
holiday.hu-HU22.date=20220606
holiday.hu-HU23.name=Az államalapítás ünnepe
holiday.hu-HU23.date=20220820
holiday.hu-HU24.name=Az 1956-os forradalom ünnepe
holiday.hu-HU24.date=20221023
holiday.hu-HU25.name=Mindenszentek
holiday.hu-HU25.date=20221101
holiday.hu-HU26.name=Karácsony
holiday.hu-HU26.date=20221225
holiday.hu-HU27.name=Karácsony
holiday.hu-HU27.date=20221226

View file

@ -1,9 +1,9 @@
###############################################################################
# International Holiday Data provided by Holidata.net
# https://holidata.net/is-IS/2020.json
# https://holidata.net/is-IS/2021.json
# https://holidata.net/is-IS/2022.json
#
# Copyright 2006 - 2021, Paul Beckingham, Federico Hernandez.
# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
@ -28,66 +28,66 @@
###############################################################################
holiday.is-IS1.name=Nýársdagur
holiday.is-IS1.date=20200101
holiday.is-IS1.date=20210101
holiday.is-IS2.name=Skírdagur
holiday.is-IS2.date=20200409
holiday.is-IS2.date=20210401
holiday.is-IS3.name=Föstudagurinn langi
holiday.is-IS3.date=20200410
holiday.is-IS3.date=20210402
holiday.is-IS4.name=Páskadagur
holiday.is-IS4.date=20200412
holiday.is-IS4.date=20210404
holiday.is-IS5.name=Annar dagur páska
holiday.is-IS5.date=20200413
holiday.is-IS5.date=20210405
holiday.is-IS6.name=Sumardagurinn fyrsti
holiday.is-IS6.date=20200423
holiday.is-IS6.date=20210422
holiday.is-IS7.name=Verkalýðsdagurinn
holiday.is-IS7.date=20200501
holiday.is-IS7.date=20210501
holiday.is-IS8.name=Uppstigningardagur
holiday.is-IS8.date=20200521
holiday.is-IS8.date=20210513
holiday.is-IS9.name=Hvítasunnudagur
holiday.is-IS9.date=20200531
holiday.is-IS9.date=20210523
holiday.is-IS10.name=Annar dagur hvítasunnu
holiday.is-IS10.date=20200601
holiday.is-IS10.date=20210524
holiday.is-IS11.name=Þjóðhátíðardagurinn
holiday.is-IS11.date=20200617
holiday.is-IS11.date=20210617
holiday.is-IS12.name=Frídagur verslunarmanna
holiday.is-IS12.date=20200803
holiday.is-IS12.date=20210802
holiday.is-IS13.name=Aðfangadagur jóla
holiday.is-IS13.date=20201224
holiday.is-IS13.date=20211224
holiday.is-IS14.name=Jóladagur
holiday.is-IS14.date=20201225
holiday.is-IS14.date=20211225
holiday.is-IS15.name=Annar dagur jóla
holiday.is-IS15.date=20201226
holiday.is-IS15.date=20211226
holiday.is-IS16.name=Gamlársdagur
holiday.is-IS16.date=20201231
holiday.is-IS16.date=20211231
holiday.is-IS17.name=Nýársdagur
holiday.is-IS17.date=20210101
holiday.is-IS17.date=20220101
holiday.is-IS18.name=Skírdagur
holiday.is-IS18.date=20210401
holiday.is-IS18.date=20220414
holiday.is-IS19.name=Föstudagurinn langi
holiday.is-IS19.date=20210402
holiday.is-IS19.date=20220415
holiday.is-IS20.name=Páskadagur
holiday.is-IS20.date=20210404
holiday.is-IS20.date=20220417
holiday.is-IS21.name=Annar dagur páska
holiday.is-IS21.date=20210405
holiday.is-IS21.date=20220418
holiday.is-IS22.name=Sumardagurinn fyrsti
holiday.is-IS22.date=20210422
holiday.is-IS22.date=20220421
holiday.is-IS23.name=Verkalýðsdagurinn
holiday.is-IS23.date=20210501
holiday.is-IS23.date=20220501
holiday.is-IS24.name=Uppstigningardagur
holiday.is-IS24.date=20210513
holiday.is-IS24.date=20220526
holiday.is-IS25.name=Hvítasunnudagur
holiday.is-IS25.date=20210523
holiday.is-IS25.date=20220605
holiday.is-IS26.name=Annar dagur hvítasunnu
holiday.is-IS26.date=20210524
holiday.is-IS26.date=20220606
holiday.is-IS27.name=Þjóðhátíðardagurinn
holiday.is-IS27.date=20210617
holiday.is-IS27.date=20220617
holiday.is-IS28.name=Frídagur verslunarmanna
holiday.is-IS28.date=20210802
holiday.is-IS28.date=20220801
holiday.is-IS29.name=Aðfangadagur jóla
holiday.is-IS29.date=20211224
holiday.is-IS29.date=20221224
holiday.is-IS30.name=Jóladagur
holiday.is-IS30.date=20211225
holiday.is-IS30.date=20221225
holiday.is-IS31.name=Annar dagur jóla
holiday.is-IS31.date=20211226
holiday.is-IS31.date=20221226
holiday.is-IS32.name=Gamlársdagur
holiday.is-IS32.date=20211231
holiday.is-IS32.date=20221231

View file

@ -1,9 +1,9 @@
###############################################################################
# International Holiday Data provided by Holidata.net
# https://holidata.net/it-IT/2020.json
# https://holidata.net/it-IT/2021.json
# https://holidata.net/it-IT/2022.json
#
# Copyright 2006 - 2021, Paul Beckingham, Federico Hernandez.
# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
@ -28,50 +28,50 @@
###############################################################################
holiday.it-IT1.name=Capodanno
holiday.it-IT1.date=20200101
holiday.it-IT1.date=20210101
holiday.it-IT2.name=Epifania
holiday.it-IT2.date=20200106
holiday.it-IT2.date=20210106
holiday.it-IT3.name=Pasqua
holiday.it-IT3.date=20200412
holiday.it-IT3.date=20210404
holiday.it-IT4.name=Pasquetta
holiday.it-IT4.date=20200413
holiday.it-IT4.date=20210405
holiday.it-IT5.name=Festa della liberazione
holiday.it-IT5.date=20200425
holiday.it-IT5.date=20210425
holiday.it-IT6.name=Festa del lavoro
holiday.it-IT6.date=20200501
holiday.it-IT6.date=20210501
holiday.it-IT7.name=Festa della repubblica
holiday.it-IT7.date=20200602
holiday.it-IT7.date=20210602
holiday.it-IT8.name=Assunzione (ferragosto)
holiday.it-IT8.date=20200815
holiday.it-IT8.date=20210815
holiday.it-IT9.name=Ognissanti
holiday.it-IT9.date=20201101
holiday.it-IT9.date=20211101
holiday.it-IT10.name=Immacolata concezione
holiday.it-IT10.date=20201208
holiday.it-IT10.date=20211208
holiday.it-IT11.name=Natale
holiday.it-IT11.date=20201225
holiday.it-IT11.date=20211225
holiday.it-IT12.name=S.to Stefano
holiday.it-IT12.date=20201226
holiday.it-IT12.date=20211226
holiday.it-IT13.name=Capodanno
holiday.it-IT13.date=20210101
holiday.it-IT13.date=20220101
holiday.it-IT14.name=Epifania
holiday.it-IT14.date=20210106
holiday.it-IT14.date=20220106
holiday.it-IT15.name=Pasqua
holiday.it-IT15.date=20210404
holiday.it-IT15.date=20220417
holiday.it-IT16.name=Pasquetta
holiday.it-IT16.date=20210405
holiday.it-IT16.date=20220418
holiday.it-IT17.name=Festa della liberazione
holiday.it-IT17.date=20210425
holiday.it-IT17.date=20220425
holiday.it-IT18.name=Festa del lavoro
holiday.it-IT18.date=20210501
holiday.it-IT18.date=20220501
holiday.it-IT19.name=Festa della repubblica
holiday.it-IT19.date=20210602
holiday.it-IT19.date=20220602
holiday.it-IT20.name=Assunzione (ferragosto)
holiday.it-IT20.date=20210815
holiday.it-IT20.date=20220815
holiday.it-IT21.name=Ognissanti
holiday.it-IT21.date=20211101
holiday.it-IT21.date=20221101
holiday.it-IT22.name=Immacolata concezione
holiday.it-IT22.date=20211208
holiday.it-IT22.date=20221208
holiday.it-IT23.name=Natale
holiday.it-IT23.date=20211225
holiday.it-IT23.date=20221225
holiday.it-IT24.name=S.to Stefano
holiday.it-IT24.date=20211226
holiday.it-IT24.date=20221226

View file

@ -1,9 +1,9 @@
###############################################################################
# International Holiday Data provided by Holidata.net
# https://holidata.net/nb-NO/2020.json
# https://holidata.net/nb-NO/2021.json
# https://holidata.net/nb-NO/2022.json
#
# Copyright 2006 - 2021, Paul Beckingham, Federico Hernandez.
# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
@ -28,70 +28,70 @@
###############################################################################
holiday.nb-NO1.name=Nyttårsdag
holiday.nb-NO1.date=20200101
holiday.nb-NO1.date=20210101
holiday.nb-NO2.name=Fastelavn
holiday.nb-NO2.date=20200223
holiday.nb-NO2.date=20210214
holiday.nb-NO3.name=Palmesøndag
holiday.nb-NO3.date=20200405
holiday.nb-NO3.date=20210328
holiday.nb-NO4.name=Skjærtorsdag
holiday.nb-NO4.date=20200409
holiday.nb-NO4.date=20210401
holiday.nb-NO5.name=Langfredag
holiday.nb-NO5.date=20200410
holiday.nb-NO5.date=20210402
holiday.nb-NO6.name=Påskedag
holiday.nb-NO6.date=20200412
holiday.nb-NO6.date=20210404
holiday.nb-NO7.name=Påskedag
holiday.nb-NO7.date=20200413
holiday.nb-NO7.date=20210405
holiday.nb-NO8.name=Offentlig Høytidsdag
holiday.nb-NO8.date=20200501
holiday.nb-NO8.date=20210501
holiday.nb-NO9.name=Frigjøringsdag 1945
holiday.nb-NO9.date=20200508
holiday.nb-NO10.name=Grunnlovsdag
holiday.nb-NO10.date=20200517
holiday.nb-NO11.name=Kristi Himmelfartsdag
holiday.nb-NO11.date=20200521
holiday.nb-NO9.date=20210508
holiday.nb-NO10.name=Kristi Himmelfartsdag
holiday.nb-NO10.date=20210513
holiday.nb-NO11.name=Grunnlovsdag
holiday.nb-NO11.date=20210517
holiday.nb-NO12.name=Pinsedag
holiday.nb-NO12.date=20200531
holiday.nb-NO12.date=20210523
holiday.nb-NO13.name=Pinsedag
holiday.nb-NO13.date=20200601
holiday.nb-NO13.date=20210524
holiday.nb-NO14.name=Julaften
holiday.nb-NO14.date=20201224
holiday.nb-NO14.date=20211224
holiday.nb-NO15.name=Juledag
holiday.nb-NO15.date=20201225
holiday.nb-NO15.date=20211225
holiday.nb-NO16.name=Juledag
holiday.nb-NO16.date=20201226
holiday.nb-NO16.date=20211226
holiday.nb-NO17.name=Nyttårsaften
holiday.nb-NO17.date=20201231
holiday.nb-NO17.date=20211231
holiday.nb-NO18.name=Nyttårsdag
holiday.nb-NO18.date=20210101
holiday.nb-NO18.date=20220101
holiday.nb-NO19.name=Fastelavn
holiday.nb-NO19.date=20210214
holiday.nb-NO19.date=20220227
holiday.nb-NO20.name=Palmesøndag
holiday.nb-NO20.date=20210328
holiday.nb-NO20.date=20220410
holiday.nb-NO21.name=Skjærtorsdag
holiday.nb-NO21.date=20210401
holiday.nb-NO21.date=20220414
holiday.nb-NO22.name=Langfredag
holiday.nb-NO22.date=20210402
holiday.nb-NO22.date=20220415
holiday.nb-NO23.name=Påskedag
holiday.nb-NO23.date=20210404
holiday.nb-NO23.date=20220417
holiday.nb-NO24.name=Påskedag
holiday.nb-NO24.date=20210405
holiday.nb-NO24.date=20220418
holiday.nb-NO25.name=Offentlig Høytidsdag
holiday.nb-NO25.date=20210501
holiday.nb-NO25.date=20220501
holiday.nb-NO26.name=Frigjøringsdag 1945
holiday.nb-NO26.date=20210508
holiday.nb-NO27.name=Kristi Himmelfartsdag
holiday.nb-NO27.date=20210513
holiday.nb-NO28.name=Grunnlovsdag
holiday.nb-NO28.date=20210517
holiday.nb-NO26.date=20220508
holiday.nb-NO27.name=Grunnlovsdag
holiday.nb-NO27.date=20220517
holiday.nb-NO28.name=Kristi Himmelfartsdag
holiday.nb-NO28.date=20220526
holiday.nb-NO29.name=Pinsedag
holiday.nb-NO29.date=20210523
holiday.nb-NO29.date=20220605
holiday.nb-NO30.name=Pinsedag
holiday.nb-NO30.date=20210524
holiday.nb-NO30.date=20220606
holiday.nb-NO31.name=Julaften
holiday.nb-NO31.date=20211224
holiday.nb-NO31.date=20221224
holiday.nb-NO32.name=Juledag
holiday.nb-NO32.date=20211225
holiday.nb-NO32.date=20221225
holiday.nb-NO33.name=Juledag
holiday.nb-NO33.date=20211226
holiday.nb-NO33.date=20221226
holiday.nb-NO34.name=Nyttårsaften
holiday.nb-NO34.date=20211231
holiday.nb-NO34.date=20221231

View file

@ -1,9 +1,9 @@
###############################################################################
# International Holiday Data provided by Holidata.net
# https://holidata.net/nl-BE/2020.json
# https://holidata.net/nl-BE/2021.json
# https://holidata.net/nl-BE/2022.json
#
# Copyright 2006 - 2021, Paul Beckingham, Federico Hernandez.
# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
@ -28,50 +28,50 @@
###############################################################################
holiday.nl-BE1.name=Nieuwjaar
holiday.nl-BE1.date=20200101
holiday.nl-BE1.date=20210101
holiday.nl-BE2.name=Pasen
holiday.nl-BE2.date=20200412
holiday.nl-BE2.date=20210404
holiday.nl-BE3.name=Paasmaandag
holiday.nl-BE3.date=20200413
holiday.nl-BE3.date=20210405
holiday.nl-BE4.name=Dag van de arbeid
holiday.nl-BE4.date=20200501
holiday.nl-BE4.date=20210501
holiday.nl-BE5.name=Onze Lieve Heer hemelvaart
holiday.nl-BE5.date=20200521
holiday.nl-BE5.date=20210513
holiday.nl-BE6.name=Pinksteren
holiday.nl-BE6.date=20200531
holiday.nl-BE6.date=20210523
holiday.nl-BE7.name=Pinkstermaandag
holiday.nl-BE7.date=20200601
holiday.nl-BE7.date=20210524
holiday.nl-BE8.name=Nationale feestdag
holiday.nl-BE8.date=20200721
holiday.nl-BE8.date=20210721
holiday.nl-BE9.name=Onze Lieve Vrouw hemelvaart
holiday.nl-BE9.date=20200815
holiday.nl-BE9.date=20210815
holiday.nl-BE10.name=Allerheiligen
holiday.nl-BE10.date=20201101
holiday.nl-BE10.date=20211101
holiday.nl-BE11.name=Wapenstilstand
holiday.nl-BE11.date=20201111
holiday.nl-BE11.date=20211111
holiday.nl-BE12.name=Kerstmis
holiday.nl-BE12.date=20201225
holiday.nl-BE12.date=20211225
holiday.nl-BE13.name=Nieuwjaar
holiday.nl-BE13.date=20210101
holiday.nl-BE13.date=20220101
holiday.nl-BE14.name=Pasen
holiday.nl-BE14.date=20210404
holiday.nl-BE14.date=20220417
holiday.nl-BE15.name=Paasmaandag
holiday.nl-BE15.date=20210405
holiday.nl-BE15.date=20220418
holiday.nl-BE16.name=Dag van de arbeid
holiday.nl-BE16.date=20210501
holiday.nl-BE16.date=20220501
holiday.nl-BE17.name=Onze Lieve Heer hemelvaart
holiday.nl-BE17.date=20210513
holiday.nl-BE17.date=20220526
holiday.nl-BE18.name=Pinksteren
holiday.nl-BE18.date=20210523
holiday.nl-BE18.date=20220605
holiday.nl-BE19.name=Pinkstermaandag
holiday.nl-BE19.date=20210524
holiday.nl-BE19.date=20220606
holiday.nl-BE20.name=Nationale feestdag
holiday.nl-BE20.date=20210721
holiday.nl-BE20.date=20220721
holiday.nl-BE21.name=Onze Lieve Vrouw hemelvaart
holiday.nl-BE21.date=20210815
holiday.nl-BE21.date=20220815
holiday.nl-BE22.name=Allerheiligen
holiday.nl-BE22.date=20211101
holiday.nl-BE22.date=20221101
holiday.nl-BE23.name=Wapenstilstand
holiday.nl-BE23.date=20211111
holiday.nl-BE23.date=20221111
holiday.nl-BE24.name=Kerstmis
holiday.nl-BE24.date=20211225
holiday.nl-BE24.date=20221225

View file

@ -1,9 +1,9 @@
###############################################################################
# International Holiday Data provided by Holidata.net
# https://holidata.net/nl-NL/2020.json
# https://holidata.net/nl-NL/2021.json
# https://holidata.net/nl-NL/2022.json
#
# Copyright 2006 - 2021, Paul Beckingham, Federico Hernandez.
# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
@ -28,58 +28,58 @@
###############################################################################
holiday.nl-NL1.name=Nieuwjaarsdag
holiday.nl-NL1.date=20200101
holiday.nl-NL1.date=20210101
holiday.nl-NL2.name=Goede Vrijdag
holiday.nl-NL2.date=20200410
holiday.nl-NL2.date=20210402
holiday.nl-NL3.name=Eerste Paasdag
holiday.nl-NL3.date=20200412
holiday.nl-NL3.date=20210404
holiday.nl-NL4.name=Tweede Paasdag
holiday.nl-NL4.date=20200413
holiday.nl-NL4.date=20210405
holiday.nl-NL5.name=Koningsdag
holiday.nl-NL5.date=20200427
holiday.nl-NL5.date=20210427
holiday.nl-NL6.name=Dodenherdenking
holiday.nl-NL6.date=20200504
holiday.nl-NL6.date=20210504
holiday.nl-NL7.name=Bevrijdingsdag
holiday.nl-NL7.date=20200505
holiday.nl-NL7.date=20210505
holiday.nl-NL8.name=Hemelvaartsdag
holiday.nl-NL8.date=20200521
holiday.nl-NL8.date=20210513
holiday.nl-NL9.name=Eerste Pinksterdag
holiday.nl-NL9.date=20200531
holiday.nl-NL9.date=20210523
holiday.nl-NL10.name=Tweede Pinksterdag
holiday.nl-NL10.date=20200601
holiday.nl-NL10.date=20210524
holiday.nl-NL11.name=Sinterklaas
holiday.nl-NL11.date=20201205
holiday.nl-NL11.date=20211205
holiday.nl-NL12.name=Koninkrijksdag
holiday.nl-NL12.date=20201215
holiday.nl-NL12.date=20211215
holiday.nl-NL13.name=Eerste Kerstdag
holiday.nl-NL13.date=20201225
holiday.nl-NL13.date=20211225
holiday.nl-NL14.name=Tweede Kerstdag
holiday.nl-NL14.date=20201226
holiday.nl-NL14.date=20211226
holiday.nl-NL15.name=Nieuwjaarsdag
holiday.nl-NL15.date=20210101
holiday.nl-NL15.date=20220101
holiday.nl-NL16.name=Goede Vrijdag
holiday.nl-NL16.date=20210402
holiday.nl-NL16.date=20220415
holiday.nl-NL17.name=Eerste Paasdag
holiday.nl-NL17.date=20210404
holiday.nl-NL17.date=20220417
holiday.nl-NL18.name=Tweede Paasdag
holiday.nl-NL18.date=20210405
holiday.nl-NL18.date=20220418
holiday.nl-NL19.name=Koningsdag
holiday.nl-NL19.date=20210427
holiday.nl-NL19.date=20220427
holiday.nl-NL20.name=Dodenherdenking
holiday.nl-NL20.date=20210504
holiday.nl-NL20.date=20220504
holiday.nl-NL21.name=Bevrijdingsdag
holiday.nl-NL21.date=20210505
holiday.nl-NL21.date=20220505
holiday.nl-NL22.name=Hemelvaartsdag
holiday.nl-NL22.date=20210513
holiday.nl-NL22.date=20220526
holiday.nl-NL23.name=Eerste Pinksterdag
holiday.nl-NL23.date=20210523
holiday.nl-NL23.date=20220605
holiday.nl-NL24.name=Tweede Pinksterdag
holiday.nl-NL24.date=20210524
holiday.nl-NL24.date=20220606
holiday.nl-NL25.name=Sinterklaas
holiday.nl-NL25.date=20211205
holiday.nl-NL25.date=20221205
holiday.nl-NL26.name=Koninkrijksdag
holiday.nl-NL26.date=20211215
holiday.nl-NL26.date=20221215
holiday.nl-NL27.name=Eerste Kerstdag
holiday.nl-NL27.date=20211225
holiday.nl-NL27.date=20221225
holiday.nl-NL28.name=Tweede Kerstdag
holiday.nl-NL28.date=20211226
holiday.nl-NL28.date=20221226

View file

@ -1,9 +1,9 @@
###############################################################################
# International Holiday Data provided by Holidata.net
# https://holidata.net/pl-PL/2020.json
# https://holidata.net/pl-PL/2021.json
# https://holidata.net/pl-PL/2022.json
#
# Copyright 2006 - 2021, Paul Beckingham, Federico Hernandez.
# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
@ -28,54 +28,54 @@
###############################################################################
holiday.pl-PL1.name=Nowy Rok
holiday.pl-PL1.date=20200101
holiday.pl-PL1.date=20210101
holiday.pl-PL2.name=Trzech Króli
holiday.pl-PL2.date=20200106
holiday.pl-PL2.date=20210106
holiday.pl-PL3.name=Wielkanoc
holiday.pl-PL3.date=20200412
holiday.pl-PL3.date=20210404
holiday.pl-PL4.name=Poniedziałek Wielkanocny
holiday.pl-PL4.date=20200413
holiday.pl-PL4.date=20210405
holiday.pl-PL5.name=Święto Pracy
holiday.pl-PL5.date=20200501
holiday.pl-PL5.date=20210501
holiday.pl-PL6.name=Święto Konstytucji Trzeciego Maja
holiday.pl-PL6.date=20200503
holiday.pl-PL6.date=20210503
holiday.pl-PL7.name=Zielone Świątki
holiday.pl-PL7.date=20200531
holiday.pl-PL7.date=20210523
holiday.pl-PL8.name=Boże Ciało
holiday.pl-PL8.date=20200611
holiday.pl-PL8.date=20210603
holiday.pl-PL9.name=Wniebowzięcie Najświętszej Maryi Panny
holiday.pl-PL9.date=20200815
holiday.pl-PL9.date=20210815
holiday.pl-PL10.name=Wszystkich Świętych
holiday.pl-PL10.date=20201101
holiday.pl-PL10.date=20211101
holiday.pl-PL11.name=Narodowe Święto Niepodległości
holiday.pl-PL11.date=20201111
holiday.pl-PL11.date=20211111
holiday.pl-PL12.name=Boże Narodzenie (pierwszy dzień)
holiday.pl-PL12.date=20201225
holiday.pl-PL12.date=20211225
holiday.pl-PL13.name=Boże Narodzenie (drugi dzień)
holiday.pl-PL13.date=20201226
holiday.pl-PL13.date=20211226
holiday.pl-PL14.name=Nowy Rok
holiday.pl-PL14.date=20210101
holiday.pl-PL14.date=20220101
holiday.pl-PL15.name=Trzech Króli
holiday.pl-PL15.date=20210106
holiday.pl-PL15.date=20220106
holiday.pl-PL16.name=Wielkanoc
holiday.pl-PL16.date=20210404
holiday.pl-PL16.date=20220417
holiday.pl-PL17.name=Poniedziałek Wielkanocny
holiday.pl-PL17.date=20210405
holiday.pl-PL17.date=20220418
holiday.pl-PL18.name=Święto Pracy
holiday.pl-PL18.date=20210501
holiday.pl-PL18.date=20220501
holiday.pl-PL19.name=Święto Konstytucji Trzeciego Maja
holiday.pl-PL19.date=20210503
holiday.pl-PL19.date=20220503
holiday.pl-PL20.name=Zielone Świątki
holiday.pl-PL20.date=20210523
holiday.pl-PL20.date=20220605
holiday.pl-PL21.name=Boże Ciało
holiday.pl-PL21.date=20210603
holiday.pl-PL21.date=20220616
holiday.pl-PL22.name=Wniebowzięcie Najświętszej Maryi Panny
holiday.pl-PL22.date=20210815
holiday.pl-PL22.date=20220815
holiday.pl-PL23.name=Wszystkich Świętych
holiday.pl-PL23.date=20211101
holiday.pl-PL23.date=20221101
holiday.pl-PL24.name=Narodowe Święto Niepodległości
holiday.pl-PL24.date=20211111
holiday.pl-PL24.date=20221111
holiday.pl-PL25.name=Boże Narodzenie (pierwszy dzień)
holiday.pl-PL25.date=20211225
holiday.pl-PL25.date=20221225
holiday.pl-PL26.name=Boże Narodzenie (drugi dzień)
holiday.pl-PL26.date=20211226
holiday.pl-PL26.date=20221226

241
doc/rc/holidays.pt-BR.rc Normal file
View file

@ -0,0 +1,241 @@
###############################################################################
# International Holiday Data provided by Holidata.net
# https://holidata.net/pt-BR/2021.json
# https://holidata.net/pt-BR/2022.json
#
# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included
# in all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
#
# https://www.opensource.org/licenses/mit-license.php
#
###############################################################################
holiday.pt-BR1.name=Confraternização Universal
holiday.pt-BR1.date=20210101
holiday.pt-BR2.name=Criação do Estado de Rondônia
holiday.pt-BR2.date=20210104
holiday.pt-BR3.name=Dia do Evangélico no Acre
holiday.pt-BR3.date=20210123
holiday.pt-BR4.name=Carnaval
holiday.pt-BR4.date=20210216
holiday.pt-BR5.name=Revolução Pernambucana de 1817
holiday.pt-BR5.date=20210306
holiday.pt-BR6.name=Dia Internacional da Mulher
holiday.pt-BR6.date=20210308
holiday.pt-BR7.name=Autonomia do Estado de Tocantins
holiday.pt-BR7.date=20210318
holiday.pt-BR8.name=Dia de São José
holiday.pt-BR8.date=20210319
holiday.pt-BR9.name=Abolição da Escravidão no Ceará
holiday.pt-BR9.date=20210325
holiday.pt-BR10.name=Páscoa
holiday.pt-BR10.date=20210404
holiday.pt-BR11.name=Fundação de Brasília
holiday.pt-BR11.date=20210421
holiday.pt-BR12.name=Execução de Tiradentes
holiday.pt-BR12.date=20210421
holiday.pt-BR13.name=Tiradentes
holiday.pt-BR13.date=20210421
holiday.pt-BR14.name=Dia de São Jorge
holiday.pt-BR14.date=20210423
holiday.pt-BR15.name=Dia Internacional do Trabalhador
holiday.pt-BR15.date=20210501
holiday.pt-BR16.name=Aniversário do Estado do Acre
holiday.pt-BR16.date=20210615
holiday.pt-BR17.name=Dia do Evangélico em Rondônia
holiday.pt-BR17.date=20210618
holiday.pt-BR18.name=São João
holiday.pt-BR18.date=20210624
holiday.pt-BR19.name=São Pedro
holiday.pt-BR19.date=20210629
holiday.pt-BR20.name=Independência da Bahia
holiday.pt-BR20.date=20210702
holiday.pt-BR21.name=Emancipação Política de Sergipe
holiday.pt-BR21.date=20210708
holiday.pt-BR22.name=Revolução Constitucionalista de 1932
holiday.pt-BR22.date=20210709
holiday.pt-BR23.name=Fundação da Cidade de Goiás
holiday.pt-BR23.date=20210726
holiday.pt-BR24.name=Adesão do Maranhão à Independência do Brasil
holiday.pt-BR24.date=20210728
holiday.pt-BR25.name=Fundação do Estado da Paraíba
holiday.pt-BR25.date=20210805
holiday.pt-BR26.name=Dia do Rio Grande do Norte
holiday.pt-BR26.date=20210807
holiday.pt-BR27.name=Dia de Santa Catarina
holiday.pt-BR27.date=20210811
holiday.pt-BR28.name=Dia de Nossa Senhora da Assunção
holiday.pt-BR28.date=20210815
holiday.pt-BR29.name=Adesão do Pará à Independência do Brasil
holiday.pt-BR29.date=20210815
holiday.pt-BR30.name=Dia da Amazônia
holiday.pt-BR30.date=20210905
holiday.pt-BR31.name=Elevação do Amazonas à Categoria de Província
holiday.pt-BR31.date=20210905
holiday.pt-BR32.name=Independência do Brasil
holiday.pt-BR32.date=20210907
holiday.pt-BR33.name=Nossa Senhora da Natividade
holiday.pt-BR33.date=20210908
holiday.pt-BR34.name=Criação do Território Federal do Amapá
holiday.pt-BR34.date=20210913
holiday.pt-BR35.name=Emancipação Política do Alagoas
holiday.pt-BR35.date=20210916
holiday.pt-BR36.name=Dia do Gaúcho
holiday.pt-BR36.date=20210920
holiday.pt-BR37.name=Mártires de Cunhaú e Uruaçu
holiday.pt-BR37.date=20211003
holiday.pt-BR38.name=Criação dos Estado de Roraima
holiday.pt-BR38.date=20211005
holiday.pt-BR39.name=Criação dos Estado de Tocantins
holiday.pt-BR39.date=20211005
holiday.pt-BR40.name=Criação do Estado do Mato Grosso do Sul
holiday.pt-BR40.date=20211011
holiday.pt-BR41.name=Nossa Senhora Aparecida
holiday.pt-BR41.date=20211012
holiday.pt-BR42.name=Dia do Piauí
holiday.pt-BR42.date=20211019
holiday.pt-BR43.name=Pedra Fundamental de Goiânia
holiday.pt-BR43.date=20211024
holiday.pt-BR44.name=Finados
holiday.pt-BR44.date=20211102
holiday.pt-BR45.name=Proclamação da República
holiday.pt-BR45.date=20211115
holiday.pt-BR46.name=Assinatura do Tratado de Petrópolis
holiday.pt-BR46.date=20211117
holiday.pt-BR47.name=Morte de Zumbi dos Palmares
holiday.pt-BR47.date=20211120
holiday.pt-BR48.name=Dia da Consciência Negra
holiday.pt-BR48.date=20211120
holiday.pt-BR49.name=Dia de Santa Catarina de Alexandria
holiday.pt-BR49.date=20211125
holiday.pt-BR50.name=Dia do Evangélico do Distrito Federal
holiday.pt-BR50.date=20211130
holiday.pt-BR51.name=Nossa Senhora da Conceição
holiday.pt-BR51.date=20211208
holiday.pt-BR52.name=Emancipação Política do Estado do Paraná
holiday.pt-BR52.date=20211219
holiday.pt-BR53.name=Natal
holiday.pt-BR53.date=20211225
holiday.pt-BR54.name=Confraternização Universal
holiday.pt-BR54.date=20220101
holiday.pt-BR55.name=Criação do Estado de Rondônia
holiday.pt-BR55.date=20220104
holiday.pt-BR56.name=Dia do Evangélico no Acre
holiday.pt-BR56.date=20220123
holiday.pt-BR57.name=Carnaval
holiday.pt-BR57.date=20220301
holiday.pt-BR58.name=Revolução Pernambucana de 1817
holiday.pt-BR58.date=20220306
holiday.pt-BR59.name=Dia Internacional da Mulher
holiday.pt-BR59.date=20220308
holiday.pt-BR60.name=Autonomia do Estado de Tocantins
holiday.pt-BR60.date=20220318
holiday.pt-BR61.name=Dia de São José
holiday.pt-BR61.date=20220319
holiday.pt-BR62.name=Abolição da Escravidão no Ceará
holiday.pt-BR62.date=20220325
holiday.pt-BR63.name=Páscoa
holiday.pt-BR63.date=20220417
holiday.pt-BR64.name=Fundação de Brasília
holiday.pt-BR64.date=20220421
holiday.pt-BR65.name=Execução de Tiradentes
holiday.pt-BR65.date=20220421
holiday.pt-BR66.name=Tiradentes
holiday.pt-BR66.date=20220421
holiday.pt-BR67.name=Dia de São Jorge
holiday.pt-BR67.date=20220423
holiday.pt-BR68.name=Dia Internacional do Trabalhador
holiday.pt-BR68.date=20220501
holiday.pt-BR69.name=Aniversário do Estado do Acre
holiday.pt-BR69.date=20220615
holiday.pt-BR70.name=Dia do Evangélico em Rondônia
holiday.pt-BR70.date=20220618
holiday.pt-BR71.name=São João
holiday.pt-BR71.date=20220624
holiday.pt-BR72.name=São Pedro
holiday.pt-BR72.date=20220629
holiday.pt-BR73.name=Independência da Bahia
holiday.pt-BR73.date=20220702
holiday.pt-BR74.name=Emancipação Política de Sergipe
holiday.pt-BR74.date=20220708
holiday.pt-BR75.name=Revolução Constitucionalista de 1932
holiday.pt-BR75.date=20220709
holiday.pt-BR76.name=Fundação da Cidade de Goiás
holiday.pt-BR76.date=20220726
holiday.pt-BR77.name=Adesão do Maranhão à Independência do Brasil
holiday.pt-BR77.date=20220728
holiday.pt-BR78.name=Fundação do Estado da Paraíba
holiday.pt-BR78.date=20220805
holiday.pt-BR79.name=Dia do Rio Grande do Norte
holiday.pt-BR79.date=20220807
holiday.pt-BR80.name=Dia de Santa Catarina
holiday.pt-BR80.date=20220811
holiday.pt-BR81.name=Dia de Nossa Senhora da Assunção
holiday.pt-BR81.date=20220815
holiday.pt-BR82.name=Adesão do Pará à Independência do Brasil
holiday.pt-BR82.date=20220815
holiday.pt-BR83.name=Dia da Amazônia
holiday.pt-BR83.date=20220905
holiday.pt-BR84.name=Elevação do Amazonas à Categoria de Província
holiday.pt-BR84.date=20220905
holiday.pt-BR85.name=Independência do Brasil
holiday.pt-BR85.date=20220907
holiday.pt-BR86.name=Nossa Senhora da Natividade
holiday.pt-BR86.date=20220908
holiday.pt-BR87.name=Criação do Território Federal do Amapá
holiday.pt-BR87.date=20220913
holiday.pt-BR88.name=Emancipação Política do Alagoas
holiday.pt-BR88.date=20220916
holiday.pt-BR89.name=Dia do Gaúcho
holiday.pt-BR89.date=20220920
holiday.pt-BR90.name=Mártires de Cunhaú e Uruaçu
holiday.pt-BR90.date=20221003
holiday.pt-BR91.name=Criação dos Estado de Roraima
holiday.pt-BR91.date=20221005
holiday.pt-BR92.name=Criação dos Estado de Tocantins
holiday.pt-BR92.date=20221005
holiday.pt-BR93.name=Criação do Estado do Mato Grosso do Sul
holiday.pt-BR93.date=20221011
holiday.pt-BR94.name=Nossa Senhora Aparecida
holiday.pt-BR94.date=20221012
holiday.pt-BR95.name=Dia do Piauí
holiday.pt-BR95.date=20221019
holiday.pt-BR96.name=Pedra Fundamental de Goiânia
holiday.pt-BR96.date=20221024
holiday.pt-BR97.name=Finados
holiday.pt-BR97.date=20221102
holiday.pt-BR98.name=Proclamação da República
holiday.pt-BR98.date=20221115
holiday.pt-BR99.name=Assinatura do Tratado de Petrópolis
holiday.pt-BR99.date=20221117
holiday.pt-BR100.name=Morte de Zumbi dos Palmares
holiday.pt-BR100.date=20221120
holiday.pt-BR101.name=Dia da Consciência Negra
holiday.pt-BR101.date=20221120
holiday.pt-BR102.name=Dia de Santa Catarina de Alexandria
holiday.pt-BR102.date=20221125
holiday.pt-BR103.name=Dia do Evangélico do Distrito Federal
holiday.pt-BR103.date=20221130
holiday.pt-BR104.name=Nossa Senhora da Conceição
holiday.pt-BR104.date=20221208
holiday.pt-BR105.name=Emancipação Política do Estado do Paraná
holiday.pt-BR105.date=20221219
holiday.pt-BR106.name=Natal
holiday.pt-BR106.date=20221225

View file

@ -1,9 +1,9 @@
###############################################################################
# International Holiday Data provided by Holidata.net
# https://holidata.net/pt-PT/2020.json
# https://holidata.net/pt-PT/2021.json
# https://holidata.net/pt-PT/2022.json
#
# Copyright 2006 - 2021, Paul Beckingham, Federico Hernandez.
# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
@ -28,58 +28,58 @@
###############################################################################
holiday.pt-PT1.name=Ano Novo
holiday.pt-PT1.date=20200101
holiday.pt-PT1.date=20210101
holiday.pt-PT2.name=Carnaval
holiday.pt-PT2.date=20200225
holiday.pt-PT2.date=20210216
holiday.pt-PT3.name=Sexta-feira Santa
holiday.pt-PT3.date=20200410
holiday.pt-PT3.date=20210402
holiday.pt-PT4.name=Páscoa
holiday.pt-PT4.date=20200412
holiday.pt-PT4.date=20210404
holiday.pt-PT5.name=Dia da Liberdade
holiday.pt-PT5.date=20200425
holiday.pt-PT5.date=20210425
holiday.pt-PT6.name=Dia do Trabalhador
holiday.pt-PT6.date=20200501
holiday.pt-PT7.name=Dia de Portugal
holiday.pt-PT7.date=20200610
holiday.pt-PT8.name=Corpo de Deus
holiday.pt-PT8.date=20200611
holiday.pt-PT6.date=20210501
holiday.pt-PT7.name=Corpo de Deus
holiday.pt-PT7.date=20210603
holiday.pt-PT8.name=Dia de Portugal
holiday.pt-PT8.date=20210610
holiday.pt-PT9.name=Assunção de Nossa Senhora
holiday.pt-PT9.date=20200815
holiday.pt-PT9.date=20210815
holiday.pt-PT10.name=Implantação da República
holiday.pt-PT10.date=20201005
holiday.pt-PT10.date=20211005
holiday.pt-PT11.name=Dia de Todos os Santos
holiday.pt-PT11.date=20201101
holiday.pt-PT11.date=20211101
holiday.pt-PT12.name=Restauração da Independência
holiday.pt-PT12.date=20201201
holiday.pt-PT12.date=20211201
holiday.pt-PT13.name=Imaculada Conceição
holiday.pt-PT13.date=20201208
holiday.pt-PT13.date=20211208
holiday.pt-PT14.name=Natal
holiday.pt-PT14.date=20201225
holiday.pt-PT14.date=20211225
holiday.pt-PT15.name=Ano Novo
holiday.pt-PT15.date=20210101
holiday.pt-PT15.date=20220101
holiday.pt-PT16.name=Carnaval
holiday.pt-PT16.date=20210216
holiday.pt-PT16.date=20220301
holiday.pt-PT17.name=Sexta-feira Santa
holiday.pt-PT17.date=20210402
holiday.pt-PT17.date=20220415
holiday.pt-PT18.name=Páscoa
holiday.pt-PT18.date=20210404
holiday.pt-PT18.date=20220417
holiday.pt-PT19.name=Dia da Liberdade
holiday.pt-PT19.date=20210425
holiday.pt-PT19.date=20220425
holiday.pt-PT20.name=Dia do Trabalhador
holiday.pt-PT20.date=20210501
holiday.pt-PT21.name=Corpo de Deus
holiday.pt-PT21.date=20210603
holiday.pt-PT22.name=Dia de Portugal
holiday.pt-PT22.date=20210610
holiday.pt-PT20.date=20220501
holiday.pt-PT21.name=Dia de Portugal
holiday.pt-PT21.date=20220610
holiday.pt-PT22.name=Corpo de Deus
holiday.pt-PT22.date=20220616
holiday.pt-PT23.name=Assunção de Nossa Senhora
holiday.pt-PT23.date=20210815
holiday.pt-PT23.date=20220815
holiday.pt-PT24.name=Implantação da República
holiday.pt-PT24.date=20211005
holiday.pt-PT24.date=20221005
holiday.pt-PT25.name=Dia de Todos os Santos
holiday.pt-PT25.date=20211101
holiday.pt-PT25.date=20221101
holiday.pt-PT26.name=Restauração da Independência
holiday.pt-PT26.date=20211201
holiday.pt-PT26.date=20221201
holiday.pt-PT27.name=Imaculada Conceição
holiday.pt-PT27.date=20211208
holiday.pt-PT27.date=20221208
holiday.pt-PT28.name=Natal
holiday.pt-PT28.date=20211225
holiday.pt-PT28.date=20221225

View file

@ -1,9 +1,9 @@
###############################################################################
# International Holiday Data provided by Holidata.net
# https://holidata.net/ru-RU/2020.json
# https://holidata.net/ru-RU/2021.json
# https://holidata.net/ru-RU/2022.json
#
# Copyright 2006 - 2021, Paul Beckingham, Federico Hernandez.
# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
@ -28,38 +28,38 @@
###############################################################################
holiday.ru-RU1.name=Новый Год
holiday.ru-RU1.date=20200101
holiday.ru-RU1.date=20210101
holiday.ru-RU2.name=Рождество Христово
holiday.ru-RU2.date=20200107
holiday.ru-RU2.date=20210107
holiday.ru-RU3.name=День защитника Отечества
holiday.ru-RU3.date=20200223
holiday.ru-RU3.date=20210223
holiday.ru-RU4.name=Международный женский день
holiday.ru-RU4.date=20200308
holiday.ru-RU5.name=Пасха
holiday.ru-RU5.date=20200419
holiday.ru-RU6.name=Праздник весны и труда
holiday.ru-RU6.date=20200501
holiday.ru-RU4.date=20210308
holiday.ru-RU5.name=Праздник весны и труда
holiday.ru-RU5.date=20210501
holiday.ru-RU6.name=Пасха
holiday.ru-RU6.date=20210502
holiday.ru-RU7.name=День Победы
holiday.ru-RU7.date=20200509
holiday.ru-RU7.date=20210509
holiday.ru-RU8.name=День России
holiday.ru-RU8.date=20200612
holiday.ru-RU8.date=20210612
holiday.ru-RU9.name=День народного единства
holiday.ru-RU9.date=20201104
holiday.ru-RU9.date=20211104
holiday.ru-RU10.name=Новый Год
holiday.ru-RU10.date=20210101
holiday.ru-RU10.date=20220101
holiday.ru-RU11.name=Рождество Христово
holiday.ru-RU11.date=20210107
holiday.ru-RU11.date=20220107
holiday.ru-RU12.name=День защитника Отечества
holiday.ru-RU12.date=20210223
holiday.ru-RU12.date=20220223
holiday.ru-RU13.name=Международный женский день
holiday.ru-RU13.date=20210308
holiday.ru-RU14.name=Праздник весны и труда
holiday.ru-RU14.date=20210501
holiday.ru-RU15.name=Пасха
holiday.ru-RU15.date=20210502
holiday.ru-RU13.date=20220308
holiday.ru-RU14.name=Пасха
holiday.ru-RU14.date=20220424
holiday.ru-RU15.name=Праздник весны и труда
holiday.ru-RU15.date=20220501
holiday.ru-RU16.name=День Победы
holiday.ru-RU16.date=20210509
holiday.ru-RU16.date=20220509
holiday.ru-RU17.name=День России
holiday.ru-RU17.date=20210612
holiday.ru-RU17.date=20220612
holiday.ru-RU18.name=День народного единства
holiday.ru-RU18.date=20211104
holiday.ru-RU18.date=20221104

89
doc/rc/holidays.sk-SK.rc Normal file
View file

@ -0,0 +1,89 @@
###############################################################################
# International Holiday Data provided by Holidata.net
# https://holidata.net/sk-SK/2021.json
# https://holidata.net/sk-SK/2022.json
#
# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included
# in all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
#
# https://www.opensource.org/licenses/mit-license.php
#
###############################################################################
holiday.sk-SK1.name=Deň vzniku Slovenskej republiky
holiday.sk-SK1.date=20210101
holiday.sk-SK2.name=Zjavenie Pána / Traja králi
holiday.sk-SK2.date=20210106
holiday.sk-SK3.name=Veľký piatok
holiday.sk-SK3.date=20210402
holiday.sk-SK4.name=Veľkonočný pondelok
holiday.sk-SK4.date=20210405
holiday.sk-SK5.name=Sviatok práce
holiday.sk-SK5.date=20210501
holiday.sk-SK6.name=Deň víťazstva nad fašizmom
holiday.sk-SK6.date=20210508
holiday.sk-SK7.name=Sviatok svätého Cyrila a Metoda
holiday.sk-SK7.date=20210705
holiday.sk-SK8.name=Výročie SNP
holiday.sk-SK8.date=20210829
holiday.sk-SK9.name=Deň Ústavy Slovenskej republiky
holiday.sk-SK9.date=20210901
holiday.sk-SK10.name=Sedembolestná Panna Mária
holiday.sk-SK10.date=20210915
holiday.sk-SK11.name=Sviatok všetkých svätých
holiday.sk-SK11.date=20211101
holiday.sk-SK12.name=Deň boja za slobodu a demokraciu
holiday.sk-SK12.date=20211117
holiday.sk-SK13.name=Štedrý deň
holiday.sk-SK13.date=20211224
holiday.sk-SK14.name=Prvý sviatok vianočný
holiday.sk-SK14.date=20211225
holiday.sk-SK15.name=Druhý sviatok vianočný
holiday.sk-SK15.date=20211226
holiday.sk-SK16.name=Deň vzniku Slovenskej republiky
holiday.sk-SK16.date=20220101
holiday.sk-SK17.name=Zjavenie Pána / Traja králi
holiday.sk-SK17.date=20220106
holiday.sk-SK18.name=Veľký piatok
holiday.sk-SK18.date=20220415
holiday.sk-SK19.name=Veľkonočný pondelok
holiday.sk-SK19.date=20220418
holiday.sk-SK20.name=Sviatok práce
holiday.sk-SK20.date=20220501
holiday.sk-SK21.name=Deň víťazstva nad fašizmom
holiday.sk-SK21.date=20220508
holiday.sk-SK22.name=Sviatok svätého Cyrila a Metoda
holiday.sk-SK22.date=20220705
holiday.sk-SK23.name=Výročie SNP
holiday.sk-SK23.date=20220829
holiday.sk-SK24.name=Deň Ústavy Slovenskej republiky
holiday.sk-SK24.date=20220901
holiday.sk-SK25.name=Sedembolestná Panna Mária
holiday.sk-SK25.date=20220915
holiday.sk-SK26.name=Sviatok všetkých svätých
holiday.sk-SK26.date=20221101
holiday.sk-SK27.name=Deň boja za slobodu a demokraciu
holiday.sk-SK27.date=20221117
holiday.sk-SK28.name=Štedrý deň
holiday.sk-SK28.date=20221224
holiday.sk-SK29.name=Prvý sviatok vianočný
holiday.sk-SK29.date=20221225
holiday.sk-SK30.name=Druhý sviatok vianočný
holiday.sk-SK30.date=20221226

81
doc/rc/holidays.sv-FI.rc Normal file
View file

@ -0,0 +1,81 @@
###############################################################################
# International Holiday Data provided by Holidata.net
# https://holidata.net/sv-FI/2021.json
# https://holidata.net/sv-FI/2022.json
#
# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included
# in all copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
# THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
#
# https://www.opensource.org/licenses/mit-license.php
#
###############################################################################
holiday.sv-FI1.name=Nyårsdagen
holiday.sv-FI1.date=20210101
holiday.sv-FI2.name=Trettondedagen
holiday.sv-FI2.date=20210106
holiday.sv-FI3.name=Långfredagen
holiday.sv-FI3.date=20210402
holiday.sv-FI4.name=Påskdagen
holiday.sv-FI4.date=20210404
holiday.sv-FI5.name=Annandag påsk
holiday.sv-FI5.date=20210405
holiday.sv-FI6.name=Första maj
holiday.sv-FI6.date=20210501
holiday.sv-FI7.name=Kristi himmelfärdsdag
holiday.sv-FI7.date=20210513
holiday.sv-FI8.name=Pingst
holiday.sv-FI8.date=20210523
holiday.sv-FI9.name=Midsommardagen
holiday.sv-FI9.date=20210626
holiday.sv-FI10.name=Alla helgons dag
holiday.sv-FI10.date=20211106
holiday.sv-FI11.name=Självständighetsdagen
holiday.sv-FI11.date=20211206
holiday.sv-FI12.name=Juldagen
holiday.sv-FI12.date=20211225
holiday.sv-FI13.name=Annandag jul
holiday.sv-FI13.date=20211226
holiday.sv-FI14.name=Nyårsdagen
holiday.sv-FI14.date=20220101
holiday.sv-FI15.name=Trettondedagen
holiday.sv-FI15.date=20220106
holiday.sv-FI16.name=Långfredagen
holiday.sv-FI16.date=20220415
holiday.sv-FI17.name=Påskdagen
holiday.sv-FI17.date=20220417
holiday.sv-FI18.name=Annandag påsk
holiday.sv-FI18.date=20220418
holiday.sv-FI19.name=Första maj
holiday.sv-FI19.date=20220501
holiday.sv-FI20.name=Kristi himmelfärdsdag
holiday.sv-FI20.date=20220526
holiday.sv-FI21.name=Pingst
holiday.sv-FI21.date=20220605
holiday.sv-FI22.name=Midsommardagen
holiday.sv-FI22.date=20220625
holiday.sv-FI23.name=Alla helgons dag
holiday.sv-FI23.date=20221105
holiday.sv-FI24.name=Självständighetsdagen
holiday.sv-FI24.date=20221206
holiday.sv-FI25.name=Juldagen
holiday.sv-FI25.date=20221225
holiday.sv-FI26.name=Annandag jul
holiday.sv-FI26.date=20221226

View file

@ -1,9 +1,9 @@
###############################################################################
# International Holiday Data provided by Holidata.net
# https://holidata.net/sv-SE/2020.json
# https://holidata.net/sv-SE/2021.json
# https://holidata.net/sv-SE/2022.json
#
# Copyright 2006 - 2021, Paul Beckingham, Federico Hernandez.
# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
@ -28,66 +28,66 @@
###############################################################################
holiday.sv-SE1.name=Nyårsdagen
holiday.sv-SE1.date=20200101
holiday.sv-SE1.date=20210101
holiday.sv-SE2.name=Trettondedag jul
holiday.sv-SE2.date=20200106
holiday.sv-SE2.date=20210106
holiday.sv-SE3.name=Långfredagen
holiday.sv-SE3.date=20200410
holiday.sv-SE3.date=20210402
holiday.sv-SE4.name=Påskdagen
holiday.sv-SE4.date=20200412
holiday.sv-SE4.date=20210404
holiday.sv-SE5.name=Annandag påsk
holiday.sv-SE5.date=20200413
holiday.sv-SE5.date=20210405
holiday.sv-SE6.name=Första maj
holiday.sv-SE6.date=20200501
holiday.sv-SE6.date=20210501
holiday.sv-SE7.name=Kristi himmelsfärdsdag
holiday.sv-SE7.date=20200521
holiday.sv-SE7.date=20210513
holiday.sv-SE8.name=Pingstdagen
holiday.sv-SE8.date=20200531
holiday.sv-SE8.date=20210523
holiday.sv-SE9.name=Nationaldagen
holiday.sv-SE9.date=20200606
holiday.sv-SE9.date=20210606
holiday.sv-SE10.name=Midsommarafton
holiday.sv-SE10.date=20200619
holiday.sv-SE10.date=20210625
holiday.sv-SE11.name=Midsommardagen
holiday.sv-SE11.date=20200620
holiday.sv-SE11.date=20210626
holiday.sv-SE12.name=Alla helgons dag
holiday.sv-SE12.date=20201031
holiday.sv-SE12.date=20211106
holiday.sv-SE13.name=Julafton
holiday.sv-SE13.date=20201224
holiday.sv-SE13.date=20211224
holiday.sv-SE14.name=Juldagen
holiday.sv-SE14.date=20201225
holiday.sv-SE14.date=20211225
holiday.sv-SE15.name=Annandag jul
holiday.sv-SE15.date=20201226
holiday.sv-SE15.date=20211226
holiday.sv-SE16.name=Nyårsafton
holiday.sv-SE16.date=20201231
holiday.sv-SE16.date=20211231
holiday.sv-SE17.name=Nyårsdagen
holiday.sv-SE17.date=20210101
holiday.sv-SE17.date=20220101
holiday.sv-SE18.name=Trettondedag jul
holiday.sv-SE18.date=20210106
holiday.sv-SE18.date=20220106
holiday.sv-SE19.name=Långfredagen
holiday.sv-SE19.date=20210402
holiday.sv-SE19.date=20220415
holiday.sv-SE20.name=Påskdagen
holiday.sv-SE20.date=20210404
holiday.sv-SE20.date=20220417
holiday.sv-SE21.name=Annandag påsk
holiday.sv-SE21.date=20210405
holiday.sv-SE21.date=20220418
holiday.sv-SE22.name=Första maj
holiday.sv-SE22.date=20210501
holiday.sv-SE22.date=20220501
holiday.sv-SE23.name=Kristi himmelsfärdsdag
holiday.sv-SE23.date=20210513
holiday.sv-SE23.date=20220526
holiday.sv-SE24.name=Pingstdagen
holiday.sv-SE24.date=20210523
holiday.sv-SE24.date=20220605
holiday.sv-SE25.name=Nationaldagen
holiday.sv-SE25.date=20210606
holiday.sv-SE25.date=20220606
holiday.sv-SE26.name=Midsommarafton
holiday.sv-SE26.date=20210625
holiday.sv-SE26.date=20220624
holiday.sv-SE27.name=Midsommardagen
holiday.sv-SE27.date=20210626
holiday.sv-SE27.date=20220625
holiday.sv-SE28.name=Alla helgons dag
holiday.sv-SE28.date=20211106
holiday.sv-SE28.date=20221105
holiday.sv-SE29.name=Julafton
holiday.sv-SE29.date=20211224
holiday.sv-SE29.date=20221224
holiday.sv-SE30.name=Juldagen
holiday.sv-SE30.date=20211225
holiday.sv-SE30.date=20221225
holiday.sv-SE31.name=Annandag jul
holiday.sv-SE31.date=20211226
holiday.sv-SE31.date=20221226
holiday.sv-SE32.name=Nyårsafton
holiday.sv-SE32.date=20211231
holiday.sv-SE32.date=20221231

View file

@ -1,9 +1,9 @@
###############################################################################
# International Holiday Data provided by Holidata.net
# https://holidata.net/tr-TR/2020.json
# https://holidata.net/tr-TR/2021.json
# https://holidata.net/tr-TR/2022.json
#
# Copyright 2006 - 2021, Paul Beckingham, Federico Hernandez.
# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
@ -28,58 +28,58 @@
###############################################################################
holiday.tr-TR1.name=Yılbaşı
holiday.tr-TR1.date=20200101
holiday.tr-TR1.date=20210101
holiday.tr-TR2.name=Ulusal Egemenlik ve Çocuk Bayramı
holiday.tr-TR2.date=20200423
holiday.tr-TR2.date=20210423
holiday.tr-TR3.name=Emek ve Dayanışma Günü
holiday.tr-TR3.date=20200501
holiday.tr-TR4.name=Atatürk'ü Anma, Gençlik ve Spor Bayramı
holiday.tr-TR4.date=20200519
holiday.tr-TR5.name=Ramazan Bayramı (1. Gün)
holiday.tr-TR5.date=20200524
holiday.tr-TR6.name=Ramazan Bayramı (2. Gün)
holiday.tr-TR6.date=20200525
holiday.tr-TR7.name=Ramazan Bayramı (3. Gün)
holiday.tr-TR7.date=20200526
holiday.tr-TR3.date=20210501
holiday.tr-TR4.name=Ramazan Bayramı (1. Gün)
holiday.tr-TR4.date=20210513
holiday.tr-TR5.name=Ramazan Bayramı (2. Gün)
holiday.tr-TR5.date=20210514
holiday.tr-TR6.name=Ramazan Bayramı (3. Gün)
holiday.tr-TR6.date=20210515
holiday.tr-TR7.name=Atatürk'ü Anma, Gençlik ve Spor Bayramı
holiday.tr-TR7.date=20210519
holiday.tr-TR8.name=Demokrasi ve Milli Birlik Günü
holiday.tr-TR8.date=20200715
holiday.tr-TR8.date=20210715
holiday.tr-TR9.name=Kurban Bayramı (1. Gün)
holiday.tr-TR9.date=20200731
holiday.tr-TR9.date=20210720
holiday.tr-TR10.name=Kurban Bayramı (2. Gün)
holiday.tr-TR10.date=20200801
holiday.tr-TR10.date=20210721
holiday.tr-TR11.name=Kurban Bayramı (3. Gün)
holiday.tr-TR11.date=20200802
holiday.tr-TR11.date=20210722
holiday.tr-TR12.name=Kurban Bayramı (4. Gün)
holiday.tr-TR12.date=20200803
holiday.tr-TR12.date=20210723
holiday.tr-TR13.name=Zafer Bayramı
holiday.tr-TR13.date=20200830
holiday.tr-TR13.date=20210830
holiday.tr-TR14.name=Cumhuriyet Bayramı
holiday.tr-TR14.date=20201029
holiday.tr-TR14.date=20211029
holiday.tr-TR15.name=Yılbaşı
holiday.tr-TR15.date=20210101
holiday.tr-TR15.date=20220101
holiday.tr-TR16.name=Ulusal Egemenlik ve Çocuk Bayramı
holiday.tr-TR16.date=20210423
holiday.tr-TR16.date=20220423
holiday.tr-TR17.name=Emek ve Dayanışma Günü
holiday.tr-TR17.date=20210501
holiday.tr-TR17.date=20220501
holiday.tr-TR18.name=Ramazan Bayramı (1. Gün)
holiday.tr-TR18.date=20210513
holiday.tr-TR18.date=20220502
holiday.tr-TR19.name=Ramazan Bayramı (2. Gün)
holiday.tr-TR19.date=20210514
holiday.tr-TR19.date=20220503
holiday.tr-TR20.name=Ramazan Bayramı (3. Gün)
holiday.tr-TR20.date=20210515
holiday.tr-TR20.date=20220504
holiday.tr-TR21.name=Atatürk'ü Anma, Gençlik ve Spor Bayramı
holiday.tr-TR21.date=20210519
holiday.tr-TR22.name=Demokrasi ve Milli Birlik Günü
holiday.tr-TR22.date=20210715
holiday.tr-TR23.name=Kurban Bayramı (1. Gün)
holiday.tr-TR23.date=20210720
holiday.tr-TR24.name=Kurban Bayramı (2. Gün)
holiday.tr-TR24.date=20210721
holiday.tr-TR25.name=Kurban Bayramı (3. Gün)
holiday.tr-TR25.date=20210722
holiday.tr-TR26.name=Kurban Bayramı (4. Gün)
holiday.tr-TR26.date=20210723
holiday.tr-TR21.date=20220519
holiday.tr-TR22.name=Kurban Bayramı (1. Gün)
holiday.tr-TR22.date=20220709
holiday.tr-TR23.name=Kurban Bayramı (2. Gün)
holiday.tr-TR23.date=20220710
holiday.tr-TR24.name=Kurban Bayramı (3. Gün)
holiday.tr-TR24.date=20220711
holiday.tr-TR25.name=Kurban Bayramı (4. Gün)
holiday.tr-TR25.date=20220712
holiday.tr-TR26.name=Demokrasi ve Milli Birlik Günü
holiday.tr-TR26.date=20220715
holiday.tr-TR27.name=Zafer Bayramı
holiday.tr-TR27.date=20210830
holiday.tr-TR27.date=20220830
holiday.tr-TR28.name=Cumhuriyet Bayramı
holiday.tr-TR28.date=20211029
holiday.tr-TR28.date=20221029

View file

@ -1,6 +1,6 @@
###############################################################################
#
# Copyright 2006 - 2021, Paul Beckingham, Federico Hernandez.
# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal

View file

@ -1,6 +1,6 @@
###############################################################################
#
# Copyright 2006 - 2021, Paul Beckingham, Federico Hernandez.
# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal

View file

@ -1,6 +1,6 @@
###############################################################################
#
# Copyright 2006 - 2021, Paul Beckingham, Federico Hernandez.
# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal

View file

@ -1,6 +1,6 @@
################################################################################
#
# Copyright 2006 - 2021, Paul Beckingham, Federico Hernandez.
# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
@ -25,7 +25,7 @@
###############################################################################
# Colors used are based on the Solarized palette created by Ethan Schoonover
# <http://ethanschoonover.com/solarized>
# <https://ethanschoonover.com/solarized>
#
# This theme was designed to work with a terminal application that is using a
# Solarized "Dark" color theme, otherwise colors will look odd. Solarized
@ -74,7 +74,7 @@ color.uda.priority.L=bold green #color11
# Tags
color.tag.next=
color.tag.none=
color.tagged=color10
color.tagged=
# Due
color.due=color9

View file

@ -1,6 +1,6 @@
################################################################################
#
# Copyright 2006 - 2021, Paul Beckingham, Federico Hernandez.
# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
@ -25,7 +25,7 @@
###############################################################################
# Colors used are based on the Solarized palette created by Ethan Schoonover
# <http://ethanschoonover.com/solarized>
# <https://ethanschoonover.com/solarized>
#
# This theme was designed to work with a terminal application that is using a
# Solarized "Dark" color theme, otherwise colors will look odd. Solarized
@ -74,7 +74,7 @@ color.uda.priority.L=bold color14
# Tags
color.tag.next=
color.tag.none=
color.tagged=color14
color.tagged=
# Due
color.due=color9

Binary file not shown.

Binary file not shown.

View file

@ -40,10 +40,10 @@ services:
security_opt:
- label=type:container_runtime_t
tty: true
test-ubuntu1604:
test-fedora34:
build:
context: .
dockerfile: test/docker/ubuntu1604
dockerfile: test/docker/fedora34
network_mode: "host"
security_opt:
- label=type:container_runtime_t
@ -64,6 +64,14 @@ services:
security_opt:
- label=type:container_runtime_t
tty: true
test-ubuntu2104:
build:
context: .
dockerfile: test/docker/ubuntu2104
network_mode: "host"
security_opt:
- label=type:container_runtime_t
tty: true
test-debianstable:
build:
context: .

File diff suppressed because it is too large Load diff

8510
performance/sample-text.txt Normal file

File diff suppressed because it is too large Load diff

View file

@ -1,6 +1,8 @@
cmake_minimum_required (VERSION 3.0)
install (DIRECTORY bash fish vim zsh hooks
install (DIRECTORY bash fish vim hooks
DESTINATION ${TASK_DOCDIR}/scripts)
install (FILES zsh/_task
DESTINATION share/zsh/site-functions)
install (DIRECTORY add-ons
DESTINATION ${TASK_DOCDIR}/scripts
FILE_PERMISSIONS OWNER_READ OWNER_WRITE OWNER_EXECUTE

View file

@ -1,7 +1,7 @@
#! /usr/bin/perl
################################################################################
##
## Copyright 2006 - 2021, Paul Beckingham, Federico Hernandez.
## Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
##
## Permission is hereby granted, free of charge, to any person obtaining a copy
## of this software and associated documentation files (the "Software"), to deal
@ -99,7 +99,7 @@ Schwyz:
--region Schwyz \
--file holidays.de-CH.rc
See http://holidata.net for details of supported locales and regions.
See https://holidata.net for details of supported locales and regions.
It is recommended that you regularly update your holiday files. Not only does
this keep your holiday data current, but allows for corrected data to be used.
@ -189,7 +189,7 @@ if (open my $fh, '>:utf8', $file)
"# ${url_current}\n",
"# ${url_next}\n",
"#\n",
"# Copyright 2006 - 2021, Paul Beckingham, Federico Hernandez.\n",
"# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.\n",
"#\n",
"# Permission is hereby granted, free of charge, to any person obtaining a copy\n",
"# of this software and associated documentation files (the \"Software\"), to deal\n",

View file

@ -1,6 +1,6 @@
################################################################################
#
# Copyright 2006 - 2021, Paul Beckingham, Federico Hernandez.
# Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
@ -46,18 +46,20 @@
#
# *) Go to the project's website at
#
# http://taskwarrior.org
# https://taskwarrior.org
#
################################################################################
#the following variable is substituted for by ../../test/bash_completion.t
taskcommand='task rc.verbose:nothing rc.confirmation:no rc.hooks:off'
taskbin='task'
taskrc=''
taskcommand="rc.verbose:nothing rc.confirmation:no rc.hooks:off ${taskrc}"
_task_get_tags() {
$taskcommand _tags
"$taskbin" $taskcommand _tags
}
_task_get_config() {
$taskcommand _config
"$taskbin" $taskcommand _config
}
_task_offer_priorities() {
@ -65,14 +67,14 @@ _task_offer_priorities() {
}
_task_offer_projects() {
COMPREPLY=( $(compgen -W "$($taskcommand _projects)" -- ${cur/*:/}) )
COMPREPLY=( $(compgen -W "$("$taskbin" $taskcommand _projects)" -- ${cur/*:/}) )
}
_task_offer_contexts() {
COMPREPLY=( $(compgen -W "$($taskcommand _context) define delete list none show" -- $cur) )
COMPREPLY=( $(compgen -W "$("$taskbin" $taskcommand _context) define delete list none show" -- $cur) )
}
_task_context_alias=$($taskcommand show | grep 'alias.*context' | cut -d' ' -f1 | cut -d. -f2)
_task_context_alias=$("$taskbin" $taskcommand show | grep 'alias.*context' | cut -d' ' -f1 | cut -d. -f2)
_task()
{
@ -92,9 +94,9 @@ _task()
# echo "prev='$prev'"
# echo "prev2='$prev2'"
abbrev_min=$($taskcommand show | grep "abbreviation.minimum" | awk {'print $2'})
commands_aliases=$(echo $($taskcommand _commands; $taskcommand _aliases) | tr " " "\n"|sort|tr "\n" " ")
opts="$commands_aliases $($taskcommand _columns)"
abbrev_min=$("$taskbin" $taskcommand show | grep "abbreviation.minimum" | awk {'print $2'})
commands_aliases=$(echo $("$taskbin" $taskcommand _commands; "$taskbin" $taskcommand _aliases) | tr " " "\n"|sort|tr "\n" " ")
opts="$commands_aliases $("$taskbin" $taskcommand _columns)"
case "${prev}" in
$_task_context_alias|cont|conte|contex|context)

View file

@ -1,4 +1,4 @@
# Taskwarrior completions for the Fish shell <http://fishshell.org>
# Taskwarrior completions for the Fish shell <https://fishshell.com>
#
# taskwarrior - a command line task list manager.
#
@ -88,7 +88,7 @@ end
function __fish.task.current.command
# find command in commandline by list intersection
begin; commandline -pco; and __fish.task.list._command all | cut -d ' ' -f 1; end | sort | uniq -d | xargs
begin; commandline -pco; and echo $__fish_task_static_commands; end | sort | uniq -d | xargs
end
function __fish.task.before_command
@ -104,6 +104,10 @@ end
function __fish.task.need_to_complete.attr_value
__fish.task.need_to_complete.attr_name
or return 1
# only start completion when there's a colon in attr_name
set -l cmd (commandline -ct)
string match -q "*:*" "$cmd[-1]"
end
function __fish.task.need_to_complete.command
@ -123,6 +127,14 @@ function __fish.task.need_to_complete.filter
__fish.task.before_command
end
function __fish.task.need_to_complete.tag
__fish.task.need_to_complete.attr_name
or return 1
set -l cmd (commandline -ct)
# only start complete when supplied + or -
string match -qr -- "^[+-][^+-]*" "$cmd[-1]"
end
function __fish.task.need_to_complete.id
__fish.task.need_to_complete.filter
end
@ -143,9 +155,16 @@ function __fish.task.token_clean
end
function __fish.task.list.attr_name
task _columns | sed 's/$/: attribute/g'
# BUG: doesn't support file completion
echo rc
# # BUG: doesn't support file completion
for attr in (task _columns)
if set -l idx (contains -i -- $attr $__fish_task_static_attr_desc_keys)
# use builtin friendly description
echo -e "$attr:\tattribute:$__fish_task_static_attr_desc_vals[$idx]"
else
echo -e "$attr:\tattribute"
end
end
echo -e "rc\tConfiguration for taskwarrior"
end
function __fish.task.list.attr_value
@ -158,7 +177,6 @@ function __fish.task.list.attr_value
end
end
end
__fish.task.list.tag
end
function __fish.task.list.attr_value_by_name
@ -168,7 +186,11 @@ function __fish.task.list.attr_value_by_name
__fish.task.list.rc
case 'depends' 'limit' 'priority' 'status'
__fish.task.combos_simple $attr (__fish.task.list $attr)
# case 'description' 'due' 'entry' 'end' 'start' 'project' 'recur' 'until' 'wait'
case 'recur'
__fish.task.combos_simple $attr (__fish.task.list.date_freq)
case 'due' 'until' 'wait' 'entry' 'end' 'start' 'scheduled'
__fish.task.combos_simple $attr (__fish.task.list.dates)
# case 'description' 'project'
case '*'
if [ "$task_complete_attribute_modifiers" = 'yes' ]; and echo (commandline -ct) | grep -q '\.'
__fish.task.combos_with_mods $attr (__fish.task.list $attr)
@ -179,9 +201,7 @@ function __fish.task.list.attr_value_by_name
end
function __fish.task.list._command
# Removed args until TW-1404 is fixed.
#__fish.task.zsh commands $argv
__fish.task.zsh commands
echo -e $__fish_task_static_commands_with_desc
end
function __fish.task.list.command
@ -190,9 +210,7 @@ function __fish.task.list.command
end
function __fish.task.list.command_mods
for command in 'add' 'annotate' 'append' 'delete' 'done' 'duplicate' 'log' 'modify' 'prepend' 'start' 'stop'
echo $command
end
echo -e $__fish_task_static_command_mods
end
function __fish.task.list.config
@ -204,29 +222,55 @@ function __fish.task.list.depends
end
function __fish.task.list.description
__fish.task.zsh ids $argv | cut -d ' ' -f 2-
__fish.task.zsh ids $argv | awk -F"\t" '{print $2 "\tid=" $1}'
end
function __fish.task.list.id
set show_type $argv[1]
if test -z $show_type
task _ids
else if [ $show_type = 'with_description' ]
else if [ $show_type = 'with_description' ]
__fish.task.zsh ids
end
end
function __fish.task.list.date_freq
set -l cmd (commandline -ct)
if set -l user_input_numeric (echo $cmd[-1] | grep -o '[0-9]\+')
# show numeric freq like 2d, 4m, etc.
echo -e (string replace --all -r "^|\n" "\n$user_input_numeric" $__fish_task_static_freq_numeric | string collect)
else
echo -e $__fish_task_static_freq
end
end
function __fish.task.list.dates
set -l cmd (commandline -ct)
if set -l user_input_numeric (echo $cmd[-1] | grep -o '[0-9]\+')
# show numeric date like 2hrs, 4th, etc.
echo -e (string replace --all -r "^|\n" "\n$user_input_numeric" $__fish_task_static_reldates | string collect)
# special cases for 1st, 2nd and 3rd, and 4-0th
set -l suffix 'th' '4th, 5th, etc.'
if string match -q "*1" $user_input_numeric
set suffix 'st' 'first'
else if string match -q "*2" $user_input_numeric
set suffix 'nd' 'second'
else if string match -q "*3" $user_input_numeric
set suffix 'rd' 'third'
end
echo -e $user_input_numeric"$suffix[1]\t$suffix[2]"
else
echo -e $__fish_task_static_dates
end
end
# Attribure modifiers (DEPRECATED since 2.4.0)
function __fish.task.list.mod
for mod in 'before' 'after' 'over' 'under' 'none' 'is' 'isnt' 'has' 'hasnt' 'startswith' 'endswith' 'word' 'noword'
echo $mod
end
echo -e $__fish_task_static_mod
end
function __fish.task.list.priority
for priority in 'H' 'M' 'L'
echo $priority
end
echo -e $__fish_task_static_priority
end
function __fish.task.list.project
@ -234,23 +278,17 @@ function __fish.task.list.project
end
function __fish.task.list.rc
for value in (task _config)
echo rc.$value:
end
task _config
end
function __fish.task.list.status
echo pending
echo completed
echo deleted
echo waiting
echo -e $__fish_task_static_status
end
function __fish.task.list.tag
for tag in (task _tags)
echo +$tag
echo -$tag
end
set -l tags (task _tags)
printf -- '+%s\n' $tags
printf -- '-%s\n' $tags
end
function __fish.task.list.task
@ -302,19 +340,110 @@ function __fish.task.complete
set what $argv
set list_command "__fish.task.list $what"
set check_function "__fish.task.need_to_complete $what"
complete -c task -u -f -n $check_function -a "(eval $list_command)"
complete -c task -u -k -f -n $check_function -a "(eval $list_command)"
end
__fish.task.complete command all
__fish.task.complete command filter
# static variables that won't changes even when taskw's data is modified
set __fish_task_static_commands_with_desc (__fish.task.zsh commands | sort | string collect)
set __fish_task_static_commands (echo -e $__fish_task_static_commands_with_desc | cut -d ' ' -f 1 | string collect)
set __fish_task_static_command_mods (printf -- '%s\n' 'add' 'annotate' 'append' 'delete' 'done' 'duplicate' 'log' 'modify' 'prepend' 'start' 'stop' | string collect)
set __fish_task_static_mod (printf -- '%s\n' 'before' 'after' 'over' 'under' 'none' 'is' 'isnt' 'has' 'hasnt' 'startswith' 'endswith' 'word' 'noword' | string collect)
set __fish_task_static_status (printf -- '%s\tstatus\n' 'pending' 'completed' 'deleted' 'waiting' | string collect)
set __fish_task_static_priority (printf -- '%s\n' 'H\tHigh' 'M\tMiddle' 'L\tLow' | string collect)
set __fish_task_static_freq 'daily:Every day' \
'day:Every day' \
'weekdays:Every day skipping weekend days' \
'weekly:Every week' \
'biweekly:Every two weeks' \
'fortnight:Every two weeks' \
'monthly:Every month' \
'quarterly:Every three months' \
'semiannual:Every six months' \
'annual:Every year' \
'yearly:Every year' \
'biannual:Every two years' \
'biyearly:Every two years'
set __fish_task_static_freq (printf -- '%s\n' $__fish_task_static_freq | sed 's/:/\t/' | string collect)
set __fish_task_static_freq_numeric 'd:days' \
'w:weeks' \
'q:quarters' \
'y:years'
set __fish_task_static_freq_numeric (printf -- '%s\n' $__fish_task_static_freq_numeric | sed 's/:/\t/' | string collect)
set __fish_task_static_freq_numeric 'd:days' \
'w:weeks' \
'q:quarters' \
'y:years'
set __fish_task_static_freq_numeric (printf -- '%s\n' $__fish_task_static_freq_numeric | sed 's/:/\t/' | string collect)
set __fish_task_static_dates 'today:Today' \
'yesterday:Yesterday' \
'tomorrow:Tomorrow' \
'sow:Start of week' \
'soww:Start of work week' \
'socw:Start of calendar week' \
'som:Start of month' \
'soq:Start of quarter' \
'soy:Start of year' \
'eow:End of week' \
'eoww:End of work week' \
'eocw:End of calendar week' \
'eom:End of month' \
'eoq:End of quarter' \
'eoy:End of year' \
'mon:Monday' \
'tue:Tuesday'\
'wed:Wednesday' \
'thu:Thursday' \
'fri:Friday' \
'sat:Saturday' \
'sun:Sunday' \
'goodfriday:Good Friday' \
'easter:Easter' \
'eastermonday:Easter Monday' \
'ascension:Ascension' \
'pentecost:Pentecost' \
'midsommar:Midsommar' \
'midsommarafton:Midsommarafton' \
'later:Later' \
'someday:Some Day'
set __fish_task_static_dates (printf -- '%s\n' $__fish_task_static_dates | sed 's/:/\t/' | string collect)
set __fish_task_static_reldates 'hrs:n hours' \
'day:n days' \
# '1st:first' \
# '2nd:second' \
# '3rd:third' \
# 'th:4th, 5th, etc.' \
'wks:weeks'
set __fish_task_static_reldates (printf -- '%s\n' $__fish_task_static_reldates | sed 's/:/\t/' | string collect)
# the followings are actually not used for autocomplete, but to retrieve friendly description that aren't present in internal command
set __fish_task_static_attr_desc_keys 'description' 'status' 'project' \
'priority' 'due' 'recur' \
'until' 'limit' 'wait' \
'entry' 'end' 'start' \
'scheduled' 'dependson'
set __fish_task_static_attr_desc_vals 'Task description text' 'Status of task - pending, completed, deleted, waiting' \
'Project name' 'Task priority' 'Due date' 'Recurrence frequency' 'Expiration date' \
'Desired number of rows in report' 'Date until task becomes pending' \
'Date task was created' 'Date task was completed/deleted' 'Date task was started' \
'Date task is scheduled to start' 'Other tasks that this task depends upon'
# fish's auto-completion when multiple `complete` have supplied with '-k' flag, the last will be displayed first
__fish.task.complete config
__fish.task.complete attr_value
__fish.task.complete attr_name
__fish.task.complete config
__fish.task.complete tag
# __fish.task.complete command all
# __fish.task.complete command filter
# The following are static so we will expand it when initialised. Display underscore (internal) commands last
set -l __fish_task_static_commands_underscore (echo -e $__fish_task_static_commands_with_desc | grep '^[_]' | string collect | string escape)
set -l __fish_task_static_commands_normal (echo -e $__fish_task_static_commands_with_desc | grep '^[^_]' | string collect | string escape)
complete -c task -u -k -f -n "__fish.task.before_command" -a "$__fish_task_static_commands_underscore"
complete -c task -u -k -f -n "__fish.task.before_command" -a "$__fish_task_static_commands_normal"
if [ "$task_complete_task" = 'yes' ]
__fish.task.complete task
__fish.task.complete task
end
if [ "$task_complete_id" = 'yes' ]
__fish.task.complete id with_description
__fish.task.complete id with_description
end

View file

@ -8,6 +8,7 @@ scripts will be run.
Expected Location
The hooks scripts all reside in one location, which is in a 'hooks'
subdirectory, in your ~/.task (or rc.data.location override) directory.
You can use the command `task diagnostics` to verify hooks location.
Expected Name
A hook scripts must be named according to which event triggers the script. A

View file

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

46
scripts/review-dockerfile Normal file
View file

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

View file

@ -1,6 +1,6 @@
////////////////////////////////////////////////////////////////////////////////
//
// Copyright 2006 - 2021, Paul Beckingham, Federico Hernandez.
// Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
@ -34,6 +34,10 @@
#include <Color.h>
#include <shared.h>
#include <format.h>
#include <CmdCustom.h>
#include <CmdTimesheet.h>
#include <utf8.h>
// Overridden by rc.abbreviation.minimum.
int CLI2::minimumMatchLength = 3;
@ -49,21 +53,10 @@ A2::A2 (const std::string& raw, Lexer::Type lextype)
}
////////////////////////////////////////////////////////////////////////////////
A2::A2 (const A2& other)
: _lextype (other._lextype)
, _tags (other._tags)
, _attributes (other._attributes)
{
}
A2::A2 (const A2& other) = default;
////////////////////////////////////////////////////////////////////////////////
A2& A2::operator= (const A2& other)
{
_lextype = other._lextype;
_tags = other._tags;
_attributes = other._attributes;
return *this;
}
A2& A2::operator= (const A2& other) = default;
////////////////////////////////////////////////////////////////////////////////
bool A2::hasTag (const std::string& tag) const
@ -214,94 +207,87 @@ const std::string A2::dump () const
}
////////////////////////////////////////////////////////////////////////////////
// Static method.
void CLI2::getOverride (int argc, const char** argv, std::string& home, File& rc)
static
const char* getValue (int argc, const char** argv, std::string arg)
{
for (int i = 0; i < argc; ++i)
const auto is_arg = [&] (std::string s)
{
std::string raw = argv[i];
if (raw == "--")
return;
return s.size () > arg.size () + 1
&& (s[arg.size ()] == ':' || s[arg.size ()] == '=')
&& s.compare (0, arg.size (), arg) == 0;
};
// find last argument before --
auto last = std::make_reverse_iterator (argv);
auto first = std::make_reverse_iterator (
std::find (argv, argv + argc, std::string ("--")));
auto it = std::find_if (first, last, is_arg);
if (it == last)
return nullptr;
// return the string after : or =
return *it + arg.size () + 1;
}
if (raw.length () >= 3 &&
raw.substr (0, 3) == "rc:")
{
rc = raw.substr (3);
home = ".";
auto last_slash = rc._data.rfind ("/");
if (last_slash != std::string::npos)
home = rc.parent ();
Context::getContext ().header (format ("Using alternate .taskrc file {1}", rc._data));
// Keep looping, because if there are multiple rc:file arguments, the last
// one should dominate.
}
}
////////////////////////////////////////////////////////////////////////////////
// Static method.
bool CLI2::getOverride (int argc, const char** argv, File& rc)
{
const char* value = getValue (argc, argv, "rc");
if (value == nullptr)
return false;
rc = File (value);
return true;
}
////////////////////////////////////////////////////////////////////////////////
// Look for CONFIG data.location and initialize a Path object.
// Static method.
void CLI2::getDataLocation (int argc, const char** argv, Path& data)
bool CLI2::getDataLocation (int argc, const char** argv, Path& data)
{
std::string location = Context::getContext ().config.get ("data.location");
if (location != "")
data = location;
for (int i = 0; i < argc; ++i)
const char* value = getValue (argc, argv, "rc.data.location");
if (value == nullptr)
{
std::string raw = argv[i];
if (raw == "--")
break;
if (raw.length () > 17 &&
raw.substr (0, 16) == "rc.data.location")
{
data = Directory (raw.substr (17));
Context::getContext ().header (format ("Using alternate data.location {1}", (std::string) data));
// Keep looping, because if there are multiple rc:file arguments, the last
// one should dominate.
}
std::string location = Context::getContext ().config.get ("data.location");
if (location != "")
data = location;
return false;
}
data = Directory (value);
return true;
}
////////////////////////////////////////////////////////////////////////////////
// Static method.
void CLI2::applyOverrides (int argc, const char** argv)
{
for (int i = 0; i < argc; ++i)
auto& context = Context::getContext ();
auto last = std::find (argv, argv + argc, std::string ("--"));
auto is_override = [] (const std::string& s)
{
// Don't process any arguments after a '--'
std::string raw = argv[i];
if (raw == "--")
break;
// Overrides always start with 'rc.'
if (raw.length () > 3 &&
raw.substr (0, 3) == "rc.")
{
// Our separator can either be '=' or ':', so try and find both.
auto sep = raw.find ('=', 3);
if (sep == std::string::npos)
sep = raw.find (':', 3);
// Process our override if well-formed
if (sep != std::string::npos)
{
std::string name = raw.substr (3, sep - 3);
std::string value = raw.substr (sep + 1);
Context::getContext ().config.set (name, value);
if (Context::getContext ().verbose("override"))
Context::getContext ().footnote (format ("Configuration override rc.{1}:{2}", name, value));
}
}
}
return s.compare (0, 3, "rc.") == 0;
};
auto get_sep = [&] (const std::string& s)
{
if (is_override (s))
return s.find_first_of (":=", 3);
return std::string::npos;
};
auto override_settings = [&] (std::string raw)
{
auto sep = get_sep (raw);
if (sep == std::string::npos)
return;
std::string name = raw.substr (3, sep - 3);
std::string value = raw.substr (sep + 1);
context.config.set (name, value);
};
auto display_overrides = [&] (std::string raw)
{
if (is_override (raw))
context.footnote (format ("Configuration override {1}", raw));
};
std::for_each (argv, last, override_settings);
if (context.verbose ("override"))
std::for_each (argv, last, display_overrides);
}
////////////////////////////////////////////////////////////////////////////////
@ -320,7 +306,7 @@ void CLI2::entity (const std::string& category, const std::string& name)
return;
// The category/name pair was not found, therefore add it.
_entities.insert (std::pair <std::string, std::string> (category, name));
_entities.emplace (category, name);
}
////////////////////////////////////////////////////////////////////////////////
@ -336,15 +322,16 @@ void CLI2::add (const std::string& argument)
}
////////////////////////////////////////////////////////////////////////////////
// Capture a set of arguments, inserted immediately after the binary.
void CLI2::add (const std::vector <std::string>& arguments)
// Capture a set of arguments, inserted immediately after <offset> arguments
// after the binary..
void CLI2::add (const std::vector <std::string>& arguments, int offset /* = 0 */)
{
std::vector <A2> replacement {_original_args[0]};
std::vector <A2> replacement {_original_args.begin(), _original_args.begin() + offset + 1};
for (const auto& arg : arguments)
replacement.push_back (A2 (arg, Lexer::Type::word));
replacement.emplace_back (arg, Lexer::Type::word);
for (unsigned int i = 1; i < _original_args.size (); ++i)
for (unsigned int i = 1 + offset; i < _original_args.size (); ++i)
replacement.push_back (_original_args[i]);
_original_args = replacement;
@ -428,14 +415,33 @@ void CLI2::lexArguments ()
_args.push_back (a);
}
// Process muktiple-token arguments.
// Process multiple-token arguments.
else
{
std::string quote = "'";
std::string escaped = _original_args[i].attribute ("raw");
escaped = str_replace (escaped, quote, "\\'");
const std::string quote = "'";
// Escape unescaped single quotes
std::string escaped = "";
// For performance reasons. The escaped string is as long as the original.
escaped.reserve (_original_args[i].attribute ("raw").size ());
std::string::size_type cursor = 0;
bool nextEscaped = false;
while (int num = utf8_next_char (_original_args[i].attribute ("raw"), cursor))
{
std::string character = utf8_character (num);
if (!nextEscaped && (character == "\\"))
nextEscaped = true;
else {
if (character == quote && !nextEscaped)
escaped += "\\";
nextEscaped = false;
}
escaped += character;
}
cursor = 0;
std::string word;
if (Lexer::readWord (quote + escaped + quote, quote, cursor, word))
{
@ -540,10 +546,14 @@ void CLI2::analyze ()
// Determine arg types: FILTER, MODIFICATION, MISCELLANEOUS.
categorizeArgs ();
parenthesizeOriginalFilter ();
// Cache frequently looked up items
_command = getCommand ();
}
////////////////////////////////////////////////////////////////////////////////
// Process raw string.
// Process raw filter string.
// Insert filter arguments (wrapped in parentheses) immediatelly after the binary.
void CLI2::addFilter (const std::string& arg)
{
if (arg.length ())
@ -564,49 +574,89 @@ void CLI2::addFilter (const std::string& arg)
}
}
////////////////////////////////////////////////////////////////////////////////
// Process raw modification string.
// Insert modification arguments immediatelly after the command (i.e. 'add')
void CLI2::addModifications (const std::string& arg)
{
if (arg.length ())
{
std::vector <std::string> mods;
std::string lexeme;
Lexer::Type type;
Lexer lex (arg);
while (lex.token (lexeme, type))
mods.push_back (lexeme);
// Determine at which argument index does the task modification command
// reside
unsigned int cmdIndex = 0;
for (; cmdIndex < _args.size(); ++cmdIndex)
{
// Command found, stop iterating.
if (_args[cmdIndex].hasTag ("CMD"))
break;
}
// Insert modifications after the command.
add (mods, cmdIndex);
analyze ();
}
}
////////////////////////////////////////////////////////////////////////////////
// There are situations where a context filter is applied. This method
// determines whether one applies, and if so, applies it. Disqualifiers include:
// - filter contains ID or UUID
void CLI2::addContextFilter ()
void CLI2::addContext (bool readable, bool writeable)
{
// Recursion block.
if (_context_filter_added)
if (_context_added)
return;
// Detect if any context is set, and bail out if not
std::string contextName = Context::getContext ().config.get ("context");
if (contextName == "")
{
Context::getContext ().debug ("No context.");
return;
}
// Detect if UUID or ID is set, and bail out
for (auto& a : _args)
{
if (a._lextype == Lexer::Type::uuid ||
a._lextype == Lexer::Type::number ||
a._lextype == Lexer::Type::set)
{
Context::getContext ().debug (format ("UUID/ID argument found '{1}', not applying context.", a.attribute ("raw")));
return;
}
}
// Apply context
Context::getContext ().debug ("Applying context: " + contextName);
std::string contextFilter = Context::getContext ().config.get ("context." + contextName);
if (contextFilter == "")
Context::getContext ().debug ("Context '" + contextName + "' not defined.");
std::string contextString;
if (readable)
// Empty string is treated as "currently selected context"
contextString = Context::getContext ().getTaskContext("read", "");
else if (writeable)
contextString = Context::getContext ().getTaskContext("write", "");
else
{
_context_filter_added = true;
addFilter (contextFilter);
if (Context::getContext ().verbose ("context"))
Context::getContext ().footnote (format ("Context '{1}' set. Use 'task context none' to remove.", contextName));
}
return;
// If context is empty, bail out too
if (contextString.empty ())
return;
// For readable contexts: Detect if UUID or ID is set, and bail out
if (readable)
for (auto& a : _args)
{
if (a._lextype == Lexer::Type::uuid ||
a._lextype == Lexer::Type::number ||
a._lextype == Lexer::Type::set)
{
Context::getContext ().debug (format ("UUID/ID argument found '{1}', not applying context.", a.attribute ("raw")));
return;
}
}
// Apply the context. Readable (filtering) takes precedence. Also set the
// block now, since addFilter calls analyze(), which calls addContext().
_context_added = true;
if (readable)
addFilter (contextString);
else if (writeable)
addModifications (contextString);
// Inform the user about the application of context
if (Context::getContext ().verbose ("context"))
Context::getContext ().footnote (format (
"Context '{1}' set. Use 'task context none' to remove.",
Context::getContext ().config.get ("context")
));
}
////////////////////////////////////////////////////////////////////////////////
@ -617,7 +667,7 @@ void CLI2::prepareFilter ()
// Clear and re-populate.
_id_ranges.clear ();
_uuid_list.clear ();
_context_filter_added = false;
_context_added = false;
// Remove all the syntactic sugar for FILTERs.
lexFilterArgs ();
@ -651,7 +701,7 @@ void CLI2::prepareFilter ()
}
////////////////////////////////////////////////////////////////////////////////
// Return all the MISCELLANEOUS args.
// Return all the MISCELLANEOUS args as strings.
const std::vector <std::string> CLI2::getWords ()
{
std::vector <std::string> words;
@ -671,13 +721,36 @@ const std::vector <std::string> CLI2::getWords ()
return words;
}
////////////////////////////////////////////////////////////////////////////////
// Return all the MISCELLANEOUS args.
const std::vector <A2> CLI2::getMiscellaneous ()
{
std::vector <A2> misc;
for (const auto& a : _args)
if (a.hasTag ("MISCELLANEOUS"))
misc.push_back (a);
return misc;
}
////////////////////////////////////////////////////////////////////////////////
// Search for 'value' in _entities category, return canonicalized value.
bool CLI2::canonicalize (
std::string& canonicalized,
const std::string& category,
const std::string& value) const
const std::string& value)
{
// Utilize a cache mapping of (category, value) -> canonicalized value.
// This cache does not need to be invalidated, because entities are defined
// only once per initialization of the Context object.
int cache_key = 31 * std::hash<std::string>{} (category) + std::hash<std::string>{} (value);
auto cache_result = _canonical_cache.find (cache_key);
if (cache_result != _canonical_cache.end())
{
canonicalized = cache_result->second;
return true;
}
// Extract a list of entities for category.
std::vector <std::string> options;
auto c = _entities.equal_range (category);
@ -687,6 +760,7 @@ bool CLI2::canonicalize (
if (value == e->second)
{
canonicalized = value;
_canonical_cache[cache_key] = value;
return true;
}
@ -698,6 +772,7 @@ bool CLI2::canonicalize (
if (autoComplete (value, options, matches, minimumMatchLength) == 1)
{
canonicalized = matches[0];
_canonical_cache[cache_key] = matches[0];
return true;
}
@ -716,6 +791,10 @@ std::string CLI2::getBinary () const
////////////////////////////////////////////////////////////////////////////////
std::string CLI2::getCommand (bool canonical) const
{
// Shortcut if analysis has been finalized
if (_command != "")
return _command;
for (const auto& a : _args)
if (a.hasTag ("CMD"))
return a.attribute (canonical ? "canonical" : "raw");
@ -806,7 +885,7 @@ void CLI2::aliasExpansion ()
Lexer::Type type;
Lexer lex (_aliases[raw]);
while (lex.token (lexeme, type))
reconstructed.push_back (A2 (lexeme, type));
reconstructed.emplace_back (lexeme, type);
action = true;
changes = true;
@ -836,7 +915,7 @@ void CLI2::aliasExpansion ()
Lexer::Type type;
Lexer lex (_aliases[i.attribute ("raw")]);
while (lex.token (lexeme, type))
reconstructedOriginals.push_back (A2 (lexeme, type));
reconstructedOriginals.emplace_back (lexeme, type);
action = true;
changes = true;
@ -901,8 +980,24 @@ void CLI2::categorizeArgs ()
// Context is only applied for commands that request it.
std::string command = getCommand ();
Command* cmd = Context::getContext ().commands[command];
if (cmd && cmd->uses_context ())
addContextFilter ();
// Determine if the command uses Context. CmdCustom and CmdTimesheet need to
// be handled separately, as they override the parent Command::use_context
// method, and this is a pointer to Command class.
//
// All Command classes overriding uses_context () getter need to be specified
// here.
bool uses_context;
if (dynamic_cast<CmdCustom*> (cmd))
uses_context = (dynamic_cast<CmdCustom*> (cmd))->uses_context ();
else if (dynamic_cast<CmdTimesheet*> (cmd))
uses_context = (dynamic_cast<CmdTimesheet*> (cmd))->uses_context ();
else if (cmd)
uses_context = cmd->uses_context ();
// Apply the context, if applicable
if (cmd && uses_context)
addContext (cmd->accepts_filter (), cmd->accepts_modifications ());
bool changes = false;
bool afterCommand = false;
@ -1277,7 +1372,9 @@ void CLI2::desugarFilterAttributes ()
A2 op ("", Lexer::Type::op);
op.tag ("FILTER");
A2 rhs ("", values[0]._lextype);
// Attribute types that do not support evaluation should be interpreted
// as strings (currently this means that string attributes are not evaluated)
A2 rhs ("", evalSupported ? values[0]._lextype: Lexer::Type::string);
rhs.tag ("FILTER");
// Special case for '<name>:<value>'.
@ -1296,6 +1393,11 @@ void CLI2::desugarFilterAttributes ()
op.attribute ("raw", ">");
rhs.attribute ("raw", value);
}
else if (mod == "by")
{
op.attribute ("raw", "<=");
rhs.attribute ("raw", value);
}
else if (mod == "none")
{
op.attribute ("raw", "==");
@ -1371,7 +1473,7 @@ void CLI2::desugarFilterAttributes ()
// Do not modify this construct without full understanding.
// Getting this wrong breaks a whole lot of filtering tests.
if (values.size () > 1 || evalSupported)
if (evalSupported)
{
for (auto& v : values)
reconstructed.push_back (v);
@ -1486,7 +1588,7 @@ void CLI2::findIDs ()
{
changes = true;
std::string number = a.attribute ("raw");
_id_ranges.push_back (std::pair <std::string, std::string> (number, number));
_id_ranges.emplace_back (number, number);
}
}
else if (a._lextype == Lexer::Type::set)
@ -1497,11 +1599,11 @@ void CLI2::findIDs ()
for (auto& element : elements)
{
changes = true;
auto hyphen = element.find ("-");
auto hyphen = element.find ('-');
if (hyphen != std::string::npos)
_id_ranges.push_back (std::pair <std::string, std::string> (element.substr (0, hyphen), element.substr (hyphen + 1)));
_id_ranges.emplace_back (element.substr (0, hyphen), element.substr (hyphen + 1));
else
_id_ranges.push_back (std::pair <std::string, std::string> (element, element));
_id_ranges.emplace_back (element, element);
}
}
@ -1539,7 +1641,7 @@ void CLI2::findIDs ()
changes = true;
a.unTag ("MODIFICATION");
a.tag ("FILTER");
_id_ranges.push_back (std::pair <std::string, std::string> (raw, raw));
_id_ranges.emplace_back (raw, raw);
}
else if (a._lextype == Lexer::Type::set)
{
@ -1552,11 +1654,11 @@ void CLI2::findIDs ()
for (const auto& element : elements)
{
changes = true;
auto hyphen = element.find ("-");
auto hyphen = element.find ('-');
if (hyphen != std::string::npos)
_id_ranges.push_back (std::pair <std::string, std::string> (element.substr (0, hyphen), element.substr (hyphen + 1)));
_id_ranges.emplace_back (element.substr (0, hyphen), element.substr (hyphen + 1));
else
_id_ranges.push_back (std::pair <std::string, std::string> (element, element));
_id_ranges.emplace_back (element, element);
}
}
}
@ -1846,7 +1948,9 @@ void CLI2::lexFilterArgs ()
// - task ... argX candidate argY
// Where:
// - neither argX nor argY are an operator, except (, ), and, or, xor
// - candidate is Lexer::Type::word
// - candidate is one of: Lexer::Type::word
// Lexer::Type::identifier
// Lexer::Type::date
//
void CLI2::desugarFilterPlainArgs ()
{
@ -1868,6 +1972,7 @@ void CLI2::desugarFilterPlainArgs ()
ppraw == "xor") &&
(prev->_lextype == Lexer::Type::identifier || // candidate
prev->_lextype == Lexer::Type::date || // candidate
prev->_lextype == Lexer::Type::word) && // candidate
prev->hasTag ("FILTER") && // candidate
@ -1945,6 +2050,40 @@ void CLI2::desugarFilterPlainArgs ()
}
}
////////////////////////////////////////////////////////////////////////////////
// Detects if the bracket at iterator it is a start or end of an empty paren expression
// Examples:
// ( status = pending ) ( )
// ^
// it -----| => true
//
// ( status = pending ) ( project = Home )
// ^
// it -----| => false
bool CLI2::isEmptyParenExpression (std::vector<A2>::iterator it, bool forward /* = true */) const
{
int open = 0;
int closed = 0;
for (auto a = it; a != (forward ? _args.end (): _args.begin()); (forward ? ++a: --a))
{
if (a->attribute("raw") == "(")
open++;
else if (a->attribute("raw") == ")")
closed++;
else
// Encountering a non-paren token means there is something between parenthees
return false;
// Getting balanced parentheses means we have an empty paren expression
if (open == closed && open != 0)
return true;
}
// Should not end here.
return false;
}
////////////////////////////////////////////////////////////////////////////////
// Two consecutive FILTER, non-OP arguments that are not "(" or ")" need an
// "and" operator inserted between them.
@ -1971,10 +2110,18 @@ void CLI2::insertJunctions ()
// Insert AND between terms.
else if (a != prev)
{
if ((prev->_lextype != Lexer::Type::op && a->attribute ("raw") == "(") ||
(prev->_lextype != Lexer::Type::op && a->_lextype != Lexer::Type::op) ||
(prev->attribute ("raw") == ")" && a->_lextype != Lexer::Type::op) ||
(prev->attribute ("raw") == ")" && a->attribute ("raw") == "("))
if ((prev->_lextype != Lexer::Type::op &&
a->attribute ("raw") == "(" &&
! isEmptyParenExpression(a, true) ) ||
(prev->attribute ("raw") == ")" &&
a->_lextype != Lexer::Type::op &&
! isEmptyParenExpression(prev, false)) ||
(prev->attribute ("raw") == ")" &&
a->attribute ("raw") == "(" &&
! isEmptyParenExpression(a, true) &&
! isEmptyParenExpression(prev, false)) ||
(prev->_lextype != Lexer::Type::op &&
a->_lextype != Lexer::Type::op))
{
A2 opOr ("and", Lexer::Type::op);
opOr.tag ("FILTER");
@ -2050,7 +2197,7 @@ void CLI2::defaultCommand ()
while (lex.token (lexeme, type))
{
reconstructedOriginals.push_back (A2 (lexeme, type));
reconstructedOriginals.emplace_back (lexeme, type);
A2 cmd (lexeme, type);
cmd.tag ("DEFAULT");

View file

@ -1,6 +1,6 @@
////////////////////////////////////////////////////////////////////////////////
//
// Copyright 2006 - 2021, Paul Beckingham, Federico Hernandez.
// Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
@ -29,6 +29,7 @@
#include <string>
#include <vector>
#include <map>
#include <unordered_map>
#include <Lexer.h>
#include <FS.h>
@ -60,8 +61,8 @@ class CLI2
public:
static int minimumMatchLength;
static void getOverride (int, const char**, std::string&, File&);
static void getDataLocation (int, const char**, Path&);
static bool getOverride (int, const char**, File&);
static bool getDataLocation (int, const char**, Path&);
static void applyOverrides (int, const char**);
public:
@ -70,13 +71,15 @@ public:
void entity (const std::string&, const std::string&);
void add (const std::string&);
void add (const std::vector <std::string>&);
void add (const std::vector <std::string>&, int offset = 0);
void analyze ();
void addFilter (const std::string& arg);
void addContextFilter ();
void addModifications (const std::string& arg);
void addContext (bool readable, bool writeable);
void prepareFilter ();
const std::vector <std::string> getWords ();
bool canonicalize (std::string&, const std::string&, const std::string&) const;
const std::vector <A2> getMiscellaneous ();
bool canonicalize (std::string&, const std::string&, const std::string&);
std::string getBinary () const;
std::string getCommand (bool canonical = true) const;
const std::string dump (const std::string& title = "CLI2 Parser") const;
@ -99,6 +102,7 @@ private:
void findUUIDs ();
void insertIDExpr ();
void lexFilterArgs ();
bool isEmptyParenExpression (std::vector<A2>::iterator it, bool forward = true) const;
void desugarFilterPlainArgs ();
void insertJunctions ();
void defaultCommand ();
@ -107,12 +111,14 @@ private:
public:
std::multimap <std::string, std::string> _entities {};
std::map <std::string, std::string> _aliases {};
std::unordered_map <int, std::string> _canonical_cache {};
std::vector <A2> _original_args {};
std::vector <A2> _args {};
std::vector <std::pair <std::string, std::string>> _id_ranges {};
std::vector <std::string> _uuid_list {};
bool _context_filter_added {false};
std::string _command {""};
bool _context_added {false};
};
#endif

View file

@ -6,7 +6,7 @@ include_directories (${CMAKE_SOURCE_DIR}
${CMAKE_SOURCE_DIR}/src/libshared/src
${TASK_INCLUDE_DIRS})
add_library (task CLI2.cpp CLI2.h
add_library (task STATIC CLI2.cpp CLI2.h
Context.cpp Context.h
DOM.cpp DOM.h
Eval.cpp Eval.h
@ -27,7 +27,7 @@ add_library (task CLI2.cpp CLI2.h
sort.cpp
util.cpp util.h)
add_library (libshared libshared/src/Color.cpp libshared/src/Color.h
add_library (libshared STATIC libshared/src/Color.cpp libshared/src/Color.h
libshared/src/Configuration.cpp libshared/src/Configuration.h
libshared/src/Datetime.cpp libshared/src/Datetime.h
libshared/src/Duration.cpp libshared/src/Duration.h
@ -43,7 +43,7 @@ add_library (libshared libshared/src/Color.cpp libshared/src/Color.h
libshared/src/shared.cpp libshared/src/shared.h
libshared/src/unicode.cpp libshared/src/unicode.h
libshared/src/utf8.cpp libshared/src/utf8.h
libshared/src/wcwidth6.cpp)
libshared/src/wcwidth.h)
add_executable (task_executable main.cpp)
add_executable (calc_executable calc.cpp)

View file

@ -1,6 +1,6 @@
////////////////////////////////////////////////////////////////////////////////
//
// Copyright 2006 - 2021, Paul Beckingham, Federico Hernandez.
// Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
@ -59,7 +59,7 @@
// This string is parsed and used as default values for configuration.
std::string configurationDefaults =
"# Taskwarrior program configuration file.\n"
"# For more documentation, see http://taskwarrior.org or try 'man task', 'man task-color',\n"
"# For more documentation, see https://taskwarrior.org or try 'man task', 'man task-color',\n"
"# 'man task-sync' or 'man taskrc'\n"
"\n"
"# Here is an example of entries that use the default, override and blank values\n"
@ -67,6 +67,10 @@ std::string configurationDefaults =
"# variable= -- By specifying no value, this means no default\n"
"# #variable=foo -- By commenting out the line, or deleting it, this uses the default\n"
"\n"
"# You can also refence environment variables:\n"
"# variable=$HOME/task\n"
"# variable=$VALUE\n"
"\n"
"# Use the command 'task show' to see all defaults and overrides\n"
"\n"
"# Files\n"
@ -86,8 +90,9 @@ std::string configurationDefaults =
"reserved.lines=1 # Assume a 1-line prompt\n"
"\n"
"# Miscellaneous\n"
"# # Comma-separated list. May contain any subset of:\n"
"verbose=blank,header,footnote,label,new-id,affected,edit,special,project,sync,unwait,override,recur\n"
"# verbose= # Comma-separated list. May contain any subset of:\n"
"# affected,blank,context,default,edit,filter,footnote,header,label,new-id,new-uuid,override,project,recur,special,sync\n"
"verbose=affected,blank,context,edit,header,footnote,label,new-id,project,special,sync,override,recur\n"
"confirmation=1 # Confirmation on delete, big changes\n"
"recurrence=1 # Enable recurrence\n"
"recurrence.confirmation=prompt # Confirmation for propagating changes among recurring tasks (yes/no/prompt)\n"
@ -109,8 +114,8 @@ std::string configurationDefaults =
"xterm.title=0 # Sets xterm title for some commands\n"
"expressions=infix # Prefer infix over postfix expressions\n"
"json.array=1 # Enclose JSON output in [ ]\n"
"json.depends.array=0 # Encode dependencies as a JSON array\n"
"abbreviation.minimum=2 # Shortest allowed abbreviation\n"
"news.version= # Latest version higlights read by the user\n"
"\n"
"# Dates\n"
"dateformat=Y-M-D # Preferred input and display date format\n"
@ -131,7 +136,7 @@ std::string configurationDefaults =
"calendar.offset=0 # Apply an offset value to control the first month of the calendar\n"
"calendar.offset.value=-1 # The number of months the first month of the calendar is moved\n"
"calendar.holidays=none # Show public holidays on calendar:full, sparse or none\n"
"#monthsperline=3 # Number of calendar months on a line\n"
"#calendar.monthsperline=3 # Number of calendar months on a line\n"
"\n"
"# Journal controls\n"
"journal.time=0 # Record start/stop commands as annotation\n"
@ -227,6 +232,7 @@ std::string configurationDefaults =
"color.calendar.due.today=color15 on color1\n"
"color.calendar.due=color0 on color1\n"
"color.calendar.holiday=color0 on color11\n"
"color.calendar.scheduled=rgb013 on color15\n"
"color.calendar.overdue=color0 on color9\n"
"color.calendar.today=color15 on rgb013\n"
"color.calendar.weekend=on color235\n"
@ -285,112 +291,129 @@ std::string configurationDefaults =
"alias.history=history.monthly # Prefer monthly over annual history reports\n"
"alias.ghistory=ghistory.monthly # Prefer monthly graphical over annual history reports\n"
"alias.burndown=burndown.weekly # Prefer the weekly burndown chart\n"
"alias.shell=exec tasksh # Alias old shell command to new shell\n"
"\n"
"# Reports\n"
"\n"
"report.long.description=All details of tasks\n"
"report.long.labels=ID,A,Created,Mod,Deps,P,Project,Tags,Recur,Wait,Sched,Due,Until,Description\n"
"report.long.columns=id,start.active,entry,modified.age,depends,priority,project,tags,recur,wait.remaining,scheduled,due,until,description\n"
"report.long.filter=status:pending\n"
"report.long.filter=status:pending -WAITING\n"
"report.long.sort=modified-\n"
"report.long.context=1\n"
"\n"
"report.list.description=Most details of tasks\n"
"report.list.labels=ID,Active,Age,D,P,Project,Tags,R,Sch,Due,Until,Description,Urg\n"
"report.list.columns=id,start.age,entry.age,depends.indicator,priority,project,tags,recur.indicator,scheduled.countdown,due,until.remaining,description.count,urgency\n"
"report.list.filter=status:pending\n"
"report.list.filter=status:pending -WAITING\n"
"report.list.sort=start-,due+,project+,urgency-\n"
"report.list.context=1\n"
"\n"
"report.ls.description=Few details of tasks\n"
"report.ls.labels=ID,A,D,Project,Tags,R,Wait,S,Due,Until,Description\n"
"report.ls.columns=id,start.active,depends.indicator,project,tags,recur.indicator,wait.remaining,scheduled.countdown,due.countdown,until.countdown,description.count\n"
"report.ls.filter=status:pending\n"
"report.ls.filter=status:pending -WAITING\n"
"report.ls.sort=start-,description+\n"
"report.ls.context=1\n"
"\n"
"report.minimal.description=Minimal details of tasks\n"
"report.minimal.labels=ID,Project,Tags,Description\n"
"report.minimal.columns=id,project,tags.count,description.count\n"
"report.minimal.filter=status:pending or status:waiting\n"
"report.minimal.filter=status:pending\n"
"report.minimal.sort=project+/,description+\n"
"report.minimal.context=1\n"
"\n"
"report.newest.description=Newest tasks\n"
"report.newest.labels=ID,Active,Created,Age,Mod,D,P,Project,Tags,R,Wait,Sch,Due,Until,Description\n"
"report.newest.columns=id,start.age,entry,entry.age,modified.age,depends.indicator,priority,project,tags,recur.indicator,wait.remaining,scheduled.countdown,due,until.age,description\n"
"report.newest.filter=status:pending or status:waiting\n"
"report.newest.filter=status:pending\n"
"report.newest.sort=entry-\n"
"report.newest.context=1\n"
"\n"
"report.oldest.description=Oldest tasks\n"
"report.oldest.labels=ID,Active,Created,Age,Mod,D,P,Project,Tags,R,Wait,Sch,Due,Until,Description\n"
"report.oldest.columns=id,start.age,entry,entry.age,modified.age,depends.indicator,priority,project,tags,recur.indicator,wait.remaining,scheduled.countdown,due,until.age,description\n"
"report.oldest.filter=status:pending or status:waiting\n"
"report.oldest.filter=status:pending\n"
"report.oldest.sort=entry+\n"
"report.oldest.context=1\n"
"\n"
"report.overdue.description=Overdue tasks\n"
"report.overdue.labels=ID,Active,Age,Deps,P,Project,Tag,R,S,Due,Until,Description,Urg\n"
"report.overdue.columns=id,start.age,entry.age,depends,priority,project,tags,recur.indicator,scheduled.countdown,due,until,description,urgency\n"
"report.overdue.filter=(status:pending or status:waiting) and +OVERDUE\n"
"report.overdue.filter=status:pending and +OVERDUE\n"
"report.overdue.sort=urgency-,due+\n"
"report.overdue.context=1\n"
"\n"
"report.active.description=Active tasks\n"
"report.active.labels=ID,Started,Active,Age,D,P,Project,Tags,Recur,W,Sch,Due,Until,Description\n"
"report.active.columns=id,start,start.age,entry.age,depends.indicator,priority,project,tags,recur,wait,scheduled.remaining,due,until,description\n"
"report.active.filter=status:pending and +ACTIVE\n"
"report.active.sort=project+,start+\n"
"report.active.context=1\n"
"\n"
"report.completed.description=Completed tasks\n"
"report.completed.labels=ID,UUID,Created,Completed,Age,Deps,P,Project,Tags,R,Due,Description\n"
"report.completed.columns=id,uuid.short,entry,end,entry.age,depends,priority,project,tags,recur.indicator,due,description\n"
"report.completed.filter=status:completed\n"
"report.completed.sort=end+\n"
"report.completed.context=1\n"
"\n"
"report.recurring.description=Recurring Tasks\n"
"report.recurring.labels=ID,Active,Age,D,P,Project,Tags,Recur,Sch,Due,Until,Description,Urg\n"
"report.recurring.columns=id,start.age,entry.age,depends.indicator,priority,project,tags,recur,scheduled.countdown,due,until.remaining,description,urgency\n"
"report.recurring.filter=(status:pending or status:waiting) and (+PARENT or +CHILD)\n"
"report.recurring.filter=status:pending and (+PARENT or +CHILD)\n"
"report.recurring.sort=due+,urgency-,entry+\n"
"report.recurring.context=1\n"
"\n"
"report.waiting.description=Waiting (hidden) tasks\n"
"report.waiting.labels=ID,A,Age,D,P,Project,Tags,R,Wait,Remaining,Sched,Due,Until,Description\n"
"report.waiting.columns=id,start.active,entry.age,depends.indicator,priority,project,tags,recur.indicator,wait,wait.remaining,scheduled,due,until,description\n"
"report.waiting.filter=+WAITING\n"
"report.waiting.sort=due+,wait+,entry+\n"
"report.waiting.context=1\n"
"\n"
"report.all.description=All tasks\n"
"report.all.labels=ID,St,UUID,A,Age,Done,D,P,Project,Tags,R,Wait,Sch,Due,Until,Description\n"
"report.all.columns=id,status.short,uuid.short,start.active,entry.age,end.age,depends.indicator,priority,project.parent,tags.count,recur.indicator,wait.remaining,scheduled.remaining,due,until.remaining,description\n"
"report.all.sort=entry-\n"
"report.all.context=1\n"
"\n"
"report.next.description=Most urgent tasks\n"
"report.next.labels=ID,Active,Age,Deps,P,Project,Tag,Recur,S,Due,Until,Description,Urg\n"
"report.next.columns=id,start.age,entry.age,depends,priority,project,tags,recur,scheduled.countdown,due.relative,until.remaining,description,urgency\n"
"report.next.filter=status:pending limit:page\n"
"report.next.filter=status:pending -WAITING limit:page\n"
"report.next.sort=urgency-\n"
"report.next.context=1\n"
"\n"
"report.ready.description=Most urgent actionable tasks\n"
"report.ready.labels=ID,Active,Age,D,P,Project,Tags,R,S,Due,Until,Description,Urg\n"
"report.ready.columns=id,start.age,entry.age,depends.indicator,priority,project,tags,recur.indicator,scheduled.countdown,due.countdown,until.remaining,description,urgency\n"
"report.ready.filter=+READY\n"
"report.ready.sort=start-,urgency-\n"
"report.ready.context=1\n"
"\n"
"report.blocked.description=Blocked tasks\n"
"report.blocked.columns=id,depends,project,priority,due,start.active,entry.age,description\n"
"report.blocked.labels=ID,Deps,Proj,Pri,Due,Active,Age,Description\n"
"report.blocked.sort=due+,priority-,start-,project+\n"
"report.blocked.filter=status:pending +BLOCKED\n"
"report.blocked.filter=status:pending -WAITING +BLOCKED\n"
"report.blocked.context=1\n"
"\n"
"report.unblocked.description=Unblocked tasks\n"
"report.unblocked.columns=id,depends,project,priority,due,start.active,entry.age,description\n"
"report.unblocked.labels=ID,Deps,Proj,Pri,Due,Active,Age,Description\n"
"report.unblocked.sort=due+,priority-,start-,project+\n"
"report.unblocked.filter=status:pending -BLOCKED\n"
"report.unblocked.filter=status:pending -WAITING -BLOCKED\n"
"report.unblocked.context=1\n"
"\n"
"report.blocking.description=Blocking tasks\n"
"report.blocking.labels=ID,UUID,A,Deps,Project,Tags,R,W,Sch,Due,Until,Description,Urg\n"
"report.blocking.columns=id,uuid.short,start.active,depends,project,tags,recur,wait,scheduled.remaining,due.relative,until.remaining,description.count,urgency\n"
"report.blocking.sort=urgency-,due+,entry+\n"
"report.blocking.filter=status:pending +BLOCKING\n"
"report.blocking.filter=status:pending -WAITING +BLOCKING\n"
"report.blocking.context=1\n"
"\n"
"report.timesheet.filter=(+PENDING and start.after:now-4wks) or (+COMPLETED and end.after:now-4wks)\n"
"report.timesheet.context=0\n"
"\n";
// Supported modifiers, synonyms on the same line.
@ -398,6 +421,7 @@ static const char* modifierNames[] =
{
"before", "under", "below",
"after", "over", "above",
"by",
"none",
"any",
"is", "equals",
@ -410,8 +434,6 @@ static const char* modifierNames[] =
"noword"
};
#define NUM_MODIFIER_NAMES (sizeof (modifierNames) / sizeof (modifierNames[0]))
Context* Context::context;
////////////////////////////////////////////////////////////////////////////////
@ -441,6 +463,9 @@ int Context::initialize (int argc, const char** argv)
{
timer_total.start ();
int rc = 0;
home_dir = getenv ("HOME");
std::vector <std::string> searchPaths { TASK_RCDIR };
try
{
@ -448,53 +473,91 @@ int Context::initialize (int argc, const char** argv)
//
// [1] Load the correct config file.
// - Default to ~/.taskrc (ctor).
// - Allow command line override rc:<file>
// - If no ~/.taskrc, use $XDG_CONFIG_HOME/task/taskrc if exists, or
// ~/.config/task/taskrc if $XDG_DATA_HOME is unset
// - Allow $TASKRC override.
// - Allow command line override rc:<file>
// - Load resultant file.
// - Apply command line overrides to the config.
//
////////////////////////////////////////////////////////////////////////////
CLI2::getOverride (argc, argv, home_dir, rc_file);
bool taskrc_overridden = false;
char* override = getenv ("TASKRC");
// XDG_CONFIG_HOME doesn't count as an override (no warning header)
if (! rc_file.exists ())
{
// Use XDG_CONFIG_HOME if defined, otherwise default to ~/.config
std::string xdg_config_home;
const char* env_xdg_config_home = getenv ("XDG_CONFIG_HOME");
if (env_xdg_config_home)
xdg_config_home = format ("{1}", env_xdg_config_home);
else
xdg_config_home = format ("{1}/.config", home_dir);
// Ensure the path does not end with '/'
if (xdg_config_home.back () == '/')
xdg_config_home.pop_back();
// https://github.com/GothenburgBitFactory/libshared/issues/32
std::string rcfile_path = format ("{1}/task/taskrc", xdg_config_home);
File maybe_rc_file = File (rcfile_path);
if ( maybe_rc_file.exists ())
rc_file = maybe_rc_file;
}
char *override = getenv ("TASKRC");
if (override)
{
rc_file = File (override);
header (format ("TASKRC override: {1}", rc_file._data));
taskrc_overridden = true;
}
taskrc_overridden =
CLI2::getOverride (argc, argv, rc_file) || taskrc_overridden;
// Artificial scope for timing purposes.
{
Timer timer;
config.parse (configurationDefaults);
config.load (rc_file._data);
config.parse (configurationDefaults, 1, searchPaths);
config.load (rc_file._data, 1, searchPaths);
debugTiming (format ("Config::load ({1})", rc_file._data), timer);
}
CLI2::applyOverrides (argc, argv);
if (taskrc_overridden && verbose ("override"))
header (format ("TASKRC override: {1}", rc_file._data));
////////////////////////////////////////////////////////////////////////////
//
// [2] Locate the data directory.
// - Default to ~/.task (ctor).
// - Allow command line override rc.data.location:<dir>
// - Allow $TASKDATA override.
// - Allow command line override rc.data.location:<dir>
// - Inform TDB2 where to find data.
// - Create the rc_file and data_dir, if necessary.
//
////////////////////////////////////////////////////////////////////////////
CLI2::getDataLocation (argc, argv, data_dir);
bool taskdata_overridden = false;
override = getenv ("TASKDATA");
if (override)
{
data_dir = Directory (override);
config.set ("data.location", data_dir._data);
header (format ("TASKDATA override: {1}", data_dir._data));
taskdata_overridden = true;
}
taskdata_overridden =
CLI2::getDataLocation (argc, argv, data_dir) || taskdata_overridden;
if (taskdata_overridden && verbose ("override"))
header (format ("TASKDATA override: {1}", data_dir._data));
tdb2.set_location (data_dir);
createDefaultConfig ();
@ -526,8 +589,8 @@ int Context::initialize (int argc, const char** argv)
//
////////////////////////////////////////////////////////////////////////////
for (unsigned int i = 0; i < NUM_MODIFIER_NAMES; ++i)
cli2.entity ("modifier", modifierNames[i]);
for (auto& modifierName : modifierNames)
cli2.entity ("modifier", modifierName);
for (auto& op : Eval::getOperators ())
cli2.entity ("operator", op);
@ -575,11 +638,13 @@ int Context::initialize (int argc, const char** argv)
foundAssumed = true;
}
if (foundDefault)
header ("[" + combined + "]");
if (verbose ("default")) {
if (foundDefault)
header ("[" + combined + "]");
if (foundAssumed)
header ("No command specified - assuming 'information'.");
if (foundAssumed)
header ("No command specified - assuming 'information'.");
}
////////////////////////////////////////////////////////////////////////////
//
@ -884,6 +949,38 @@ int Context::getHeight ()
return height;
}
////////////////////////////////////////////////////////////////////////////////
std::string Context::getTaskContext (const std::string& kind, std::string name, bool fallback /* = true */)
{
// Consider currently selected context, if none specified
if (name.empty ())
name = config.get ("context");
// Detect if any context is set, and bail out if not
if (! name.empty ())
debug (format ("Applying context '{1}'", name));
else
{
debug ("No context set");
return "";
}
// Figure out the context string for this kind (read/write)
std::string contextString = config.get ("context." + name + "." + kind);
if (contextString.empty ())
{
debug ("Specific " + kind + " context for '" + name + "' not defined. ");
if (fallback)
{
debug ("Falling back on generic.");
contextString = config.get ("context." + name);
}
}
debug (format ("Detected context string: {1}", contextString.empty() ? "(empty)" : contextString));
return contextString;
}
////////////////////////////////////////////////////////////////////////////////
bool Context::color ()
{
@ -945,21 +1042,22 @@ bool Context::verbose (const std::string& token)
{
std::string v = *(verbosity.begin ());
if (v != "nothing" &&
v != "blank" && // This list must be complete.
v != "header" && //
v != "affected" && // This list must be complete.
v != "blank" && //
v != "context" && //
v != "default" && //
v != "edit" && //
v != "filter" && //
v != "footnote" && //
v != "header" && //
v != "label" && //
v != "new-id" && //
v != "new-uuid" && //
v != "affected" && //
v != "edit" && //
v != "special" && //
v != "project" && //
v != "sync" && //
v != "filter" && //
v != "unwait" && //
v != "override" && //
v != "recur") //
v != "project" && //
v != "recur" && //
v != "special" && //
v != "sync")
{
// This list emulates rc.verbose=off in version 1.9.4.
verbosity = {"blank", "label", "new-id", "edit"};
@ -970,7 +1068,7 @@ bool Context::verbose (const std::string& token)
if (! verbosity.count ("footnote"))
{
// TODO: Some of these may not use footnotes yet. They should.
for (auto flag : {"affected", "new-id", "new-uuid", "project", "unwait", "override", "recur"})
for (auto flag : {"affected", "new-id", "new-uuid", "project", "override", "recur"})
{
if (verbosity.count (flag))
{
@ -979,6 +1077,19 @@ bool Context::verbose (const std::string& token)
}
}
}
// Some flags imply "header" verbosity being active. Make it so.
if (! verbosity.count ("header"))
{
for (auto flag : {"default"})
{
if (verbosity.count (flag))
{
verbosity.insert ("header");
break;
}
}
}
}
// rc.verbose=true|y|yes|1|on overrides all.
@ -1117,21 +1228,25 @@ void Context::createDefaultConfig ()
<< "]\n"
<< configurationDefaults.substr (0, loc + 14)
<< data_dir._original
<< "\n\n# Color theme (uncomment one to use)\n"
<< "#include " << TASK_RCDIR << "/light-16.theme\n"
<< "#include " << TASK_RCDIR << "/light-256.theme\n"
<< "#include " << TASK_RCDIR << "/dark-16.theme\n"
<< "#include " << TASK_RCDIR << "/dark-256.theme\n"
<< "#include " << TASK_RCDIR << "/dark-red-256.theme\n"
<< "#include " << TASK_RCDIR << "/dark-green-256.theme\n"
<< "#include " << TASK_RCDIR << "/dark-blue-256.theme\n"
<< "#include " << TASK_RCDIR << "/dark-violets-256.theme\n"
<< "#include " << TASK_RCDIR << "/dark-yellow-green.theme\n"
<< "#include " << TASK_RCDIR << "/dark-gray-256.theme\n"
<< "#include " << TASK_RCDIR << "/dark-gray-blue-256.theme\n"
<< "#include " << TASK_RCDIR << "/solarized-dark-256.theme\n"
<< "#include " << TASK_RCDIR << "/solarized-light-256.theme\n"
<< "#include " << TASK_RCDIR << "/no-color.theme\n"
<< "\n\n# To use the default location of the XDG directories,\n"
<< "# move this configuration file from ~/.taskrc to ~/.config/task/taskrc and uncomment below\n"
<< "\n#data.location=~/.local/share/task\n"
<< "#hooks.location=~/.config/task/hooks\n"
<< "\n# Color theme (uncomment one to use)\n"
<< "#include light-16.theme\n"
<< "#include light-256.theme\n"
<< "#include dark-16.theme\n"
<< "#include dark-256.theme\n"
<< "#include dark-red-256.theme\n"
<< "#include dark-green-256.theme\n"
<< "#include dark-blue-256.theme\n"
<< "#include dark-violets-256.theme\n"
<< "#include dark-yellow-green.theme\n"
<< "#include dark-gray-256.theme\n"
<< "#include dark-gray-blue-256.theme\n"
<< "#include solarized-dark-256.theme\n"
<< "#include solarized-light-256.theme\n"
<< "#include no-color.theme\n"
<< '\n';
// Write out the new file.

View file

@ -1,6 +1,6 @@
////////////////////////////////////////////////////////////////////////////////
//
// Copyright 2006 - 2021, Paul Beckingham, Federico Hernandez.
// Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
@ -57,6 +57,8 @@ public:
int getWidth (); // determine terminal width
int getHeight (); // determine terminal height
std::string getTaskContext (const std::string&, std::string, bool fallback=true);
const std::vector <std::string> getColumns () const;
void getLimits (int&, int&);

View file

@ -1,6 +1,6 @@
////////////////////////////////////////////////////////////////////////////////
//
// Copyright 2006 - 2021, Paul Beckingham, Federico Hernandez.
// Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
@ -260,33 +260,56 @@ bool getDOM (const std::string& name, const Task& task, Variant& value)
// split name on '.'
auto elements = split (name, '.');
Task loaded_task;
Task ref (task);
Lexer lexer (elements[0]);
std::string token;
Lexer::Type type;
if (lexer.token (token, type))
// Use a lambda to decide whether the reference is going to be the passed
// "task" or whether it's going to be a newly loaded task (if id/uuid was
// given).
const Task& ref = [&]() -> const Task&
{
if (type == Lexer::Type::uuid &&
token.length () == elements[0].length ())
{
if (token != ref.get ("uuid"))
Context::getContext ().tdb2.get (token, ref);
Lexer lexer (elements[0]);
std::string token;
Lexer::Type type;
// Eat elements[0]/UUID.
elements.erase (elements.begin ());
}
else if (type == Lexer::Type::number &&
token.find ('.') == std::string::npos)
// If this can be ID/UUID reference (the name contains '.'),
// lex it to figure out. Otherwise don't lex, as lexing can be slow.
if ((elements.size() > 1) and lexer.token (token, type))
{
auto id = strtol (token.c_str (), nullptr, 10);
if (id && id != ref.id)
Context::getContext ().tdb2.get (id, ref);
bool reloaded = false;
// Eat elements[0]/ID.
elements.erase (elements.begin ());
if (type == Lexer::Type::uuid &&
token.length () == elements[0].length ())
{
if (token != task.get ("uuid"))
{
Context::getContext ().tdb2.get (token, loaded_task);
reloaded = true;
}
// Eat elements[0]/UUID.
elements.erase (elements.begin ());
}
else if (type == Lexer::Type::number &&
token.find ('.') == std::string::npos)
{
auto id = strtol (token.c_str (), nullptr, 10);
if (id && id != task.id)
{
Context::getContext ().tdb2.get (id, loaded_task);
reloaded = true;
}
// Eat elements[0]/ID.
elements.erase (elements.begin ());
}
if (reloaded)
return loaded_task;
}
}
return task;
} ();
auto size = elements.size ();
@ -307,6 +330,14 @@ bool getDOM (const std::string& name, const Task& task, Variant& value)
return true;
}
// Special handling of status required for virtual waiting status
// implementation. Remove in 3.0.0.
if (ref.data.size () && size == 1 && canonical == "status")
{
value = Variant (ref.statusToText (ref.getStatus ()));
return true;
}
Column* column = Context::getContext ().columns[canonical];
if (ref.data.size () && size == 1 && column)

View file

@ -1,6 +1,6 @@
////////////////////////////////////////////////////////////////////////////////
//
// Copyright 2006 - 2021, Paul Beckingham, Federico Hernandez.
// Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal

View file

@ -1,6 +1,6 @@
////////////////////////////////////////////////////////////////////////////////
//
// Copyright 2013 - 2021, Paul Beckingham, Federico Hernandez.
// Copyright 2013 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
@ -122,7 +122,7 @@ void Eval::evaluateInfixExpression (const std::string& e, Variant& v) const
std::string token;
Lexer::Type type;
while (l.token (token, type))
tokens.push_back (std::pair <std::string, Lexer::Type> (token, type));
tokens.emplace_back (token, type);
// Parse for syntax checking and operator replacement.
if (_debug)
@ -149,7 +149,7 @@ void Eval::evaluatePostfixExpression (const std::string& e, Variant& v) const
std::string token;
Lexer::Type type;
while (l.token (token, type))
tokens.push_back (std::pair <std::string, Lexer::Type> (token, type));
tokens.emplace_back (token, type);
if (_debug)
Context::getContext ().debug ("FILTER Postfix " + dump (tokens));
@ -195,8 +195,9 @@ void Eval::debug (bool value)
std::vector <std::string> Eval::getOperators ()
{
std::vector <std::string> all;
for (unsigned int i = 0; i < NUM_OPERATORS; ++i)
all.push_back (operators[i].op);
all.reserve(NUM_OPERATORS);
for (const auto &opr : operators)
all.push_back (opr.op);
return all;
}
@ -206,9 +207,9 @@ std::vector <std::string> Eval::getOperators ()
std::vector <std::string> Eval::getBinaryOperators ()
{
std::vector <std::string> all;
for (unsigned int i = 0; i < NUM_OPERATORS; ++i)
if (operators[i].type == 'b')
all.push_back (operators[i].op);
for (const auto &opr : operators)
if (opr.type == 'b')
all.push_back (opr.op);
return all;
}
@ -223,6 +224,8 @@ void Eval::evaluatePostfixStack (
// This is stack used by the postfix evaluator.
std::vector <Variant> values;
values.reserve(tokens.size());
for (const auto& token : tokens)
{
// Unary operators.
@ -338,9 +341,9 @@ void Eval::evaluatePostfixStack (
case Lexer::Type::identifier:
{
bool found = false;
for (auto source = _sources.begin (); source != _sources.end (); ++source)
for (const auto& source : _sources)
{
if ((*source) (token.first, v))
if (source (token.first, v))
{
if (_debug)
Context::getContext ().debug (format ("Eval identifier source '{1}' → ↑'{2}'", token.first, (std::string) v));
@ -669,10 +672,10 @@ bool Eval::parsePrimitive (
else
{
bool found = false;
for (auto source = _sources.begin (); source != _sources.end (); ++source)
for (const auto& source : _sources)
{
Variant v;
if ((*source) (infix[i].first, v))
if (source (infix[i].first, v))
{
found = true;
break;
@ -697,7 +700,7 @@ bool Eval::parsePrimitive (
////////////////////////////////////////////////////////////////////////////////
// Dijkstra Shunting Algorithm.
// http://en.wikipedia.org/wiki/Shunting-yard_algorithm
// https://en.wikipedia.org/wiki/Shunting-yard_algorithm
//
// While there are tokens to be read:
// Read a token.
@ -810,13 +813,13 @@ bool Eval::identifyOperator (
unsigned int& precedence,
char& associativity) const
{
for (unsigned int i = 0; i < NUM_OPERATORS; ++i)
for (const auto& opr : operators)
{
if (operators[i].op == op)
if (opr.op == op)
{
type = operators[i].type;
precedence = operators[i].precedence;
associativity = operators[i].associativity;
type = opr.type;
precedence = opr.precedence;
associativity = opr.associativity;
return true;
}
}

View file

@ -1,6 +1,6 @@
////////////////////////////////////////////////////////////////////////////////
//
// Copyright 2013 - 2021, Paul Beckingham, Federico Hernandez.
// Copyright 2013 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal

View file

@ -1,6 +1,6 @@
////////////////////////////////////////////////////////////////////////////////
//
// Copyright 2006 - 2021, Paul Beckingham, Federico Hernandez.
// Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
@ -64,7 +64,7 @@ void Filter::subset (const std::vector <Task>& input, std::vector <Task>& output
std::vector <std::pair <std::string, Lexer::Type>> precompiled;
for (auto& a : Context::getContext ().cli2._args)
if (a.hasTag ("FILTER"))
precompiled.push_back (std::pair <std::string, Lexer::Type> (a.getToken (), a._lextype));
precompiled.emplace_back (a.getToken (), a._lextype);
if (precompiled.size ())
{
@ -107,7 +107,7 @@ void Filter::subset (std::vector <Task>& output)
std::vector <std::pair <std::string, Lexer::Type>> precompiled;
for (auto& a : Context::getContext ().cli2._args)
if (a.hasTag ("FILTER"))
precompiled.push_back (std::pair <std::string, Lexer::Type> (a.getToken (), a._lextype));
precompiled.emplace_back (a.getToken (), a._lextype);
// Shortcut indicates that only pending.data needs to be loaded.
bool shortcut = false;
@ -214,6 +214,8 @@ bool Filter::pendingOnly () const
int countOr = 0;
int countXor = 0;
int countNot = 0;
bool pendingTag = false;
bool activeTag = false;
for (const auto& a : Context::getContext ().cli2._args)
{
@ -227,17 +229,27 @@ bool Filter::pendingOnly () const
if (a._lextype == Lexer::Type::op && raw == "not") ++countNot;
if (a._lextype == Lexer::Type::dom && canonical == "status") ++countStatus;
if ( raw == "pending") ++countPending;
if ( raw == "waiting") ++countPending;
if ( raw == "recurring") ++countPending;
if ( raw == "waiting") ++countWaiting;
if ( raw == "recurring") ++countRecurring;
}
}
for (const auto& word : Context::getContext ().cli2._original_args)
{
if (word.attribute ("raw") == "+PENDING") pendingTag = true;
if (word.attribute ("raw") == "+ACTIVE") activeTag = true;
}
if (countUUID)
return false;
if (countOr || countXor || countNot)
return false;
if (pendingTag || activeTag)
return true;
if (countStatus)
{
if (!countPending && !countWaiting && !countRecurring)

View file

@ -1,6 +1,6 @@
////////////////////////////////////////////////////////////////////////////////
//
// Copyright 2006 - 2021, Paul Beckingham, Federico Hernandez.
// Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal

View file

@ -1,6 +1,6 @@
////////////////////////////////////////////////////////////////////////////////
//
// Copyright 2006 - 2021, Paul Beckingham, Federico Hernandez.
// Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
@ -196,6 +196,7 @@ void Hooks::onExit () const
// Convert to a vector of strings.
std::vector <std::string> input;
input.reserve(tasks.size());
for (auto& t : tasks)
input.push_back (t.composeJSON ());
@ -485,7 +486,7 @@ void Hooks::assertSameTask (
for (auto& i : input)
{
json::object* root_obj = (json::object*)json::parse (i);
auto root_obj = (json::object*)json::parse (i);
// If there is no UUID at all.
auto u = root_obj->_data.find ("uuid");
@ -496,7 +497,7 @@ void Hooks::assertSameTask (
throw 0;
}
json::string* up = (json::string*) u->second;
auto up = (json::string*) u->second;
auto text = up->dump ();
Lexer::dequote (text);
std::string json_uuid = json::decode (text);

View file

@ -1,6 +1,6 @@
////////////////////////////////////////////////////////////////////////////////
//
// Copyright 2006 - 2021, Paul Beckingham, Federico Hernandez.
// Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal

View file

@ -1,6 +1,6 @@
////////////////////////////////////////////////////////////////////////////////
//
// Copyright 2013 - 2021, Paul Beckingham, Federico Hernandez.
// Copyright 2013 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
@ -49,11 +49,6 @@ Lexer::Lexer (const std::string& text)
{
}
////////////////////////////////////////////////////////////////////////////////
Lexer::~Lexer ()
{
}
////////////////////////////////////////////////////////////////////////////////
// When a Lexer object is constructed with a string, this method walks through
// the stream of low-level tokens.
@ -608,7 +603,8 @@ bool Lexer::isHexNumber (std::string& token, Lexer::Type& type)
////////////////////////////////////////////////////////////////////////////////
// Lexer::Type::number
// \d+
// 0
// [1-9]\d*
// [ . \d+ ]
// [ e|E [ +|- ] \d+ [ . \d+ ] ]
// not followed by non-operator.
@ -616,9 +612,16 @@ bool Lexer::isNumber (std::string& token, Lexer::Type& type)
{
std::size_t marker = _cursor;
bool leading_zero = (_text[marker] == '0');
if (unicodeLatinDigit (_text[marker]))
{
++marker;
// Two (or more) digit number with a leading zero are not allowed
if (leading_zero && unicodeLatinDigit (_text[marker]))
return false;
while (unicodeLatinDigit (_text[marker]))
utf8_next_char (_text, marker);
@ -679,17 +682,25 @@ bool Lexer::isNumber (std::string& token, Lexer::Type& type)
////////////////////////////////////////////////////////////////////////////////
// Lexer::Type::number
// \d+
// 0
// [1-9]\d*
// Integers do not start with a leading 0, unless they are zero.
bool Lexer::isInteger (std::string& token, Lexer::Type& type)
{
std::size_t marker = _cursor;
bool leading_zero = (_text[marker] == '0');
if (unicodeLatinDigit (_text[marker]))
{
++marker;
while (unicodeLatinDigit (_text[marker]))
utf8_next_char (_text, marker);
// Leading zero is only allowed in the case of number 0
if (leading_zero and marker - _cursor > 1)
return false;
token = _text.substr (_cursor, marker - _cursor);
type = Lexer::Type::number;
_cursor = marker;
@ -894,7 +905,7 @@ bool Lexer::isPath (std::string& token, Lexer::Type& type)
std::size_t marker = _cursor;
int slashCount = 0;
while (1)
while (true)
{
if (_text[marker] == '/')
{
@ -1673,7 +1684,7 @@ bool Lexer::decomposeSubstitution (
if (readWord (text, "/", cursor, parsed_to))
{
std::string parsed_flags = text.substr (cursor);
if (parsed_flags.find ("/") == std::string::npos)
if (parsed_flags.find ('/') == std::string::npos)
{
dequote (parsed_from, "/");
dequote (parsed_to, "/");
@ -1702,7 +1713,7 @@ bool Lexer::decomposePattern (
ignored.length ())
{
auto parsed_flags = text.substr (cursor);
if (parsed_flags.find ("/") == std::string::npos)
if (parsed_flags.find ('/') == std::string::npos)
{
flags = parsed_flags;
pattern = text.substr (1, cursor - 2 - flags.length ());

View file

@ -1,6 +1,6 @@
////////////////////////////////////////////////////////////////////////////////
//
// Copyright 2013 - 2021, Paul Beckingham, Federico Hernandez.
// Copyright 2013 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
@ -54,7 +54,7 @@ public:
date, duration };
Lexer (const std::string&);
~Lexer ();
~Lexer () = default;
bool token (std::string&, Lexer::Type&);
static std::vector <std::string> split (const std::string&);
static std::string typeToString (Lexer::Type);

View file

@ -1,6 +1,6 @@
////////////////////////////////////////////////////////////////////////////////
//
// Copyright 2006 - 2021, Paul Beckingham, Federico Hernandez.
// Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
@ -170,7 +170,7 @@ void TF2::add_task (Task& task)
// For faster lookup
if (Context::getContext ().cli2.getCommand () == "import")
_tasks_map.insert (std::pair<std::string, Task> (task.get("uuid"), task));
_tasks_map.emplace (task.get("uuid"), task);
Task::status status = task.getStatus ();
if (task.id == 0 &&
@ -355,22 +355,13 @@ void TF2::load_gc (Task& task)
{
Context::getContext ().tdb2.pending._tasks.push_back (task);
}
// 2.6.0: Waiting status is deprecated. Convert to pending to upgrade status
// field value in the data files.
else if (status == "waiting")
{
Datetime wait (task.get_date ("wait"));
if (wait < now)
{
task.set ("status", "pending");
task.remove ("wait");
// Unwaiting pending tasks is the only case not caught by the size()
// checks in TDB2::gc(), so we need to signal it here.
Context::getContext ().tdb2.pending._dirty = true;
if (Context::getContext ().verbose ("unwait"))
Context::getContext ().footnote (format ("Un-waiting task {1} '{2}'", task.id, task.get ("description")));
}
task.set ("status", "pending");
Context::getContext ().tdb2.pending._tasks.push_back (task);
Context::getContext ().tdb2.pending._dirty = true;
}
else
{
@ -410,7 +401,7 @@ void TF2::load_tasks (bool from_gc /* = false */)
_tasks.push_back (task);
if (Context::getContext ().cli2.getCommand () == "import") // For faster lookup only
_tasks_map.insert (std::pair<std::string, Task> (task.get("uuid"), task));
_tasks_map.emplace (task.get("uuid"), task);
}
// TDB2::gc() calls this after loading both pending and completed
@ -525,29 +516,26 @@ void TF2::dependency_scan ()
// Iterate and modify TDB2 in-place. Don't do this at home.
for (auto& left : _tasks)
{
if (left.has ("depends"))
for (auto& dep : left.getDependencyUUIDs ())
{
for (auto& dep : left.getDependencyUUIDs ())
for (auto& right : _tasks)
{
for (auto& right : _tasks)
if (right.get ("uuid") == dep)
{
if (right.get ("uuid") == dep)
// GC hasn't run yet, check both tasks for their current status
Task::status lstatus = left.getStatus ();
Task::status rstatus = right.getStatus ();
if (lstatus != Task::completed &&
lstatus != Task::deleted &&
rstatus != Task::completed &&
rstatus != Task::deleted)
{
// GC hasn't run yet, check both tasks for their current status
Task::status lstatus = left.getStatus ();
Task::status rstatus = right.getStatus ();
if (lstatus != Task::completed &&
lstatus != Task::deleted &&
rstatus != Task::completed &&
rstatus != Task::deleted)
{
left.is_blocked = true;
right.is_blocking = true;
}
// Only want to break out of the "right" loop.
break;
left.is_blocked = true;
right.is_blocking = true;
}
// Only want to break out of the "right" loop.
break;
}
}
}
@ -839,6 +827,11 @@ void TDB2::revert ()
// - erase from completed
// - if in backlog, erase, else cannot undo
Task old;
if (prior != "")
old = Task (prior);
Context::getContext ().hooks.onModify (Task (current), old);
// Modify other data files accordingly.
std::vector <std::string> p = pending.get_lines ();
revert_pending (p, uuid, prior);
@ -987,7 +980,7 @@ void TDB2::revert_backlog (
const std::string& current,
const std::string& prior)
{
std::string uuid_att = "\"uuid\":\"" + uuid + '"';
std::string uuid_att = R"("uuid":")" + uuid + '"';
bool found = false;
for (auto task = b.rbegin (); task != b.rend (); ++task)
@ -1244,7 +1237,6 @@ void TDB2::show_diff (
// Possible scenarios:
// - task in pending that needs to be in completed
// - task in completed that needs to be in pending
// - waiting task in pending that needs to be un-waited
void TDB2::gc ()
{
Timer timer;

View file

@ -1,6 +1,6 @@
////////////////////////////////////////////////////////////////////////////////
//
// Copyright 2006 - 2021, Paul Beckingham, Federico Hernandez.
// Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal

View file

@ -1,6 +1,6 @@
////////////////////////////////////////////////////////////////////////////////
//
// Copyright 2006 - 2021, Paul Beckingham, Federico Hernandez.
// Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal

View file

@ -1,6 +1,6 @@
////////////////////////////////////////////////////////////////////////////////
//
// Copyright 2006 - 2021, Paul Beckingham, Federico Hernandez.
// Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal

File diff suppressed because it is too large Load diff

View file

@ -1,6 +1,6 @@
////////////////////////////////////////////////////////////////////////////////
//
// Copyright 2006 - 2021, Paul Beckingham, Federico Hernandez.
// Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
@ -88,7 +88,7 @@ public:
void setAsNow (const std::string&);
bool has (const std::string&) const;
std::vector <std::string> all ();
std::vector <std::string> all () const;
const std::string identifier (bool shortened = false) const;
const std::string get (const std::string&) const;
const std::string& get_ref (const std::string&) const;
@ -97,7 +97,7 @@ public:
float get_float (const std::string&) const;
time_t get_date (const std::string&) const;
void set (const std::string&, const std::string&);
void set (const std::string&, int);
void set (const std::string&, long long);
void remove (const std::string&);
#ifdef PRODUCT_TASKWARRIOR
@ -114,6 +114,7 @@ public:
bool is_udaPresent () const;
bool is_orphanPresent () const;
#endif
bool is_waiting () const;
status getStatus () const;
void setStatus (status);
@ -125,7 +126,7 @@ public:
int getTagCount () const;
bool hasTag (const std::string&) const;
void addTag (const std::string&);
void addTags (const std::vector <std::string>&);
void setTags (const std::vector <std::string>&);
std::vector <std::string> getTags () const;
void removeTag (const std::string&);
@ -143,8 +144,10 @@ public:
#ifdef PRODUCT_TASKWARRIOR
void removeDependency (int);
void removeDependency (const std::string&);
bool hasDependency (const std::string&) const;
std::vector <int> getDependencyIDs () const;
std::vector <std::string> getDependencyUUIDs () const;
std::vector <Task> getBlockedTasks () const;
std::vector <Task> getDependencyTasks () const;
std::vector <std::string> getUDAOrphanUUIDs () const;
@ -162,6 +165,9 @@ public:
void modify (modType, bool text_required = false);
#endif
std::string diff (const Task& after) const;
std::string diffForInfo (const Task& after, const std::string& dateformat, long& last_timestamp, const long current_timestamp) const;
private:
int determineVersion (const std::string&);
void parseJSON (const std::string&);
@ -170,6 +176,15 @@ private:
void validate_before (const std::string&, const std::string&);
const std::string encode (const std::string&) const;
const std::string decode (const std::string&) const;
bool isTagAttr (const std::string&) const;
const std::string tag2Attr (const std::string&) const;
const std::string attr2Tag (const std::string&) const;
bool isDepAttr (const std::string&) const;
const std::string dep2Attr (const std::string&) const;
const std::string attr2Dep (const std::string&) const;
bool isAnnotationAttr (const std::string&) const;
void fixDependsAttribute ();
void fixTagsAttribute ();
public:
float urgency_project () const;

View file

@ -1,6 +1,6 @@
////////////////////////////////////////////////////////////////////////////////
//
// Copyright 2013 - 2021, Paul Beckingham, Federico Hernandez.
// Copyright 2013 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
@ -166,19 +166,7 @@ const std::string& Variant::source () const
}
////////////////////////////////////////////////////////////////////////////////
Variant& Variant::operator= (const Variant& other)
{
_type = other._type;
_bool = other._bool;
_integer = other._integer;
_real = other._real;
_string = other._string;
_date = other._date;
_duration = other._duration;
_source = other._source;
return *this;
}
Variant& Variant::operator= (const Variant& other) = default;
////////////////////////////////////////////////////////////////////////////////
bool Variant::operator&& (const Variant& other) const
@ -1110,8 +1098,15 @@ bool Variant::operator_partial (const Variant& other) const
{
// Same-day comparison.
case type_string:
if (left.trivial () || right.trivial ())
return false;
{
if (left.trivial () || right.trivial ())
return false;
right.cast (type_date);
Datetime left_date (left._date);
Datetime right_date (right._date);
return left_date.sameDay (right_date);
}
case type_boolean:
case type_integer:
@ -1295,12 +1290,12 @@ Variant& Variant::operator-= (const Variant& other)
case type_date:
switch (right._type)
{
case type_boolean: right.cast (type_integer); _date -= right._integer; break;
case type_integer: _date -= right._integer; break;
case type_real: _date -= (int) right._real; break;
case type_boolean: right.cast (type_integer); _date -= right._integer; break;
case type_integer: _date -= right._integer; break;
case type_real: _date -= (int) right._real; break;
case type_string: throw std::string (STRING_VARIANT_SUB_STRING);
case type_date: cast (type_duration); _duration -= right._date; break;
case type_duration: _date -= right._duration; break;
case type_date: _type = Variant::type_duration; _duration = _date - right._date; break;
case type_duration: _date -= right._duration; break;
}
break;
@ -1408,12 +1403,12 @@ Variant& Variant::operator+= (const Variant& other)
case type_duration:
switch (right._type)
{
case type_boolean: right.cast (type_duration); _duration += right._duration; break;
case type_integer: _duration += right._integer; break;
case type_real: _duration += (int) right._real; break;
case type_string: cast (type_string); _string += right._string; break;
case type_date: cast (type_date); _date += right._date; break;
case type_duration: _duration += right._duration; break;
case type_boolean: right.cast (type_duration); _duration += right._duration; break;
case type_integer: _duration += right._integer; break;
case type_real: _duration += (int) right._real; break;
case type_string: cast (type_string); _string += right._string; break;
case type_date: _type = Variant::type_date; _date += right._date + _duration; break;
case type_duration: _duration += right._duration; break;
}
break;
}
@ -1838,7 +1833,7 @@ void Variant::cast (const enum type new_type)
case type_string:
{
char temp[24];
snprintf (temp, 24, "%d", _integer);
snprintf (temp, 24, "%lld", _integer);
_string = temp;
}
break;
@ -1851,7 +1846,7 @@ void Variant::cast (const enum type new_type)
switch (new_type)
{
case type_boolean: _bool = _real == 0.0 ? false : true; break;
case type_integer: _integer = (int) _real; break;
case type_integer: _integer = (long long) _real; break;
case type_real: break;
case type_string:
{
@ -1875,9 +1870,9 @@ void Variant::cast (const enum type new_type)
_string == "0.0") ? false : true;
break;
case type_integer:
_integer = (int) strtol (_string.c_str (), nullptr, (_string.substr (0, 2) == "0x" ? 16 : 10));
_integer = (long long) strtol (_string.c_str (), nullptr, (_string.substr (0, 2) == "0x" ? 16 : 10));
break;
case type_real: _real = strtod (_string.c_str (), nullptr); break;
case type_real: _real = strtod (_string.c_str (), nullptr); break;
case type_string: break;
case type_date:
{
@ -1926,11 +1921,13 @@ void Variant::cast (const enum type new_type)
switch (new_type)
{
case type_boolean: _bool = _date != 0 ? true : false; break;
case type_integer: _integer = (int) _date; break;
case type_integer: _integer = (long long) _date; break;
case type_real: _real = static_cast<double>(_date); break;
case type_string: _string = (std::string) *this; break;
case type_date: break;
case type_duration: _duration = _date; break;
// TODO: Not exactly correct (should duration convert into date?), but
// currently needed for symmetry, which is assumed by operators.
case type_duration: _duration = _date - time (nullptr); break;
}
break;
@ -1938,10 +1935,10 @@ void Variant::cast (const enum type new_type)
switch (new_type)
{
case type_boolean: _bool = _duration != 0 ? true : false; break;
case type_integer: _integer = (int) _duration; break;
case type_integer: _integer = (long long) _duration; break;
case type_real: _real = static_cast<double>(_duration); break;
case type_string: _string = (std::string) *this; break;
case type_date: _date = _duration; break;
case type_date: _date = time (nullptr) + _duration; break;
case type_duration: break;
}
break;
@ -1973,7 +1970,7 @@ bool Variant::get_bool () const
}
////////////////////////////////////////////////////////////////////////////////
int Variant::get_integer () const
long long Variant::get_integer () const
{
return _integer;
}

View file

@ -1,6 +1,6 @@
////////////////////////////////////////////////////////////////////////////////
//
// Copyright 2013 - 2021, Paul Beckingham, Federico Hernandez.
// Copyright 2013 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
@ -99,7 +99,7 @@ public:
bool trivial () const;
bool get_bool () const;
int get_integer () const;
long long get_integer () const;
double get_real () const;
const std::string& get_string () const;
time_t get_date () const;
@ -108,7 +108,7 @@ public:
private:
enum type _type {type_boolean};
bool _bool {false};
int _integer {0};
long long _integer {0};
double _real {0.0};
std::string _string {""};
time_t _date {0};

View file

@ -1,6 +1,6 @@
////////////////////////////////////////////////////////////////////////////////
//
// Copyright 2006 - 2021, Paul Beckingham, Federico Hernandez.
// Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
@ -202,11 +202,53 @@ std::string ViewTask::render (std::vector <Task>& data, std::vector <int>& seque
widths = ideal;
}
// Not enough for minimum.
// Not enough for minimum. Decrease certain columns.
else if (overage < 0)
{
Context::getContext ().error (format ("The report has a minimum width of {1} and does not fit in the available width of {2}.", sum_minimal + all_extra, _width));
// Determine which columns are the longest.
unsigned int longest = 0;
unsigned int second_longest = 0;
for (unsigned int j = 0; j < minimal.size(); j++)
{
if (minimal[j] > minimal[longest])
{
second_longest = longest;
longest = j;
}
else if (minimal[j] > minimal[second_longest])
{
second_longest = j;
}
}
// Case 1: Shortening longest column still keeps it longest. Let it bear
// all the shortening.
widths = minimal;
if (minimal[longest] + overage >= minimal[second_longest])
widths[longest] += overage;
// Case 2: Shorten the longest column to second longest length. Try to
// split shortening them evenly.
else
{
int decrease = minimal[second_longest] - minimal[longest];
widths[longest] += decrease;
overage = overage - decrease;
// Attempt to decrease the two longest columns (at most to two characters)
if (-overage <= widths[longest] + widths[second_longest] - 4)
{
// Compute half of the overage, rounding up
int half_overage = overage / 2 + overage % 2;
// Decrease both larges columns by this amount
widths[longest] += half_overage;
widths[second_longest] += half_overage;
}
else
// If reducing two of the longest solumns to 2 characters is not sufficient, then give up.
Context::getContext ().error (format ("The report has a minimum width of {1} and does not fit in the available width of {2}.", sum_minimal + all_extra, _width));
}
}
// Perfect minimal width.
@ -242,7 +284,7 @@ std::string ViewTask::render (std::vector <Task>& data, std::vector <int>& seque
std::vector <std::vector <std::string>> headers;
for (unsigned int c = 0; c < _columns.size (); ++c)
{
headers.push_back (std::vector <std::string> ());
headers.emplace_back ();
_columns[c]->renderHeader (headers[c], widths[c], _sort[c] ? _sort_header : _header);
if (headers[c].size () > max_lines)
@ -279,7 +321,7 @@ std::string ViewTask::render (std::vector <Task>& data, std::vector <int>& seque
out += extra;
// Trim right.
out.erase (out.find_last_not_of (" ") + 1);
out.erase (out.find_last_not_of (' ') + 1);
out += "\n";
// Stop if the line limit is exceeded.
@ -312,7 +354,7 @@ std::string ViewTask::render (std::vector <Task>& data, std::vector <int>& seque
for (unsigned int c = 0; c < _columns.size (); ++c)
{
cells.push_back (std::vector <std::string> ());
cells.emplace_back ();
_columns[c]->render (cells[c], data[sequence[s]], widths[c], row_color);
if (cells[c].size () > max_lines)
@ -320,8 +362,8 @@ std::string ViewTask::render (std::vector <Task>& data, std::vector <int>& seque
if (obfuscate)
if (_columns[c]->type () == "string")
for (unsigned int line = 0; line < cells[c].size (); ++line)
cells[c][line] = obfuscateText (cells[c][line]);
for (auto& line : cells[c])
line = obfuscateText (line);
}
// Listing breaks are simply blank lines inserted when a column value
@ -329,7 +371,7 @@ std::string ViewTask::render (std::vector <Task>& data, std::vector <int>& seque
if (s > 0 &&
_breaks.size () > 0)
{
for (auto& b : _breaks)
for (const auto& b : _breaks)
{
if (data[sequence[s - 1]].get (b) != data[sequence[s]].get (b))
{
@ -365,7 +407,7 @@ std::string ViewTask::render (std::vector <Task>& data, std::vector <int>& seque
out += (odd ? extra_odd : extra_even);
// Trim right.
out.erase (out.find_last_not_of (" ") + 1);
out.erase (out.find_last_not_of (' ') + 1);
out += "\n";
// Stop if the line limit is exceeded.

View file

@ -1,6 +1,6 @@
////////////////////////////////////////////////////////////////////////////////
//
// Copyright 2006 - 2021, Paul Beckingham, Federico Hernandez.
// Copyright 2006 - 2021, Tomas Babej, Paul Beckingham, Federico Hernandez.
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal

View file

@ -93,7 +93,7 @@ int main (int argc, char** argv)
<< format ("calc {1} built for ", VERSION)
<< osName ()
<< '\n'
<< "Copyright (C) 2006 - 2021 P. Beckingham, F. Hernandez."
<< "Copyright (C) 2006 - 2021 T. Babej, P. Beckingham, F. Hernandez."
<< '\n'
<< '\n'
<< "Taskwarrior may be copied only under the terms of the MIT license, which may be found in the Taskwarrior source kit."

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