# Herm's ![Travis build](https://api.travis-ci.org/JackKiefer/herms.svg?branch=master) HeRM's: a Haskell-based Recipe Manager (yes, food recipes) for the command line. ![Herm's Interface](https://i.imgur.com/u9fPapw.jpg) ### 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. ![Herm's Inn](https://images.duckduckgo.com/iu/?u=https%3A%2F%2Firs2.4sqi.net%2Fimg%2Fgeneral%2F600x600%2F803_DzmDgevV4Yw5OrVsh9c4iaE7Bx8aSA0AY7y4L5Um7Qg.jpg&f=1)