I wrote a tool called howzit a while back. It allows you to keep track of all of the build tools and procedures for any project in a Markdown file, and easily reference topics in your terminal with a command like howzit deploy. Over time it became a task runner, too, and eventually I even had it updating my MacBook Pro’s Touch Bar with available tasks as I changed directories. It’s definitely become part of my development toolkit.

I recently added a few new features to it that I thought made it worth mentioning again. Let me start by saying this, though: if you’re mostly looking for a good task runner, there are some great projects like mask and maid that you should also check out. Howzit really focuses on being an easy-to-reference notepad. That said, its capabilities as a task runner are also pretty complete.

Config File

Howzit now allows default configuration options to be stored in a config file. It writes the defaults to ~/.config/howzit/howzit.yaml, which can be easily opened in your editor by running howzit --edit-config. All of the command line flags that modify how output is displayed can be adjusted in that file.

Code Blocks

Next, you can now use code blocks within your notes and make them executable. Just include a fenced code block with the language run:

```run 
execute some code
```

It will display as formatted code when you view your notes on the command line, but will execute as a script if you run with howzit -r.

Topic Matching Options

When you run howzit and specify a topic to display, it uses partial matching to display the nearest match to your argument. So howzit depl would display the section titled “Deploy.” Now you can change the matching configuration option to partial, beginswith, fuzzy, or exact. Fuzzy matching gets a bit over-eager if you have a lot of topic titles containing the same characters, but can be a nice shortcut, allowing howzit bld to match “Build.”

See the docs to learn more!