@@ -6,13 +6,26 @@ Class sc.alles [ Abstract ]
66/// export all available code
77ClassMethod export (generated = 0 , system = 0 , percent = 0 , mapped = 0 )
88{
9-
10- #define export (%code, %file ) $system .OBJ .ExportUDL (%code , %file ," /diffexport" )
9+
10+ #define export (%code, %file ) ##continue
11+ s sc = $system .OBJ .ExportUDL (%code , %file ," /diffexport" ) ##continue
12+ w +sc ##continue
13+ if 'sc d $system .OBJ .DisplayError (sc )
14+
1115 #define isGenerated (%code ) ##class (%RoutineMgr ).IsGenerated ( %code )
1216 #define isPercented (%code ) (" %" = $e (%code ))
1317 #define isMapped (%code ) ##class (%RoutineMgr ).IsMapped ( %code )
1418 #define log w !, code , " -> " , filename , " "
19+
20+ #define mkdir (%filename ) ##continue
21+ s path = ##class (%File ).GetDirectory ( %filename ) ##continue
22+ if '##class (%File ).DirectoryExists ( path ) { ##continue
23+ s sc = ##class (%File ).CreateDirectoryChain ( path ) ##continue
24+ w !, " mkdir " , path , " " , sc ##continue
25+ }
26+
1527
28+
1629 #; classes
1730 s rs = ##class (%ResultSet ).%New (" %Dictionary.ClassDefinition:Summary" )
1831 if rs .Execute () {
@@ -25,8 +38,9 @@ ClassMethod export(generated = 0, system = 0, percent = 0, mapped = 0)
2538 if ( 'percent && $$$isPercented( code ) ) continue
2639 if ( 'mapped && $$$isMapped( code ) ) continue
2740 s filename = ..filename ( code )
41+ $$$mkdir( filename )
2842 $$$log
29- w $$$export( code , filename )
43+ $$$export( code , filename )
3044
3145 } s rs =" "
3246 }
@@ -43,25 +57,27 @@ ClassMethod export(generated = 0, system = 0, percent = 0, mapped = 0)
4357 if ( 'mapped && $$$isMapped( code ) ) continue
4458
4559 s filename = ..filename ( code )
60+ $$$mkdir( filename )
4661 $$$log
47- w $$$export( code , filename )
62+ $$$export( code , filename )
4863
4964 } s rs =" "
5065 }
5166
5267
5368 #; dfi
54- #define export (%code, %file ) ##class (%DeepSee.UserLibrary.Utils ).%Export ( %code , %file , 0 )
69+ #define export (%code,%file ) w ##class (%DeepSee.UserLibrary.Utils ).%Export ( %code , %file , 0 )
5570 s sql = " Select fullName as Name From %DeepSee_UserLibrary.FolderItem"
5671 s rs = ##class (%SQL.Statement ).%ExecDirect ( .stm , sql )
5772 while rs .%Next () {
5873 s code = rs .Name , filename = ..filename ( code _" .dfi" )
74+ $$$mkdir( filename )
5975 $$$log
60- w $$$export( code , filename )
76+ $$$export(code ,filename )
6177
6278 } s rs =" "
6379
64- Q
80+ Q 1
6581}
6682
6783/// import all from workdir
@@ -101,6 +117,7 @@ ClassMethod import(filemask = "*.*", qspec = "cku-d", ByRef err = "", recurse =
101117
102118 Q sc
103119}
120+
104121/// get or set working directory for export/import source
105122ClassMethod workdir (workdir )
106123{
@@ -118,6 +135,7 @@ ClassMethod gln() [ CodeMode = expression, Private ]
118135
119136/// test.dfi -> /dfi/test.dfi
120137/// test.cls -> /cls/test.cls
138+ /// testpkg.test.cls -> /cls/testpkg/test.cls
121139/// etc
122140ClassMethod filename (code )
123141{
@@ -134,27 +152,19 @@ ClassMethod filename(code)
134152 #; for each type - different directory
135153
136154 s :ext '=" " wd = ##class (%File ).NormalizeDirectory ( ext , wd )
155+
156+ #; directory must exist before any call (%File).NormalizeFilename( , wd)
137157 if '##class (%File ).DirectoryExists ( wd ) {
138- s sc = ##class (%File ).CreateDirectoryChain ( wd )
158+ s sc = ##class (%File ).CreateDirectoryChain ( wd )
139159 $$$log(wd ,sc )
140160 }
141161
142162 s filename = ##class (%File ).NormalizeFilename ( code , wd )
143163 #; for *.cls Package.Subpackage.ClassName.cls -> Folder/Subfolder/ClassName.cls
144164 if ext =" cls" {
145- set foldercode =$piece (code ," ." ,*-2 )
146- set foldercode =$translate (foldercode ," ." ," /" )
147- set foldercode =foldercode _" /" _$piece (code ," ." ,*-1 ,*)
148- set filename =##class (%File ).NormalizeFilename ( foldercode , wd )
149- }
150-
151- #; for *.dfi filename can contain folders
152- if ext = (" dfi" )!(" cls" ) {
153- s path = ##class (%File ).GetDirectory ( filename )
154- if '##class (%File ).DirectoryExists ( path ) {
155- s sc = ##class (%File ).CreateDirectoryChain ( path )
156- $$$log(path ,sc )
157- }
165+ s dirs = $piece ( code , " ." , *-2 ), dirs = $translate ( dirs , " ." , " /" )
166+ s relpath = dirs _ " /" _ $piece ( code , " ." , *-1 , * ) ;
167+ s filename = ##class (%File ).NormalizeFilename ( relpath , wd )
158168 }
159169 Q filename
160170}
@@ -242,3 +252,4 @@ ClassMethod codets(codename, ext)
242252}
243253
244254}
255+
0 commit comments