The Inbox: Installer-Core-cmm.378.mcz

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

The Inbox: Installer-Core-cmm.378.mcz

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


Reply | Threaded
Open this post in threaded view
|

Re: The Inbox: Installer-Core-cmm.378.mcz

Chris Muller-3
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,  <[hidden email]> 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!
>
>

Reply | Threaded
Open this post in threaded view
|

Re: The Inbox: Installer-Core-cmm.378.mcz

Chris Muller-3
Oops.  The comment for Example 1 is:

"I'm working on the HTML parser.  Look in my own local dir before
going to repositories."

On Fri, Aug 9, 2013 at 5:39 PM, Chris Muller <[hidden email]> wrote:

> 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,  <[hidden email]> 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!
>>
>>

Reply | Threaded
Open this post in threaded view
|

Re: The Inbox: Installer-Core-cmm.378.mcz

Frank Shearar-3
In reply to this post by Chris Muller-3
Hi Chris,

So if I understand this correctly, you'd set up the overrides before
any calls to Installer, right? If you like, the scoping is temporal -
"from now on, override with Foo" - as opposed to lexical.

frank

On 9 August 2013 23:39, Chris Muller <[hidden email]> wrote:

> 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,  <[hidden email]> 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!
>>
>>
>