diff --git a/CODE_OF_CONDUCT.md b/.github/CODE_OF_CONDUCT.md similarity index 100% rename from CODE_OF_CONDUCT.md rename to .github/CODE_OF_CONDUCT.md diff --git a/CONTRIBUTING.md b/.github/CONTRIBUTING.md similarity index 99% rename from CONTRIBUTING.md rename to .github/CONTRIBUTING.md index 415b49d..55b1d2c 100644 --- a/CONTRIBUTING.md +++ b/.github/CONTRIBUTING.md @@ -93,5 +93,5 @@ The core team looks at Pull Requests on a regular basis. After feedback has been You can chat with the core team on https://gitter.im/todotxt/. [todo.txt]: https://github.com/todotxt/ -[Code of Conduct]: /CODE_OF_CONDUCT.md +[Code of Conduct]: ./CODE_OF_CONDUCT.md [Gitter.im]: https://gitter.im/todotxt/ diff --git a/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md similarity index 100% rename from ISSUE_TEMPLATE.md rename to .github/ISSUE_TEMPLATE.md diff --git a/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md similarity index 88% rename from PULL_REQUEST_TEMPLATE.md rename to .github/PULL_REQUEST_TEMPLATE.md index 114b94a..68e6fd3 100644 --- a/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -3,7 +3,7 @@ - [ ] Fork [the repository](https://github.com/todotxt/todo.txt-cli) and create your branch from `master`. - [ ] If you've added code that should be tested, add tests! - [ ] Ensure the test suite passes. -- [ ] Format your code with [ShellCheck](https://www.shellcheck.net/). +- [ ] Lint your code with [ShellCheck](https://www.shellcheck.net/). - [ ] Include a human-readable description of what the pull request is trying to accomplish. - [ ] Steps for the reviewer(s) on how they can manually QA the changes. - [ ] Have a `fixes #XX` reference to the issue that this pull request fixes. diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml new file mode 100644 index 0000000..4b173a0 --- /dev/null +++ b/.github/workflows/tests.yml @@ -0,0 +1,20 @@ +name: CI + +on: + push: + branches: [ master ] + pull_request: + branches: [ master ] + +jobs: + test: + strategy: + matrix: + platform: [ubuntu-20.04, macos-11] + runs-on: ${{ matrix.platform }} + steps: + - uses: actions/checkout@v2 + - run: make + - run: make dist + - run: make test + diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 3295211..0000000 --- a/.travis.yml +++ /dev/null @@ -1,6 +0,0 @@ -# Note: "shell" would be more appropriate -language: python - -install: make dist && sudo make install - -script: make test diff --git a/CHANGELOG.md b/CHANGELOG.md index 2035bfd..e10522b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,4 +1,5 @@ # Changelog + All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) @@ -6,27 +7,53 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. ## [Unreleased] -## [2.11.0] - 2018-03-26 -### Added -- Added support for `$XDG_CONFIG_HOME` config file/actions location -- Created [CODE_OF_CONDUCT.md](/CODE_OF_CONDUCT.md) ([#217]) -- Created [CHANGELOG.md](/CHANGELOG.md) ([#218]) +## [2.12.0] - 2020-08-11 +### Added + +- Added default priority variable `TODOTXT_PRIORITY_ON_ADD` ([#246]) +- Added `done` option as alias of `do` ([#169]) +- Added macOS 10.15.x support ([#300]) +- Highlighting of dates, metadata and item numbers ([#264]) +- Minimal config file / default filenames (todo.txt, done.txt, report.txt) ([#289]) +- Enable file completion for add-on actions via `_todo_file{1,2,3}_actions` ([#270]) +- Allow to customize what can be before / inside / after `+project` and `@context` ([#271]) ### Changed + +- Read the task's name and uses as default ([#249]) +- Updated interpreter reference to use environment variable ([#160]) +- Allow setting of bash completion path ([#301]) + +### Fixes + +- Fixed no end-of-line bug. Supports todos with no end-of-line. ([#295]) + +## [2.11.0] - 2018-03-26 + +### Added + +- Added support for `$XDG_CONFIG_HOME` config file/actions location +- Created [CODE_OF_CONDUCT.md](.github/CODE_OF_CONDUCT.md) ([#217]) +- Created [CHANGELOG.md](/CHANGELOG.md) ([#218]) + +### Changed + - Updated `add` command to accept lowercase priority ([#230]) - Clean tests and version file in Makefile. Don't ignore errors in tests. - Updated [README.md](/README.md) ([#219]) - Update Downloads links to point at the Releases page ([#228]) - Set the executable bit when preparing releases ([#156]) -### Fixes +### Fixes + - Update links to use https - Suppress todo.sh error messages when invoked during completion ([#8]) - ## [2.10.0] - 2013-12-06 + ### Added + - Enable term filtering for listcon. - Add make install command. - Enable use of global config file in `/etc/todo/config`. `make install` installs a global config file. @@ -39,37 +66,45 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. - Place add-ons in subfolders (for easier git clone). ### Changed + - Improve code commenting/documentation. - Refactor code for speed/better organization. - Improve test coverage and test library. ### Removed + - Removed add date from line completion, ie, `todo.sh ls 10[tab]`. ### Fixed + - Properly replace date when replacing task with priority and date. - Handle `-h`, `shorthelp`, and `help` when a Fatal Error happens. - Fix `todo_completion` problem with Bash 3.1. ## [2.9.0] - 2012-04-08 + ### Added + - Added tab auto-completion of projects and contexts from `todo.txt` and `done.txt`. Type `@` or `+` while entering a task. - Added new listaddons command displays installed addons. - List priorities within a range using listpri. For example, to see tasks prioritized A-B, use `todo.sh listpri A-B` ### Fixed + - Fixed various cosmetic issues, bugs, and added developer test library enhancements. - ## [2.8.0] - 2011-09-13 + ### Added + - `listpri`/`lsp` now filters by term. For example, `todo.sh lsp A book` will only return tasks prioritized `A` with the word book in them. - Added support for todo directory paths with spaces in them. -- Tasks with priority included and auto prepend date on (`-t`) get the date where expected. +- Tasks with priority included and auto prepend date on (`-t`) get the date where expected. - Smarter action completion messaging: `do`, `pri`, and `depri` all let you know if a task is already done, prioritized, or deprioritized. - Made more parameters available to offer more control to custom actions (`-c`, `-A`, `-N`, `-T`) ### Changed + - Improved portability for Dropbox or USB key users. If not specified, todo.sh checks for a config file in its own directory; default todo.txt location is todo.sh's directory. - Improved script performance thanks to optimized code - Exposed `cleaninput()` for use in addons @@ -80,6 +115,7 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. - Cleaner, simpler, modernized, optimized code ### Fixed + - Custom action output no longer prefaced by `TODO:` so it's easier to see when the core script vs. addon is performing an action - `listpri` complains if specified priority is invalid - Don't abort task listing when items contain certain escape sequences (`\c \033`) @@ -87,31 +123,37 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. - Don't delete `|` (pipe) from task input - `-+` and `-@` no longer break task coloring if context or project appears at the end of the line - ## [2.7.0] - 2010-08-03 + ### Added + - Added generalization of the _PRI_X_ color support to all priorities -- Added highlighting of done, but not yet archived tasks via *COLOR_DONE* +- Added highlighting of done, but not yet archived tasks via _COLOR_DONE_ - Color map (BLACK, ...) now supports spaces in the color definitions, making it possible to override the default ANSI escape codes with e.g. Conky tags (`${color black}`) ### Changed + - Cleanup: help messages, consistent output messages - Exporting `die()` function for use in custom commands - `prepend` and `replace` actions keep prepended date, `append` considers sentence delimiters - Tests: several regression tests added ## [2.6.0] - 2010-05-11 + ### Added + - Added a case for the fixed replace command. ### Changed + - Changed odd tabs to spaces. -- Faster help/useage document outputs. +- Faster help/usage document outputs. - Consolidated `TODOTXT_VERBOSE` tests. - Refactored various add functionality to one function. - Updated `_list()` output to match updated `addto`. ### Fixed + - Quoting regexp to parse properly. - Fixed erroneous hide/show comments. - Correctly fixed regexp quoting issue for bash v3.1.x and v3.2.x. @@ -120,7 +162,9 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. - Fixed bug for replace command. ## [2.5.0] - 2010-05-05 + ### Added + - Support use of `$HOME/.todo/` for all todo.sh configuration - Added new multiple do capability to help message - Added option to disable final filter @@ -130,42 +174,49 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. - Added some additional mappings, plus a project context ### Changed + - Added 'silent' to a bunch of calls ### Fixed + - Fixing prepend and priority issue. - Replace with `priority` set - Multiple `do` items - `prepend` not correct on prioritized tasks -- Invalid date range. Changed regex `[ -~]` to `[ ~-]`. +- Invalid date range. Changed regex `[ -~]` to `[ ~-]`. - `do`: no safeguard to `do` twice. Tests item is not marked done before attempting to mark item as "done". - Fixed `add` does not escape line breaks - `append` and `replace` unexpected behavior if there's an `&` in task (even in quotes) - Tasks whose `ID` begins with `0` ought to be ignored. - Fixed auto-complete function name for contexts - ## [2.4.0] - 2009-05-11 + ### Added + - Added support for `TODOTXT_FINAL_FILTER` to provide a final custom list filter. - Added support for custom sorting (can set in `todo.cfg`) - Added parameterize for `.todo.actions.d` directory ### Removed + - Removed annoying trailing space on `pri` tasks - Don't set colors in default `todo.cfg`. - Don't set sort command in default `todo.cfg`. ### Fixed + - `listcon` and `listproj` now work correctly on Mac OS X 10.5 - `pri` accepted priorities of more than a single letter -- Support commands combination for `TODOTXT_SORT_COMMAND`; e.g. piped commands can be used: `export TODOTXT_SORT_COMMAND=" env LC_COLLATE=C sort -f -k2 - | grep -m 10 ."` +- Support commands combination for `TODOTXT_SORT_COMMAND`; e.g. piped commands can be used: `export TODOTXT_SORT_COMMAND=" env LC_COLLATE=C sort -f -k2 - | grep -m 10 ."` - Replace now echoes old item AND new item, like it used to. - `depri` no longer wipes out tasks with more than just the priority in parentheses - Now throws an error if you try to prioritize with more than one letter, ie, `todo.sh pri AA` doesn't work any more. ## [2.3.0] - 2009-04-02 + ### Added + - Added hide priority, context, and projects options now enabled `-P`, `-@` and `-+` - Enabled recursive call of todo.sh from add-ons - Exported variables for use in add-ons @@ -174,34 +225,40 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. - Added Makefile dist infrastructure for versioned releases in Downloads area on GitHub ### Changed + - Separated `_list` function for reuse by various versions of list command to reduce duplicate code - Set `ls` as the default action - ## [2.2.0] - 2009-03-?? + ### Fixed + - For awhile here during the GitHub transition, we stripped the version number from todo.sh and updated it kind of willy-nilly, so we're back-versioning all unversioned copies v 2.2. - ## [2.1.0] - 2009-02-23 + ### Added + - Added "pluggability" with `~/.todo.actions.d/` support (via [Tammy and Ed](http://tech.groups.yahoo.com/group/todotxt/message/1739)) - Added `-t` param, off by default. When specified, it automatically prepends the current date to new todo's on add - Searches for more Unix-y `~/.todo.cfg` if `~/todo.cfg` doesn't exist (via [Ed](http://tech.groups.yahoo.com/group/todotxt/message/1767)) ### Fixed + - Corrected "ambiguous redirect" bug with done file (via [Jeff](http://tech.groups.yahoo.com/group/todotxt/message/1764)) - Corrected usage and help message with new params - Corrected config file miscomment about colors - ## [2.0.1] - 2009-02-17 + ### Fixed + - Restored `-d` parameter functionality broken in 2.0 (d'oh, thanks Jason, you made the changelog! ) - ## [2.0.0] - 2009-02-17 + ### Added + - Added `addto [DEST] "Text to add"` will append text to any file in the todo directory, like `ideas.txt` or `maybelater.txt`. - Added `mv # [DEST]` will move a task from `todo.txt` to another file `[DEST]` in the todo directory, like if you decide your `"Learn French"` task should go into your `maybelater.txt` file. - `depri #` removes priority from a task. @@ -212,76 +269,92 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. - Auto-archive on task completion is now on by default; can be turned off with `-a` parameter. ### Changed + - Separated config file into a non hidden dot file. ### Fixed + - Better error handling throughout for all commands. - Archive now defrags the file (removes blank lines; see line preservation option.) - Using `/bin/bash` instead of `/bin/sh` - ## [1.7.3] - 2006-07-29 + ### Added + - Added short action aliases – `add/a`, `list/ls`, `listpri/lsp`, `listall/lsa`, `prepend/prep`, `append/app`, `del/rm` - ## [1.7.2] - 2006-07-28 + ### Added + - `listpri` automatically capitalizes lowercase priorities - `listpri` now displays friendly error message, and the # of tasks returned in verbose mode ### Changed + - `do` action removes priority from task automatically Update: ### Fixed + - Actions are now case-insensitive (ie, `todo.sh Add` will work) - ## [1.7.1] - 2006-07-21 + ### Changed + - I'm a big dummy and didn't keep track of what I fixed here. Sorry! - ## [1.7.0] - 2006-07-19 + ### Added + - Interactive `add`, `append`, `prepend`, and `replace` (tx, Ben!) - Action `listall` displays tasks from both todo.txt and done.txt - Option `-f` forces delete action and disables interactive input (for todobot.pl) - Option `-h` displays full help message. ### Deprecated + - Option `-q` deprecated; Use `-v` to turn on verbose mode ### Changed + - A very short version of usage message displays by default instead of the long version. - Comment in info about `.todo` file being required ### Fixed + - No colors display for done tasks (tx, Tanja!) - Sort is now case-insensitive (tx, Lonnie!) - ## [1.6.3] - 2006-07-06 + ### Added + - Line numbers now padded, up to 100 characters. (tx, Tanja!) - ## [1.6.2] - 2006-07-05 + ### Fixed + - Windows config files with spaces now work (tx Ron) - ## [1.6.1] - 2006-07-05 + ### Changed + - The default location of your `.todo` file is now `$HOME/.todo` ### Fixed + - No colors mode (`-p`) now works as expected - ## [1.6.0] - 2006-07-04 + ### Added + - Action `prepend` adds text to an item at the beginning of the line. - Configuration file is now separated from script into `.todo` file - Specify a config file other than `.todo` using the `-d` option @@ -289,89 +362,107 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. - Option `-V` shows version and license information. ### Changed + - The option to turn off colors is now `-p` (no longer `-nc` as in 1.5.2) - ## [1.5.2] - 2006-06-26 + ### Fixed + - Items that start with `x ` (an x with a space after) are archived now to avoid lines that start with a word like `xander` from being archived. (tx, Tannie!) - Report now only archives items that start with `x ` as well. - ## [1.5.1] - 2006-06-26 + ### Fixed + - Items with an `x` in them at all were being deleted on archive with 1.5; all fixed now. - ## [1.5.0] - 2006-06-24 + ### Added + - Option to turn off colors (to avoid characters in piped text files or IM bot), ie `todo.sh -nc [COMMAND]` - A date is added to a completed todo, ie `x 2006-06-24` (tx SETH) - Action `remdup` removes exact duplicate lines from todo.txt (tx Tannie) - Action `del` removes any blank lines from todo.txt (tx Tannie) ### Changed + - Using `sed -i` instead of copying tmp file (tx Tannie) ### Fixed + - Colors show in OS/X 10.4 (tx SETH & misha) - ## [1.4.0] - 2006-06-17 + ### Added + - Tasks are color-coded by priority in Cygwin (Thanks, Abraham, Manuel and Luis!) ### Changed + - Switched endless `if-then` to a `case` statement, and tightened up `wc -l` regex. (Thanks, Sash!) ### Fixed + - If you `replace`/`do`/`append` to a non-existent task, your todo.txt is no longer overwritten and the error is handled gracefully. (Thanks, Scott!) - ## [1.3.0] - 2006-05-29 + ### Added + - Displays the number of newly added todo (Thanks, Amy!) - Confirms whether or not you really want to delete a todo - Displays success messages and confirmations on `append`, `replace`, `do`, etc. - Added licensing information in comments. GPL, baby! ### Changed + - Alphabetized command workflow in if/then construction - Tightened up `sed` commands, removed unnecessary `grep`s and `cat`s (Thanks, Sash!) - Stripped whitespace around number lines from wc results ### Removed + - Removed filenames from `report.txt` format, for easier graphing or Excel imports. ### Fixed + - Todos are now sorted alphabetically when listed by a term. (ie: `todo list flowers) - ## [1.2.0] - 2006-05-15 + ### Added -- `list` is case insenstive. ie, `todo list Mac` will match lines with "mac" and "Mac" + +- `list` is case insensitive. ie, `todo list Mac` will match lines with "mac" and "Mac" ### Changed + - `todo list` matches multiple [TERM]s. ie, `todo list mac offline` will match all lines that contain the words "mac" and "offline" - `repri` and `pri` actions combined into `pri` action (Thanks Mike!) - Quotes no longer required with `add` and `replace` (Thanks Karl!) - Any priority added to a todo must be uppercase to preserve sort order, enforced now. ie `todo pri 1 a` will return a usage error. ### Fixed + - File "sanity checks" and cleanup function, test script and various fantastic stylistic improvements added. Extra big thanks to Karl! - ## [1.1.0] - 2006-05-12 + ### Added + - Supports file paths with spaces (ie `C:\Documents and Settings\gina\todo.txt`) - ## 1.0.0 - 2006-05-11 + ### Added + - Consolidated into one master script with usage notes and released. - -[Unreleased]: https://github.com/todotxt/todo.txt-cli/compare/v2.11.0...HEAD +[Unreleased]: https://github.com/todotxt/todo.txt-cli/compare/v2.12.0...HEAD +[2.12.0]: https://github.com/todotxt/todo.txt-cli/compare/v2.11.0...v2.12.0 [2.11.0]: https://github.com/todotxt/todo.txt-cli/compare/v2.10.0...v2.11.0 [2.10.0]: https://github.com/todotxt/todo.txt-cli/compare/v2.9.0...v2.10.0 [2.9.0]: https://github.com/todotxt/todo.txt-cli/compare/v2.8.0...v2.9.0 @@ -400,11 +491,21 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0. [1.3.0]: https://github.com/todotxt/todo.txt-cli/compare/v1.2.0...v1.3.0 [1.2.0]: https://github.com/todotxt/todo.txt-cli/compare/v1.1.0...v1.2.0 [1.1.0]: https://github.com/todotxt/todo.txt-cli/compare/v1.0.0...v1.1.0 - -[#230]: https://github.com/todotxt/todo.txt-cli/pull/230 -[#228]: https://github.com/todotxt/todo.txt-cli/pull/228 -[#219]: https://github.com/todotxt/todo.txt-cli/pull/219 -[#218]: https://github.com/todotxt/todo.txt-cli/pull/218 -[#217]: https://github.com/todotxt/todo.txt-cli/pull/217 -[#156]: https://github.com/todotxt/todo.txt-cli/pull/156 [#8]: https://github.com/todotxt/todo.txt-cli/pull/8 +[#156]: https://github.com/todotxt/todo.txt-cli/pull/156 +[#160]: https://github.com/todotxt/todo.txt-cli/pull/160 +[#169]: https://github.com/todotxt/todo.txt-cli/pull/169 +[#217]: https://github.com/todotxt/todo.txt-cli/pull/217 +[#218]: https://github.com/todotxt/todo.txt-cli/pull/218 +[#219]: https://github.com/todotxt/todo.txt-cli/pull/219 +[#228]: https://github.com/todotxt/todo.txt-cli/pull/228 +[#230]: https://github.com/todotxt/todo.txt-cli/pull/230 +[#246]: https://github.com/todotxt/todo.txt-cli/pull/246 +[#249]: https://github.com/todotxt/todo.txt-cli/pull/249 +[#264]: https://github.com/todotxt/todo.txt-cli/pull/264 +[#270]: https://github.com/todotxt/todo.txt-cli/pull/270 +[#271]: https://github.com/todotxt/todo.txt-cli/pull/271 +[#289]: https://github.com/todotxt/todo.txt-cli/pull/289 +[#295]: https://github.com/todotxt/todo.txt-cli/pull/295 +[#300]: https://github.com/todotxt/todo.txt-cli/pull/300 +[#301]: https://github.com/todotxt/todo.txt-cli/pull/301 diff --git a/GEN-VERSION-FILE b/GEN-VERSION-FILE index 7821d60..6308d3e 100755 --- a/GEN-VERSION-FILE +++ b/GEN-VERSION-FILE @@ -34,5 +34,3 @@ test "$VN" = "$VC" || { echo >&2 "VERSION=$VN" echo "VERSION=$VN" >$VF } - - diff --git a/LICENSE b/LICENSE index e72bfdd..f288702 100644 --- a/LICENSE +++ b/LICENSE @@ -671,4 +671,4 @@ into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read -. \ No newline at end of file +. diff --git a/Makefile b/Makefile index 828a90d..b6056bc 100644 --- a/Makefile +++ b/Makefile @@ -10,13 +10,28 @@ INSTALL_DATA = $(INSTALL) -m 644 prefix = /usr/local +# ifdef check allows the user to pass custom dirs +# as per the README + # The directory to install todo.sh in. -bindir = $(prefix)/bin +ifdef INSTALL_DIR + bindir = $(INSTALL_DIR) +else + bindir = $(prefix)/bin +endif # The directory to install the config file in. -sysconfdir = $(prefix)/etc +ifdef CONFIG_DIR + sysconfdir = $(CONFIG_DIR) +else + sysconfdir = $(prefix)/etc +endif -datarootdir = $(prefix)/share +ifdef BASH_COMPLETION + datarootdir = $(BASH_COMPLETION) +else + datarootdir = $(prefix)/share/bash_completion.d +endif # Dynamically detect/generate version file as necessary # This file will define a variable called VERSION. @@ -37,9 +52,9 @@ dist: $(DISTFILES) todo.sh cp -f $(DISTFILES) $(DISTNAME)/ sed -e 's/@DEV_VERSION@/'$(VERSION)'/' todo.sh > $(DISTNAME)/todo.sh chmod +x $(DISTNAME)/todo.sh - tar cf $(DISTNAME).tar $(DISTNAME)/ + tar cf $(DISTNAME).tar $(DISTNAME) gzip -f -9 $(DISTNAME).tar - zip -9r $(DISTNAME).zip $(DISTNAME)/ + zip -r -9 $(DISTNAME).zip $(DISTNAME) rm -r $(DISTNAME) .PHONY: clean @@ -49,22 +64,22 @@ clean: test-pre-clean install: installdirs $(INSTALL_PROGRAM) todo.sh $(DESTDIR)$(bindir)/todo.sh - $(INSTALL_DATA) todo_completion $(DESTDIR)$(datarootdir)/bash_completion.d/todo + $(INSTALL_DATA) todo_completion $(DESTDIR)$(datarootdir)/todo [ -e $(DESTDIR)$(sysconfdir)/todo/config ] || \ sed "s/^\(export[ \t]*TODO_DIR=\).*/\1~\/.todo/" todo.cfg > $(DESTDIR)$(sysconfdir)/todo/config uninstall: rm -f $(DESTDIR)$(bindir)/todo.sh - rm -f $(DESTDIR)$(datarootdir)/bash_completion.d/todo + rm -f $(DESTDIR)$(datarootdir)/todo rm -f $(DESTDIR)$(sysconfdir)/todo/config - rmdir $(DESTDIR)$(datarootdir)/bash_completion.d + rmdir $(DESTDIR)$(datarootdir) rmdir $(DESTDIR)$(sysconfdir)/todo installdirs: mkdir -p $(DESTDIR)$(bindir) \ $(DESTDIR)$(sysconfdir)/todo \ - $(DESTDIR)$(datarootdir)/bash_completion.d + $(DESTDIR)$(datarootdir) # # Testing @@ -83,6 +98,7 @@ $(TESTS): test-pre-clean test: aggregate-results tests/aggregate-results.sh tests/test-results/t*-* rm -rf tests/test-results - + # Force tests to get run every time .PHONY: test test-pre-clean aggregate-results $(TESTS) + diff --git a/README.md b/README.md index 79c0cca..925afc8 100644 --- a/README.md +++ b/README.md @@ -2,8 +2,8 @@ > A simple and extensible shell script for managing your todo.txt file. -[![Build Status](https://travis-ci.org/todotxt/todo.txt-cli.svg?branch=master)](https://travis-ci.org/todotxt/todo.txt-cli) -[![GitHub issues](https://img.shields.io/github/issues/todotxt/todo.txt-cli.svg)](https://github.com/todotxt/todo.txt-cli/issues) +![CI](https://github.com/todotxt/todo.txt-cli/workflows/CI/badge.svg) +[![GitHub issues](https://img.shields.io/github/issues/todotxt/todo.txt-cli.svg)](https://github.com/todotxt/todo.txt-cli/issues) [![GitHub forks](https://img.shields.io/github/forks/todotxt/todo.txt-cli.svg)](https://github.com/todotxt/todo.txt-cli/network) [![GitHub stars](https://img.shields.io/github/stars/todotxt/todo.txt-cli.svg)](https://github.com/todotxt/todo.txt-cli/stargazers) [![GitHub license](https://img.shields.io/github/license/todotxt/todo.txt-cli.svg)](https://raw.githubusercontent.com/todotxt/todo.txt-cli/master/LICENSE) @@ -11,7 +11,7 @@ ![gif](./.github/example.gif) -*Read our [contributing guide](CONTRIBUTING.md) if you're looking to contribute (issues/PRs/etc).* +*Read our [contributing guide][CONTRIBUTING] if you're looking to contribute (issues/PRs/etc).* ## Installation @@ -23,8 +23,16 @@ Download the latest stable [release][release] for use on your desktop or server. ```shell brew install todo-txt + +# For macOS on x86 CPU +cp -n /usr/local/opt/todo-txt/todo.cfg ~/.todo.cfg + +# For macOS on arm CPU +cp -n /opt/homebrew/opt/todo-txt/todo.cfg ~/.todo.cfg ``` +**Note**: The `-n` flag for `cp` makes sure you do not overwrite an existing file. + ### Linux #### From command line @@ -42,12 +50,12 @@ make test - `BASH_COMPLETION`: PATH for autocompletion scripts (default to /etc/bash_completion.d) ```shell -make install CONFIG_DIR=/etc INSTALL_DIR=/usr/bin BASH_COMPLETION_DIR=/usr/share/bash-completion/completions +make install CONFIG_DIR=/etc INSTALL_DIR=/usr/bin BASH_COMPLETION=/usr/share/bash-completion/completions ``` #### Arch Linux (AUR) -https://aur.archlinux.org/packages/todotxt-git/ +https://aur.archlinux.org/packages/todotxt/ ## Usage @@ -71,8 +79,8 @@ See [CHANGELOG.md][CHANGELOG] ## Support +- [Github Discussions](https://github.com/todotxt/todo.txt-cli/discussions) - [Stack Overflow](https://stackoverflow.com/questions/tagged/todotxt) -- [Gitter chat](https://gitter.im/todotxt/todo.txt-cli) - [Twitter](https://twitter.com/todotxt) @@ -82,7 +90,7 @@ See [CHANGELOG.md][CHANGELOG] ## Contributing -We welcome all contributations. First read our [Contributor Code of Conduct][CODE_OF_CONDUCT] and then get started [contributing][CONTRIBUTING]. +We welcome all contributions. First read our [Contributor Code of Conduct][CODE_OF_CONDUCT] and then get started [contributing][CONTRIBUTING]. ## License @@ -91,9 +99,9 @@ GNU General Public License v3.0 © [todo.txt org][github] [release]: https://github.com/todotxt/todo.txt-cli/releases -[website]: http://todotxt.org +[website]: http://todotxt.org/ [github]: https://github.com/todotxt [USAGE]: ./USAGE.md [CHANGELOG]: ./CHANGELOG.md -[CODE_OF_CONDUCT]: ./CODE_OF_CONDUCT.md -[CONTRIBUTING]: ./CONTRIBUTING.md +[CODE_OF_CONDUCT]: .github/CODE_OF_CONDUCT.md +[CONTRIBUTING]: .github/CONTRIBUTING.md diff --git a/USAGE.md b/USAGE.md index 81d591d..4500377 100644 --- a/USAGE.md +++ b/USAGE.md @@ -7,9 +7,9 @@ todo.sh [-fhpantvV] [-d todo_config] action [task_number] [task_description] ## Actions ### `add` -Adds THING I NEED TO DO to your todo.txt file on its own line. +Adds THING I NEED TO DO to your todo.txt file on its own line. -Project and context notation optional. +Project and context notation optional. Quotes optional. @@ -28,7 +28,7 @@ todo.sh addm "FIRST THING I NEED TO DO +project1 @context SECOND THING I NEED TO DO +project2 @context" ``` -### `addto` +### `addto` Adds a line of text to any file located in the todo.txt directory. For example, `addto inbox.txt "decide about vacation"` @@ -101,10 +101,10 @@ todo.sh help [ACTION...] ``` ### `list` -Displays all tasks that contain TERM(s) sorted by priority with line numbers. Each task must match all TERM(s) (logical AND); to display tasks that contain any TERM (logical OR), use `"TERM1\|TERM2\|..."` (with quotes), or `TERM1\\|TERM2` (unquoted). Hides all tasks that contain TERM(s) preceded by a minus sign (i.e. `-TERM`). +Displays all tasks that contain TERM(s) sorted by priority with line numbers. Each task must match all TERM(s) (logical AND); to display tasks that contain any TERM (logical OR), use `"TERM1\|TERM2\|..."` (with quotes), or `TERM1\\|TERM2` (unquoted). Hides all tasks that contain TERM(s) preceded by a minus sign (i.e. `-TERM`). If no TERM specified, lists entire todo.txt. -​ + ```shell todo.sh list [TERM...] todo.sh ls [TERM...] @@ -221,7 +221,7 @@ Hide project names in list output. Use twice to show project names (default). Color mode ### `-d CONFIG_FILE` -Use a configuration file other than the default `~/.todo/config` +Use a configuration file other than one of the defaults (e.g. `~/.todo/config`) ### `-f` Forces actions without confirmation or interactive input. diff --git a/tests/README b/tests/README index d5fc70a..3f1740d 100644 --- a/tests/README +++ b/tests/README @@ -18,14 +18,14 @@ The easiest way to run tests is to say "make test" from the top-level. This runs all the tests. rm -rf tests/test-results "tests/trash directory"* - cd tests && sh t0000-config.sh + cd tests && sh t0000-config.sh * ok 1: no config file * ok 2: config file (default location 1) * ok 3: config file (default location 2) * ok 4: config file (command line) * ok 5: config file (env variable) * passed all 5 test(s) - cd tests && sh t0001-null.sh + cd tests && sh t0001-null.sh * ok 1: null ls * passed all 1 test(s) rm -rf tests/test-results @@ -33,7 +33,7 @@ This runs all the tests. Or you can run each test individually from command line, like this: - $ ./t0001-null.sh + $ ./t0001-null.sh * ok 1: null ls * passed all 1 test(s) @@ -42,27 +42,27 @@ You can pass --verbose (or -v), --debug (or -d), and --immediate appropriately before running "make". --verbose:: - This makes the test more verbose. Specifically, the - command being run and their output if any are also - output. + This makes the test more verbose. Specifically, the + command being run and their output if any are also + output. --debug:: - This may help the person who is developing a new test. - It causes the command defined with test_debug to run. + This may help the person who is developing a new test. + It causes the command defined with test_debug to run. --immediate:: - This causes the test to immediately exit upon the first - failed test. + This causes the test to immediately exit upon the first + failed test. --long-tests:: - This causes additional long-running tests to be run (where - available), for more exhaustive testing. + This causes additional long-running tests to be run (where + available), for more exhaustive testing. --tee:: - In addition to printing the test output to the terminal, - write it to files named 't/test-results/$TEST_NAME.out'. - As the names depend on the tests' file names, it is safe to - run the tests with this option in parallel. + In addition to printing the test output to the terminal, + write it to files named 't/test-results/$TEST_NAME.out'. + As the names depend on the tests' file names, it is safe to + run the tests with this option in parallel. Skipping Tests -------------- @@ -97,15 +97,15 @@ Naming Tests The test files are named as: - tNNNN-commandname-details.sh + tNNNN-commandname-details.sh where N is a decimal digit. First digit tells the family: - 0 - the absolute basics and global stuff - 1 - basic every-day usage - 2 - add ins + 0 - the absolute basics and global stuff + 1 - basic every-day usage + 2 - add ins Second digit tells the particular command we are testing. @@ -128,15 +128,15 @@ The test script is written as a shell script. It should start with the standard "#!/bin/bash" with copyright notices, and an assignment to variable 'test_description', like this: - #!/bin/bash - # - # Copyright (c) 2005 Junio C Hamano - # + #!/bin/bash + # + # Copyright (c) 2005 Junio C Hamano + # - test_description='xxx test (option --frotz) + test_description='xxx test (option --frotz) - This test registers the following structure in the cache - and tries to run git-ls-files with option --frotz.' + This test registers the following structure in the cache + and tries to run git-ls-files with option --frotz.' Source 'test-lib.sh' @@ -145,7 +145,7 @@ Source 'test-lib.sh' After assigning test_description, the test script should source test-lib.sh like this: - . ./test-lib.sh + . ./test-lib.sh This test harness library does the following things: @@ -219,9 +219,9 @@ library for your script to use. Example: - test_expect_success \ - 'git-write-tree should be able to write an empty tree.' \ - 'tree=$(git-write-tree)' + test_expect_success \ + 'git-write-tree should be able to write an empty tree.' \ + 'tree=$(git-write-tree)' - test_expect_code