Chris Muller uploaded a new version of Installer-Core to project The Trunk:
http://source.squeak.org/trunk/Installer-Core-fbs.361.mcz ==================== Summary ==================== Name: Installer-Core-fbs.361 Author: fbs Time: 17 January 2013, 10:14:55.106 pm UUID: 6b44c4f2-631a-46e9-82a1-29df951936b9 Ancestors: Installer-Core-bp.360 #3 of 3 letting "Installer ss install: 'Foo'" use the local cache repository if possible. If you run "Installer ss3 install: 'CoolWidget-xyz.1.mcz', load it from the cache repository if possible. Otherwise, use the canonical repository. This lets you still use SqueakMap Installer scripts even when you're not connected to the Internet. =============== Diff against Installer-Core-bp.360 =============== Item was changed: ----- Method: InstallerMonticello>>mcThing (in category 'monticello') ----- mcThing + | loader localCache | - | loader | loader := self classMCVersionLoader new. + localCache := self classMCCacheRepository default. self logCR: 'reading ' , mc description , '...'. "several attempts to read files - repository readableFileNames sometimes fails" self packages do: [:pkg | | versionNames fileToLoad version | + versionNames := self versionNamesForPackageNamed: (self packageName: pkg) withCache: localCache. - versionNames := mc versionNamesForPackageNamed: - (pkg asMCVersionName versionNumber = 0 - ifTrue: [ "Just a package name specified, use it whole." pkg ] - ifFalse: [pkg asMCVersionName packageName]). versionNames sort: self mcSortFileBlock. fileToLoad := versionNames detect: (self mcDetectFileBlock: pkg) ifNone: [ nil ]. fileToLoad + ifNotNil: [version := [localCache versionNamed: fileToLoad] on: MCError do: [mc versionNamed: fileToLoad]. - ifNotNil: [version := mc versionNamed: fileToLoad. (version isKindOf: MCConfiguration) ifTrue: [^ version] ifFalse: [MCRepositoryGroup default addRepository: self normalizedRepository. version workingCopy repositoryGroup addRepository: self normalizedRepository. loader addVersion: version]. self logCR: ' found ' , version fileName , '...']]. ^ loader! Item was added: + ----- Method: InstallerMonticello>>packageName: (in category 'private') ----- + packageName: versionString + "Extract the package name out of a Monticello version string: 'Foo', 'Foo-fbs.1', 'Foo-fbs.1.mcz'." + ^ versionString asMCVersionName versionNumber = 0 + ifTrue: [ "Just a package name specified, use it whole." versionString ] + ifFalse: [versionString asMCVersionName packageName]! Item was added: + ----- Method: InstallerMonticello>>versionNamesForPackageNamed:withCache: (in category 'private') ----- + versionNamesForPackageNamed: aString withCache: localCache + "The local cache might contain some versions of this package. The network might not be available. Try return a merged list of both, but otherwise just return the local versions." + | localVersions remoteVersions | + localVersions := localCache versionNamesForPackageNamed: aString. + remoteVersions := [mc versionNamesForPackageNamed: aString] + on: MCError do: [Array empty]. + ^ (localVersions asSet addAll: remoteVersions; yourself) asArray.! |
Free forum by Nabble | Edit this page |