--- a/mercurial/HGPackageModelRegistry.st Mon Jun 10 02:06:48 2013 +0100
+++ b/mercurial/HGPackageModelRegistry.st Tue Jun 11 00:55:03 2013 +0100
@@ -40,13 +40,10 @@
"Returns a HGPackageModel for given package or nil
if given package is not backed by Mercurial repository."
- | dir components names directories root rootI rootD pkg|
+ | dir components names namei directories root rootI rootD pkg|
packages at: package ifPresent: [ :p | ^ p ].
- dir := Smalltalk getPackageDirectoryForPackage: package.
- dir isNil ifTrue:[ ^ nil ].
-
components := OrderedCollection new.
names := OrderedCollection new.
@@ -73,6 +70,21 @@
names add: package
].
+
+ "Package might be sub-package which may not exists. Search for some
+ existing packagedir along package hierarchy"
+ namei := names size.
+ [ dir isNil and: [ namei > 0 ] ] whileTrue:[
+ dir := Smalltalk getPackageDirectoryForPackage: (names at: namei).
+ dir notNil ifTrue:[
+ namei + 1 to: names size do:[:i|
+ dir := dir / (components at: i).
+ ].
+ ].
+ namei := namei - 1.
+ ].
+ dir isNil ifTrue:[ ^ nil ].
+
directories := Array new: components size.
directories at: components size put: dir.
directories size - 1 downTo: 1 do:[:i|
@@ -105,6 +117,7 @@
^pkg
"Created: / 18-03-2013 / 22:26:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 11-06-2013 / 00:43:14 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
packageNamed:package