ConfigurableFeatures.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Fri, 06 Jan 2012 08:53:28 +0000
branchjv
changeset 17909 0ab1deab8e9c
parent 17907 998195c96a6d
child 17910 8d796ca8bd1d
permissions -rw-r--r--
Merged with /trunk

"
 COPYRIGHT (c) 2006 by eXept Software AG
	      All Rights Reserved

 This software is furnished under a license and may be used
 only in accordance with the terms of that license and with the
 inclusion of the above copyright notice.   This software may not
 be provided or otherwise made available to, or used by, any
 other person.  No title to or ownership of the software is
 hereby transferred.
"
"{ Package: 'stx:libbasic' }"

Object subclass:#ConfigurableFeatures
	instanceVariableNames:''
	classVariableNames:'LoadedFeatures'
	poolDictionaries:''
	category:'System-Support'
!

!ConfigurableFeatures class methodsFor:'documentation'!

copyright
"
 COPYRIGHT (c) 2006 by eXept Software AG
	      All Rights Reserved

 This software is furnished under a license and may be used
 only in accordance with the terms of that license and with the
 inclusion of the above copyright notice.   This software may not
 be provided or otherwise made available to, or used by, any
 other person.  No title to or ownership of the software is
 hereby transferred.
"
!

documentation
"
    being tired of finding '(Smalltalk at:someClass) notNil' all over the place,
    start to concentrate feature queries to this single class, which might get more
    feature methods via extensions.
    Thus, to correctly ask for a feature being present, use:
        ConfigurableFeature includesFeature:featureName
    or
        ConfigurableFeature knownFeatures
    to ask for a list of features.

    Caveat: just started; more will be moved to this place as time goes by
"
! !

!ConfigurableFeatures class methodsFor:'queries'!

allFeatures
    "a list of features which are present in that smalltalk configuration"

    ^ self knownFeatures select:[:each | self includesFeature:each]

    "
     ConfigurableFeatures allFeatures 
    "

    "Created: / 07-09-2011 / 10:50:31 / cg"
!

includesFeature:featureName
    |querySelector|

    querySelector := ('has',featureName asUppercaseFirst) asSymbol.
    ^ self perform:querySelector ifNotUnderstood:false.

    "
     ConfigurableFeatures includesFeature:#SubversionSupport
    "

    "Created: / 07-09-2011 / 10:49:08 / cg"
!

knownFeatures
    "a list of known features; some of them might not be present in that smalltalk configuration"

    ^ self class methodDictionary keys
        collect:[:each | 
            (each startsWith:'has') ifTrue:[
                each copyFrom:4
            ] ifFalse:[
                nil
            ].
        ]
        thenSelect:[:nm | nm notNil]

    "
     ConfigurableFeatures allFeatures
    "

    "Created: / 07-09-2011 / 10:51:26 / cg"
! !

!ConfigurableFeatures class methodsFor:'queries-features'!

hasCVSSupport
    "/ use Smalltalk-at to trick the dependency/prerequisite generator
    ^ (Smalltalk at: #'CVSSourceCodeManager' ifAbsent:nil) notNil

    "
     ConfigurableFeatures hasCVSSupport
    "

    "Created: / 03-01-2012 / 15:36:54 / cg"
!

hasCVSSupportEnabled
    |cvs|

    "/ use Smalltalk-at to trick the dependency/prerequisite generator
    cvs := Smalltalk at: #'CVSSourceCodeManager' ifAbsent:nil.

    ^ cvs notNil
        and:[ cvs isLoaded 
        and:[ cvs enabled ]]

    "Created: / 03-01-2012 / 15:42:16 / cg"
!

hasDataBaseSourceCodeManagerSupport
    "/ use Smalltalk-at to trick the dependency/prerequisite generator
    ^ (Smalltalk at: #'DataBaseSourceCodeManager' ifAbsent:nil) notNil

    "
     ConfigurableFeatures hasDataBaseSourceCodeManagerSupport
    "

    "Created: / 03-01-2012 / 15:36:03 / cg"
!

hasDataBaseSourceCodeManagerSupportEnabled
    |repository|

    "/ use Smalltalk-at to trick the dependency/prerequisite generator
    repository := Smalltalk at: #'DataBaseSourceCodeManager' ifAbsent:nil.

    ^ repository notNil
        and:[ repository isLoaded 
        and:[ repository enabled ]]

    "Created: / 03-01-2012 / 15:36:12 / cg"
!

hasFileBasedSourceCodeManagerSupport
    "/ use Smalltalk-at to trick the dependency/prerequisite generator
    ^ (Smalltalk at: #'FileBasedSourceCodeManager' ifAbsent:nil) notNil

    "
     ConfigurableFeatures hasFileBasedSourceCodeManagerSupport
    "

    "Created: / 21-12-2011 / 17:07:21 / cg"
!

hasFileBasedSourceCodeManagerSupportEnabled
    |repository|

    "/ use Smalltalk-at to trick the dependency/prerequisite generator
    repository := Smalltalk at: #'FileBasedSourceCodeManager' ifAbsent:nil.
    ^ repository notNil
        and:[ repository isLoaded 
        and:[ repository enabled ]]

    "Created: / 21-12-2011 / 17:07:08 / cg"
!

hasMonticelloSupport
    "/ use Smalltalk-at to trick the dependency/prerequisite generator
    ^ (Smalltalk at: #'MonticelloSourceCodeManager' ifAbsent:nil) notNil

    "
     ConfigurableFeatures hasMonticelloSupport
    "

    "Created: / 03-01-2012 / 15:44:32 / cg"
!

hasMonticelloSupportEnabled
    |cvs|

    "/ use Smalltalk-at to trick the dependency/prerequisite generator
    cvs := Smalltalk at: #'MonticelloSourceCodeManager' ifAbsent:nil.

    ^ cvs notNil
        and:[ cvs isLoaded 
        and:[ cvs enabled ]]

    "Created: / 03-01-2012 / 15:44:39 / cg"
!

hasPerforceSupport
    "/ use Smalltalk-at to trick the dependency/prerequisite generator
    ^ (Smalltalk at: #'PerforceSourceCodeManager' ifAbsent:nil) notNil

    "
     ConfigurableFeatures hasPerforceSupport
    "

    "Created: / 03-01-2012 / 15:43:42 / cg"
!

hasPerforceSupportEnabled
    |cvs|

    "/ use Smalltalk-at to trick the dependency/prerequisite generator
    cvs := Smalltalk at: #'PerforceSourceCodeManager' ifAbsent:nil.

    ^ cvs notNil
        and:[ cvs isLoaded 
        and:[ cvs enabled ]]

    "Created: / 03-01-2012 / 15:43:28 / cg"
!

hasSubversionSupport
    "/ use Smalltalk-at to trick the dependency/prerequisite generator
    ^ (Smalltalk at: #'SVN::RepositoryManager' ifAbsent:nil) notNil

    "
     ConfigurableFeatures hasSubversionSupport
    "

    "Created: / 07-09-2011 / 10:40:40 / cg"
!

hasSubversionSupportEnabled
    |subVersionRepository|

    "/ use Smalltalk-at to trick the dependency/prerequisite generator
    subVersionRepository := Smalltalk at: #'SVN::RepositoryManager' ifAbsent:nil.

    ^ subVersionRepository notNil
        and:[ subVersionRepository isLoaded 
        and:[ subVersionRepository enabled ]]

    "Created: / 07-09-2011 / 10:41:33 / cg"
! !

!ConfigurableFeatures class methodsFor:'documentation'!

version
    ^ '$Header: /cvs/stx/stx/libbasic/ConfigurableFeatures.st,v 1.4 2012/01/03 14:44:49 cg Exp $'
!

version_CVS
    ^ 'Header: /cvs/stx/stx/libbasic/ConfigurableFeatures.st,v 1.4 2012/01/03 14:44:49 cg Exp '
!

version_SVN
    ^ '$Id: ConfigurableFeatures.st 10754 2012-01-06 08:53:28Z vranyj1 $'
! !