[squeak-dev] The Inbox: DTL-internal-sources-dtl.11.mcz

commits at source.squeak.org commits at source.squeak.org
Wed Jan 26 23:32:37 UTC 2022


A new version of DTL-internal-sources was added to project The Inbox:
http://source.squeak.org/inbox/DTL-internal-sources-dtl.11.mcz

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

Name: DTL-internal-sources-dtl.11
Author: dtl
Time: 26 January 2022, 6:32:07.76362 pm
UUID: 15a50e9e-e698-4734-85dc-3def11e5679f
Ancestors: DTL-internal-sources-dtl.10

Scenario: User selects 'Cache sources file' preference. Later the image is copied to another location possibly with no sources or stc file accessible. User de-selects 'Cache sources file' preference. System does this:

- check if a .sources or .stc file can be found in the usual directories
- if no, ask user if they want to save a sources file in the local image directory
- if uses says yes, extract cached compressed sources and write a new .sources file
- if any of the above fails, notify and do not change the preference

=============== Diff against DTL-internal-sources-dtl.10 ===============

Item was added:
+ ----- Method: CompressedSourceStream>>asCompressedSources (in category '*DTL-internal-sources') -----
+ asCompressedSources
+ 
+ 	^CompressedSources on: (ReadWriteStream with: segmentFile contentsOfEntireFile)
+ !

Item was changed:
  ----- Method: CompressedSources class>>internalizeSources: (in category 'accessing') -----
  internalizeSources: internalize
- 
  	internalize
+ 		ifNotNil: [| msg |
+ 			msg := 'No external ' translated , Smalltalk sourceFileVersionString , ' sources file found' translated.
+ 			internalize
- 		ifNotNil: [internalize
  				ifTrue: [CachedSources := self fromSourceFileArray position: 0]
+ 				ifFalse: [Smalltalk locateSourcesEntry
+ 						ifNil: [((self confirm: msg , ', save a local copy?' translated)
+ 									and: [self saveSourcesToLocalFile])
+ 								ifFalse: [^ msg , ' (preference not changed)' translated]].
+ 					CachedSources := nil].
- 				ifFalse: [CachedSources := nil].
  			Smalltalk closeSourceFiles; openSourceFiles]!

Item was added:
+ ----- Method: CompressedSources class>>saveSourcesToLocalFile (in category 'accessing') -----
+ saveSourcesToLocalFile
+ 	"Save the compressed sources to a .sources file in the default directory. Answer true for success"
+ 
+ 	| sourcesName fs |
+ 	sourcesName := Smalltalk sourceFileVersionString , '.sources'.
+ 	(FileDirectory default fileExists: sourcesName)
+ 		ifTrue: [self error: sourcesName , ' already exists in the default directory'.
+ 			^ false].
+ 	[[| sourceData |
+ 	fs := FileStream newFileNamed: sourcesName.
+ 	fs binary.
+ 	sourceData := ProgressInitiationException
+ 		display: 'converting compressed sources'
+ 		during: [:bar | CachedSources uncompressedBytes: bar].
+ 	fs nextPutAll: sourceData]
+ 		ensure: [fs close]]
+ 		on: Error
+ 		do: [:e | 
+ 			self notify: 'failed writing ' , sourcesName.
+ 			^ false].
+ 	^ true!



More information about the Squeak-dev mailing list