A command-line manager for delicious kitchen recipes.
HeRM's: a Haskell-based Recipe Manager for delicious kitchen recipes
Herm's
HeRM's: a Haskell-based Recipe Manager (yes, food recipes) for the command line.
Features
- Add recipes! :)
- Look at recipes! :D
- Edit recipes! :DD
- Serving size adjustment! :DDD
- Remove recipes :(
- View metric recipes in imperial units and vice-versa
- Import recipe files
- Generate shopping lists
- Keep track of recipes with tags
- Set default unit systems, serving sizes, language, and recipe file path in
config.hs
What's new:
- Bonjour! Herm's now has language support for Français (French), English, and Pirate. Set your language preferences in
config.hs
! - These are but the first languages that Herm's is now capable of supporting. We need your help to translate it into others! Currently in progress: Português (Portuguese), Español (Spanish)
- Herm's now conforms to the XDG Base Directory Specification. In short,
config.hs
andrecipes.herms
are now stored in~/.config/herms
and~/.local/share/herms
respectively on most Linux systems.
Installation
At the moment, Herm's can only be installed via stack or cabal, but standalone binaries are in the works!
If you're interested developing/hacking Herm's instead of just using it, see Contributing.md instead.
Via Stack (recommended):
stack update
stack install herms
Manually cloning and installing from source with Stack
git clone https://github.com/JackKiefer/herms
cd herms
stack update
stack install
Via Hackage and Cabal:
Note: Your mileage may vary with dependency resolution
cabal update
cabal install herms
Manually with Cabal:
git clone https://github.com/JackKiefer/herms
cd herms
cabal update
cabal install
Usage
Command-line interface
Herm's has a pretty intuitive interface for users familiar with other command-line programs!
Below is the exhaustive list of all commands and their functionalities. Take a gander!
Usage:
herms list [-g|--group] [--tags TAGS] list recipes
[--name-only ]
herms add add a new recipe (interactively)
herms edit RECIPE_NAME edit a recipe
herms import FILE_NAME import a recipe file
herms export DESTINATION export recipes to DESTINATION
herms remove RECIPE_NAMES remove the particular recipes
herms view RECIPE_NAMES [-s|--serving INT] view the particular recipes
[-t|--step]
[-c|--convert CONV_UNIT]
herms shopping RECIPE_NAMES [-s|--serving INT] generate shopping list for particular recipes
herms datadir show locations of recipe and config files
Available options:
-h|--help Show this help text
-v|--version Show version
RECIPE_NAME index or Recipe name
--sort SORT_ORDER 'tags' to sort by tags
-s|--serving INT specify serving size when viewing.
E.g., 'herms view -s 2 {recipe}' for two servings
-t|--step View recipe in "one-step-at-a-time" mode
(press enter between each direction)
-g|--group group recipes by tags
--tags TAGS show recipes with particular flags
--name-only only list recipes by name
-c|--convert CONV_UNIT view the recipe converted to imperial or metric
E.g., 'herms view 2 -c imperial'
Configuring Herm's and managing recipe files
Herm's stores files in the following locations:
The configuration file,
config.hs
in the XDG configuration directory, typically~/.config/herms
on most Linux systemsThe recipes file,
recipes.herms
in the XDG data directory, typically~/.local/share/herms
on most Linux systems
To see where these are stored on your system, run herms datadir
.
config.hs
is a pseudo-Haskell-source-code file with several options for configuring the behaviour of Herm's. It currently supports the following options:
defaultUnit
: The default unit system to show recipes in. Options:Imperial
,Metric
,None
. Setting toNone
will simply show recipes in whatever unit system they're stored in.defaultServingSize
: Default serving size to calculate when showing recipes. Can be any non-negative integer; set to0
for no default. This can be useful when you're always cooking for the same number of people!recipesFile
: The recipes file to use. This option currently supports relative (but not absolute) location, as well; if your data directory is~/herms/data
, for example, and you want a recipe file in your home directory called~/GrandmasHugeCookbook.herms
, set this option to"../../GrandmasHugeCookbook.herms"
.language
: Human language to use. Currently supported:"Français"
,"English"
,"Pirate"
In honor of Logan, Utah's greatest Breakfast & Brunch.