Skip to content

Commit f7f2be6

Browse files
committed
refactor deletes on import into pull event handler
1 parent 4d02319 commit f7f2be6

File tree

2 files changed

+38
-46
lines changed

2 files changed

+38
-46
lines changed

cls/SourceControl/Git/PullEventHandler/IncrementalLoad.cls

Lines changed: 26 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -38,17 +38,36 @@ Method OnPull() As %Status
3838
quit $system.OBJ.CompileList(.compilelist, "cukb")
3939
}
4040

41-
Method DeleteFile(item As %String)
41+
Method DeleteFile(item As %String) As %Status
4242
{
43+
set sc = $$$OK
4344
set type = ##class(SourceControl.Git.Utils).Type(item)
44-
if (type = "cls") {
45-
quit $System.OBJ.Delete(item)
46-
} elseif (type = "csp") {
47-
quit $System.CSP.DeletePage(item)
45+
set name = ##class(SourceControl.Git.Utils).NameWithoutExtension(item)
46+
set deleted = 1
47+
if type = "prj" {
48+
set sc = $system.OBJ.DeleteProject(name)
49+
}elseif type = "cls" {
50+
set sc = $system.OBJ.Delete(item)
51+
}elseif $listfind($listbuild("mac","int","inc","bas","mvb","mvi"), type) > 0 {
52+
set sc = ##class(%Routine).Delete(item)
53+
}elseif type = "csp" {
54+
set sc = $System.CSP.DeletePage(item)
55+
}elseif ##class(SourceControl.Git.Utils).UserTypeCached(item) {
56+
set sc = ##class(%Library.RoutineMgr).Delete(item)
4857
} else {
49-
quit ##class(%Library.RoutineMgr).Delete(item)
58+
set deleted = 0
5059
}
60+
61+
if deleted && $$$ISOK(sc) {
62+
do ##class(SourceControl.Git.Utils).RemoveRoutineTSH(item)
63+
kill $$$TrackedItems(##class(SourceControl.Git.Utils).NormalizeExtension(item))
64+
} else {
65+
if +$system.Status.GetErrorCodes(sc) = $$$ClassDoesNotExist {
66+
// if something we wanted to delete is already deleted -- good!
67+
set sc = $$$OK
68+
}
69+
}
70+
return sc
5171
}
5272

5373
}
54-

cls/SourceControl/Git/Utils.cls

Lines changed: 12 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1327,13 +1327,6 @@ ClassMethod ImportRoutines(force As %Boolean = 0) As %Status
13271327
}
13281328
}
13291329

1330-
set eventHandler = $classmethod(..PullEventClass(),"%New")
1331-
set eventHandler.LocalRoot = ..TempFolder()
1332-
merge eventHandler.ModifiedFiles = files
1333-
set sc = eventHandler.OnPull()
1334-
if $$$ISERR(sc) {
1335-
set ec = $$$ADDSC(ec,sc)
1336-
}
13371330

13381331
//let's delete all items for which corresponding files had been deleted
13391332
#dim item as %String = ""
@@ -1347,41 +1340,21 @@ ClassMethod ImportRoutines(force As %Boolean = 0) As %Status
13471340
set fullExternalName = ..FullExternalName(item)
13481341
if '##class(%File).Exists(fullExternalName) {
13491342
write !,fullExternalName," does not exist - deleting ",item
1350-
#dim type as %String = ..Type(item)
1351-
#dim name as %String = ..NameWithoutExtension(item)
1352-
#dim deleted as %Boolean = 1
1353-
if type = "prj" {
1354-
set ec = $$$ADDSC(ec, $system.OBJ.DeleteProject(name))
1355-
}elseif type = "cls" {
1356-
set ec = $$$ADDSC(ec, $system.OBJ.Delete(item))
1357-
}elseif $listfind($listbuild("mac","int","inc","bas","mvb","mvi"), type) > 0 {
1358-
set ec = $$$ADDSC(ec, ##class(%Routine).Delete(item))
1359-
}elseif type = "csp" {
1360-
#dim filename = $system.CSP.GetFileName(item)
1361-
if ##class(%File).Exists(filename) && '##class(%File).Delete(filename) {
1362-
set ec = $$$ADDSC(ec, ..MakeError("Error while removing "_item))
1363-
}
1364-
}elseif ..UserTypeCached(item) {
1365-
set ec = $$$ADDSC(ec, ##class(%Library.RoutineMgr).Delete(item))
1366-
} else {
1367-
set deleted = 0
1368-
}
1369-
1370-
if deleted && ec {
1371-
do ..RemoveRoutineTSH(item)
1372-
kill $$$TrackedItems(..NormalizeExtension(item))
1373-
write !, item, " was deleted"
1374-
} else {
1375-
if +$system.Status.GetErrorCodes(ec) '= $$$ClassDoesNotExist {
1376-
write !, "Error: could not delete ", item
1377-
} else {
1378-
// if something we wanted to delete is already deleted -- good!
1379-
set ec = $$$OK
1380-
}
1381-
}
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
13821348
}
13831349
}
13841350

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+
}
13851358
write !, "==import done=="
13861359
quit ec
13871360
}

0 commit comments

Comments
 (0)