A new version of MonticelloConfigurations was added to project Monticello Public: http://www.squeaksource.com/mc/MonticelloConfigurations-ar.53.mcz
==================== Summary ====================
Name: MonticelloConfigurations-ar.53 Author: ar Time: 17 July 2009, 8:26:33 am UUID: fffdc58b-69ee-bc43-b2ac-e9b96f86dddb Ancestors: MonticelloConfigurations-mha.42, MonticelloConfigurations-mtf.52
Merge with http://source.squeak.org/trunk.
=============== Diff against MonticelloConfigurations-mtf.52 ===============
Item was changed: ----- Method: MCConfiguration>>name: (in category 'accessing') ----- name: aString + "Sets the name of the configuration without extension (.mcm). + See also MCMcmReader>>configurationName." - - (aString endsWith: self writerClass extension) - ifTrue: [ ^ name := aString allButLast: self writerClass extension size + 1 ]. name := aString!
Item was changed: ----- Method: MCMcmReader>>version (in category 'accessing') ----- version + ^self configuration! - | configuration | - stream reset. - configuration := MCConfiguration fromArray: (MCScanner scan: stream). - configuration name: self configurationName. - ^configuration!
Item was added: + ----- Method: MCMcmReader>>loadVersionInfo (in category 'accessing') ----- + loadVersionInfo + info := self configuration!
Item was changed: MCVersionReader subclass: #MCMcmReader + instanceVariableNames: 'fileName configuration' - instanceVariableNames: 'fileName' classVariableNames: '' poolDictionaries: '' category: 'MonticelloConfigurations'!
Item was added: + Object subclass: #MCMcmUpdater + instanceVariableNames: '' + classVariableNames: '' + poolDictionaries: '' + category: 'MonticelloConfigurations'!
Item was added: + ----- Method: MCMcmUpdater class>>updateFromRepositories: (in category 'updating') ----- + updateFromRepositories: repositoryUrls + "MCMcmUpdater updateFromRepositories: #( + 'http://squeaksource.com/MCUpdateTest' + )" + + | repos updateList parts base author version type config | + Preferences enable: #upgradeIsMerge. + + "The list of repositories to consult in order" + repos := repositoryUrls collect:[:url| + MCRepositoryGroup default repositories + detect:[:r| r description = url] + ifNone:[ | r | + r := MCHttpRepository location: url user: '' password: ''. + MCRepositoryGroup default addRepository: r. + r]]. + + "The list of updates-author.version.mcm sorted by version" + repos do:[:r| + updateList := SortedCollection new. + "Find all the updates-author.version.mcm files" + r allFileNames do:[:versionedName| + parts := versionedName findTokens: '.-'. + parts size = 4 ifTrue:[ + base := parts at: 1. + author := parts at: 2. + version := [(parts at: 3) asNumber] on: Error do:[:ex| ex return: 0]. + type := parts at: 4. + ]. + (base = 'update' and:[version > 0 and:[type = 'mcm']]) + ifTrue:[updateList add: version -> versionedName]]. + + "Proceed only if there are updates available at all." + updateList ifNotEmpty: [ + "Now process each update file. Check if we have all dependencies and if not, + load the entire configuration (this is mostly to skip older updates quickly)" + updateList do:[:assoc| + config := r versionFromFileNamed: assoc value. + (config dependencies allSatisfy:[:dep| dep isFulfilled]) + ifFalse:[config upgrade]]. + "We've loaded all the provided update configurations. + Use the latest configuration to update all the remaining packages." + config updateFromRepositories. + config upgrade. + ]. + ].!
Item was added: + ----- Method: MCMcmReader>>configuration (in category 'accessing') ----- + configuration + configuration ifNil: [self loadConfiguration]. + "browser modifies configuration, but the reader might get cached" + ^configuration copy!
Item was added: + ----- Method: MCMcmReader>>loadConfiguration (in category 'accessing') ----- + loadConfiguration + stream reset. + configuration := MCConfiguration fromArray: (MCScanner scan: stream). + configuration name: self configurationName. + !
packages@lists.squeakfoundation.org