ConfigurableFeatures.st
author Claus Gittinger <cg@exept.de>
Fri, 07 Oct 2011 10:51:42 +0200
changeset 13769 8259f3bf7fa2
parent 13641 2fe2dd2ca2d3
child 13874 16d95fea6cbb
permissions -rw-r--r--
changed: #packageName_dot_rc
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
13641
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     1
"{ Package: 'stx:libbasic' }"
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     2
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     3
Object subclass:#ConfigurableFeatures
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     4
	instanceVariableNames:''
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     5
	classVariableNames:'LoadedFeatures'
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     6
	poolDictionaries:''
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     7
	category:'System-Support'
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     8
!
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     9
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    10
!ConfigurableFeatures class methodsFor:'documentation'!
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    11
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
documentation
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    13
"
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
    being tired of finding '(Smalltalk at:someClass) notNil' all over the place,
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    15
    start to concentrate feature queries to this single class, which might get more
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
    feature methods via extensions.
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    17
    Thus, to correctly ask for a feature being present, use:
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
        ConfigurableFeature includesFeature:featureName
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
    or
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
        ConfigurableFeature knownFeatures
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
    to ask for a list of features.
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
    Caveat: just started; more will be moved to this place as time goes by
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
"
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
! !
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    27
!ConfigurableFeatures class methodsFor:'queries'!
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    28
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    29
allFeatures
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    30
    "a list of features which are present in that smalltalk configuration"
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    31
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    32
    ^ self knownFeatures select:[:each | self includesFeature:each]
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    33
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    34
    "
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    35
     ConfigurableFeatures allFeatures 
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    36
    "
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    37
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    38
    "Created: / 07-09-2011 / 10:50:31 / cg"
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    39
!
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    40
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    41
includesFeature:featureName
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    42
    |querySelector|
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    43
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    44
    querySelector := ('has',featureName asUppercaseFirst) asSymbol.
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    45
    ^ self perform:querySelector ifNotUnderstood:false.
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    46
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    47
    "
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    48
     ConfigurableFeatures includesFeature:#SubversionSupport
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    49
    "
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    50
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    51
    "Created: / 07-09-2011 / 10:49:08 / cg"
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    52
!
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    53
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    54
knownFeatures
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    55
    "a list of known features; some of them might not be present in that smalltalk configuration"
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    56
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    57
    ^ self class methodDictionary keys
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    58
        collect:[:each | 
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    59
            (each startsWith:'has') ifTrue:[
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
                each copyFrom:4
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
            ] ifFalse:[
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    62
                nil
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    63
            ].
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    64
        ]
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    65
        thenSelect:[:nm | nm notNil]
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    66
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    67
    "
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    68
     ConfigurableFeatures allFeatures
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
    "
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    70
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    71
    "Created: / 07-09-2011 / 10:51:26 / cg"
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    72
! !
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    73
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    74
!ConfigurableFeatures class methodsFor:'queries-features'!
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    75
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    76
hasSubversionSupport
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    77
    |subVersionRepository|
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    78
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    79
    "/ use Smalltalk-at to trick the dependency/prerequisite generator
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    80
    subVersionRepository := Smalltalk at: #'SVN::RepositoryManager'.
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    81
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    82
    ^ subVersionRepository notNil
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    83
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    84
    "
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    85
     ConfigurableFeatures hasSubversionSupport
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    86
    "
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    87
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    88
    "Created: / 07-09-2011 / 10:40:40 / cg"
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    89
!
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    90
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    91
hasSubversionSupportEnabled
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    92
    |subVersionRepository|
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    93
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    94
    "/ use Smalltalk-at to trick the dependency/prerequisite generator
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    95
    subVersionRepository := Smalltalk at: #'SVN::RepositoryManager'.
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    96
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    97
    ^ subVersionRepository notNil
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    98
        and:[ subVersionRepository isLoaded 
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    99
        and:[ subVersionRepository enabled ]]
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   100
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   101
    "Created: / 07-09-2011 / 10:41:33 / cg"
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   102
! !
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   103
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   104
!ConfigurableFeatures class methodsFor:'documentation'!
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   105
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   106
version
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   107
    ^ '$Header: /cvs/stx/stx/libbasic/ConfigurableFeatures.st,v 1.1 2011-09-07 08:54:18 cg Exp $'
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   108
!
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   109
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   110
version_CVS
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   111
    ^ '$Header: /cvs/stx/stx/libbasic/ConfigurableFeatures.st,v 1.1 2011-09-07 08:54:18 cg Exp $'
2fe2dd2ca2d3 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   112
! !