AbstractSourceCodeManager.st
changeset 71 a8c7364b9bb6
parent 70 10c63b6f0615
child 72 e64fba2dcb10
--- a/AbstractSourceCodeManager.st	Tue Nov 14 20:07:52 1995 +0100
+++ b/AbstractSourceCodeManager.st	Wed Nov 15 13:15:09 1995 +0100
@@ -10,8 +10,6 @@
  hereby transferred.
 "
 
-'From Smalltalk/X, Version:2.10.8 on 4-nov-1995 at 10:07:36 pm'                 !
-
 Object subclass:#AbstractSourceCodeManager
 	 instanceVariableNames:''
 	 classVariableNames:'CacheDirectoryName'
@@ -21,20 +19,6 @@
 
 !AbstractSourceCodeManager class methodsFor:'documentation'!
 
-version
-    ^ '$Header: /cvs/stx/stx/libbasic3/AbstractSourceCodeManager.st,v 1.14 1995-11-14 19:07:50 cg Exp $'
-!
-
-documentation
-"
-    Abstract superclass for sourceCodeManagers.
-    Concrete subclasses provide access to a source repository.
-    All protocol here traps into subclassResponsbility errors.
-    Please read more documentation in concrete subclasses 
-    (especially: CVSSourceCodeManager) for how to use this manager.
-"
-!
-
 copyright
 "
  COPYRIGHT (c) 1995 by Claus Gittinger
@@ -47,7 +31,20 @@
  other person.  No title to or ownership of the software is
  hereby transferred.
 "
-! !
+!
+
+documentation
+"
+    Abstract superclass for sourceCodeManagers.
+    Concrete subclasses provide access to a source repository.
+    All protocol here traps into subclassResponsbility errors.
+    Please read more documentation in concrete subclasses 
+    (especially: CVSSourceCodeManager) for how to use this manager.
+"
+!
+
+version
+^ '$Header: /cvs/stx/stx/libbasic3/AbstractSourceCodeManager.st,v 1.15 1995-11-15 12:15:09 cg Exp $'! !
 
 !AbstractSourceCodeManager class methodsFor:'initialization'!
 
@@ -64,15 +61,116 @@
     CacheDirectoryName := path , '/stx_sourceCache'.
 ! !
 
-!AbstractSourceCodeManager class methodsFor:'source code administration'!
+!AbstractSourceCodeManager class methodsFor:'private'!
+
+cacheDirectoryName
+    ^ CacheDirectoryName
+!
+
+sourceCacheDirectory
+    |dir nm|
+
+    (nm := self cacheDirectoryName) isNil ifTrue:[^ nil].
 
-writeRevisionLogOf:aClass to:aStream
-    "send revisionlog to aStream - to be implemented by concrete subclasses"
+    (dir := nm asFilename) exists ifFalse:[
+	dir makeDirectory.
+	dir asFilename exists ifFalse:[
+	    'SOURCEMGR: could not create cache dir ''' , CacheDirectoryName , '''' infoPrintNL.
+	    ^ nil
+	].
+    ].
+    ^ dir
+!
 
+streamForClass:cls fileName:classFileName revision:revision directory:packageDir module:moduleDir cache:cacheIt
+    self subclassResponsibility.
+    ^ nil
+
+    "Created: 4.11.1995 / 19:09:12 / cg"
+    "Modified: 4.11.1995 / 19:15:43 / cg"
 ! !
 
 !AbstractSourceCodeManager class methodsFor:'source code access'!
 
+checkinClass:aClass
+    "checkin of a class into the source repository.
+     Return true if ok, false if not."
+
+    |cls sourceInfo tempDir packageDir moduleDir tempFile classFileName ok|
+
+    cls := aClass.
+    cls isMeta ifTrue:[
+        cls := cls soleInstance
+    ].
+
+    sourceInfo := cls sourceCodeInfo.
+    sourceInfo isNil ifTrue:[
+        'SOURCEMGR: cannot extract classes sourceInfo' infoPrintNL.
+        ^ false
+    ].
+
+    packageDir := sourceInfo at:#directory.
+    moduleDir := sourceInfo at:#module.  "/ use the modules name as CVS module
+    classFileName := Smalltalk fileNameForClass:cls.
+
+    tempDir := (Filename newTemporaryIn:nil) makeDirectory.
+    [
+        |aStream|
+
+        tempFile := tempDir construct:(classFileName,'.st').
+        aStream := tempFile writeStream.
+        aStream isNil ifTrue:[
+            'SOURCEMGR: temporary fileout failed' infoPrintNL.
+            ^ false
+        ].
+        
+        aClass fileOutOn:aStream withTimeStamp:false.
+        aStream close.
+
+        (tempFile := tempDir construct:(classFileName,'.st')) exists ifFalse:[
+            'SOURCEMGR: temporary fileout failed' infoPrintNL.
+            ^ false
+        ].
+
+        ^ self 
+            checkinClass:cls
+            fileName:classFileName 
+            directory:packageDir 
+            module:moduleDir
+            source:(tempFile name)
+    ] valueNowOrOnUnwindDo:[
+        tempDir recursiveRemove
+    ].
+    ^ false
+
+    "
+     SourceCodeManager checkinClass:Array
+    "
+
+    "Created: 6.11.1995 / 18:56:00 / cg"
+    "Modified: 15.11.1995 / 12:59:29 / cg"
+!
+
+mostRecentSourceStreamForClassNamed:aClassOrClassName
+    |classFileName packageDir moduleDir|
+
+    classFileName := Smalltalk fileNameForClass:aClassOrClassName.
+    packageDir := Smalltalk sourceDirectoryNameOfClass:aClassOrClassName.
+    moduleDir := 'stx'.
+    packageDir isNil ifTrue:[^ nil].
+
+    ^ self 
+	streamForClass:nil
+	fileName:classFileName 
+	revision:#newest 
+	directory:packageDir 
+	module:moduleDir
+	cache:false
+
+    "Created: 6.11.1995 / 16:09:06 / cg"
+    "Modified: 9.11.1995 / 14:34:15 / cg"
+!
+
 sourceStreamFor:aClass
     "extract a classes source code and return an open readStream on it.
      The classes source code is extracted using the revision and the sourceCodeInfo,
@@ -110,101 +208,12 @@
 	cache:true
 
     "Modified: 9.11.1995 / 14:34:10 / cg"
-!
-
-mostRecentSourceStreamForClassNamed:aClassOrClassName
-    |classFileName packageDir moduleDir|
-
-    classFileName := Smalltalk fileNameForClass:aClassOrClassName.
-    packageDir := Smalltalk sourceDirectoryNameOfClass:aClassOrClassName.
-    moduleDir := 'stx'.
-    packageDir isNil ifTrue:[^ nil].
-
-    ^ self 
-	streamForClass:nil
-	fileName:classFileName 
-	revision:#newest 
-	directory:packageDir 
-	module:moduleDir
-	cache:false
-
-    "Created: 6.11.1995 / 16:09:06 / cg"
-    "Modified: 9.11.1995 / 14:34:15 / cg"
-!
-
-checkinClass:aClass
-    "checkin of a class into the source repository.
-     Return true if ok, false if not."
-
-    |cls sourceInfo tempDir packageDir moduleDir tempFile classFileName ok|
-
-    cls := aClass.
-    cls isMeta ifTrue:[
-	cls := cls soleInstance
-    ].
-
-    sourceInfo := cls sourceCodeInfo.
-    sourceInfo isNil ifTrue:[
-	'SOURCEMGR: cannot extract classes sourceInfo' infoPrintNL.
-	^ false
-    ].
-
-    packageDir := sourceInfo at:#directory.
-    moduleDir := sourceInfo at:#module.  "/ use the modules name as CVS module
-    classFileName := Smalltalk fileNameForClass:cls.
-
-    tempDir := (Filename newTemporaryIn:nil) makeDirectory.
-    [
-	aClass fileOutIn:tempDir.
-
-	(tempFile := tempDir construct:(classFileName,'.st')) exists ifFalse:[
-	    'SOURCEMG: temporary fileout failed' infoPrintNL.
-	].
-
-	^ self 
-	    checkinClass:cls
-	    fileName:classFileName 
-	    directory:packageDir 
-	    module:moduleDir
-	    source:(tempFile name)
-    ] valueNowOrOnUnwindDo:[
-	tempDir recursiveRemove
-    ].
-    ^ false
-
-    "
-     SourceCodeManager checkinClass:Array
-    "
-
-    "Created: 6.11.1995 / 18:56:00 / cg"
-    "Modified: 14.11.1995 / 15:15:09 / cg"
 ! !
 
-!AbstractSourceCodeManager class methodsFor:'private'!
-
-cacheDirectoryName
-    ^ CacheDirectoryName
-!
-
-sourceCacheDirectory
-    |dir nm|
-
-    (nm := self cacheDirectoryName) isNil ifTrue:[^ nil].
+!AbstractSourceCodeManager class methodsFor:'source code administration'!
 
-    (dir := nm asFilename) exists ifFalse:[
-	dir makeDirectory.
-	dir asFilename exists ifFalse:[
-	    'SOURCEMGR: could not create cache dir ''' , CacheDirectoryName , '''' infoPrintNL.
-	    ^ nil
-	].
-    ].
-    ^ dir
-!
+writeRevisionLogOf:aClass to:aStream
+    "send revisionlog to aStream - to be implemented by concrete subclasses"
 
-streamForClass:cls fileName:classFileName revision:revision directory:packageDir module:moduleDir cache:cacheIt
-    self subclassResponsibility.
-    ^ nil
+! !
 
-    "Created: 4.11.1995 / 19:09:12 / cg"
-    "Modified: 4.11.1995 / 19:15:43 / cg"
-! !