[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
|