@@ -6,13 +6,26 @@ Class sc.alles [ Abstract ]
6
6
/// export all available code
7
7
ClassMethod export (generated = 0 , system = 0 , percent = 0 , mapped = 0 )
8
8
{
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
+
11
15
#define isGenerated (%code ) ##class (%RoutineMgr ).IsGenerated ( %code )
12
16
#define isPercented (%code ) (" %" = $e (%code ))
13
17
#define isMapped (%code ) ##class (%RoutineMgr ).IsMapped ( %code )
14
18
#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
+
15
27
28
+
16
29
#; classes
17
30
s rs = ##class (%ResultSet ).%New (" %Dictionary.ClassDefinition:Summary" )
18
31
if rs .Execute () {
@@ -25,8 +38,9 @@ ClassMethod export(generated = 0, system = 0, percent = 0, mapped = 0)
25
38
if ( 'percent && $$$isPercented( code ) ) continue
26
39
if ( 'mapped && $$$isMapped( code ) ) continue
27
40
s filename = ..filename ( code )
41
+ $$$mkdir( filename )
28
42
$$$log
29
- w $$$export( code , filename )
43
+ $$$export( code , filename )
30
44
31
45
} s rs =" "
32
46
}
@@ -43,25 +57,27 @@ ClassMethod export(generated = 0, system = 0, percent = 0, mapped = 0)
43
57
if ( 'mapped && $$$isMapped( code ) ) continue
44
58
45
59
s filename = ..filename ( code )
60
+ $$$mkdir( filename )
46
61
$$$log
47
- w $$$export( code , filename )
62
+ $$$export( code , filename )
48
63
49
64
} s rs =" "
50
65
}
51
66
52
67
53
68
#; 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 )
55
70
s sql = " Select fullName as Name From %DeepSee_UserLibrary.FolderItem"
56
71
s rs = ##class (%SQL.Statement ).%ExecDirect ( .stm , sql )
57
72
while rs .%Next () {
58
73
s code = rs .Name , filename = ..filename ( code _" .dfi" )
74
+ $$$mkdir( filename )
59
75
$$$log
60
- w $$$export( code , filename )
76
+ $$$export(code ,filename )
61
77
62
78
} s rs =" "
63
79
64
- Q
80
+ Q 1
65
81
}
66
82
67
83
/// import all from workdir
@@ -101,6 +117,7 @@ ClassMethod import(filemask = "*.*", qspec = "cku-d", ByRef err = "", recurse =
101
117
102
118
Q sc
103
119
}
120
+
104
121
/// get or set working directory for export/import source
105
122
ClassMethod workdir (workdir )
106
123
{
@@ -118,6 +135,7 @@ ClassMethod gln() [ CodeMode = expression, Private ]
118
135
119
136
/// test.dfi -> /dfi/test.dfi
120
137
/// test.cls -> /cls/test.cls
138
+ /// testpkg.test.cls -> /cls/testpkg/test.cls
121
139
/// etc
122
140
ClassMethod filename (code )
123
141
{
@@ -134,27 +152,19 @@ ClassMethod filename(code)
134
152
#; for each type - different directory
135
153
136
154
s :ext '=" " wd = ##class (%File ).NormalizeDirectory ( ext , wd )
155
+
156
+ #; directory must exist before any call (%File).NormalizeFilename( , wd)
137
157
if '##class (%File ).DirectoryExists ( wd ) {
138
- s sc = ##class (%File ).CreateDirectoryChain ( wd )
158
+ s sc = ##class (%File ).CreateDirectoryChain ( wd )
139
159
$$$log(wd ,sc )
140
160
}
141
161
142
162
s filename = ##class (%File ).NormalizeFilename ( code , wd )
143
163
#; for *.cls Package.Subpackage.ClassName.cls -> Folder/Subfolder/ClassName.cls
144
164
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 )
158
168
}
159
169
Q filename
160
170
}
@@ -242,3 +252,4 @@ ClassMethod codets(codename, ext)
242
252
}
243
253
244
254
}
255
+
0 commit comments