ConfigurableFeatures.st
author |
Jan Vrany <jan.vrany@labware.com> |
|
Tue, 01 Jun 2021 20:19:13 +0100 |
branch | jv |
changeset 25424 |
51bd8a6b196f |
parent 18120 |
e3a375d5f6a8
|
permissions |
-rw-r--r-- |
Cherry-picked `Context`
cherry-picked Context.st from a6b6dda4caff:
* 4aaf30c174e9: #DOCUMENTATION by cg, Claus Gittinger <cg@exept.de>
* c67311afcc6c: #OTHER by cg, Claus Gittinger <cg@exept.de>
* 883f79e7b2a6: #FEATURE by cg, Claus Gittinger <cg@exept.de>
* 716f3fbb09e9: Don't mark contexts with `CATCHMARK`, Jan Vrany <jan.vrany@fit.cvut.cz>
* cff24fa817b0: #REFACTORING by stefan, Stefan Vogel <sv@exept.de>
* 521f0d837330: #UI_ENHANCEMENT by cg, Claus Gittinger <cg@exept.de>
* bf1118f0fcca: #UI_ENHANCEMENT by cg, Claus Gittinger <cg@exept.de>
* e587cdd22868: #BUGFIX by cg, Claus Gittinger <cg@exept.de>
* fe9f9487a3ed: #DOCUMENTATION by cg, Claus Gittinger <cg@exept.de>
* d5b781899274: #BUGFIX by cg, Claus Gittinger <cg@exept.de>
* 8258751a7465: #FEATURE by cg, Claus Gittinger <cg@exept.de>
* 40173e082cbc: Copyright updates, Jan Vrany <jan.vrany@fit.cvut.cz>
* 6db5c28207d5: #UI_ENHANCEMENT by cg, Claus Gittinger <cg@exept.de>
* 871ea64fd5dc: #FEATURE by cg, Claus Gittinger <cg@exept.de>
* 4b544a108e4e: #DOCUMENTATION by cg, Claus Gittinger <cg@exept.de>
* 9a8d8399e566: #FEATURE by cgexept.de, Claus Gittinger <cg@exept.de>
* 170b00be0103: #BUGFIX by stefan, Stefan Vogel <sv@exept.de>
* a6c73965eae8: #FEATURE by cg, Claus Gittinger <cg@exept.de>
* ce2a0e462ff0: #FEATURE by cg, Claus Gittinger <cg@exept.de>
* 46a260a9ca92: #FEATURE by cg, Claus Gittinger <cg@exept.de>
* 46cab49167fb: #UI_ENHANCEMENT by exept, Claus Gittinger <cg@exept.de>
* 7d52dfd3997d: #DOCUMENTATION by exept, Claus Gittinger <cg@exept.de>
* c52eeea62763: Fix `Context >> argAndVarNames` in cases when debug info is not available, Jan Vrany <jan.vrany@labware.com>
* b5d6963fe4a9: Backed out changeset c52eeea62763, Jan Vrany <jan.vrany@labware.com>
* 6fd3896f8703: #FEATURE by exept, Claus Gittinger <cg@exept.de>
* b530ee616256: #REFACTORING by cg, Claus Gittinger <cg@exept.de>
* ef9b481d7498: #FEATURE by cg, Claus Gittinger <cg@exept.de>
* ea663b72bd51: #UI_ENHANCEMENT by cg, Claus Gittinger <cg@exept.de>
* 6179572a733c: #FEATURE by exept, Claus Gittinger <cg@exept.de>
* 84155b1b6622: #DOCUMENTATION by exept, Claus Gittinger <cg@exept.de>
* 37d06602d856: *** empty log message ***, Claus Gittinger <cg@exept.de>
* f927b9022fea: *** empty log message ***, Claus Gittinger <cg@exept.de>
* 427d3be62d97: #UI_ENHANCEMENT by exept, Claus Gittinger <cg@exept.de>
"{ Package: 'stx:libbasic' }"
Object subclass:#ConfigurableFeatures
instanceVariableNames:''
classVariableNames:'LoadedFeatures'
poolDictionaries:''
category:'System-Support'
!
!ConfigurableFeatures class methodsFor:'documentation'!
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
ConfigurableFeatures 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:'initialization'!
initialize
"Invoked at system start or when the class is dynamically loaded."
"/ please change as required (and remove this comment)
LoadedFeatures := Dictionary new
"Modified: / 01-12-2014 / 11:16:02 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!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 endsWith:':') ifFalse:[
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
^ self hasSCMSupportEnabledFor:#'CVSSourceCodeManager'
"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
^ self hasSCMSupportEnabledFor:#'DataBaseSourceCodeManager'
"Created: / 03-01-2012 / 15:36:12 / cg"
!
hasExternalLookupSupport
"Return true, if the VM is compiled with external lookup MOP"
%{
#ifdef SUPPORT_EXTERNAL_LOOKUP
RETURN ( true );
#endif
%}.
^false
"
ConfigurableFeatures hasExternalLookupSupport
ConfigurableFeatures includesFeature:#ExternalLookupSupport
"
"Created: / 16-04-2012 / 20:00:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
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
^ self hasSCMSupportEnabledFor:#'FileBasedSourceCodeManager'
"Created: / 21-12-2011 / 17:07:08 / cg"
!
hasGitSupport
"/ use Smalltalk-at to trick the dependency/prerequisite generator
^ (Smalltalk at: #'GitSourceCodeManager' ifAbsent:nil) notNil
"
ConfigurableFeatures hasGitSupport
"
"Created: / 23-07-2012 / 13:37:09 / cg"
!
hasGitSupportEnabled
^ self hasSCMSupportEnabledFor:#'GitSourceCodeManager'
"
self hasGitSupportEnabled
"
"Created: / 23-07-2012 / 13:37:17 / cg"
!
hasMercurialSupport
"/ use Smalltalk-at to trick the dependency/prerequisite generator
^ (Smalltalk at: #'MercurialSourceCodeManager' ifAbsent:nil) notNil
"
ConfigurableFeatures hasMercurialSupport
"
"Created: / 18-01-2012 / 10:58:07 / cg"
!
hasMercurialSupportEnabled
^ self hasSCMSupportEnabledFor:#'MercurialSourceCodeManager'
"
self hasMercurialSupportEnabled
"
"Created: / 18-01-2012 / 10:58:12 / 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
^ self hasSCMSupportEnabledFor:#'MonticelloSourceCodeManager'
"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
^ self hasSCMSupportEnabledFor:#'PerforceSourceCodeManager'
"Created: / 03-01-2012 / 15:43:28 / cg"
!
hasRefactoryBrowser
"Return true, if refactory browser support is available"
(LoadedFeatures includesKey: #RefactoryBrowser) ifFalse:[
"/ Called for the very first time
#(
#'stx:goodies/refactoryBrowser/browser'
#'stx:goodies/refactoryBrowser/changes'
#'stx:goodies/refactoryBrowser/helpers'
#'stx:goodies/refactoryBrowser/lint'
#'stx:goodies/refactoryBrowser/parser'
#'stx:goodies/refactoryBrowser/refactoring'
) do:[:each |
(ProjectDefinition definitionClassForPackage: each) isNil ifTrue:[
| loaded |
loaded := [ Smalltalk loadPackage: each ] on: PackageLoadError do:[ false ].
loaded ifFalse:[
LoadedFeatures at: #RefactoryBrowser put: false.
^ false.
].
]
].
LoadedFeatures at: #RefactoryBrowser put: true.
^ true
].
^ LoadedFeatures includesKey: #RefactoryBrowser
"
ConfigurableFeatures includesFeature: #RefactoryBrowser
"
"Created: / 01-12-2014 / 11:16:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
hasSCMSupportEnabledFor:aSourceCodeManagerClassName
|scm|
"/ use Smalltalk-at to trick the dependency/prerequisite generator
scm := Smalltalk at:aSourceCodeManagerClassName ifAbsent:nil.
^ scm notNil
and:[ scm isLoaded
and:[ scm shownInBrowserMenus ]]
"Created: / 18-01-2012 / 10:55:58 / cg"
!
hasSubversionSupport
"/ use Smalltalk-at to trick the dependency/prerequisite generator
^ (Smalltalk at: #'SVNSourceCodeManager' ifAbsent:nil) notNil
"
ConfigurableFeatures hasSubversionSupport
"
"Created: / 07-09-2011 / 10:40:40 / cg"
"Modified: / 13-03-2012 / 17:19:13 / Jan Vrany <jan.vrany.fit.cvut.cz>"
!
hasSubversionSupportEnabled
^ self hasSCMSupportEnabledFor:#'SVNSourceCodeManager'
"Created: / 07-09-2011 / 10:41:33 / cg"
! !
!ConfigurableFeatures class methodsFor:'documentation'!
version
^ '$Header: /cvs/stx/stx/libbasic/ConfigurableFeatures.st,v 1.11 2014-12-01 11:24:54 vrany Exp $'
!
version_CVS
^ '$Header: /cvs/stx/stx/libbasic/ConfigurableFeatures.st,v 1.11 2014-12-01 11:24:54 vrany Exp $'
! !
ConfigurableFeatures initialize!