Commit Graph

477 Commits

Author SHA1 Message Date
Ingo Karkat
bd88c20cab Add TODOTXT_VERBOSE to the configuration
There's no command-line option to reduce verbosity (just -v to increase it), so users who would like to remove the additional messages (cp. https://github.com/todotxt/todo.txt-cli/discussions/364) have to configure this, but the variable is hard to find.
Include the default value in commented-out form and some documentation of the possible values.
2021-10-09 19:57:47 +02:00
a1346054
2d70a0aadf Minor fixes identified through shellcheck and other tools (#350)
* fix whitespace

* fix spelling

* fix whitespace

* unify headers of tests

* fix some issues in tests, identified by shellcheck

* fix bash completions

bash completion files are not supposed to be executable

* fix some issues identified by shellcheck

Co-authored-by: Ali Karbassi <ali@karbassi.com>
2021-08-09 15:03:49 -05:00
Ingo Karkat
ee94a3fac5 Return from user prompt without requiring Enter (#354)
* Tests: Add coverage for del / move without -f, but with prompting

Supplying the user confirmation via "yes".

* Cosmetics: Align inconsistent spacing for before (y/n) prompt

* Refactoring: Extract confirm() function

The user confirmation query had been duplicated (once) in the code.

* Refactoring: confirm(): Leave early if forced

* Return from user prompt without requiring Enter

By just reading a single character (y for yes, anything else: no).



* Tests: Ensure that only a single "y" concludes the confirmation

By switching from "yes" (that endlessly prints newline-separated "y"s) to "printf y".

* t1800-del: Add coverage for negative confirmation

Negative means "anything but y", so "n", "x", and Enter all apply.

* Cosmetics: Add trailing space after (y/n) prompt

So that the user's typed answer is not recorded directly after it, but with separation: "Foo? (y/n) y" instead of "Foo? (y/n)y".

*Compatibility: "read -N 1" is only available in Bash 4.1+

Mac OS still ships with Bash 3.2 :-( Fall back to the original prompting that requires conclusion via Enter then.
Note: Even though the tests use "printf y", this still gets accepted, as there'll be EOF after that. In real use (when stdin from the terminal stays open), a concluding Enter is mandatory, though.

Closes #152
2021-08-06 15:05:11 -05:00
Keith
587833bb4e Default to user writable directory in config (#148)
When a user installs from a package manager (MacPorts, Homebrew, `yum`, etc.), the `todo.sh` script is installed into a restricted folder.  This means that the result of `$(basename "$0")` is a directory where the user cannot write without elevated permissions.  This generates additional noise when the user first runs `todo.sh -h`.  An alternative is to default to the user's personal directory which is known to exist and will be writable by the user.
2021-08-06 09:14:25 -05:00
Tim
eb7feaefb5 Fix problem with spaces in directory path (#276)
If the current directory had spaces in the directory path, this script would fail.
That has been fixed by appropriate use of quotes.

Co-authored-by: Tim Learmont <learmont@NocturnalAviation.com>
Co-authored-by: Ali Karbassi <ali@karbassi.com>
2021-08-03 18:11:27 -05:00
Wallysson
7501d37b45 use builtin "command -v" instead of which (#308) 2021-08-03 18:10:28 -05:00
Ingo Karkat
6ea2b5ae6d Mention all (also XDG) config file locations in help for -d (#343)
* Refactoring: Replace serial checks for `TODOTXT_CFG_FILE` and `TODO_ACTIONS_DIR` with loops

Two fallbacks (like for the actions dir) may still be fine, but we're now supporting so many config locations that a loop is much shorter, and the various locations are much easier to see.

For consistency, also apply this to the actions dir lookup, although it's less of a problem there.

* Refactoring: Apply the first default for `TODOTXT_CFG_FILE` also in the loop

There's no need to handle this separately; either an exported environment variable already exists, or it got assigned via `-d CONFIG_FILE`, or the `test -e` will fail on an empty (or bad non-existing) value, and we enter the fallback loop.

* Mention the actual config file locations in the help for `-d`

Extract the list of default locations into a `configFileLocations` array and join that into a string that then gets interpolated into the help output for `-d` (that so far only mentioned the first default location).

* Comments: Don't favor a single config location in the requirement

* Documentation: Mention `~/.todo/config` as just one of the defaults

As there are several others, now shown in the help for `-d`.

I don't want to duplicate the entire list here, as there's a high risk of those lists diverging.

Fixes #342
2021-08-03 18:06:10 -05:00
Paul Mansfield
353db49814 Allow multiple priorities on single run (#346)
Uses current priority logic and option tests just running multiple times until item and priority pairs are exhausted or stops on first error.

Tests for multiple priorities, multiple re-prioritization and a couple of errors.
2021-08-03 18:03:20 -05:00
Ingo Karkat
f884f73297 TESTSFIX: t0000-config.sh may unintentionally pick up existing user config in $XDG_CONFIG_HOME/todo/config (#349)
* TESTSFIX: t0000-config.sh may unintentionally pick up existing user config in `$XDG_CONFIG_HOME/todo/config`

This corner case was missed when the XDG alternative config location was introduced, likely because the variable isn't set by default on Ubuntu or Mac OS, and none of the developers had a config there.

HOME is already redirected to the current working directory; as `XDG_CONFIG_HOME` is just a config alternative that has a fallback to `$HOME/.config`, simply unset it.

Fixes #347

* TESTSFIX: User add-ons that override built-in actions may break tests

If `TODO_ACTIONS_DIR` is already defined, the defaulting in todo.sh are skipped. The user may have custom add-ons that override built-in actions; any incompatible behavior would negatively affect the tests then.

By setting the variable to the first default location, we avoid this interference.
2021-08-03 17:57:31 -05:00
Ali Karbassi
e4103a8e23 Add Ubuntu 18 to tests (#351) 2021-08-03 17:53:35 -05:00
Ingo Karkat
77c1f34609 Documentation: Clarify basic regexp syntax of TERM in todo.sh list (#335)
* Documentation: Clarify basic regexp syntax of TERM in todo.sh list

And give hints about escaping.
Issue raised by https://github.com/todotxt/todo.txt-cli/discussions/334

* Documentation: Correct quoting in todo.sh help list

Though the double quoting doesn't do harm when the single backslash is followed by the | character (\| is no valid escape sequence), it's technically more correct to use single quotes, and also is more in line with the quoting advice given directly below it.
2021-03-13 13:32:40 -06:00
Ali Karbassi
71b3991daf Gitter chat to Github Discussions 2020-12-11 13:07:11 -06:00
Tyler Szabo
6188785e48 Fix tests on Debian (#326)
Corrected an additional regex to match tags on mawk 1.3.3 in Debian
2020-12-04 15:32:53 -06:00
Daniel M
797604e2b6 Fixed tests on ubuntu #317 (#322)
Tests failed on Ubuntu due to regular expression - corrected regex and now it works.
2020-11-20 20:33:06 -06:00
Oleg Zaytsev
7bac9d861b s/GREY/GRAY/ in todo.cfg (#320)
`GRAY` is the spelling used in every other place in this repository.
2020-10-22 00:36:05 -05:00
Ali Karbassi
ae1f241887 Update zip file creation to use native zip command. (#319)
Fixes #318
2020-09-10 13:12:04 -05:00
Ali Karbassi
7f3ad0d361 Update changelog. Tag v2.12.0 2020-08-11 23:36:30 -05:00
Ali Karbassi
ce38bea819 Add note in README to copy config file (#316)
Fixes #252 (by adding a note to README)
2020-08-11 23:03:05 -05:00
Jonas Stehli
da45b0f637 Change Arch Linux AUR link (#310)
there is a second version that is much more popular, why not link that one?
2020-06-09 17:05:06 -05:00
Luilver
ddc560c6b9 Fix #306 (#307) 2020-05-25 10:41:09 -05:00
Ingo Karkat
bf1bf1ae84 ENH: Allow to customize what can be before / inside / after +project and @context (#271)
* ENH: Allow to customize what can be before / inside / after +project and @context

I noticed that todo.sh mistakenly picks up some random stuff as projects and contexts. The todo.txt specification is very lenient in what makes those (allowing any length of non-whitespace characters), but in practice, every user has its own idea of the set of used words. This change allows (expert) users to tweak the pattern (via TODOTXT_SIGIL_VALID_PATTERN), to be able to reduce the amount of "false positives" that listproj and listcon show.
Additionally, there's a (mainly unspecified) extension mechanism in the form of key:value, which often is used to implement custom "markers", like w:something to make a task blocked and waiting for "something". It would be nice to be able to refer to @contexts (and maybe also +projects), but the default syntax (which requires whitespace around those) doesn't allow it, and these context then don't show up in searches, which is unfortunate. The added TODOTXT_SIGIL_BEFORE_PATTERN and TODOTXT_SIGIL_AFTER_PATTERN allow to tweak the syntax to accommodate this.
The implementation just exchanges grep with a corresponding sed pipeline step, which shouldn't negatively affect the performance at all (as sed is one of the main commands used thoughout the script), but which allows for the additional matching flexibility.

* FIX: Compatibility: sed \? multi not supported on MacOS

Use the POSIX \{0,1\} instead.

* FIX: Compatibility: sed \| multi not supported on MacOS

Concatenate both alternatives as optional matches; this is only an approximation but satisfies the test case here. It would probably be better if the entire sed code used extended regular expression syntax (-E) instead of basic ones (-e), but that change would also affect all add-ons. As this is an optional customization feature, uses who really need this either also have to work around, or supply a GNU sed port on MacOS.

* FIX: Compatibility: sed \+ multi not supported on MacOS

Use the POSIX \{1,\} instead.

Co-authored-by: Ali Karbassi <ali@karbassi.com>
2020-03-30 18:13:29 -05:00
Ingo Karkat
177432ec94 ENH: Enable file completion for add-on actions via _todo_file{1,2,3}_actions (#270)
* Refactoring: Use regular expression match instead of case globbing for actions taking a SRC argument

Making it consistent with the test for MOVE_COMMAND_PATTERN, and allowing to extend the pattern with custom actions in the future.

* Refactoring: Move the anchoring and grouping out of MOVE_COMMAND_PATTERN

So that additional (custom) add-on actions can be configured in the future.

* ENH: Enable file completion for add-on actions via _todo_file{1,2,3}_actions

Allowing completion of todo files directly after the add-on action (1), with one (2) / two (3) arguments in between. This should handle most cases.

In order to configure the add-on completion, the corresponding configuration variable has to be defined in the user's shell (e.g. via ~/.bashrc):
_todo_file1_actions='myaction|anotheraction'
2020-03-30 17:44:50 -05:00
Ali Karbassi
abdbe5371c Clean up files (#302) 2020-03-29 21:26:56 -05:00
Ali Karbassi
1378c97d80 Allow setting of bash completion path (#301)
Fixes #242
2020-03-29 14:53:42 -05:00
85
3d308a6f79 Minimal config file / default filenames (todo.txt, done.txt, report.txt) (#289)
* Set default files name

* Add test for minimal config file
2020-03-29 14:33:16 -05:00
LeLobster
c6d290b5fb Fix the Makefile to work with the install instructions in the README (#259)
* Fix the Makefile to work with the install instructions in the README

* Put back DEST_DIR

* Add simple ifdef checks to see if the user has set custom dirs via the commandline

* Update README to match Makefile
2020-03-29 14:29:40 -05:00
Tiziano Zito
355166da67 Highlighting of dates, metadata and item numbers (#264)
* add highlighting of dates, item numbers, and metadata

* add test for highlighting of dates, item numbers, and metadata

Co-authored-by: Ali Karbassi <ali@karbassi.com>
2020-03-29 14:20:06 -05:00
Ingo Karkat
20317b6321 Refactoring: Extract the many complex sed arguments into sedTransformations array and move the comments closer (#273)
There's too much distance between the comments that describe the various transformations that are done on the referenced task, and the corresponding sed expressions.
By using a local Bash array, we can collect the arguments and have the comments close by.

Co-authored-by: Ali Karbassi <ali@karbassi.com>
2020-03-29 12:27:25 -05:00
Ingo Karkat
861ad5ec41 Fix/noeol (#295)
* Handle missing EOL in todo.txt

This can happen easily with certain editors (such as Mousepad) that do not automatically add a newline character at the end of a file.
In _addto(), ensure a trailing newline via sed (taken from https://unix.stackexchange.com/a/31955/18876).

Fixes #294

* Tests: Add basic coverage of move

* Handle missing EOL in todo.txt for move, too

This can happen easily with certain editors (such as Mousepad) that do not automatically add a newline character at the end of a file.

* Refactoring: Extract fixMissingEndOfLine()

* FIX: Compatibility: sed \+ multi not supported on MacOS

Use the POSIX \{1,\} instead.

Co-authored-by: Ali Karbassi <ali@karbassi.com>
2020-03-29 12:03:33 -05:00
Ali Karbassi
13b451b81d Add support for macOS catalina date (#300)
Co-authored-by: Benoit Sagols <benoit.sagols@gmail.com>
2020-03-29 10:27:43 -05:00
Ali Karbassi
34d31ef45a Fix macOS 10.15 date test (#299)
- In macOS 10.15, the `date` command adds a "-R" flag. This can be seen in the default error display. Since the flags have changed, the grep command to find which version of macOS date binary we have. Because of this change, we need to do our own check for macOS 10.15.

- Remove windows from the github actions as this tool is not for Windows, currently.
2020-03-27 21:32:29 -05:00
Ali Karbassi
8901db8bdd Add multiple environments (#298) 2020-03-27 20:13:02 -05:00
Ali Karbassi
c9540122e6 Create GitHub action to run tests (#296)
* Create GitHub Action
* Remove travis yml to move to github actions.
* Update CI badge in README
2020-03-27 19:44:45 -05:00
kh80
d589fd0570 Add 'done' option as alias of 'do' (#169) 2018-04-11 13:34:19 -05:00
tpikonen
7a30199fe0 Cleanup (#247)
- Fixed: Reduce shellcheck warnings.
- Fixed: Remove trailing whitespace.
- Fixed: Double quote to prevent globbing and word splitting. [SC2086]
- Fixed: Invalid flags are not handled. [SC2220]
- Fixed: Cleaned up string replaces.
2018-04-04 19:33:09 -05:00
tpikonen
867ade5701 new: Add default priority variable TODOTXT_PRIORITY_ON_ADD. (#246)
Adds the config / env variable `TODOTXT_PRIORITY_ON_ADD`, which when set to one of the capital letters `A` to `Z` is given as a priority to a new task, if a priority is not given on command line.
2018-03-28 16:58:48 -05:00
Anton Ermolenko
14f5de1579 interpreter reference update to be portable (#160) 2018-03-28 16:09:07 -05:00
Guilherme Reis
7ec2a1263e Read the task's name and uses as default (#249)
Read the task's name and uses as default, so the user can read the previous task's name.

Thanks @guifeliper
2018-03-26 13:23:27 -05:00
Ali Karbassi
e40e76fb07 Release version 2.11.0 (#236)
Read CHANGELOG.md
v2.11.0
2018-03-26 11:09:35 -05:00
AJ Jordan
8b35c5fdae Set the executable bit when preparing releases (#156) 2018-03-26 10:51:33 -05:00
Adam Goldsmith
8ec3bab53c Make Makefile more standard (#239) 2017-12-04 08:57:27 -06:00
R. Francis Smith
4a7626a8cb fixed typo within Contributing section (#240) 2017-11-20 14:42:31 -06:00
Ali Karbassi
9c390a84cb fix: Update url in code. (#237) 2017-10-23 14:20:37 -05:00
Ali Karbassi
643dafeafd Create PULL_REQUEST_TEMPLATE.md (#234) 2017-10-23 14:18:46 -05:00
Ali Karbassi
8d3ea7971b change: Moved USAGE out of README. (#238)
The usage was making the README extremely long and unruly. Let's move it
out to it's own file so it can be updated quickly as well.
2017-10-17 13:00:42 -05:00
Alberto Fanjul
64f9c8295d new: Configurable config dir (#223)
- Configurable config dir
- Describe Makefile options
2017-10-16 10:01:47 -05:00
Simon M
b7fb2ac2be fix: Make text input more user-friendly (#208)
The use of the default read command will not allow the user to use arrow keys and shortcuts to enter the data when doing a replace or entering any input, which can be frustrating. Besides, backslashed are interpreted and can be mangled.

- Using the `-e` option will trigger the use of the readline library: you can then, as expected in bash, use the arrow keys and all shortcuts to move around the line before pressing enter.
- Using the `-r` option will prevent the interpretation of the "" and insert them as typed, useful when pasting code:
2017-10-13 16:32:13 -05:00
Ali Karbassi
1d64ba59ca Create ISSUE_TEMPLATE.md (#235) 2017-10-11 10:19:09 -05:00
Ali Karbassi
4df0f15ad8 fix: Use git tags for version numbers. (#233) 2017-10-11 10:10:59 -05:00
Gutierri Barboza
a43d664fe9 README (#219)
- Updated badges, links, and install instructions.
- Added usage, flags, and commands.
2017-10-10 14:07:36 -05:00