28 lines
1.6 KiB
Markdown
28 lines
1.6 KiB
Markdown
# Cell structure
|
|
|
|
Cell doesn't have the notion of a file system; it has packages. Each package is a directory with a cell.toml file. You cannot have nested packages.
|
|
|
|
A package is a collection of actors, modules, and other files.
|
|
|
|
Packages are stored in a cell shop, in a development environment, located at ~/.cell.
|
|
|
|
Inside the shop there is .cell/packages/<each package>
|
|
|
|
A package can be a gitea url, like gitea.pockle.world/john/prosperon, which effectively clones to ~/.cell/packages/gitea.pockle.world/john/prosperon
|
|
|
|
Or it can be a local absolute path (on computers with a file system), like .cell/packages/User/john/work/prosperon, which is a symlink to the actual directory.
|
|
|
|
Cell itself is stored in .cell/core, and can build itself from there. Updating cell involves getting cell from somewhere, and rebuilding it. The cell core is itself a package.
|
|
|
|
When an actor or module is requested, it's loaded first from the package, if not found, it checks in packages, and if not found there, it checks in the cell core scripts (.cell/core/scripts).
|
|
|
|
Packages can declare aliases for packages, so the "accio" package can say "prosperon = gitea.pockle.world/john/prosperon", and then load "prosperon/sprite".
|
|
A module in prosperon can simply load "sprite" to load its own sprite.
|
|
|
|
the "cell upgrade" command is a command to upgrade the cell version in a shop.
|
|
|
|
## commands
|
|
cell update - update all packages in the shop, and builds their code for local use
|
|
cell install <package> - install a package
|
|
cell remove <package> - remove a package
|
|
cell build - build the package in the current directory into a cell executable |