The Trunk: UpdateStream-mt.14.mcz

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

The Trunk: UpdateStream-mt.14.mcz

commits-2
Marcel Taeumel uploaded a new version of UpdateStream to project The Trunk:
http://source.squeak.org/trunk/UpdateStream-mt.14.mcz

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

Name: UpdateStream-mt.14
Author: mt
Time: 4 March 2020, 9:30:27.350885 am
UUID: 8238c043-21eb-284c-aec1-f376ec57389e
Ancestors: UpdateStream-ct.13

Fixes some contracts, i.e., "nil" vs. "#()" vs. "self".

=============== Diff against UpdateStream-ct.13 ===============

Item was changed:
  ----- Method: FilePackage class>>conflictsWithUpdatedMethods: (in category '*UpdateStream-instance creation') -----
  conflictsWithUpdatedMethods: fullName
  | conflicts changeList |
+ (conflicts := (self fromFileNamed: fullName) conflictsWithUpdatedMethods)
+ ifEmpty: [^ self].
- conflicts := (self fromFileNamed: fullName) conflictsWithUpdatedMethods.
- (conflicts isNil or: [conflicts isEmpty]) ifTrue: [^ self].
  changeList := ChangeList new.
  changeList
  changes: conflicts
  file: (FileDirectory default readOnlyFileNamed: fullName) close.
  ChangeList
  open: changeList
  name: 'Conflicts for ', (FileDirectory localNameFor: fullName)
  multiSelect: true.!

Item was changed:
  ----- Method: FilePackage>>conflictsWithUpdatedMethods (in category '*UpdateStream-conflict checker') -----
  conflictsWithUpdatedMethods
  "Check this package for conflicts with methods in the image which are in newer updates."
 
  | localFileName stream updateNumberString updateNumber imageUpdateNumber updateNumberChangeSet conflicts fileStream |
 
  localFileName := FileDirectory localNameFor: fullName.
  stream := ReadStream on: sourceSystem.
  stream upToAll: 'latest update: #'.
  updateNumberString := stream upTo: $].
  stream close.
 
  fileStream := FileStream readOnlyFileNamed: fullName.
  (fileStream contentsOfEntireFile includes: Character linefeed)
  ifTrue: [self notify:  'The changeset file ', localFileName, ' contains linefeeds.  Proceed if...
  you know that this is okay (e.g. the file contains raw binary data).'].
  fileStream close.
 
  updateNumberString isEmpty ifFalse: "remove prepended junk, if any"
  [updateNumberString := (updateNumberString findTokens: Character space) last].
  updateNumberString asInteger ifNil:
  [(self confirm: 'Error: ', localFileName, ' has no valid Latest Update number in its header.
  Do you want to enter an update number for this file?')
+ ifFalse: [^ #()]
- ifFalse: [^ nil]
  ifTrue: [updateNumberString := UIManager default
  request: 'Please enter the estimated update number (e.g. 4332).']].
+ updateNumberString asInteger ifNil: [self inform: 'Conflict check cancelled.'. ^ #()].
- updateNumberString asInteger ifNil: [self inform: 'Conflict check cancelled.'. ^ self].
  updateNumber := updateNumberString asInteger.
 
  imageUpdateNumber := SystemVersion current highestUpdate.
  updateNumber > imageUpdateNumber ifTrue:
  [(self confirm: 'Warning: The update number for this file (#', updateNumberString, ')
  is greater than the highest update number for this image (#', imageUpdateNumber asString, ').
  This probably means you need to update your image.
  Should we proceed anyway as if the file update number is #', imageUpdateNumber asString, '?')
  ifTrue:
  [updateNumber := imageUpdateNumber.
  updateNumberString := imageUpdateNumber asString]
+ ifFalse: [^ #()]].
- ifFalse: [^ nil]].
 
  updateNumberChangeSet := self findUpdateChangeSetMatching: updateNumber.
+ updateNumberChangeSet ifNil: [^ #()].
- updateNumberChangeSet ifNil: [^ nil].
 
  Smalltalk isMorphic ifTrue: [self currentWorld findATranscript: self currentEvent].
  self class logCr; logCr; log: 'Checking ', localFileName, ' (#', updateNumberString, ') for method conflicts with changesets after ', updateNumberChangeSet name, ' ...'.
 
  conflicts := OrderedCollection new.
  self classes do: [:pseudoClass |
  (Array with: pseudoClass with: pseudoClass metaClass) do: [:classOrMeta |
  classOrMeta selectorsDo: [:selector | | conflict |
  conflict := self
  checkForMoreRecentUpdateThanChangeSet: updateNumberChangeSet
  pseudoClass: classOrMeta
  selector: selector.
  conflict ifNotNil: [conflicts add: conflict].
  ].
  ].
  ].
  self class logCr; log: conflicts size asString, (' conflict' asPluralBasedOn: conflicts), ' found.'; logCr.
  self class closeLog.
  ^ conflicts!


Reply | Threaded
Open this post in threaded view
|

Re: The Trunk: UpdateStream-mt.14.mcz

marcel.taeumel
This is also about information hiding. The selector is called #conflictsWithUpdatedMethods. So, it should return a collection of conflicts. Under which circumstances a result may be empty does not matter at all. Could be user-cancelled or actually empty. :-)

Best,
Marcel

Am 04.03.2020 09:30:34 schrieb [hidden email] <[hidden email]>:

Marcel Taeumel uploaded a new version of UpdateStream to project The Trunk:
http://source.squeak.org/trunk/UpdateStream-mt.14.mcz

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

Name: UpdateStream-mt.14
Author: mt
Time: 4 March 2020, 9:30:27.350885 am
UUID: 8238c043-21eb-284c-aec1-f376ec57389e
Ancestors: UpdateStream-ct.13

Fixes some contracts, i.e., "nil" vs. "#()" vs. "self".

=============== Diff against UpdateStream-ct.13 ===============

Item was changed:
----- Method: FilePackage class>>conflictsWithUpdatedMethods: (in category '*UpdateStream-instance creation') -----
conflictsWithUpdatedMethods: fullName
| conflicts changeList |
+ (conflicts := (self fromFileNamed: fullName) conflictsWithUpdatedMethods)
+ ifEmpty: [^ self].
- conflicts := (self fromFileNamed: fullName) conflictsWithUpdatedMethods.
- (conflicts isNil or: [conflicts isEmpty]) ifTrue: [^ self].
changeList := ChangeList new.
changeList
changes: conflicts
file: (FileDirectory default readOnlyFileNamed: fullName) close.
ChangeList
open: changeList
name: 'Conflicts for ', (FileDirectory localNameFor: fullName)
multiSelect: true.!

Item was changed:
----- Method: FilePackage>>conflictsWithUpdatedMethods (in category '*UpdateStream-conflict checker') -----
conflictsWithUpdatedMethods
"Check this package for conflicts with methods in the image which are in newer updates."

| localFileName stream updateNumberString updateNumber imageUpdateNumber updateNumberChangeSet conflicts fileStream |

localFileName := FileDirectory localNameFor: fullName.
stream := ReadStream on: sourceSystem.
stream upToAll: 'latest update: #'.
updateNumberString := stream upTo: $].
stream close.

fileStream := FileStream readOnlyFileNamed: fullName.
(fileStream contentsOfEntireFile includes: Character linefeed)
ifTrue: [self notify: 'The changeset file ', localFileName, ' contains linefeeds. Proceed if...
you know that this is okay (e.g. the file contains raw binary data).'].
fileStream close.

updateNumberString isEmpty ifFalse: "remove prepended junk, if any"
[updateNumberString := (updateNumberString findTokens: Character space) last].
updateNumberString asInteger ifNil:
[(self confirm: 'Error: ', localFileName, ' has no valid Latest Update number in its header.
Do you want to enter an update number for this file?')
+ ifFalse: [^ #()]
- ifFalse: [^ nil]
ifTrue: [updateNumberString := UIManager default
request: 'Please enter the estimated update number (e.g. 4332).']].
+ updateNumberString asInteger ifNil: [self inform: 'Conflict check cancelled.'. ^ #()].
- updateNumberString asInteger ifNil: [self inform: 'Conflict check cancelled.'. ^ self].
updateNumber := updateNumberString asInteger.

imageUpdateNumber := SystemVersion current highestUpdate.
updateNumber > imageUpdateNumber ifTrue:
[(self confirm: 'Warning: The update number for this file (#', updateNumberString, ')
is greater than the highest update number for this image (#', imageUpdateNumber asString, ').
This probably means you need to update your image.
Should we proceed anyway as if the file update number is #', imageUpdateNumber asString, '?')
ifTrue:
[updateNumber := imageUpdateNumber.
updateNumberString := imageUpdateNumber asString]
+ ifFalse: [^ #()]].
- ifFalse: [^ nil]].

updateNumberChangeSet := self findUpdateChangeSetMatching: updateNumber.
+ updateNumberChangeSet ifNil: [^ #()].
- updateNumberChangeSet ifNil: [^ nil].

Smalltalk isMorphic ifTrue: [self currentWorld findATranscript: self currentEvent].
self class logCr; logCr; log: 'Checking ', localFileName, ' (#', updateNumberString, ') for method conflicts with changesets after ', updateNumberChangeSet name, ' ...'.

conflicts := OrderedCollection new.
self classes do: [:pseudoClass |
(Array with: pseudoClass with: pseudoClass metaClass) do: [:classOrMeta |
classOrMeta selectorsDo: [:selector | | conflict |
conflict := self
checkForMoreRecentUpdateThanChangeSet: updateNumberChangeSet
pseudoClass: classOrMeta
selector: selector.
conflict ifNotNil: [conflicts add: conflict].
].
].
].
self class logCr; log: conflicts size asString, (' conflict' asPluralBasedOn: conflicts), ' found.'; logCr.
self class closeLog.
^ conflicts!




Reply | Threaded
Open this post in threaded view
|

Re: The Trunk: UpdateStream-mt.14.mcz

marcel.taeumel
We might want to rename FilePackage class>>conflictsWithUpdatedMethods: to FilePackage class>>browseConflictsWithUpdatedMethods:.

Best,
Marcel

Am 04.03.2020 09:33:45 schrieb Marcel Taeumel <[hidden email]>:

This is also about information hiding. The selector is called #conflictsWithUpdatedMethods. So, it should return a collection of conflicts. Under which circumstances a result may be empty does not matter at all. Could be user-cancelled or actually empty. :-)

Best,
Marcel

Am 04.03.2020 09:30:34 schrieb [hidden email] <[hidden email]>:

Marcel Taeumel uploaded a new version of UpdateStream to project The Trunk:
http://source.squeak.org/trunk/UpdateStream-mt.14.mcz

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

Name: UpdateStream-mt.14
Author: mt
Time: 4 March 2020, 9:30:27.350885 am
UUID: 8238c043-21eb-284c-aec1-f376ec57389e
Ancestors: UpdateStream-ct.13

Fixes some contracts, i.e., "nil" vs. "#()" vs. "self".

=============== Diff against UpdateStream-ct.13 ===============

Item was changed:
----- Method: FilePackage class>>conflictsWithUpdatedMethods: (in category '*UpdateStream-instance creation') -----
conflictsWithUpdatedMethods: fullName
| conflicts changeList |
+ (conflicts := (self fromFileNamed: fullName) conflictsWithUpdatedMethods)
+ ifEmpty: [^ self].
- conflicts := (self fromFileNamed: fullName) conflictsWithUpdatedMethods.
- (conflicts isNil or: [conflicts isEmpty]) ifTrue: [^ self].
changeList := ChangeList new.
changeList
changes: conflicts
file: (FileDirectory default readOnlyFileNamed: fullName) close.
ChangeList
open: changeList
name: 'Conflicts for ', (FileDirectory localNameFor: fullName)
multiSelect: true.!

Item was changed:
----- Method: FilePackage>>conflictsWithUpdatedMethods (in category '*UpdateStream-conflict checker') -----
conflictsWithUpdatedMethods
"Check this package for conflicts with methods in the image which are in newer updates."

| localFileName stream updateNumberString updateNumber imageUpdateNumber updateNumberChangeSet conflicts fileStream |

localFileName := FileDirectory localNameFor: fullName.
stream := ReadStream on: sourceSystem.
stream upToAll: 'latest update: #'.
updateNumberString := stream upTo: $].
stream close.

fileStream := FileStream readOnlyFileNamed: fullName.
(fileStream contentsOfEntireFile includes: Character linefeed)
ifTrue: [self notify: 'The changeset file ', localFileName, ' contains linefeeds. Proceed if...
you know that this is okay (e.g. the file contains raw binary data).'].
fileStream close.

updateNumberString isEmpty ifFalse: "remove prepended junk, if any"
[updateNumberString := (updateNumberString findTokens: Character space) last].
updateNumberString asInteger ifNil:
[(self confirm: 'Error: ', localFileName, ' has no valid Latest Update number in its header.
Do you want to enter an update number for this file?')
+ ifFalse: [^ #()]
- ifFalse: [^ nil]
ifTrue: [updateNumberString := UIManager default
request: 'Please enter the estimated update number (e.g. 4332).']].
+ updateNumberString asInteger ifNil: [self inform: 'Conflict check cancelled.'. ^ #()].
- updateNumberString asInteger ifNil: [self inform: 'Conflict check cancelled.'. ^ self].
updateNumber := updateNumberString asInteger.

imageUpdateNumber := SystemVersion current highestUpdate.
updateNumber > imageUpdateNumber ifTrue:
[(self confirm: 'Warning: The update number for this file (#', updateNumberString, ')
is greater than the highest update number for this image (#', imageUpdateNumber asString, ').
This probably means you need to update your image.
Should we proceed anyway as if the file update number is #', imageUpdateNumber asString, '?')
ifTrue:
[updateNumber := imageUpdateNumber.
updateNumberString := imageUpdateNumber asString]
+ ifFalse: [^ #()]].
- ifFalse: [^ nil]].

updateNumberChangeSet := self findUpdateChangeSetMatching: updateNumber.
+ updateNumberChangeSet ifNil: [^ #()].
- updateNumberChangeSet ifNil: [^ nil].

Smalltalk isMorphic ifTrue: [self currentWorld findATranscript: self currentEvent].
self class logCr; logCr; log: 'Checking ', localFileName, ' (#', updateNumberString, ') for method conflicts with changesets after ', updateNumberChangeSet name, ' ...'.

conflicts := OrderedCollection new.
self classes do: [:pseudoClass |
(Array with: pseudoClass with: pseudoClass metaClass) do: [:classOrMeta |
classOrMeta selectorsDo: [:selector | | conflict |
conflict := self
checkForMoreRecentUpdateThanChangeSet: updateNumberChangeSet
pseudoClass: classOrMeta
selector: selector.
conflict ifNotNil: [conflicts add: conflict].
].
].
].
self class logCr; log: conflicts size asString, (' conflict' asPluralBasedOn: conflicts), ' found.'; logCr.
self class closeLog.
^ conflicts!




Reply | Threaded
Open this post in threaded view
|

Re: The Trunk: UpdateStream-mt.14.mcz

Levente Uzonyi
Is anything other than the FilePackage extension methods in use from
UpdateStream? If not, then it's about time getting rid of that package.


Levente

On Wed, 4 Mar 2020, Marcel Taeumel wrote:

> We might want to rename FilePackage class>>conflictsWithUpdatedMethods: to FilePackage class>>browseConflictsWithUpdatedMethods:.
> Best,
> Marcel
>
>       Am 04.03.2020 09:33:45 schrieb Marcel Taeumel <[hidden email]>:
>
>       This is also about information hiding. The selector is called #conflictsWithUpdatedMethods. So, it should return a collection of conflicts. Under which circumstances a result may be empty does not matter at all.
>       Could be user-cancelled or actually empty. :-)
> Best,
> Marcel
>
>       Am 04.03.2020 09:30:34 schrieb [hidden email] <[hidden email]>:
>
>       Marcel Taeumel uploaded a new version of UpdateStream to project The Trunk:
>       http://source.squeak.org/trunk/UpdateStream-mt.14.mcz
>
>       ==================== Summary ====================
>
>       Name: UpdateStream-mt.14
>       Author: mt
>       Time: 4 March 2020, 9:30:27.350885 am
>       UUID: 8238c043-21eb-284c-aec1-f376ec57389e
>       Ancestors: UpdateStream-ct.13
>
>       Fixes some contracts, i.e., "nil" vs. "#()" vs. "self".
>
>       =============== Diff against UpdateStream-ct.13 ===============
>
>       Item was changed:
>       ----- Method: FilePackage class>>conflictsWithUpdatedMethods: (in category '*UpdateStream-instance creation') -----
>       conflictsWithUpdatedMethods: fullName
>       | conflicts changeList |
>       + (conflicts := (self fromFileNamed: fullName) conflictsWithUpdatedMethods)
>       + ifEmpty: [^ self].
>       - conflicts := (self fromFileNamed: fullName) conflictsWithUpdatedMethods.
>       - (conflicts isNil or: [conflicts isEmpty]) ifTrue: [^ self].
>       changeList := ChangeList new.
>       changeList
>       changes: conflicts
>       file: (FileDirectory default readOnlyFileNamed: fullName) close.
>       ChangeList
>       open: changeList
>       name: 'Conflicts for ', (FileDirectory localNameFor: fullName)
>       multiSelect: true.!
>
>       Item was changed:
>       ----- Method: FilePackage>>conflictsWithUpdatedMethods (in category '*UpdateStream-conflict checker') -----
>       conflictsWithUpdatedMethods
>       "Check this package for conflicts with methods in the image which are in newer updates."
>
>       | localFileName stream updateNumberString updateNumber imageUpdateNumber updateNumberChangeSet conflicts fileStream |
>
>       localFileName := FileDirectory localNameFor: fullName.
>       stream := ReadStream on: sourceSystem.
>       stream upToAll: 'latest update: #'.
>       updateNumberString := stream upTo: $].
>       stream close.
>
>       fileStream := FileStream readOnlyFileNamed: fullName.
>       (fileStream contentsOfEntireFile includes: Character linefeed)
>       ifTrue: [self notify: 'The changeset file ', localFileName, ' contains linefeeds. Proceed if...
>       you know that this is okay (e.g. the file contains raw binary data).'].
>       fileStream close.
>
>       updateNumberString isEmpty ifFalse: "remove prepended junk, if any"
>       [updateNumberString := (updateNumberString findTokens: Character space) last].
>       updateNumberString asInteger ifNil:
>       [(self confirm: 'Error: ', localFileName, ' has no valid Latest Update number in its header.
>       Do you want to enter an update number for this file?')
>       + ifFalse: [^ #()]
>       - ifFalse: [^ nil]
>       ifTrue: [updateNumberString := UIManager default
>       request: 'Please enter the estimated update number (e.g. 4332).']].
>       + updateNumberString asInteger ifNil: [self inform: 'Conflict check cancelled.'. ^ #()].
>       - updateNumberString asInteger ifNil: [self inform: 'Conflict check cancelled.'. ^ self].
>       updateNumber := updateNumberString asInteger.
>
>       imageUpdateNumber := SystemVersion current highestUpdate.
>       updateNumber > imageUpdateNumber ifTrue:
>       [(self confirm: 'Warning: The update number for this file (#', updateNumberString, ')
>       is greater than the highest update number for this image (#', imageUpdateNumber asString, ').
>       This probably means you need to update your image.
>       Should we proceed anyway as if the file update number is #', imageUpdateNumber asString, '?')
>       ifTrue:
>       [updateNumber := imageUpdateNumber.
>       updateNumberString := imageUpdateNumber asString]
>       + ifFalse: [^ #()]].
>       - ifFalse: [^ nil]].
>
>       updateNumberChangeSet := self findUpdateChangeSetMatching: updateNumber.
>       + updateNumberChangeSet ifNil: [^ #()].
>       - updateNumberChangeSet ifNil: [^ nil].
>
>       Smalltalk isMorphic ifTrue: [self currentWorld findATranscript: self currentEvent].
>       self class logCr; logCr; log: 'Checking ', localFileName, ' (#', updateNumberString, ') for method conflicts with changesets after ', updateNumberChangeSet name, ' ...'.
>
>       conflicts := OrderedCollection new.
>       self classes do: [:pseudoClass |
>       (Array with: pseudoClass with: pseudoClass metaClass) do: [:classOrMeta |
>       classOrMeta selectorsDo: [:selector | | conflict |
>       conflict := self
>       checkForMoreRecentUpdateThanChangeSet: updateNumberChangeSet
>       pseudoClass: classOrMeta
>       selector: selector.
>       conflict ifNotNil: [conflicts add: conflict].
>       ].
>       ].
>       ].
>       self class logCr; log: conflicts size asString, (' conflict' asPluralBasedOn: conflicts), ' found.'; logCr.
>       self class closeLog.
>       ^ conflicts!
>
>
>
>