The Trunk: Installer-Core-fbs.361.mcz

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

The Trunk: Installer-Core-fbs.361.mcz

commits-2
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.!