#UI_ENHANCEMENT by cg
class: GitHubSmalltalkPackageReader
class definition
added: #buildPackageChangeSet
changed:
#readClasses
#readPackage
--- a/gitHub/GitHubSmalltalkPackageReader.st Sat Jun 30 18:44:05 2018 +0200
+++ b/gitHub/GitHubSmalltalkPackageReader.st Sun Jul 01 09:26:39 2018 +0200
@@ -1,9 +1,11 @@
+"{ Encoding: utf8 }"
+
"{ Package: 'stx:libscm/gitHub' }"
"{ NameSpace: Smalltalk }"
Object subclass:#GitHubSmalltalkPackageReader
- instanceVariableNames:'changeSet packageDirectory packageName'
+ instanceVariableNames:'changeSet packageDirectory packageName classChangeSets'
classVariableNames:''
poolDictionaries:''
category:'SCM-GitHub-Package-Reader'
@@ -56,13 +58,57 @@
!GitHubSmalltalkPackageReader methodsFor:'reading'!
+buildPackageChangeSet
+ "sort the classChangeSets by inheritance, to allow for
+ filein in order"
+
+ |setAComesBeforeB|
+
+ setAComesBeforeB :=
+ [:setA :setB |
+ |definitionA definitionB nameA nameB superNameA superNameB|
+
+ definitionA := setA first.
+ self assert:(definitionA isClassDefinitionChange).
+ definitionB := setB first.
+ self assert:(definitionB isClassDefinitionChange).
+ nameA := definitionA className.
+ nameB := definitionB className.
+ superNameA := definitionA superClassName.
+ superNameB := definitionB superClassName.
+ nameA = superNameB.
+ ].
+
+ classChangeSets := classChangeSets topologicalSort:setAComesBeforeB.
+ changeSet := ChangeSet new.
+ classChangeSets do:[:each |
+ changeSet addAll:each.
+ ].
+
+ "
+ |changes|
+
+ changes := self new
+ packageDirectory:'/Users/cg/work/stx/goodies/smaCC/SmaCC-master/SmaCC-Cucumber.package';
+ readPackage;
+ changeSet.
+ ChangeSetBrowser openOn:changes
+ "
+
+ "Created: / 01-07-2018 / 09:14:35 / Claus Gittinger"
+!
+
readClasses
packageDirectory directoriesDo:[:eachDirectory |
+ |changeSet|
+
(eachDirectory hasSuffix:'class') ifTrue:[
- GitHubSmalltalkClassReader new
- changeSet:changeSet;
- classDirectory:eachDirectory;
- readClass.
+ changeSet :=
+ GitHubSmalltalkClassReader new
+ classDirectory:eachDirectory;
+ readClass;
+ changeSet.
+ classChangeSets add:changeSet.
].
].
@@ -77,19 +123,21 @@
"
"Created: / 30-06-2018 / 18:24:49 / Claus Gittinger"
+ "Modified: / 01-07-2018 / 09:12:46 / Claus Gittinger"
!
readPackage
|props|
- changeSet := ChangeSet new.
-
+ classChangeSets := OrderedCollection new.
props := JSONReader fromJSON:(packageDirectory / 'properties.json') contentsOfEntireFile.
props notEmptyOrNil ifTrue:[self halt].
packageName := packageDirectory withoutSuffix baseName .
self readClasses.
+ self buildPackageChangeSet.
+
"
|changes|
@@ -102,6 +150,7 @@
"
"Created: / 30-06-2018 / 18:20:13 / Claus Gittinger"
+ "Modified: / 01-07-2018 / 09:12:10 / Claus Gittinger"
! !
!GitHubSmalltalkPackageReader class methodsFor:'documentation'!