@@ -153,6 +153,11 @@ ClassMethod PrivateKeyFile() As %String
153
153
quit $get (@..#Storage@(" settings" ," ssh" ," privateKeyFile" ))
154
154
}
155
155
156
+ ClassMethod CompileOnImport () As %Boolean
157
+ {
158
+ quit $get (@..#Storage@(" settings" ," compileOnImport" ),1 )
159
+ }
160
+
156
161
ClassMethod NeedSettings () As %Boolean [ CodeMode = expression ]
157
162
{
158
163
(..TempFolder () = " " ) || (..GitBinPath () = " " ) || (..GitBinPath () = " " " " )
@@ -1294,13 +1299,17 @@ ClassMethod ImportRoutines(force As %Boolean = 0) As %Status
1294
1299
1295
1300
#dim ec as %Status = ..ListItemsInFiles (.itemList , .err )
1296
1301
quit :'ec ec
1302
+
1303
+ kill files
1297
1304
1305
+ set settings = ##class (SourceControl.Git.Settings ).%New ()
1298
1306
#dim internalName as %String = " "
1299
1307
for {
1300
1308
set internalName = $order (itemList (internalName ))
1301
1309
quit :internalName =" "
1302
1310
set context = ##class (SourceControl.Git.PackageManagerContext ).ForInternalName (internalName )
1303
1311
continue :context .Package '=refPackage
1312
+ set doImport = ..IsRoutineOutdated (internalName ) || force
1304
1313
if ..IsInSourceControl (internalName ) {
1305
1314
set sc = ..ImportItem (internalName , force )
1306
1315
} else {
@@ -1309,7 +1318,15 @@ ClassMethod ImportRoutines(force As %Boolean = 0) As %Status
1309
1318
if $$$ISERR(sc ) {
1310
1319
set ec = $$$ADDSC(ec , sc )
1311
1320
}
1321
+ if doImport && settings .compileOnImport {
1322
+ set modification = ##class (SourceControl.Git.Modification ).%New ()
1323
+ set modification .changeType = " M"
1324
+ set modification .internalName = internalName
1325
+ set modification .externalName = ..FullExternalName (internalName )
1326
+ set files ($increment (files )) = modification
1327
+ }
1312
1328
}
1329
+
1313
1330
1314
1331
//let's delete all items for which corresponding files had been deleted
1315
1332
#dim item as %String = " "
@@ -1323,41 +1340,21 @@ ClassMethod ImportRoutines(force As %Boolean = 0) As %Status
1323
1340
set fullExternalName = ..FullExternalName (item )
1324
1341
if '##class (%File ).Exists (fullExternalName ) {
1325
1342
write !,fullExternalName ," does not exist - deleting " ,item
1326
- #dim type as %String = ..Type (item )
1327
- #dim name as %String = ..NameWithoutExtension (item )
1328
- #dim deleted as %Boolean = 1
1329
- if type = " prj" {
1330
- set ec = $$$ADDSC(ec , $system .OBJ .DeleteProject (name ))
1331
- }elseif type = " cls" {
1332
- set ec = $$$ADDSC(ec , $system .OBJ .Delete (item ))
1333
- }elseif $listfind ($listbuild (" mac" ," int" ," inc" ," bas" ," mvb" ," mvi" ), type ) > 0 {
1334
- set ec = $$$ADDSC(ec , ##class (%Routine ).Delete (item ))
1335
- }elseif type = " csp" {
1336
- #dim filename = $system .CSP .GetFileName (item )
1337
- if ##class (%File ).Exists (filename ) && '##class (%File ).Delete (filename ) {
1338
- set ec = $$$ADDSC(ec , ..MakeError (" Error while removing " _item ))
1339
- }
1340
- }elseif ..UserTypeCached (item ) {
1341
- set ec = $$$ADDSC(ec , ##class (%Library.RoutineMgr ).Delete (item ))
1342
- } else {
1343
- set deleted = 0
1344
- }
1345
-
1346
- if deleted && ec {
1347
- do ..RemoveRoutineTSH (item )
1348
- kill $$$TrackedItems(..NormalizeExtension (item ))
1349
- write !, item , " was deleted"
1350
- } else {
1351
- if +$system .Status .GetErrorCodes (ec ) '= $$$ClassDoesNotExist {
1352
- write !, " Error: could not delete " , item
1353
- } else {
1354
- // if something we wanted to delete is already deleted -- good!
1355
- set ec = $$$OK
1356
- }
1357
- }
1343
+ set modification = ##class (SourceControl.Git.Modification ).%New ()
1344
+ set modification .changeType = " D"
1345
+ set modification .internalName = item
1346
+ set modification .externalName = fullExternalName
1347
+ set files ($increment (files )) = modification
1358
1348
}
1359
1349
}
1360
1350
1351
+ set eventHandler = $classmethod (..PullEventClass ()," %New" )
1352
+ set eventHandler .LocalRoot = ..TempFolder ()
1353
+ merge eventHandler .ModifiedFiles = files
1354
+ set sc = eventHandler .OnPull ()
1355
+ if $$$ISERR(sc ) {
1356
+ set ec = $$$ADDSC(ec ,sc )
1357
+ }
1361
1358
write !, " ==import done=="
1362
1359
quit ec
1363
1360
}
0 commit comments