Name

pantry — nutrient analyzer

Synopsis

pantry [options...] [file...]

pantry [--dump dumpable]

Description

pantry copies foods from FILEs into a buffer. All foods are copied, unless SEARCH OPTIONS are specified, in which case only matching foods are copied. SEARCH OPTIONS are cumulative. pantry then changes every food in the buffer using any CHANGE OPTIONS specified.

If --edit or --delete is specified, pantry deletes the unchanged foods from the corresponding original FILEs. If --edit is specified, pantry adds changed foods to corresponding original FILEs.

If --print REPORT is specified, buffer is printed using REPORT If --nutrient-list NUTRIENT-LIST is specified, buffer is printed using NUTRIENT-LIST; otherwise, the default nutrient list is used. Buffer is unsorted unless --sort TRAITS is specified.

If --add is specified, each food in the buffer is added to FILE.

Options

Pantry uses Perl compatible regular expressions.

Search options

-n regexp , --name regexp

Include foods whose name trait matches regexp.

-g regexp , --group regexp

Include foods whose group trait matches regexp.

-d regexp , --date regexp

Include foods whose date trait matches regexp.

-m regexp , --meal regexp

Include foods whose meal trait matches regexp.

-u regexp , --unit regexp

Include foods whose unit trait matches regexp.

-c regexp , --comment regexp

Include foods whose comment trait matches regexp.

-q number , --qty number

Include foods whose qty trait matches number.

-o regexp , --order regexp

Include foods whose order trait matches regexp.

Change options

-N string , --c-name string

Change name trait to string.

-G string , --c-group string

Change group trait to string.

-D string , --c-date string

Change date trait to string.

-M string , --c-meal string

Change meal trait to string.

-U regexp , --c-unit regexp

Search each food's available units using regexp. If there is exactly one match, set unit trait to that match; otherwise, print warning, remove food from buffer, and do not process the --delete or --edit options for this food.

-C string , --c-comment string

Change comment trait to string.

-Q number , --c-qty number

Change qty trait to number.

-O string , --c-order string

Change order trait to string.

--by-nut regexp amount

Change quantity of food so that amount of nutrient matched by regexp equals amount

--by-cal -K amount

Same as --by-nut Calories amount

--refuse -R

Reduce qty of every food in buffer by its corresponding refuse trait

--auto-order , -A

When adding each food to files specified with --add, pantry will search the file for other foods with identical date and meal traits. The result will be sorted in ascending order by the order trait. If the highest food's order trait matches the regular expression ^[0-9]{4}$, then pantry will take the highest food's order trait, remove any leading zeroes, removes the last digit, and increment the result by one. The result is multiplied by ten, and then is left-padded with zeroes so that it is four characters long. pantry will then change the order trait of the food to the result before adding it to the file.

If there are no foods with identical date and meal traits, then pantry will set the food's order trait to 0010.

--auto-order has no effect when adding foods to Foods Text files.

Print options

-p report , --print report

Print buffer using report.

-l nutrient-list , --nutrient-list nutrient-list

use nutrient-list when printing report

-s traits , --sort traits

Sorts foods by trait when printing a report. Specify traits by their first letter; for example, to sort by name, date, and meal, specify --sort ndm. Use lower-case letters to sort in ascending order; use upper-case letters to sort in descending order.

Other general options

-i , --ignore-case

Make all Search options, and the --c-unit option, case insensitive

-x , --exact-match

Arguments to Search options, to --c-unit option, and to --by-nut option must exactly match food traits or nutrient names, rather than using regular expressions

-a file , --add file,

Add buffer to file. To specify multiple files, use multiple --add options, e.g. --add file1 --add file2.

--edit

Delete original foods from corresponding source files, and add changed foods to corresponding source files

--delete

Delete original foods from corresponding source files

Other options

--force-valid

Ordinarily pantry automatically validates all XML files unless they are over 300 kilobytes in size; use this option to validate all XML files regardless of their size.

--skip-valid

Do not validate any XML files

-h , --help

Show brief help message and exit

--version

Print version information and exit

--dump

Display an internal Pantry variable and exit (see DUMP OPTIONS below)

Reports

Two types of reports are available. Food reports are printed once per food in the buffer. Summary reports are printed once for the entire buffer. To print more than one report, specify each report name, separated by dashes; for example, --print names-nuts. Reports may also be specified with an unambiguous specification of the first letters of the report, such as --print na-nu.

The following reports are available:

Food reports

names

Food names

traits

Food traits

units

Available units. g, oz, and lb are not printed as these are available for every food.

measures

Like units, but also shows the gram weight of every unit. Shows all available units, including g, oz, and lb.

nuts

Nutrients. For details of how pantry decides which nutrients to print, and what all the columns in this report mean, see the section called “Nutrient lists”.

blank

A blank line

paste

Each food name, printed with one available unit per line; quoted so that output may be easily pasted into subsequent pantry commands.

yield

The yield of a recipe: its total gram weight, description of yield, and number of servings. Prints warning for foods that are not recipes.

ingredients

Each ingredient of a recipe; prints warning for foods that are not recipes.

directions

A recipe's directions; prints warning for foods that are not recipes.

recipe

Same as names-makes-blank-ingredients-blank-directions.

Summary reports

sum

Nutrient total of all nutrients in the buffer

groups

Group names, the number of foods in each group, and the total number of foods in the buffer

list

The nutrient list, along with its goals

Nutrient lists

A nutrient report has four columns. The first shows the name of the nutrient. The second column shows the amount (both the numeric amount and the units.) The third column shows this nutrient's percent of a nutrient goal, or blank if that nutrient has no goal. The fourth column shows this nutrient's percentage of the total nutrients in this buffer. The fourth column is not present in sum reports.

The nutrient-list parameter determines which nutrients are shown and in what order, as well as determining what goals are used to calculate the third column. The user may configure her own nutrient-lists in pantryrc.xml(5). The following default nutrient lists are available:

facts

Mimics the USA "Nutrition Facts" panel.

dv

Nutrients for which there is a USA FDA Daily Value.

all

All nutrients.

short

Only Calories, Total Fat, Total Carbohydrate, and Protein.

Dump options

--dump takes a single argument, which will print one of the following pantry internal variables. After printing the variable, pantry will exit.

version

Version and copyright information; same as --version.

pantryDTD

DTD used to validate Pantry XML files

rcDTD

DTD used to validate pantryrc files

config

All configuration variables after the pantryrc is processed

Bugs

Under certain circumstances, consumes about 100MB of RAM, though briefly, when buffer totals about 7,000 foods (the number in the USDA database.)

Pantry is not a perfect UNIX citizen because it will not read its data from standard input; thus, Pantry cannot be used as a filter.

Pantry's core file format is a dbm database, not a text file; this is a primary reason the above bug will likely never be fixed.

Report additional bugs to .

Version

This manual page written for Pantry version 23.