Getting started¶
Prerequisites¶
Perennial is intended to work with Python 3.9 or higher.
Installing¶
Use pip like usual:
pip install -U perennial
Development¶
If you’d like to explore the repo or experiment with your own changes and potentially contribute to development:
git clone https://almonds.dev/git/perennial
cd perennial
pip install -e ."[dev]"
Basic concepts¶
This section describes how to use the command-line options for creating journals, adding entries, and tracking goals. See the Perennial reference for information on how to interface with your journals more directly.
Run python -m perennial -h for help.
init¶
Initialize a journal in the current working directory:
python -m perennial init 'Journal full of examples'
Specify a journal elsewhere with the -d (--database) flag:
python -m perennial -d ~/journals/test/ init 'Journal full of examples'
This flag is settable for all subcommands. The default is the current working directory.
Each journal entry can optionally be associated with a file. The init command can take a template file with the -t (--template) flag:
python -m perennial init 'Journal full of examples' -t ~/journals/test/template.md
When recording a new entry with an associated file, this template file will be copied over if the file does not already exist.
The journal’s streak-tracking mode can be set with the -s (--streak-mode) flag:
python -m perennial init 'Journal full of examples' -s daily
Currently, the supported streak-tracking modes are: daily, weekly, monthly, and yearly. The default journal streak-tracking mode is weekly.
record¶
Record an entry with:
python -m perennial record 'This is an example entry.'
Specify a mood for the entry with -m (--mood). Mood values are integers.
Associate a file with the new entry using -f (--file):
python -m perennial record 'This is an example entry.' -f example-entry.md
goal¶
Update the status of a goal with the goal subcommand by specifying the name of the goal followed by the goal state:
python -m perennial goal 'Example goal' DONE
Use whichever goal-tracking system you like. I prefer sticking with these goal states: TODO, DOING, DONE, CANCELED.
check¶
Finally, check up on your journals with the check command:
python -m perennial check