Skip to content

Commit 4d9580f

Browse files
committed
move mkdir to export
1 parent 14c600f commit 4d9580f

File tree

1 file changed

+32
-21
lines changed

1 file changed

+32
-21
lines changed

sc.alles.cls

Lines changed: 32 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,26 @@ Class sc.alles [ Abstract ]
66
/// export all available code
77
ClassMethod 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
105122
ClassMethod 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
122140
ClassMethod 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

Comments
 (0)