Skip to content

Why it is called POT

POT is the package manager built into Beans. It works on a file named beans.pot that sits at the root of your project. That file is the manifest: it names your module and lists the Git dependencies you pull in.

POT is not an acronym. The name is a joke about a pot of beans. The manifest file is beans.pot, and the package command is beansc pot.

Type a command Beans does not have, like mod, and it says so plainly:

error: 'mod' is not a Beans command; use 'beansc pot tidy' or 'beansc pot update'

The table below distinguishes module paths, import paths, package names, and import bindings.

IdeaExampleWhat it is
module pathshopThe unit beans.pot names. One dependency, one row in the lock file.
import pathshop.moneyA package’s globally unique identity. No two packages share one.
package namemoneyWhat a package calls itself in its package clause.
import bindingcashA local name for an import, alive in one file only.

Put together, a line like this uses three of them at once:

import shop.money as cash

Here shop.money is the import path, and cash is the import binding you use in this one file. The package itself still calls itself money in its package clause; you just chose to call it cash here.

The beans.pot manifest page covers every field, and the imports guide shows how imports work in day-to-day code.