--- 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"
-! !