herms-1.8.2.1: README.md
# 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
### What's new:
- Set default unit systems, serving sizes, and recipe file path in ``config.hs``!
- Coming soon: Multi-language support
- Added support for multi-word tags
- Check your Herm's version with ``-v`` or ``--version``
- Herm's is now on Stackage!
### Installation
#### PATH setup
Firstly, make sure that the following is added to your PATH:
```
~/.cabal/bin
```
#### Download and install
At the moment, Herm's can only be compiled from source, but binaries are in the works!
##### Manually cloning and installing from source with Stack _(recommended)_:
```
git clone https://github.com/JackKiefer/herms
cd herms
stack update
stack install
```
##### Via Hackage and Cabal:
```
cabal update
cabal install herms
```
##### Manually with Cabal:
Your milage may vary with dependency resolution
```
git clone https://github.com/JackKiefer/herms
cd herms
cabal update
cabal install -j
```
### 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 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 print location 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 its recipes file, ``recipes.herms``, and configuration file, ``config.hs``, in the same directory. Herm's keeps track of its location! Run ``herms datadir`` to see the full directory path.
``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 to `None` 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 to `0` for no default. This can be useful when you're always cooking for the same number of people!
- `recipesFile` : The recipes file and relative location. Make sure the file already exists by running `touch FILENAME` before running Herm's or it will throw a fit. This option currently supports relative location, as well; if your data directory is `~/herms/data`, for example, and you want a recipe file in your home directoy called `~/GrandmasHugeCookbook.herms`, set this option to `"../../GrandmasHugeCookbook.herms"`.
---
In honor of Logan, Utah's greatest Breakfast & Brunch.
