Skip to content

Commit c829f89

Browse files
authored
Merge pull request #220 from intersystems/import-export-fixes
Various fixes for import/export
2 parents b0560f6 + 5dfa084 commit c829f89

File tree

3 files changed

+49
-11
lines changed

3 files changed

+49
-11
lines changed

CHANGELOG.md

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,16 @@ All notable changes to this project will be documented in this file.
55
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
66
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
77

8-
## [2.0.6] - 2022-12-06
8+
## [2.0.6] - Unreleased
99

1010
### Added
1111
- Support for Caché/Ensemble 2016.2.3, 2017.1.2, 2017.2.1, 2018.1.0 and later. (Treated as patch version bump because no compatibility impact for existing users.)
1212

13+
### Fixed
14+
- "Import All" will properly recognize new files
15+
- "Import All" and "Export All" apply only to the current package manager context and disregard items outside that context
16+
- "Import All" treats "Other" document types (DFI, LUT, etc.) properly
17+
1318
### Changed
1419
- Various minor things under the hood to support use without the package manager and/or on older platforms
1520

cls/SourceControl/Git/PackageManagerContext.cls

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ Property ResourceReference As %RegisteredObject [ InitialExpression = {$$$NULLOR
1616

1717
Method InternalNameSet(InternalName As %String = "") As %Status
1818
{
19+
set InternalName = ##class(SourceControl.Git.Utils).NormalizeInternalName(InternalName)
1920
if (InternalName '= i%InternalName) {
2021
set i%InternalName = InternalName
2122
if '$$$comClassDefined("%ZPM.PackageManager.Developer.Extension.Utils") {
@@ -24,7 +25,7 @@ Method InternalNameSet(InternalName As %String = "") As %Status
2425
set ..Package = ##class(%ZPM.PackageManager.Developer.Extension.Utils).FindHomeModule(InternalName,,.resourceReference)
2526
set ..ResourceReference = resourceReference
2627
set ..IsInGitEnabledPackage = $isobject(..Package) && ##class(%Library.File).DirectoryExists(##class(%Library.File).NormalizeFilename(".git",..Package.Root))
27-
set ..IsInDefaultPackage = $isobject(..Package) && (##class(%Library.File).NormalizeDirectory(..Package.Root) = ##class(%Library.File).NormalizeDirectory(##class(SourceControl.Git.Utils).TempFolder()))
28+
set ..IsInDefaultPackage = $isobject(..Package) && (##class(%Library.File).NormalizeDirectory(..Package.Root) = ##class(%Library.File).NormalizeDirectory(##class(SourceControl.Git.Utils).DefaultTempFolder()))
2829
}
2930
quit $$$OK
3031
}

cls/SourceControl/Git/Utils.cls

Lines changed: 41 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,11 @@ ClassMethod TempFolder() As %String
3838
if context.IsInGitEnabledPackage {
3939
quit context.Package.Root
4040
}
41+
quit ..DefaultTempFolder()
42+
}
43+
44+
ClassMethod DefaultTempFolder() As %String
45+
{
4146
quit $get(@..#Storage@("settings","namespaceTemp"),..DefaultTemp()_$translate($znspace,"%")_..#Slash)
4247
}
4348

@@ -1089,8 +1094,17 @@ ClassMethod ListItemsInFiles(ByRef itemList, ByRef err) As %Status
10891094
set mappedFilePath = ##class(%File).NormalizeFilename(mappedRelativePath, ..TempFolder())
10901095

10911096
if (##class(%File).DirectoryExists(mappedFilePath)){
1092-
set res = $system.OBJ.ImportDir(mappedFilePath,,"-d",.err,1, .tempItemList, $$$DoNotLoad)
1093-
merge itemList = tempItemList
1097+
if ##class(%Library.RoutineMgr).UserType("foo."_mappingFileType) {
1098+
set fileSpec = "*."_$zcvt(mappingFileType,"L")_";*."_$zconvert(mappingFileType,"U")
1099+
set files = ##class(%Library.File).FileSetFunc(mappedFilePath,fileSpec)
1100+
while files.%Next() {
1101+
// Assumes flat file structure
1102+
set itemList(files.ItemName) = ""
1103+
}
1104+
} else {
1105+
set res = $system.OBJ.ImportDir(mappedFilePath,,"-d",.err,1, .tempItemList, $$$DoNotLoad)
1106+
merge itemList = tempItemList
1107+
}
10941108
}
10951109

10961110
set mappingCoverage = $order($$$SourceMapping(mappingFileType, mappingCoverage))
@@ -1124,6 +1138,9 @@ ClassMethod ListItemsInFiles(ByRef itemList, ByRef err) As %Status
11241138

11251139
ClassMethod ImportRoutines(force As %Boolean = 0) As %Status
11261140
{
1141+
set refContext = ##class(SourceControl.Git.PackageManagerContext).%Get()
1142+
set refPackage = refContext.Package
1143+
11271144
write !, "==import start=="
11281145

11291146
#dim err, itemList
@@ -1138,10 +1155,13 @@ ClassMethod ImportRoutines(force As %Boolean = 0) As %Status
11381155
for {
11391156
set internalName = $order(itemList(internalName))
11401157
quit:internalName=""
1141-
if '..IsInSourceControl(internalName) {
1142-
continue
1158+
set context = ##class(SourceControl.Git.PackageManagerContext).ForInternalName(internalName)
1159+
continue:context.Package'=refPackage
1160+
if ..IsInSourceControl(internalName) {
1161+
set sc = ..ImportItem(internalName, force)
1162+
} else {
1163+
set sc = ..AddToServerSideSourceControl(internalName)
11431164
}
1144-
#dim sc as %Status = ..ImportItem(internalName, force)
11451165
if $$$ISERR(sc) {
11461166
set ec = $$$ADDSC(ec, sc)
11471167
}
@@ -1152,22 +1172,29 @@ ClassMethod ImportRoutines(force As %Boolean = 0) As %Status
11521172
for {
11531173
set item = $order(@..#Storage@("TSH", item))
11541174
quit:item=""
1155-
1156-
if '##class(%File).Exists(..FullExternalName(item)) {
1175+
1176+
set context = ##class(SourceControl.Git.PackageManagerContext).ForInternalName(item)
1177+
continue:context.Package'=refPackage
1178+
1179+
set fullExternalName = ..FullExternalName(item)
1180+
if '##class(%File).Exists(fullExternalName) {
1181+
write !,fullExternalName," does not exist - deleting ",item
11571182
#dim type as %String = ..Type(item)
11581183
#dim name as %String = ..NameWithoutExtension(item)
11591184
#dim deleted as %Boolean = 1
11601185
if type = "prj" {
11611186
set ec = $$$ADDSC(ec, $system.OBJ.DeleteProject(name))
11621187
}elseif type = "cls" {
11631188
set ec = $$$ADDSC(ec, $system.OBJ.Delete(item))
1164-
}elseif $listfind($listbuild("mac","int","inc","bas","mvb","mvi","dfi"), type) > 0 {
1189+
}elseif $listfind($listbuild("mac","int","inc","bas","mvb","mvi"), type) > 0 {
11651190
set ec = $$$ADDSC(ec, ##class(%Routine).Delete(item))
11661191
}elseif type = "csp" {
11671192
#dim filename = $system.CSP.GetFileName(item)
11681193
if ##class(%File).Exists(filename) && '##class(%File).Delete(filename) {
11691194
set ec = $$$ADDSC(ec, ..MakeError("Error while removing "_item))
11701195
}
1196+
}elseif ##class(%Library.RoutineMgr).UserType(item) {
1197+
set ec = $$$ADDSC(ec, ##class(%Library.RoutineMgr).Delete(item))
11711198
} else {
11721199
set deleted = 0
11731200
}
@@ -1287,11 +1314,16 @@ ClassMethod ImportAll(force As %Boolean = 0) As %Status
12871314

12881315
ClassMethod ExportRoutines(force As %Boolean = 0) As %Status
12891316
{
1317+
set refContext = ##class(SourceControl.Git.PackageManagerContext).%Get()
1318+
set refPackage = refContext.Package
1319+
12901320
#dim item as %String = ""
12911321
#dim ec as %Status = $$$OK
12921322
for {
12931323
set item = $order(@..#Storage@("items",item))
12941324
quit:item=""
1325+
set context = ##class(SourceControl.Git.PackageManagerContext).ForInternalName(item)
1326+
continue:context.Package'=refPackage
12951327
set ec = ..ExportItem(item, 1, force)
12961328
quit:'ec
12971329
}
@@ -1398,6 +1430,7 @@ ClassMethod GitStatus(ByRef files, IncludeAllFiles = 0)
13981430
set internalName = ..NameToInternalName(externalName)
13991431
if (internalName '= "") {
14001432
set files(internalName) = $listbuild(operation, externalName)
1433+
set @..#Storage@("items",..NormalizeInternalName(internalName)) = ""
14011434
} elseif ((IncludeAllFiles) && (externalName '= "")) {
14021435
set externalName = $TRANSLATE(externalName, "\", "/")
14031436
set files($I(files)) = $listbuild(operation, externalName)
@@ -1810,4 +1843,3 @@ ClassMethod BuildCEInstallationPackage(ByRef destination As %String) As %Status
18101843
}
18111844

18121845
}
1813-

0 commit comments

Comments
 (0)