stx_goodies_monticello.st
author Claus Gittinger <cg@exept.de>
Sat, 01 Sep 2018 17:32:31 +0200
changeset 1087 d37466310a6a
parent 1082 0fc9d3b9894f
child 1093 9ae1f3f8b1f4
permissions -rw-r--r--
initial checkin class: MCFileTreeFileSystemUtils class: MCFileTreeFileSystemUtils class added:17 methods

"{ Package: 'stx:goodies/monticello' }"

"{ NameSpace: Smalltalk }"

LibraryDefinition subclass:#stx_goodies_monticello
	instanceVariableNames:''
	classVariableNames:''
	poolDictionaries:''
	category:'* Projects & Packages *'
!

!stx_goodies_monticello class methodsFor:'documentation'!

documentation
"
    Package documentation:

    This library provides support classes to read and write monticello packages
    (as used in Squeak and Pharo) and a GUI to browse and load such packages.

    Notice that Squeak packages usually do not work out-of-the-box in ST/X.
"
! !

!stx_goodies_monticello class methodsFor:'description'!

excludedFromPreRequisites
    "list all packages which should be ignored in the automatic
     preRequisites scan. See #preRequisites for more."

    ^ #(
    )
!

mandatoryPreRequisites
    "list packages which are mandatory as a prerequisite.
     This are packages containing superclasses of my classes and classes which
     are extended by myself.
     They are mandatory, because we need these packages as a prerequisite for loading and compiling.
     This method is generated automatically,
     by searching along the inheritance chain of all of my classes.
     Please take a look at the #referencedPreRequisites method as well."

    ^ #(
        #'stx:libbasic'    "AbstractTime - extended"
        #'stx:libbasic3'    "AbstractSourceCodeManager - superclass of MCSourceCodeManager"
        #'stx:libcompat'    "PackageInfo - extended"
        #'stx:libtool'    "AbstractSettingsApplication - superclass of MCSettingsApp"
        #'stx:libview2'    "ApplicationModel - extended"
        #'stx:libwidg2'    "AbstractHierarchicalItem - superclass of MCPackageEntry"
    )
!

referencedPreRequisites
    "list packages which are a prerequisite, because they contain
     classes which are referenced by my classes.
     These packages are NOT needed as a prerequisite for compiling or loading,
     however, a class from it may be referenced during execution and having it
     unloaded then may lead to a runtime doesNotUnderstand error, unless the caller
     includes explicit checks for the package being present.
     This method is generated automatically,
     by searching all classes (and their packages) which are referenced by my classes.
     Please also take a look at the #mandatoryPreRequisites method"

    ^ #(
        #'stx:goodies/communication'    "FTPClient - referenced by MCFtpRepository>>clientDo:"
        #'stx:libbasic2'    "Iterator - referenced by MCPackageList>>makeGenerator"
        #'stx:libcomp'    "Parser - referenced by MCRepositoryBrowser>>repositoryAddFromExpressionString"
        #'stx:libhtml'    "HTMLDocumentView - referenced by MCRepositoryBrowser>>openDocumentation"
        #'stx:libview'    "Color - referenced by MCCommitDialog>>findUniqueVersionNumber"
        #'stx:libwidg'    "PopUpMenu - referenced by MCVersionInspector>>pickAncestor"
    )
!

subProjects
    "list packages which are known as subprojects.
     The generated makefile will enter those and make there as well.
     However: they are not forced to be loaded when a package is loaded;
     for those, redefine #referencedPrerequisites or #mandatoryPreRequisites."

    ^ #(
    )
! !

!stx_goodies_monticello class methodsFor:'description - contents'!

classNamesAndAttributes
    "lists the classes which are to be included in the project.
     Each entry in the list may be: a single class-name (symbol),
     or an array-literal consisting of class name and attributes.
     Attributes are: #autoload or #<os> where os is one of win32, unix,..."

    ^ #(
        "<className> or (<className> attributes...) in load order"
        InMidstOfFileinNotification
        MCAncestry
        MCBrowserList
        MCChangeSelectionRequest
        MCConflict
        MCCredentialsRequest
        MCDefinition
        MCDefinitionIndex
        MCDependencySorter
        MCDialog
        MCDirtyPackageInfo
        MCDoItParser
        MCEmptyPackageInfo
        MCFrontier
        MCInteractiveLoadingQuery
        MCLazyPropertyDictionary
        MCMergeRecord
        MCMergeResolutionRequest
        MCMerger
        MCMock
        MCMockAPoolDictionary
        MCMockDependency
        MCMockPackageInfo
        MCNoChangesException
        MCPackage
        MCPackageCache
        MCPackageEntry
        MCPackageLoader
        MCPackageManager
        MCPatch
        MCPatchOperation
        MCPatcher
        MCPermissionDenied
        MCReader
        MCRepository
        MCRepositoryBrowser
        MCRepositoryEntry
        MCRepositoryGroup
        MCScanner
        MCServerCredentials
        MCServerRegistry
        MCSettingsApp
        MCSnapshot
        MCSourceCodeManager
        MCStXNamespaceQuery
        MCStXPackageInfo
        MCStXPackageQuery
        MCStXSnapshotTransformation
        MCStxVersionInfo
        MCTimestampAnnotation
        MCTool
        MCVariableDefinition
        MCVersion
        MCVersionDependency
        MCVersionEntry
        MCVersionLoader
        MCVersionMerger
        MCVersionNameAndMessageRequest
        MCVersionNotification
        MCVersionSorter
        MCWriter
        MethodReference
        PackageOrganizer
        #'stx_goodies_monticello'
        MCAddition
        MCClassComment
        MCClassDefinition
        MCClassInstanceVariableDefinition
        MCClassTraitDefinition
        MCClassTraitParser
        MCClassVariableDefinition
        MCCodeTool
        MCCommitDialog
        MCDictionaryRepository
        MCDiffyVersion
        MCFileBasedRepository
        MCFilteredVersionSorter
        MCGOODSRepository
        MCInstanceVariableDefinition
        MCMczWriter
        MCMethodDefinition
        MCMockDefinition
        MCMockDependentItem
        MCModification
        MCMultiPackageLoader
        MCOrganizationDefinition
        MCPackageList
        MCPoolImportDefinition
        MCRemoval
        MCRepositoryDialog
        MCRepositoryList
        MCScriptDefinition
        MCSnapshotReader
        MCStWriter
        MCStXSnapshotPostReadTransformation
        MCStXSnapshotPreWriteTransformation
        MCSystemCategoryParser
        MCThreeWayMerger
        MCTraitParser
        MCVersionHistoryBrowser
        MCVersionInfo
        MCVersionInfoWriter
        MCVersionInspector
        MCVersionList
        MCVersionReader
        MCWorkingAncestry
        MCWorkingCopy
        MCWriteOnlyRepository
        MCDirectoryRepository
        MCFtpRepository
        MCHttpRepository
        MCLazyVersionInfo
        MCMcdWriter
        MCMczReader
        MCPatchBrowser
        MCPostscriptDefinition
        MCPreambleDefinition
        MCRemovalPostscriptDefinition
        MCRemovalPreambleDefinition
        MCSMReleaseRepository
        MCSmtpRepository
        MCStReader
        MCStxMczWriter
        MCStxStWriter
        MCTraitDefinition
        MCCacheRepository
        MCGemstoneRepository
        MCMcdReader
        MCSmalltalkhubRepository
        MCSqueaksourceRepository
        MCSubDirectoryRepository
        (MCDependentsWrapper autoload)
        (MCToolWindowBuilder autoload)
        (MCSaveVersionDialog autoload)
        (MCWorkingCopyBrowser autoload)
        (MCFileRepositoryInspector autoload)
        (MCRepositoryInspector autoload)
        (MCSMCacheRepository autoload)
        (MCSnapshotBrowser autoload)
        (MCWorkingHistoryBrowser autoload)
        (MCChangeSelector autoload)
        (MCMergeBrowser autoload)
    )
!

extensionMethodNames
    "lists the extension methods which are to be included in the project.
     Entries are 2-element array literals, consisting of class-name and selector.
     A correponding method with real names must be present in my concrete subclasses
     if it has extensions."

    ^ #(
        Behavior traitCompositionString
        Behavior typeOfClass
        Class asClassDefinition
        Class classDefinitions
        Class poolDictionaryNames
        ClassDescription mcDefinition
        Object isConflict
        SequenceableCollection copyReplaceAll:with:asTokens:
        Stream isMessageStream
        String extractNumber
        String withSqueakLineEndings
        StringCollection asStringWithNativeLineEndings
        StringCollection asStringWithSqueakLineEndings
        Symbol isDoIt
        #'Tools::NewSystemBrowser' projectMenuMonticelloCommit
        UndefinedObject typeOfClass
        UserPreferences mcEnabled
        UserPreferences mcEnabled:
        UserPreferences mcRepositories
        UserPreferences mcRepositories:
        VersionInfo timeStamp
        'Annotation class' mctimestamp:
        'ProjectDefinition class' #'monticelloTimestamps_code'
        'ProjectDefinition class' #'monticelloTimestamps_codeFor:'
        'Timestamp class' fromMethodTimeStamp:
        Change mcDefinition
        Change mcDefinition:
        'ProjectDefinition class' monticelloName
        'ProjectDefinition class' #'monticelloAncestry_code'
        PackageInfo isMCStXPackageInfo
        CharacterArray asStringWithSqueakLineEndings
        CharacterArray asStringWithNativeLineEndings
        'ProjectDefinition class' monticelloNameForMCZ
    )
! !

!stx_goodies_monticello class methodsFor:'description - project information'!

applicationIconFileName
    "Return the name (without suffix) of an icon-file (the app's icon); will be included in the rc-resource file"

    ^ nil
    "/ ^ self applicationName
!

companyName
    "Return a companyname which will appear in <lib>.rc"

    ^ 'eXept Software AG'
!

description
    "Return a description string which will appear in vc.def / bc.def"

    ^ 'Smalltalk/X Monticello Class library'

    "Modified: / 20-08-2011 / 16:57:40 / cg"
!

legalCopyright
    "Return a copyright string which will appear in <lib>.rc"

    ^ 'Public - See SqueakSource'

    "Modified: / 20-08-2011 / 16:58:01 / cg"
!

productInstallDirBaseName
    "Returns a default installDir which will appear in <app>.nsi.
     This is usually not the one you want to keep"

    ^ (self package asCollectionOfSubstringsSeparatedByAny:':/') last
!

productName
    "Return a product name which will appear in <lib>.rc"

    ^ 'Smalltalk/X'
! !

!stx_goodies_monticello class methodsFor:'documentation'!

version
    ^ '$Header$'
!

version_CVS
    ^ '$Header$'
! !