author | Jan Vrany <jan.vrany@labware.com> |
Tue, 11 Jul 2023 12:13:27 +0100 | |
branch | jv |
changeset 1173 | e3dd2050492e |
parent 1156 | b6ca954ebfc9 |
permissions | -rw-r--r-- |
1110
500a2c0ef6dc
Automatically set package when loading a version from Monticello
Jan Vrany <jan.vrany@labware.com>
parents:
1095
diff
changeset
|
1 |
" |
1156
b6ca954ebfc9
Use custom Smalltalk/X package loader(s)
Jan Vrany <jan.vrany@labware.com>
parents:
1111
diff
changeset
|
2 |
COPYRIGHT (c) 2020-2021 LabWare |
1110
500a2c0ef6dc
Automatically set package when loading a version from Monticello
Jan Vrany <jan.vrany@labware.com>
parents:
1095
diff
changeset
|
3 |
" |
500a2c0ef6dc
Automatically set package when loading a version from Monticello
Jan Vrany <jan.vrany@labware.com>
parents:
1095
diff
changeset
|
4 |
"{ Package: 'stx:goodies/monticello' }" |
1095
87f223484bc3
Issue #239: Fix all Smalltak/X source files to be in unicode (UTF8 without BOM) and prefixed by "{ Encoding: utf8 }" when any unicode character is present
Patrik Svestka <patrik.svestka@gmail.com>
parents:
703
diff
changeset
|
5 |
|
1110
500a2c0ef6dc
Automatically set package when loading a version from Monticello
Jan Vrany <jan.vrany@labware.com>
parents:
1095
diff
changeset
|
6 |
"{ NameSpace: Smalltalk }" |
71 | 7 |
|
8 |
Object subclass:#MCVersionLoader |
|
9 |
instanceVariableNames:'versions' |
|
10 |
classVariableNames:'' |
|
11 |
poolDictionaries:'' |
|
703 | 12 |
category:'SCM-Monticello-Loading' |
71 | 13 |
! |
14 |
||
1110
500a2c0ef6dc
Automatically set package when loading a version from Monticello
Jan Vrany <jan.vrany@labware.com>
parents:
1095
diff
changeset
|
15 |
!MCVersionLoader class methodsFor:'documentation'! |
500a2c0ef6dc
Automatically set package when loading a version from Monticello
Jan Vrany <jan.vrany@labware.com>
parents:
1095
diff
changeset
|
16 |
|
500a2c0ef6dc
Automatically set package when loading a version from Monticello
Jan Vrany <jan.vrany@labware.com>
parents:
1095
diff
changeset
|
17 |
copyright |
500a2c0ef6dc
Automatically set package when loading a version from Monticello
Jan Vrany <jan.vrany@labware.com>
parents:
1095
diff
changeset
|
18 |
" |
1156
b6ca954ebfc9
Use custom Smalltalk/X package loader(s)
Jan Vrany <jan.vrany@labware.com>
parents:
1111
diff
changeset
|
19 |
COPYRIGHT (c) 2020-2021 LabWare |
1110
500a2c0ef6dc
Automatically set package when loading a version from Monticello
Jan Vrany <jan.vrany@labware.com>
parents:
1095
diff
changeset
|
20 |
|
500a2c0ef6dc
Automatically set package when loading a version from Monticello
Jan Vrany <jan.vrany@labware.com>
parents:
1095
diff
changeset
|
21 |
|
500a2c0ef6dc
Automatically set package when loading a version from Monticello
Jan Vrany <jan.vrany@labware.com>
parents:
1095
diff
changeset
|
22 |
" |
500a2c0ef6dc
Automatically set package when loading a version from Monticello
Jan Vrany <jan.vrany@labware.com>
parents:
1095
diff
changeset
|
23 |
! ! |
71 | 24 |
|
221 | 25 |
!MCVersionLoader class methodsFor:'initialization'! |
26 |
||
27 |
new |
|
28 |
^self basicNew initialize |
|
29 |
! ! |
|
30 |
||
71 | 31 |
!MCVersionLoader class methodsFor:'as yet unclassified'! |
32 |
||
33 |
loadVersion: aVersion |
|
34 |
self new |
|
35 |
addVersion: aVersion; |
|
36 |
load |
|
37 |
! ! |
|
38 |
||
434 | 39 |
!MCVersionLoader methodsFor:'*metacello-mc'! |
40 |
||
41 |
versions |
|
42 |
||
43 |
^versions |
|
44 |
! ! |
|
45 |
||
71 | 46 |
!MCVersionLoader methodsFor:'checking'! |
47 |
||
48 |
checkForModifications |
|
49 |
| modifications | |
|
221 | 50 |
modifications := versions select: [:ea | ea package workingCopy modified]. |
71 | 51 |
modifications isEmpty ifFalse: [self warnAboutLosingChangesTo: modifications]. |
52 |
! |
|
53 |
||
54 |
checkIfDepIsOlder: aDependency |
|
55 |
^ aDependency isOlder not |
|
56 |
or: [self confirm: 'load older dependency ', aDependency versionInfo name , '?'] |
|
57 |
! |
|
58 |
||
59 |
confirmMissingDependency: aDependency |
|
60 |
| name | |
|
61 |
name := aDependency versionInfo name. |
|
62 |
(self confirm: 'Can''t find dependency ', name, '. ignore?') |
|
63 |
ifFalse: [self error: 'Can''t find dependency ', name] |
|
64 |
! |
|
65 |
||
66 |
depAgeIsOk: aDependency |
|
67 |
^ aDependency isOlder not |
|
68 |
or: [self confirm: 'load older dependency ', aDependency versionInfo name , '?'] |
|
69 |
! |
|
70 |
||
71 |
warnAboutLosingChangesTo: versionCollection |
|
72 |
self notify: (String streamContents: [:s | |
|
73 |
s nextPutAll: 'You are about to load new versions of the following packages that have unsaved changes in the image. If you continue, you will lose these changes.'; cr. |
|
74 |
versionCollection do: |
|
75 |
[:ea | |
|
76 |
s cr; space; space; nextPutAll: ea package name]]) |
|
77 |
! ! |
|
78 |
||
221 | 79 |
!MCVersionLoader methodsFor:'initialization'! |
71 | 80 |
|
81 |
initialize |
|
221 | 82 |
super initialize. |
83 |
versions := OrderedCollection new |
|
71 | 84 |
! ! |
85 |
||
86 |
!MCVersionLoader methodsFor:'loading'! |
|
87 |
||
88 |
addDependency: aDependency |
|
89 |
| dep | |
|
90 |
aDependency isCurrent ifTrue: [^ self]. |
|
91 |
(self depAgeIsOk: aDependency) ifFalse: [^ self]. |
|
92 |
dep := aDependency resolve. |
|
93 |
dep |
|
94 |
ifNil: [self confirmMissingDependency: aDependency] |
|
95 |
ifNotNil: [(versions includes: dep) ifFalse: [self addVersion: dep]] |
|
96 |
! |
|
97 |
||
98 |
addVersion: aVersion |
|
99 |
aVersion dependencies do: [ :ea | self addDependency: ea]. |
|
100 |
versions add: aVersion. |
|
221 | 101 |
|
71 | 102 |
! |
103 |
||
104 |
load |
|
221 | 105 |
self loadWithNameLike: versions first info name. |
106 |
||
107 |
! |
|
108 |
||
109 |
loadWithNameLike: aString |
|
110 |
| loader | |
|
111 |
self checkForModifications. |
|
112 |
loader := versions size > 1 |
|
1156
b6ca954ebfc9
Use custom Smalltalk/X package loader(s)
Jan Vrany <jan.vrany@labware.com>
parents:
1111
diff
changeset
|
113 |
ifTrue: [MCStXMultiPackageLoader new] |
b6ca954ebfc9
Use custom Smalltalk/X package loader(s)
Jan Vrany <jan.vrany@labware.com>
parents:
1111
diff
changeset
|
114 |
ifFalse: [MCStXPackageLoader new]. |
221 | 115 |
versions do: [:ea | |
116 |
ea canOptimizeLoading |
|
117 |
ifTrue: [ea patch applyTo: loader] |
|
118 |
ifFalse: [loader updatePackage: ea package withSnapshot: ea snapshot]]. |
|
1111
1935c1222f6d
Do not update changes when loading Monticello package
Jan Vrany <jan.vrany@labware.com>
parents:
1110
diff
changeset
|
119 |
Class withoutUpdatingChangesDo:[ |
1156
b6ca954ebfc9
Use custom Smalltalk/X package loader(s)
Jan Vrany <jan.vrany@labware.com>
parents:
1111
diff
changeset
|
120 |
"/ Answering 'nil' means use default package name. |
b6ca954ebfc9
Use custom Smalltalk/X package loader(s)
Jan Vrany <jan.vrany@labware.com>
parents:
1111
diff
changeset
|
121 |
(MCStXPackageQuery isHandled and:[MCStXPackageQuery query ~~ nil]) ifTrue:[ |
1110
500a2c0ef6dc
Automatically set package when loading a version from Monticello
Jan Vrany <jan.vrany@labware.com>
parents:
1095
diff
changeset
|
122 |
loader loadWithNameLike: aString. |
1111
1935c1222f6d
Do not update changes when loading Monticello package
Jan Vrany <jan.vrany@labware.com>
parents:
1110
diff
changeset
|
123 |
] ifFalse: [ |
1935c1222f6d
Do not update changes when loading Monticello package
Jan Vrany <jan.vrany@labware.com>
parents:
1110
diff
changeset
|
124 |
MCStXPackageQuery answer: versions first package name do: [ |
1935c1222f6d
Do not update changes when loading Monticello package
Jan Vrany <jan.vrany@labware.com>
parents:
1110
diff
changeset
|
125 |
loader loadWithNameLike: aString. |
1935c1222f6d
Do not update changes when loading Monticello package
Jan Vrany <jan.vrany@labware.com>
parents:
1110
diff
changeset
|
126 |
]. |
1110
500a2c0ef6dc
Automatically set package when loading a version from Monticello
Jan Vrany <jan.vrany@labware.com>
parents:
1095
diff
changeset
|
127 |
]. |
500a2c0ef6dc
Automatically set package when loading a version from Monticello
Jan Vrany <jan.vrany@labware.com>
parents:
1095
diff
changeset
|
128 |
]. |
221 | 129 |
versions do: [:ea | ea workingCopy loaded: ea] |
130 |
||
131 |
"Modified: / 09-11-2010 / 17:27:01 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
|
1156
b6ca954ebfc9
Use custom Smalltalk/X package loader(s)
Jan Vrany <jan.vrany@labware.com>
parents:
1111
diff
changeset
|
132 |
"Modified: / 29-11-2021 / 17:03:42 / Jan Vrany <jan.vrany@labware.com>" |
71 | 133 |
! ! |
134 |
||
135 |
!MCVersionLoader class methodsFor:'documentation'! |
|
136 |
||
137 |
version |
|
703 | 138 |
^ '$Header: /cvs/stx/stx/goodies/monticello/MCVersionLoader.st,v 1.5 2012-09-11 21:30:44 cg Exp $' |
221 | 139 |
! |
140 |
||
141 |
version_CVS |
|
703 | 142 |
^ '$Header: /cvs/stx/stx/goodies/monticello/MCVersionLoader.st,v 1.5 2012-09-11 21:30:44 cg Exp $' |
221 | 143 |
! |
144 |
||
1110
500a2c0ef6dc
Automatically set package when loading a version from Monticello
Jan Vrany <jan.vrany@labware.com>
parents:
1095
diff
changeset
|
145 |
version_HG |
500a2c0ef6dc
Automatically set package when loading a version from Monticello
Jan Vrany <jan.vrany@labware.com>
parents:
1095
diff
changeset
|
146 |
|
500a2c0ef6dc
Automatically set package when loading a version from Monticello
Jan Vrany <jan.vrany@labware.com>
parents:
1095
diff
changeset
|
147 |
^ '$Changeset: <not expanded> $' |
500a2c0ef6dc
Automatically set package when loading a version from Monticello
Jan Vrany <jan.vrany@labware.com>
parents:
1095
diff
changeset
|
148 |
! |
500a2c0ef6dc
Automatically set package when loading a version from Monticello
Jan Vrany <jan.vrany@labware.com>
parents:
1095
diff
changeset
|
149 |
|
221 | 150 |
version_SVN |
1110
500a2c0ef6dc
Automatically set package when loading a version from Monticello
Jan Vrany <jan.vrany@labware.com>
parents:
1095
diff
changeset
|
151 |
^ '§Id: MCVersionLoader.st 25 2010-11-09 18:50:31Z vranyj1 §' |
71 | 152 |
! ! |
1110
500a2c0ef6dc
Automatically set package when loading a version from Monticello
Jan Vrany <jan.vrany@labware.com>
parents:
1095
diff
changeset
|
153 |