The Trunk: Installer-Core-cmm.381.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-cmm.381.mcz

commits-2
Chris Muller uploaded a new version of Installer-Core to project The Trunk:
http://source.squeak.org/trunk/Installer-Core-cmm.381.mcz

==================== Summary ====================

Name: Installer-Core-cmm.381
Author: cmm
Time: 30 October 2013, 10:17:57.435 pm
UUID: 1005ce43-3cce-4cf7-ab8c-001c497f17cb
Ancestors: Installer-Core-cmm.380

- Ability to override default repositories when using the new #merge: function.
- #merge: optimization.

=============== Diff against Installer-Core-cmm.380 ===============

Item was changed:
  Object subclass: #Installer
  instanceVariableNames: 'answers packages messagesToSuppress useFileIn noiseLevel currentRepository'
+ classVariableNames: 'InstallerBindings IsSetToTrapErrors Remembered Repositories SkipLoadingTests ValidationBlock'
- classVariableNames: 'InstallerBindings IsSetToTrapErrors Remembered SkipLoadingTests ValidationBlock'
  poolDictionaries: ''
  category: 'Installer-Core'!
 
  !Installer commentStamp: 'kph 3/30/2009 01:29' prior: 0!
  Documentation now available at http://installer.pbwiki.com/Installer
   
  useFileIn - flag to load source.st rather than using Monticello!

Item was added:
+ ----- Method: Installer class>>airplaneMode (in category 'repository-overrides') -----
+ airplaneMode
+ "Override all remote repositories with the package cache."
+ self overrideRemoteRepostoriesWith: MCCacheRepository default!

Item was added:
+ ----- Method: Installer class>>clearOverrides (in category 'repository-overrides') -----
+ clearOverrides
+ "Remove all repository overrides and load everthing from the specified default repositories when using #merge:."
+ Repositories := Dictionary new!

Item was added:
+ ----- Method: Installer class>>defaultRepositoryFor: (in category 'private') -----
+ defaultRepositoryFor: anAssociation
+ "private -- answer the MC repository specified by anAssociation."
+ ^ (self perform: anAssociation key)
+ project: anAssociation value ;
+ mc!

Item was changed:
  ----- Method: Installer class>>doesNotUnderstand: (in category 'custom names') -----
  doesNotUnderstand: aMessage
+ self isThisEverCalled: 'What is this?'.
-
  ^ self remembered at: aMessage selector ifAbsent: [ super doesNotUnderstand: aMessage ]!

Item was added:
+ ----- Method: Installer class>>overrideRemoteRepostoriesWith: (in category 'repository-overrides') -----
+ overrideRemoteRepostoriesWith: aMCRepositoryOrGroup
+ self remoteRepositories do:
+ [ : each | self
+ overrideRepository: each
+ with: aMCRepositoryOrGroup ]!

Item was added:
+ ----- Method: Installer class>>overrideRepository:with: (in category 'repository-overrides') -----
+ overrideRepository: scope with: anMCRepository
+ "When configuring the image with #merge:, override the standard repository specified by scope with anMCRepository."
+ "Installer
+ override: #ss3->'htmlcssparser'
+ with: (MCDirectoryRepository directory: (FileDirectory default / 'mc'))."
+ "Installer
+ override: #ss
+ with: #ssMirror."
+ self repositories
+ at: scope
+ put: anMCRepository!

Item was added:
+ ----- Method: Installer class>>packageCache (in category 'repositories') -----
+ packageCache
+ ^ MCCacheRepository default!

Item was changed:
  ----- Method: Installer class>>remembered (in category 'custom names') -----
  remembered
+ self isThisEverCalled: 'clean the var too.'.
-
  ^ Remembered ifNil: [ Remembered := IdentityDictionary new ]!

Item was added:
+ ----- Method: Installer class>>remoteRepositories (in category 'repository-overrides') -----
+ remoteRepositories
+ ^ #(#ss #ss3 #cobalt #gemsource #goran #gs #impara #keith #krestianstvo #lukas #saltypickle #sophie #squeak #squeakfoundation #squeaksource #squeaksource3 #ss #ss3 #swa #swasource #wiresong )!

Item was added:
+ ----- Method: Installer class>>removeOverride: (in category 'repository-overrides') -----
+ removeOverride: scope
+ "Remove override specified by scope and return to using the default repository for packages within that scope."
+ ^ self repositories
+ removeKey: scope
+ ifAbsent: [  ]!

Item was changed:
+ ----- Method: Installer class>>repositories (in category 'accessing') -----
- ----- Method: Installer class>>repositories (in category 'instanciation') -----
  repositories
+ ^ Repositories ifNil: [ Repositories := Dictionary new ]!
-
- ^ self class organization listAtCategoryNamed: 'repositories'.
- !

Item was added:
+ ----- Method: Installer class>>repositoryFor: (in category 'private') -----
+ repositoryFor: anAssociation
+ "private -- anAssociation key is the repository selector Symbol understood by Intsaller class.  It's value is the project name within that HTTP repository."
+ | rep |
+ rep := self repositories
+ at: anAssociation  "<-- check for #rep->project overrides first"
+ ifAbsent:
+ [ self repositories
+ at: anAssociation key "<-- override an entire repository."
+ ifAbsent: [ ^ self defaultRepositoryFor: anAssociation ]  ].
+ ^ rep isSymbol
+ ifTrue: [ self defaultRepositoryFor: rep -> anAssociation value ]
+ ifFalse: [ rep ]!

Item was added:
+ ----- Method: Installer class>>ssMirror (in category 'repositories') -----
+ ssMirror
+ "The Chilean mirror for the original SqueakSource."
+ ^ self monticello http: 'http://dsal.cl/squeaksource/'!

Item was changed:
  ----- Method: Installer>>bindingOf: (in category 'script bindings') -----
  bindingOf: aString
+ self isThisEverCalled: 'Want to get rid of this and the class-var'.
-
  InstallerBindings isNil ifTrue: [ InstallerBindings := Dictionary new].
 
  (InstallerBindings includesKey: aString)
  ifFalse: [InstallerBindings at: aString put: nil].
 
  ^ InstallerBindings associationAt: aString.!

Item was changed:
  ----- Method: Installer>>merge: (in category 'public interface') -----
  merge: structureOrSymbol
+ | toUncache |
+ toUncache := Set new.
  structureOrSymbol isSymbol
  ifTrue: [ self merge: (self perform: structureOrSymbol) ]
  ifFalse:
  [ self
  depthFirstOf: structureOrSymbol
  do:
  [ : each | each isVariableBinding
+ ifTrue:
+ [ currentRepository := self class repositoryFor: each.
+ currentRepository cacheAllFilenames.
+ toUncache add: currentRepository ]
- ifTrue: [ self setRepository: each ]
  ifFalse:
  [ each isString
  ifTrue: [ self primMerge: each ]
+ ifFalse: [ self error: 'invalid specification' ] ] ] ].
+ toUncache do:
+ [ : each | each flushAllFilenames ]!
- ifFalse: [ self error: 'invalid specification' ] ] ] ]!

Item was changed:
  ----- Method: Installer>>rememberAs: (in category 'custom names') -----
  rememberAs: symbol
+ self isThisEverCalled.
-
  self class remembered at: symbol asSymbol put: self!

Item was changed:
  ----- Method: Installer>>setRepository: (in category 'private') -----
+ setRepository: aMCRepository
+ currentRepository := aMCRepository!
- setRepository: anAssociation
- currentRepository := (self class perform: anAssociation key)
- project: anAssociation value ;
- mc!

Item was changed:
  ----- Method: InstallerMonticello>>project: (in category 'accessing') -----
  project: name
 
  project := name.
  packages := nil.
 
  (mc respondsTo: #location:) ifTrue:[ mc := mc copy location: root , name ].
+ (mc respondsTo: #directory:) ifTrue: [ mc := mc copy directory: root / name ].
- (mc respondsTo: #directory:) ifTrue: [ mc := mc copy directory: root ,'/', name ].
 
  ^self copy.!