Provided by: todoman_3.5.0-2_all bug

NAME

       todoman - Todoman Documentation

       Todoman  is a simple, standards-based, cli todo (aka: task) manager. Todos are stored into
       icalendar files, which means you can sync them via CalDAV using, for example, vdirsyncer.

       Todoman is now part of the pimutils project, and is hosted at GitHub.

FEATURES

       • Listing, editing and creating todos.

       • Todos are read from individual ics files from the configured directory. This matches the
         vdir specification.

       • There’s  support  for  the  most  common  TODO  features  for now (summary, description,
         location, due date and priority) for now.

       • Runs on any Unix-like OS. It’s been tested on GNU/Linux, BSD and macOS.

       • Unsupported fields may not be shown but are never deleted or altered.

CONTRIBUTING

       See contributing for details on contributing.

CAVEATS

       Support for the percent-completed attribute is incomplete. Todoman can only mark todos  as
       completed  (100%),  and  will  nor  reflect nor allow editing for values for percent > 0 ^
       percent < 100.

INSTALLING

   Distribution packages
       If todoman is packaged for your OS/distribution,  using  your  system’s  standard  package
       manager is probably the easiest way to install todoman.

   ArchLinux
       todoman is packaged in the community repository, and can be installed using:

          pacman -S todoman

   macOS
       todoman is packaged in homebrew, an can be installed using:

          brew install todoman

   Installation via PIP
       Since  todoman  is  written  in  python,  you  can  use  python’s package managers, pip by
       executing:

          pip install todoman

       or the latest development version by executing:

          pip install git+git://github.com/pimutils/todoman.git

       This should also take care of installing all required dependencies.

   Manual installation
       If pip is not available either (this is most unlikely), you’ll need to download the source
       tarball and install via setup.py, though this is not a recommended installation method:

          python3 setup.py install

   bash autocompletion (optional)
       There  is  an  autocompletion  function for bash provided in the contrib directory. If you
       want   to   enable   autocompletion   for    todoman    in    bash,    copy    the    file
       contrib/autocompletion/bash/_todo     to     any    directory    you    want.    Typically
       /etc/bash_completion.d is used for system-wide installations or  ~/.bash_completion.d  for
       local  installations.  In  the  former  case,  the  file  is automatically sourced in most
       distributions, in the latter case, you will most likely need to add:

          source ~/.bash_completion.d/_todo

       to your ~/.bashrc.

   zsh autocompletion (optional)
       There is an autocompletion function for zsh provided in the contrib directory. If you want
       to     enable     autocompletion     for     todoman     in    zsh,    copy    the    file
       contrib/autocompletion/zsh/_todo   to   any   directory   in   your   $fpath.    Typically
       /usr/local/share/zsh/site-functions/ is used for system-wide installations.

   Requirements
       Todoman  requires  python 3.4 or later. Installation of required libraries can be done via
       pip, or your OS’s package manager.

       Todoman will not work with python 2. However, keep in mind that python 2 and python 3  can
       coexist (and most distributions actually ship both).

       Recent versions also have experimental support for pypy3.

   Notes for Packagers
       All  of  todoman’s  dependencies are listed in the requirements.txt file. New dependencies
       will be clearly announced in the CHANGELOG.rst file for each release. Patch releases  (eg:
       those  where  the  third  digit  of  the  version  is  incremented) will not introduce new
       dependencies.

       If your packages are generated by running setup.py  install  or  some  similar  mechanism,
       you’ll  end  up with a very slow entry point (that’s the file /usr/bin/todo file). Package
       managers should use the file included in this repository under bin/todo  and  replace  the
       above one.

       The  root cause of the issue is really how python’s setuptools generates these and outside
       of the scope of this project.

       If your packages are generated using python wheels, this should not be an issue (much like
       it won’t be an issue for users installing via pip).

CONFIGURING

       You'll  need  to  configure  Todoman  before  the  first  usage, using its simple ini-like
       configuration file.

   Configuration File
       The  configuration  file  should  be   placed   in   $XDG_CONFIG_DIR/todoman/todoman.conf.
       $XDG_CONFIG_DIR  defaults  to  ~/.config  is  most  situations,  so this will generally be
       ~/.config/todoman/todoman.conf.

   The [main] section
       cache_path
              The location of the cache file (an sqlite database). This file  is  used  to  store
              todo  data and speed up execution/startup, and also contains the IDs for todos.  If
              the value is not specified, the  database  will  be  place  in  the  XDG_CACHE_HOME
              directory, generally, ~/.cache.

                 type   cache_path

                 default

       color  By default todoman will disable colored output if stdout is not a TTY (value auto).
              Set to never to disable colored output entirely, or always to enable it regardless.
              This can be overridden with the --color option.

                 type   option, allowed values are always, auto and never

                 default
                        auto

       date_format
              The  date  format  used both for displaying dates, and parsing input dates. If this
              option is not specified the system locale's is used.

                 type   date_format

                 default
                        %x

       default_command
              When running todo with no commands, run this command.

                 type   string

                 default
                        list

       default_due
              The default difference (in hours) between new todo’s due date and creation date. If
              not specified, the value is 24. If set to 0, the due date for new todos will not be
              set.

                 type   integer

                 default
                        24

       default_list
              The default list for adding a todo. If you do not specify this option, you must use
              the --list / -l option every time you add a todo.

                 type   string

                 default
                        None

       dt_separator
              The string used to separate date and time when displaying and parsing.

                 type   string

                 default

       humanize
              If  set  to  true,  datetimes  will  be  printed  in  human  friendly  formats like
              "tomorrow", "in on hour", "3 weeks ago", etc.

              If false, datetimes fill be formatted using date_format and time_format.

                 type   boolean

                 default
                        False

       path   A glob pattern matching the directories where your todos are located. This  pattern
              will  be  expanded,  and each matching directory (with any icalendar files) will be
              treated as a list.

                 type   string

                 default
                        None

       startable
              If set to true, only show todos which are  currently  startable;  these  are  todos
              which  have  a start date today, or some day in the past.  Todos with no start date
              are always considered current. Incomplete todos (eg: partially-complete) # are also
              included.

                 type   boolean

                 default
                        False

       time_format
              The date format used both for displaying times, and parsing input times.

                 type   time_format

                 default
                        %X

   Sample configuration
       The  below  example should serve as a reference. It will read ics files from any directory
       inside ~/.local/share/calendars/, use the ISO-8601 date format, and set the due  date  for
       new todos in 48hs.

          [main]
          # A glob expression which matches all directories relevant.
          path = ~/.local/share/calendars/*
          date_format = %Y-%m-%d
          time_format = %H:%M
          default_list = Personal
          default_due = 48

   Color and displayname
       • You  can  set a color for each task list by creating a color file containing a colorcode
         in the format #RRGGBB.

       • A file named displayname decides how the task list should be named. The default  is  the
         directory name.

       See also this discussion about metadata for collections in vdirsyncer.

USAGE

       Todoman usage is CLI based (thought there are some TUI bits, and the intentions is to also
       provide a fully TUI-based interface).

       First of all, the classic usage output:

          $ todoman --help
          Usage: todoman [OPTIONS] COMMAND [ARGS]...

          Options:
            -v, --verbosity LVL             Either CRITICAL, ERROR, WARNING, INFO or
                                            DEBUG
            --colour, --color [always|auto|never]
                                            By default todoman will disable colored
                                            output if stdout is not a TTY (value
                                            `auto`). Set to `never` to disable colored
                                            output entirely, or `always` to enable it
                                            regardless.
            --porcelain                     Use a JSON format that will remain stable
                                            regardless of configuration or version.
            -h, --humanize                  Format all dates and times in a human
                                            friendly way
            --version                       Show the version and exit.
            --help                          Show this message and exit.

          Commands:
            cancel  Cancel one or more tasks.
            copy    Copy tasks to another list.
            delete  Delete tasks.
            done    Mark one or more tasks as done.
            edit    Edit the task with id ID.
            flush   Delete done tasks.
            list    List tasks.
            move    Move tasks to another list.
            new     Create a new task with SUMMARY.
            show    Show details about a task.

       The default action is list, which outputs  all  tasks  for  all  calendars,  each  with  a
       semi-permanent unique id:

          1 [ ] !!! 2015-04-30 Close bank account (0%)
          2 [ ] !                              Send minipimer back for warranty replacement (0%)
          3 [X] 2015-03-29 Buy soy milk (100%)
          4 [ ] !!             Fix the iPad's screen (0%)
          5 [ ] !!             Fix the Touchad battery (0%)

       The columns, in order, are:

          • An id.

          • Whether the task has been completed or not.

          • An  !!!  indicating high priority,``!!`` indicating medium priority, ! indicating low
            priority tasks.

          • The due date

          • The task summary

          • The completed percentage

       The id is retained by todoman until the next time you run the flush command.

       To operate on a todo, the id is what’s used to reference it. For example, to edit the  Buy
       soy  milk  task  from  the example above, the proper command is todoman edit 3, or todoman
       undo 3 to un-mark the task as done.

       Editing tasks can only be done via the TUI interface for now, and cannot be done  via  the
       command line yet.

   Synchronization
       If  you  want  to  synchronize  your  tasks, you’ll needs something that syncs via CalDAV.
       vdirsyncer is the recommended tool for this.

   Interactive shell
       If you install click-repl, todoman gets a new  command  called  repl,  which  launches  an
       interactive shell with tab-completion.

   Integrations
       When  attempting  to  integrate  todoman  into  other  systems or parse its output, you’re
       advised to use the --porcelain flag, which will print all output in a  pre-defined  format
       that will remain stable regardless of user configuration or version.

       The  format  is JSON, with a single array containing each todo as a single entry (object).
       Fields will always be present; if a todo does not have a value for a given field, it  will
       be printed as null.

       Fields MAY be added in future, but will never be removed.

   Sorting
       The  tasks  can  be  sorted with the --sort argument. Sorting may be done according to the
       following fields:descriptionlocationstatussummaryuidrrulepercent_completeprioritysequencecategoriescompleted_atcreated_atdtstampstartduelast_modified

CONTRIBUTING

       Bug reports and code and documentation patches are greatly appreciated. You can also  help
       by  using  the  development  version of todoman and reporting any bugs you might encounter
       here.

       All participants must follow the pimutils Code of Conduct.

       Before working on a new feature or a bug, please browse existing issues to see whether  it
       has been previously discussed. If the change in question is a bigger one, it’s always good
       to open a new issue to discuss it before your starting working on it.

   Hacking
       Runtime dependencies are listed in setup.py. We recommend that you use virtualenv to  make
       sure  that no additional dependencies are required without them being properly documented.
       Run pip install -e . to install todoman and its dependencies into a virtualenv.

       We strictly follow the Style Guide for Python Code, which I strongly recommend  you  read,
       though you may simply run flake8 to verify that your code is compliant.

       Commits  should follow Git Commit Guidelines whenever possible, including rewriting branch
       histories to remove any noise, and using a 50-message imperative present tense for  commit
       summary messages.

       All commits should pass all tests to facilitate bisecting in future.

   An overview of the Todo lifecycle
       This is a brief overview of the life cycles of todos (from the apps point of view) as they
       are read from disk, displayed, and or saved again.

       When the app starts, it will read all todos from disk, and initialize from the  cache  any
       further  display (either list, show, edit, etc) is then done reading from the cache, which
       only contains the fields we operate with.

       When a Todo is edited, the entire cycle is:

       • File is read from disk and cached (if not already cached).

       • A Todo object is created by reading the cache.

       • If edition is interactive, show the UI now.

       • No matter how the edition occurs, apply changes to the Todo object.

       • Start saving process: * Read file from disk (as a VTodo object).  * Apply  changes  from
         fields to the VTodo object.  * Write to disk.

       The main goal of this is to simplify how many conversions we have. If we read from disk to
       the editor, we’d need an extra VTodo->Todo conversion code that skips the cache.

   Running and testing locally
       The easiest way to run tests, it to install tox, and then  simply  run  tox.  By  default,
       several python versions and environments are tested. If you want to run a specific one use
       tox -e ENV, where ENV should be one of the environments listed by tox -l.

       See the tox documentation for further details.

       To run your modified copy of todoman without installing it, it’s recommended you set up  a
       virtualenv,  and  run  pip  install -e . to install your checked-out copy into it (this’ll
       make todo run your local copy while the virtualenv is active).

   Patch review checklist
       Please follow this checklist when submitting new PRs (or reviewing PRs by others):

       1. Do all tests pass?

       2. Does the documentation build?

       3. Does the coding style conform to our guidelines? Are there any flake8 errors?

       4. Are user-facing changes documented?

       5. Is there an entry for new features or dependencies in CHANGELOG.rst?

       6. Are you the patch author? Are you listed in AUTHORS.rst?

       Hint: To quickly verify the first three items run tox.

   Authorship
       While authors must add themselves to AUTHORS.rst,  all  copyright  is  retained  by  them.
       Contributions are accepted under the ISC licence.

CHANGELOG

       This  file contains a brief summary of new features and dependency changes or releases, in
       reverse chronological order.

   v3.5.0
       • Fix crashes due to API changes in icalendar 4.0.3.

       • Dropped compatibility for icalendar < 4.0.3.

   v3.4.1
       • Support Python 3.7.

       • Support click>=7.0.

       • Properly parse RBGA colours.

   v3.4.0
       • Add -r option to new to read description from stdin.

       • Add a dedicated zsh completion function.

       • Lists matching is now case insensitive, unless there are multiple lists  with  colliding
         names, in which case those will be treated case-sensitive.

       • Fix some tests that failed due to test dependency changes.

   v3.3.0
       • New runtime dependency: click-log.

       • Drop support for Python 3.3, which has reached its end of life cycle.

       • Add  –raw flag to edit. This allows editing the raw icalendar file, but only use this if
         you really know what you’re doing. There’s  a  big  risk  of  data  loss,  and  this  is
         considered a developer / expert feature!

   v3.2.4
       • Deploy new versions to PyPI using twine. Travis doesn’t seem to be working.

   v3.2.3
       • Tests should no longer fail with pyicu installed.

       • Improved documentation regarding how to test locally.

   v3.2.2
       • Initial support for (bash) autocompletion.

       • The location field is not printed as part of --porcelain.

   v3.2.1
       • Fix start-up crash caused by click_log interface change.

       • Dropped runtime dependency: click_log.

   v3.2.0
       • Completing recurring todos now works as expected and does not make if disappear forever.

   v3.1.0
       • Last-modified fields of todos are now updated upon edition.

       • Sequence numbers are now properly increased upon edition.

       • Add new command todo cancel to cancel an existing todo without deleting it.

       • Add a new setting default_command.

       • Replace   --all  and  --done-only  with   --status,  which  allows  fine-grained  status
         filtering. Use --status ANY or --status COMPLETED to obtain  the  same  results  as  the
         previous flags.

       • Rename --today flag to --startable.

       • Illegal  start  dates (eg: start dates that are not before the due date) are ignored and
         are removed when saving an edited todo.

   v3.0.1
       • Fix a crash for users upgrading from pre-v3.0.0, caused due to the  cache’s  schema  not
         being updated.

   v3.0.0
   New features
       • Add a today setting and flag to exclude todos that start in the future.

       • Add the --humanize to show friendlier date times (eg: in 3 hours).

       • Drop --urgent and introduced --priority, which allows fine-filtering by priority.

       • Add support for times in due dates, new time_format setting.

       • Use the system’s date format as a default.

       • Add list selector to the interactive editor.

       • Add   --start=[before|after]  [DATE]  option  for  list  to  only  show  todos  starting
         before/after given date.

       • Add flag “–done-only” to todo list. Displays only completed tasks.

       • Make the output of move, delete, copy and flush consistent.

       • Porcelain now outputs proper JSON, rather than one-JSON-per-line.

       • Increment sequence number upon edits.

       • Print a descriptive message when no lists are found.

       • Add full support for locations.

   Packaging changes
       • New runtime dependency: tabulate.

       • New runtime dependency: humanize.

       • New supported python version: pypy3.

       • Include an alternative [much faster] entry point (aka  “bin”)  which  we  recommend  all
         downstream  packagers  use. Please see the Notes for Packagers documentation for further
         details.

   v2.1.0
       • The global --verbosity option has been introduced. It doesn’t do much  for  now  though,
         because we do not have many debug logging statements.

       • New PyPI dependency click-log.

       • The --no-human-time flag is gone. Integrations/scripts might want to look at --porcelain
         as an alternative.

       • Fix crash when running todo new.

       • Fixes some issues when filtering todos from different timezones.

       • Attempt to create the cache file’s directory if it does not exist.

       • Fix crash when running --porcelain show.

       • Show id for todos everywhere (eg: including new, etc).

       • Add the ctrl-s shortcut for saving in the interactive editor.

   v2.0.2
       • Fix a crash after editing or completing a todo.

   v2.0.1
       • Fix a packaging error.

   v2.0.0
   New features
       • New flag --porcelain for programmatic integrations to use. See the integrations  section
         here for details.

       • Implement a new configuration option: default_due.

       • The  configuration  file  is  now  pre-emptively  validated. Users will be warned of any
         inconsistencies.

       • The list command has a new --due flag to filter tasks due soon.

       • Todo ids are now persisted in a cache. They can be manually purged using flush.

   Packaging changes
       • New runtime dependency: configobj

       • New runtime dependency: python-dateutil

       • New test dependency: flake8-import-order.

LICENSE

       Todoman is licensed under the  ISC  licence::  (see  /usr/share/doc/todoman/copyright  for
       complete text)

       • genindex

       • modindex

       • search

AUTHOR

       Hugo Osvaldo Barrera

COPYRIGHT

       2015-2019, Hugo Osvaldo Barrera