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 does not stand for anything. There is no hidden expansion in the source, the README, the spec, or these docs. The name is a joke on the project’s own name: Beans keeps its packages in a pot of beans. The manifest file is beans.pot, and the command that works on it 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'

Package talk gets confusing because people use one word for four different things. Beans keeps them separate. Learn these four and the rest of POT reads easily.

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.