Import Tonel Package
Import edited Tonel files into the running Smalltalk image.
Usage
/st-import PackageName /absolute/path/to/src
Steps
With arguments: import a single package
- Call
import_packagewith the package name and absolute path to thesrc/directory - Report success or error from the result
Without arguments: import all local packages in dependency order
When no arguments are given, discover and import the full project automatically:
Locate the source directory — read
.projectfrom the repository root. It contains JSON-like STON syntax with asrcDirectorykey (e.g.,'srcDirectory' : 'src'). Resolve the value relative to the repository root to get the absolute path to the source directory.Determine import order — find the
BaselineOfpackage inside the source directory (a directory whose name starts withBaselineOf). Read theBaselineOfXXX.class.stfile inside it and parse thebaseline: specmethod. Extract:- All
package: 'PkgName'declarations → the full list of packages to import - All
requires: #('Dep1' 'Dep2' ...)clauses → the dependency edges between packages
Topologically sort the packages so that each package is imported only after all its dependencies have been imported. Import the
BaselineOfpackage first (before all others), then the sorted application packages.- All
Import each package — call
import_packagefor each package in the computed order, passing the absolute path to the source directory. Report the result of each import as you go.
Notes
- Always use absolute paths
- Use the package parent directory as the path — do not include the package name in the path
- Import main package before test package
- Re-import after every change
Examples
/st-import RediStick-Json /home/user/git/RediStick/src
/st-import RediStick-Json-Tests /home/user/git/RediStick/src