MCSourceCodeManager.st
changeset 344 1cf97802e8a7
child 512 6e6fc0dd076e
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/MCSourceCodeManager.st	Sat Aug 20 14:28:23 2011 +0200
@@ -0,0 +1,168 @@
+"{ Package: 'stx:goodies/monticello' }"
+
+AbstractSourceCodeManager subclass:#MCSourceCodeManager
+	instanceVariableNames:''
+	classVariableNames:''
+	poolDictionaries:''
+	category:'Monticello-St/X support'
+!
+
+
+!MCSourceCodeManager class methodsFor:'* As yet uncategorized *'!
+
+forgetDisabledModules
+
+    "Nothing to do"
+
+    "Created: / 10-06-2011 / 14:11:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+managerTypeName
+
+    ^'Monticello 1.x'
+
+    "Created: / 26-10-2010 / 21:52:51 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+savePreferencesOn:aFileStream
+
+    "Nothing to do now..."
+
+    "Created: / 10-06-2011 / 14:16:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!MCSourceCodeManager class methodsFor:'basic access'!
+
+checkinClass:aClass fileName:classFileName directory:packageDir module:moduleDir source:sourceFile logMessage:logMessage force:force
+    "checkin of a class into the source repository.
+     Return true if ok, false if not."
+
+    ^ self shouldImplement
+!
+
+checkoutModule:aModule directory:aPackage andDo:aBlock
+    "check out everything from a package into a temporary directory.
+     Then evaluate aBlock, passing the name of that temp-directory.
+     Afterwards, the tempDir is removed.
+     Return true, if OK, false if any error occurred."
+
+    ^ self shouldImplement
+!
+
+streamForClass:aClass fileName:classFileName revision:revision directory:packageDir module:moduleDir cache:doCache
+    "extract a classes source code and return an open readStream on it.
+     A revision of nil selects the current (in image) revision.
+     The classes source code is extracted using the revision and the sourceCodeInfo,
+     which itself is extracted from the classes packageString."
+
+    ^ self shouldImplement
+! !
+
+!MCSourceCodeManager class methodsFor:'basic administration'!
+
+checkForExistingContainer:fileName inModule:moduleName directory:dirName
+    "check for a container to be present"
+
+    ^ self shouldImplement
+!
+
+checkForExistingModule:moduleName
+    "check for a module directory to be present"
+
+    ^ self shouldImplement
+!
+
+checkForExistingModule:moduleDir directory:packageDir
+    "check for a package directory to be present"
+
+    ^ self shouldImplement
+!
+
+createContainerFor:aClass inModule:moduleName directory:dirName container:fileName
+    "create a new container & check into it an initial version of aClass"
+
+    ^ self shouldImplement
+!
+
+createModule:moduleName
+    "create a new module directory"
+
+    ^ self shouldImplement
+!
+
+createModule:module directory:directory
+    "create a new package directory"
+
+    ^ self shouldImplement
+!
+
+initialRevisionStringFor:aClass inModule:moduleDir directory:packageDir container:fileName
+    "return a string usable as initial revision string"
+
+    ^ self shouldImplement
+!
+
+revisionLogOf:clsOrNil fromRevision:rev1OrNil toRevision:rev2OrNil numberOfRevisions:limitOrNil fileName:classFileName directory:packageDir module:moduleDir
+    "actually do return a revisionLog. The main worker method.
+     This must be implemented by a concrete source-code manager"
+
+    ^ self shouldImplement
+! !
+
+!MCSourceCodeManager class methodsFor:'queries'!
+
+settingsApplicationClass
+    "link to my settings application (needed for the settings dialog"
+
+    ^ MCSettingsApp
+
+    "Modified: / 20-07-2011 / 16:52:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+! !
+
+!MCSourceCodeManager class methodsFor:'source code administration'!
+
+getExistingContainersInModule:aModule directory:aPackage
+    "{ Pragma: +optSpace }"
+
+    ^ self shouldImplement
+!
+
+getExistingDirectoriesInModule:aModule
+    "{ Pragma: +optSpace }"
+
+    ^ self shouldImplement
+!
+
+getExistingModules
+    "{ Pragma: +optSpace }"
+
+    ^ self shouldImplement
+!
+
+revisionInfoFromString:aString
+    "{ Pragma: +optSpace }"
+
+    ^ self shouldImplement
+! !
+
+!MCSourceCodeManager class methodsFor:'subclass responsibility'!
+
+reportHistoryLogSince:timeGoal filterSTSources:filter filterUser:userFilter filterRepository:repositoryFilter filterModules:moduleFilter inTo:aBlock
+    "superclass AbstractSourceCodeManager class says that I am responsible to implement this method"
+
+    ^ self shouldImplement
+! !
+
+!MCSourceCodeManager class methodsFor:'documentation'!
+
+version
+    ^ '$Header: /cvs/stx/stx/goodies/monticello/MCSourceCodeManager.st,v 1.1 2011-08-20 12:28:23 cg Exp $'
+!
+
+version_CVS
+    ^ '$Header: /cvs/stx/stx/goodies/monticello/MCSourceCodeManager.st,v 1.1 2011-08-20 12:28:23 cg Exp $'
+!
+
+version_SVN
+    ^ '§Id: MCSourceCodeManager.st 31 2011-07-20 15:52:38Z vranyj1 §'
+! !