[squeak-dev] The Inbox: Installer-Core-cmm.378.mcz
Chris Muller
asqueaker at gmail.com
Fri Aug 9 22:39:32 UTC 2013
Hi Frank, I know you're interested in being able to override the
repositories. This is a simple solution for that which meets at least
three use-cases.
Example 1
Installer
preemptRepositoryFor: 'htmlcssparser'
with: (MCDirectoryRepository directory: (FileDirectory default /
'my-projects' / 'mc'))
Example 2
"I'm on the train with slow Wi-Fi, look in my package-cache first for
anything before going to remote repositories."
#(squeak ss ss3) do:
[ : each | Installer
preemptRepositoryFor: each
with: MCCacheRepository default ]
Example 3
"I want to make a new system. Use the default repository, ss3, but if
its down fall back to the original SqueakSource."
Installer
fallbackRepositoryFor: #ss3
is: #ss
On Fri, Aug 9, 2013 at 5:36 PM, <commits at source.squeak.org> wrote:
> A new version of Installer-Core was added to project The Inbox:
> http://source.squeak.org/inbox/Installer-Core-cmm.378.mcz
>
> ==================== Summary ====================
>
> Name: Installer-Core-cmm.378
> Author: cmm
> Time: 9 August 2013, 5:04:23.858 pm
> UUID: 79285e19-2913-476e-b396-b1a01a652edc
> Ancestors: Installer-Core-cmm.377
>
> Allow the default repositories for external-packages to be preempted or reinforced.
>
> =============== Diff against Installer-Core-cmm.377 ===============
>
> 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>>defaultRepositoryFor: (in category 'repositories') -----
> + defaultRepositoryFor: anAssociation
> + ^ (self perform: anAssociation key)
> + project: anAssociation value ;
> + mc!
>
> Item was added:
> + ----- Method: Installer class>>fallbackRepositoryFor:is: (in category 'repositories') -----
> + fallbackRepositoryFor: scope is: anMCRepository
> + self
> + overrideRepositoryFor: scope
> + with:
> + (MCRepositoryGroup new
> + addRepository: (self defaultRepositoryFor: scope) ;
> + addRepository: anMCRepository ;
> + yourself)!
>
> Item was added:
> + ----- Method: Installer class>>overrideRepository:with: (in category 'repositories') -----
> + overrideRepository: scope with: anMCRepository
> + "Override the standard repository specified by scope with anMCRepository. To override an entire repository, specify scope as the repository selector. To override a single project within a repository, scope should be an Association whose key is the repository selector and value is the project name."
> + self repositories
> + at: scope
> + put: anMCRepository!
>
> Item was added:
> + ----- Method: Installer class>>packageCache (in category 'repositories') -----
> + packageCache
> + ^ MCCacheRepository default!
>
> Item was added:
> + ----- Method: Installer class>>preemptRepository:with: (in category 'repositories') -----
> + preemptRepository: scope with: anMCRepository
> + self
> + overrideRepositoryFor: scope
> + with:
> + (MCRepositoryGroup new
> + addRepository: anMCRepository ;
> + addRepository: (self defaultRepositoryFor: scope) ;
> + yourself)!
>
> Item was added:
> + ----- Method: Installer class>>removeOverride: (in category 'repositories') -----
> + 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 'repositories') -----
> - ----- 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 'repositories') -----
> + repositoryFor: anAssociation
> + | rep |
> + rep := self repositories
> + at: anAssociation
> + ifAbsent:
> + [ self repositories
> + at: anAssociation value
> + ifAbsent:
> + [ self repositories
> + at: anAssociation key
> + ifAbsent: [ ^ self defaultRepositoryFor: anAssociation ] ] ].
> + ^ rep isSymbol
> + ifTrue: [ self defaultRepositoryFor: rep -> anAssociation value ]
> + ifFalse: [ rep ]!
>
> Item was changed:
> ----- Method: Installer>>htmlValidator (in category 'external-packages') -----
> htmlValidator
> "Validates HTML and CSS pages against W3C DTD."
> + ^ { #ss3 -> 'htmlcssparser'.
> + 'HTML' }!
> - ^ { #ss -> 'htmlcssparser'.
> - 'HTML-tb.37' }!
>
> Item was changed:
> ----- Method: Installer>>setRepository: (in category 'private') -----
> setRepository: anAssociation
> + currentRepository := self class repositoryFor: anAssociation!
> - currentRepository := (self class perform: anAssociation key)
> - project: anAssociation value ;
> - mc!
>
>
More information about the Squeak-dev
mailing list
|