Directory structure of Cuis Smalltalk
How the Cuis release is organized, and the directories Cuis uses.
Goals
The directory structure of the Cuis release is designed to fulfill several goals:
- Make it easy for newcomers and casual users to download a single file and run Cuis.
- Make it also a Git repository, to make it easy to get new updates, and to enable collaboration.
- Make it easy for advanced users to create custom setups to fulfill specific needs or workflows.
- By default, keep the local Cuis repo free of user files so it doesn’t get dirty without a reason.
- Avoid repeated files and unneeded complexity.
Description
The Cuis Rolling Release Repo includes a 64-bit Cuis image, a selection of optional packages, and a Virtual Machine to let it run on the main PC platforms (Windows and Linux on 64-bit Intel, macOS on ARM and Intel). It also includes a selection of freely distributable TrueType fonts, updates in the form of numbered ChangeSets, and a few additional support files.
It can easily be downloaded from the Download ZIP option automatically generated by GitHub. There is only one file to download, and the system is multiplatform.
The Git repo can also be cloned locally, to make it easy to pull updates.
Advanced users may run Cuis on other platforms. For this, in addition to the main 64-bit image, we provide a 32-bit image. Additional precompiled VMs are provided by https://opensmalltalk.org/. The source code to build your own is also available.
Directories used by Cuis
There are several directories used by Cuis itself:
DirectoryEntry cuisBaseDirectory
This is the base directory for all the files in the Cuis distribution. It is the same as the Git repository. For a Stable Cuis Release it is something like:
Your/Path/To/Project/Cuis-7-0
For the Rolling Release of Cuis it is something like:
Your/Path/To/Project/Cuis-Smalltalk-Dev
DirectoryEntry projectBaseDirectory
This is the base folder for your project using Cuis. It is used to search for code packages when you do Feature require: 'StuffMeNeeds'. It is the parent directory of #cuisBaseDirectory.
DirectoryEntry userBaseDirectory
This is an auto-generated folder. It is used to store user files, like fileOuts, logs, preferences and newly created packages. It is a sibling folder of #cuisBaseDirectory, and it is named like it but including the suffix -UserFiles.
To provide flexibility to developers, this directory can be set using command line options:
-ud userDirectoryRelativeOrAbsolutePathThis lets you specify an absolute or relative path. If a relative path is passed as argument, it is applied to#currentDirectory.-udIsBaseThis makes the#userBaseDirectorybe the same as the#cuisBaseDirectory.
DirectoryEntry currentDirectory
This directory is the host platform current directory, if the concept is applicable. Otherwise, it is the same as #projectBaseDirectory. It is used as the base directory for relative (i.e. not absolute) file paths.
DirectoryEntry smalltalkImageDirectory
The directory where the running image is. Used for the few files that are stored together with it.
DirectoryEntry vmDirectory
The directory of the VM that is running Cuis. Not used by Cuis itself.