A small program written in rust that digests my Things tasks into a format for Slack reporting.
Tasks are pulled out of Things using AppleScript over a JavaScript OSA Bridge. Tasks are then filtered and formatted based on the selected format schema.
A task is returned as a markdown list element containing its title and optionally a list of information parsed from related tag sections in the notes portion of the task.
Tag specific additional bullets are included using a triple backtick (like GitHub code block markdown). Then instead of
specifying the coding style as you would (for example typescript
) you specify the relevant tag: MyTag
. Running the
program with a given --tags
argument will cause related tag blocks to be included as sub-bullets.
Name tags found on projects and tasks are automatically sanitized by replacing vowel characters with lookalikes. This
behavior can be disabled with the --no-sanitize
argument.
Projects make up a bullet level above tasks. Any tasks in the project will be nested under the project title following and project specific matched tag block comments in the project notes.
Areas collect up projects, but instead of indenting them further, Area's are returned as section titles above the generated output. If only one area contains all of the reported tasks, then the area name is omitted entirely.
The --mode cycle
argument will output slightly different content. All tasks are collected at a project level, and
only the project name is given. Cycle messages look back in time at the last 6 weeks and therefore have too many values
to meaningfully output at full resolution.