Namespace current: Kernel [ StarPackage subclass: DirPackage [ DirPackage class >> file: aFile [ ^ self new file: aFile; yourself ] directory [ ^ self file asFile directory. ] name [ "Pick the name of the loaded package" ^ self loadedPackage name. ] loadedPackage [ | file package | loadedPackage isNil ifFalse: [^loadedPackage]. file := self file asFile. package := Package parse: file readStream. package isNil ifTrue: [^self error: 'invalid disabled-package tag inside a star file']. package relativeDirectory: file directory. package baseDirectories: {file directory}. package name isNil ifTrue: [^self error: 'package name must not be nil']. loadedPackage := package. ^loadedPackage ] ] PackageContainer subclass: DirPackageDirectory [ | files | DirPackageDirectory class >> on: aFile [ ^ self new add: aFile; yourself ] add: aFile [ self files add: aFile. ] files [ ^ files ifNil: [files := OrderedCollection new]. ] refresh: aDate [ self files do: [:file | | package | package := DirPackage file: file. (self packages) at: package name put: package; at: package name, '.dir' put: package] ] ] ] PackageLoader class extend [ addDirPackage: aFile [ "Make sure that root is initialized." self refresh. "Add the 'directory' to the packages" root add: (Kernel.DirPackageDirectory on: aFile). "Update the package descriptions" self refresh. ] ]