Skip to content

Commit 1d41039

Browse files
refactor: handle cases where modules installed at the same timestamp or with identical versions were overwriting each other by introducing a new subscript to differentiate them
1 parent 71049cd commit 1d41039

2 files changed

Lines changed: 20 additions & 19 deletions

File tree

src/cls/IPM/Main.cls

Lines changed: 20 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -2822,37 +2822,40 @@ ClassMethod ListInstalled(ByRef pCommandInfo) [ Private ]
28222822
}
28232823
merge tModifiers = pCommandInfo("modifiers")
28242824
set sortMode = $$$lcase($get(pCommandInfo("modifiers", "sort")))
2825-
set type = $extract(sortMode, 1) // "d", "n", or "v"
2826-
set isDesc = (sortMode [ "-d")
2827-
set sortMode = $case(type, "n":"name", "d":"date", "v":"version", :"name")
2828-
if isDesc {
2829-
set sortMode = sortMode_"-desc"
2830-
}
2831-
set newlist =""
2825+
28322826
if sortMode'="" {
2827+
set newlist =""
2828+
set type = $extract(sortMode, 1) // "d", "n", or "v"
2829+
set isDesc = (sortMode [ "-d")
2830+
set sortMode = $case(type, "n":"name", "d":"date", "v":"version", :"name")
2831+
if isDesc {
2832+
set sortMode = sortMode_"-desc"
2833+
}
28332834
for i=1:1:list {
28342835
set entry = list(i)
28352836
set name = $listget(entry,1)
28362837
set entry = entry_$listbuild(i)
28372838
if sortMode["name"{
2838-
set newlist($$$lcase(name))=entry
2839-
}
2840-
if sortMode["date" {
2839+
set newlist($$$lcase(name),i)=entry
2840+
} elseif sortMode["date" {
28412841
set date = $listget(entry,6)
2842-
set newlist(date)=entry
2843-
}
2844-
if sortMode["version" {
2845-
set newlist($listfromstring($listget(entry,2),"."))=entry
2842+
set newlist(date,name) = entry
2843+
} elseif sortMode["version" {
2844+
set newlist($listfromstring($listget(entry,2),"."),name) = entry
28462845
}
28472846
kill list(i)
28482847
}
28492848
set direction = $select(sortMode [ "desc": -1, 1: 1)
2850-
set mod = ""
2849+
set sub = ""
28512850
if $data(newlist)>1 {
28522851
// create new list based on the sorting
28532852
for {
2854-
set mod = $order(newlist(mod),direction,data) quit:mod=""
2855-
set list($increment(mlist))=data
2853+
set sub = $order(newlist(sub),direction) quit:sub=""
2854+
set mod=""
2855+
for {
2856+
set mod = $order(newlist(sub,mod),direction,data) quit:mod=""
2857+
set list($increment(mlist))=data
2858+
}
28562859
}
28572860
}
28582861
}

src/cls/IPM/Storage/QualifiedModuleInfo.cls

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,6 @@ Method %OnNew(
2020
set ..Version = pResolvedReference.Version
2121
set ..Deployed = pResolvedReference.Deployed
2222
set ..PlatformVersions = pResolvedReference.PlatformVersions
23-
set ..VersionString = pResolvedReference.VersionString
24-
set ..AllVersions = pResolvedReference.AllVersions
2523
}
2624
quit $$$OK
2725
}

0 commit comments

Comments
 (0)