MCRepositoryGroup.st
author Claus Gittinger <cg@exept.de>
Mon, 14 May 2018 02:21:18 +0200
changeset 1048 582b3a028cbc
parent 1046 2c62588b53ed
permissions -rw-r--r--
#FEATURE by cg class: MCMethodDefinition changed: #postloadOver:
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1042
3b8c88c55251 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 783
diff changeset
     1
"{ Encoding: utf8 }"
3b8c88c55251 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 783
diff changeset
     2
79
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     3
"{ Package: 'stx:goodies/monticello' }"
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     4
1042
3b8c88c55251 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 783
diff changeset
     5
"{ NameSpace: Smalltalk }"
3b8c88c55251 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 783
diff changeset
     6
79
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     7
Object subclass:#MCRepositoryGroup
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     8
	instanceVariableNames:'repositories'
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     9
	classVariableNames:''
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    10
	poolDictionaries:''
590
af671bba9a44 category change
Claus Gittinger <cg@exept.de>
parents: 566
diff changeset
    11
	category:'SCM-Monticello-Versioning'
79
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    12
!
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    13
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    14
MCRepositoryGroup class instanceVariableNames:'default'
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    15
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    16
"
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    17
 No other class instance variables are inherited by this class.
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    18
"
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    19
!
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    20
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    21
MCRepositoryGroup comment:'A singleton class, holds the list of repositories. Can look for a requested VersionInfo among its repositories.'
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    22
!
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    23
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    24
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
!MCRepositoryGroup class methodsFor:'as yet unclassified'!
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    27
default
561
0f55a0dccf06 added: #repositories:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 556
diff changeset
    28
    default isNil ifTrue: [default := self new].
0f55a0dccf06 added: #repositories:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 556
diff changeset
    29
    ^default
0f55a0dccf06 added: #repositories:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 556
diff changeset
    30
0f55a0dccf06 added: #repositories:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 556
diff changeset
    31
    "Modified: / 04-04-2012 / 11:04:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
79
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    32
!
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    33
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    34
new
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    35
	^ self basicNew initialize
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    36
! !
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    37
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    38
!MCRepositoryGroup methodsFor:'as yet unclassified'!
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    39
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    40
addRepository: aRepository
541
Claus Gittinger <cg@exept.de>
parents: 525
diff changeset
    41
    ((repositories includes: aRepository) or: [aRepository == MCCacheRepository default])
552
c0ecaa34cc64 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 541
diff changeset
    42
	ifFalse: [
c0ecaa34cc64 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 541
diff changeset
    43
	    repositories add: aRepository.
c0ecaa34cc64 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 541
diff changeset
    44
	    self class default addRepository: aRepository.
c0ecaa34cc64 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 541
diff changeset
    45
	    self changed: #repositories
541
Claus Gittinger <cg@exept.de>
parents: 525
diff changeset
    46
    ].
Claus Gittinger <cg@exept.de>
parents: 525
diff changeset
    47
Claus Gittinger <cg@exept.de>
parents: 525
diff changeset
    48
    "Modified: / 04-12-2011 / 09:04:24 / cg"
Claus Gittinger <cg@exept.de>
parents: 525
diff changeset
    49
!
Claus Gittinger <cg@exept.de>
parents: 525
diff changeset
    50
Claus Gittinger <cg@exept.de>
parents: 525
diff changeset
    51
flushRepositories
Claus Gittinger <cg@exept.de>
parents: 525
diff changeset
    52
    "/ cg: mhmh - what should we do here ?
556
f9aca2ebc86f comment/format in: #flushRepositories
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 552
diff changeset
    53
    "/ called by UserPreferences >> mcRepositories:
541
Claus Gittinger <cg@exept.de>
parents: 525
diff changeset
    54
Claus Gittinger <cg@exept.de>
parents: 525
diff changeset
    55
    self initializeRepositoriesFromUserSettings
Claus Gittinger <cg@exept.de>
parents: 525
diff changeset
    56
Claus Gittinger <cg@exept.de>
parents: 525
diff changeset
    57
    "Created: / 01-12-2011 / 20:35:13 / cg"
556
f9aca2ebc86f comment/format in: #flushRepositories
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 552
diff changeset
    58
    "Modified (comment): / 24-01-2012 / 09:51:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
79
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    59
!
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    60
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    61
includes: aRepository
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    62
	^ self repositories includes: aRepository
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    63
!
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    64
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    65
includesVersionNamed: aString
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    66
	self repositoriesDo: [:ea | (ea includesVersionNamed: aString) ifTrue: [^ true]].
552
c0ecaa34cc64 *** empty log message ***
Claus Gittinger <cg@exept.de>
parents: 541
diff changeset
    67
	^ false
79
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    68
!
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    70
initialize
541
Claus Gittinger <cg@exept.de>
parents: 525
diff changeset
    71
    "/ repositories _ OrderedCollection new
Claus Gittinger <cg@exept.de>
parents: 525
diff changeset
    72
    self initializeRepositoriesFromUserSettings
Claus Gittinger <cg@exept.de>
parents: 525
diff changeset
    73
Claus Gittinger <cg@exept.de>
parents: 525
diff changeset
    74
    "Modified: / 04-12-2011 / 09:07:23 / cg"
Claus Gittinger <cg@exept.de>
parents: 525
diff changeset
    75
!
Claus Gittinger <cg@exept.de>
parents: 525
diff changeset
    76
Claus Gittinger <cg@exept.de>
parents: 525
diff changeset
    77
initializeRepositoriesFromUserSettings
1042
3b8c88c55251 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 783
diff changeset
    78
    |litArray reps dir rep|
541
Claus Gittinger <cg@exept.de>
parents: 525
diff changeset
    79
561
0f55a0dccf06 added: #repositories:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 556
diff changeset
    80
    litArray := UserPreferences current mcRepositories.
566
2cdc9be3bc68 changed: #initializeRepositoriesFromUserSettings
Stefan Vogel <sv@exept.de>
parents: 561
diff changeset
    81
    litArray == false ifTrue:[
1042
3b8c88c55251 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 783
diff changeset
    82
        "there is no entry in the UserPreferences, so false - the default value - is returned"
566
2cdc9be3bc68 changed: #initializeRepositoriesFromUserSettings
Stefan Vogel <sv@exept.de>
parents: 561
diff changeset
    83
        reps := #().
2cdc9be3bc68 changed: #initializeRepositoriesFromUserSettings
Stefan Vogel <sv@exept.de>
parents: 561
diff changeset
    84
    ] ifFalse:[
2cdc9be3bc68 changed: #initializeRepositoriesFromUserSettings
Stefan Vogel <sv@exept.de>
parents: 561
diff changeset
    85
        reps := litArray decodeAsLiteralArray.
2cdc9be3bc68 changed: #initializeRepositoriesFromUserSettings
Stefan Vogel <sv@exept.de>
parents: 561
diff changeset
    86
    ].
2cdc9be3bc68 changed: #initializeRepositoriesFromUserSettings
Stefan Vogel <sv@exept.de>
parents: 561
diff changeset
    87
    repositories := reps asOrderedCollection.
541
Claus Gittinger <cg@exept.de>
parents: 525
diff changeset
    88
1042
3b8c88c55251 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 783
diff changeset
    89
    ((dir := Filename downloadsDirectory) notNil and:[dir exists]) ifTrue:[
3b8c88c55251 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 783
diff changeset
    90
        rep := MCDirectoryRepository directory:dir pathName.
1046
2c62588b53ed #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 1042
diff changeset
    91
        repositories add:rep
1042
3b8c88c55251 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 783
diff changeset
    92
    ].
3b8c88c55251 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 783
diff changeset
    93
    ((dir := Smalltalk packageDirectoryForPackageId:'stx:goodies/monticello_packages') notNil and:[dir exists]) ifTrue:[
3b8c88c55251 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 783
diff changeset
    94
        rep := MCDirectoryRepository directory:dir pathName.
1046
2c62588b53ed #BUGFIX by cg
Claus Gittinger <cg@exept.de>
parents: 1042
diff changeset
    95
        repositories add:rep
1042
3b8c88c55251 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 783
diff changeset
    96
    ].
3b8c88c55251 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 783
diff changeset
    97
541
Claus Gittinger <cg@exept.de>
parents: 525
diff changeset
    98
    "Created: / 04-12-2011 / 09:06:53 / cg"
561
0f55a0dccf06 added: #repositories:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 556
diff changeset
    99
    "Modified: / 04-04-2012 / 11:08:50 / Jan Vrany <jan.vrany@fit.cvut.cz>"
79
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   100
!
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   101
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   102
removeRepository: aRepository
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   103
	repositories remove: aRepository ifAbsent: [].
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   104
	self changed: #repositories
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   105
!
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   106
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   107
repositories
783
b4b44454973b class: MCRepositoryGroup
Claus Gittinger <cg@exept.de>
parents: 590
diff changeset
   108
    ^ ((OrderedSet with:MCCacheRepository default)
b4b44454973b class: MCRepositoryGroup
Claus Gittinger <cg@exept.de>
parents: 590
diff changeset
   109
                addAll:repositories;
b4b44454973b class: MCRepositoryGroup
Claus Gittinger <cg@exept.de>
parents: 590
diff changeset
   110
                yourself)
b4b44454973b class: MCRepositoryGroup
Claus Gittinger <cg@exept.de>
parents: 590
diff changeset
   111
            asOrderedCollection
b4b44454973b class: MCRepositoryGroup
Claus Gittinger <cg@exept.de>
parents: 590
diff changeset
   112
        select: [ :ea | ea isValid ]
541
Claus Gittinger <cg@exept.de>
parents: 525
diff changeset
   113
Claus Gittinger <cg@exept.de>
parents: 525
diff changeset
   114
    "Modified: / 04-12-2011 / 09:04:42 / cg"
79
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   115
!
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   116
561
0f55a0dccf06 added: #repositories:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 556
diff changeset
   117
repositories: anOrderedCollection
0f55a0dccf06 added: #repositories:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 556
diff changeset
   118
0f55a0dccf06 added: #repositories:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 556
diff changeset
   119
    repositories := anOrderedCollection copy.
0f55a0dccf06 added: #repositories:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 556
diff changeset
   120
    "Ensure, that repositories contain cache as first"
0f55a0dccf06 added: #repositories:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 556
diff changeset
   121
    repositories remove: MCCacheRepository default ifAbsent:[].
0f55a0dccf06 added: #repositories:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 556
diff changeset
   122
    repositories addFirst: MCCacheRepository default.
0f55a0dccf06 added: #repositories:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 556
diff changeset
   123
    self == self class default ifTrue:[
0f55a0dccf06 added: #repositories:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 556
diff changeset
   124
        UserPreferences current mcRepositories: repositories asArray literalArrayEncoding
0f55a0dccf06 added: #repositories:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 556
diff changeset
   125
    ].
0f55a0dccf06 added: #repositories:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 556
diff changeset
   126
0f55a0dccf06 added: #repositories:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 556
diff changeset
   127
    "Created: / 04-04-2012 / 11:05:28 / Jan Vrany <jan.vrany@fit.cvut.cz>"
0f55a0dccf06 added: #repositories:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 556
diff changeset
   128
!
0f55a0dccf06 added: #repositories:
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 556
diff changeset
   129
79
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   130
repositoriesDo: aBlock
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   131
	self repositories do: [:ea | [aBlock value: ea] on: Error do: []]
541
Claus Gittinger <cg@exept.de>
parents: 525
diff changeset
   132
! !
Claus Gittinger <cg@exept.de>
parents: 525
diff changeset
   133
Claus Gittinger <cg@exept.de>
parents: 525
diff changeset
   134
!MCRepositoryGroup methodsFor:'searching'!
79
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   135
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   136
versionWithInfo: aVersionInfo
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   137
	^self versionWithInfo: aVersionInfo ifNone: [ self error: 'Could not find version ', aVersionInfo name printString,'. Maybe you need to add a repository?' ]
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   138
!
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   139
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   140
versionWithInfo: aVersionInfo ifNone: aBlock
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   141
	self repositoriesDo: [:ea | (ea versionWithInfo: aVersionInfo) ifNotNilDo: [:v | ^ v]].
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   142
	^aBlock value
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   143
! !
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   144
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   145
!MCRepositoryGroup class methodsFor:'documentation'!
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   146
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   147
version
1042
3b8c88c55251 #FEATURE by cg
Claus Gittinger <cg@exept.de>
parents: 783
diff changeset
   148
    ^ '$Header$'
79
5f6ee04f4dc9 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   149
! !
783
b4b44454973b class: MCRepositoryGroup
Claus Gittinger <cg@exept.de>
parents: 590
diff changeset
   150