Skip to content

Commit

Permalink
Merge remote-tracking branch 'doublefint/master'
Browse files Browse the repository at this point in the history
  • Loading branch information
evshvarov committed Jan 23, 2017
2 parents 4f8d9ea + 0dc7e2e commit bdf8f33
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 23 deletions.
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# all.udl
Export/Import all sources in UDL format for ISC Caché 2016.2
# cache-udl
Export/Import sources in UDL format for [ISC Caché 2016.2](http://www.intersystems.com/our-products/cache/cache-overview/)

## Setup working directory ( optional )
```
Expand Down
53 changes: 32 additions & 21 deletions sc.alles.cls
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,26 @@ Class sc.alles [ Abstract ]
/// export all available code
ClassMethod export(generated = 0, system = 0, percent = 0, mapped = 0)
{

#define export(%code, %file) $system.OBJ.ExportUDL(%code, %file,"/diffexport")

#define export(%code, %file) ##continue
s sc = $system.OBJ.ExportUDL(%code, %file,"/diffexport") ##continue
w +sc ##continue
if 'sc d $system.OBJ.DisplayError(sc)

#define isGenerated(%code) ##class(%RoutineMgr).IsGenerated( %code )
#define isPercented(%code) ("%" = $e(%code))
#define isMapped(%code) ##class(%RoutineMgr).IsMapped( %code )
#define log w !, code, " -> ", filename, " "

#define mkdir(%filename) ##continue
s path = ##class(%File).GetDirectory( %filename ) ##continue
if '##class(%File).DirectoryExists( path ) { ##continue
s sc = ##class(%File).CreateDirectoryChain( path ) ##continue
w !, "mkdir ", path, " ", sc ##continue
}



#; classes
s rs = ##class(%ResultSet).%New("%Dictionary.ClassDefinition:Summary")
if rs.Execute() {
Expand All @@ -25,8 +38,9 @@ ClassMethod export(generated = 0, system = 0, percent = 0, mapped = 0)
if ( 'percent && $$$isPercented( code ) ) continue
if ( 'mapped && $$$isMapped( code ) ) continue
s filename = ..filename( code )
$$$mkdir( filename )
$$$log
w $$$export( code, filename )
$$$export( code, filename )

} s rs=""
}
Expand All @@ -43,25 +57,27 @@ ClassMethod export(generated = 0, system = 0, percent = 0, mapped = 0)
if ( 'mapped && $$$isMapped( code ) ) continue

s filename = ..filename( code )
$$$mkdir( filename )
$$$log
w $$$export( code, filename )
$$$export( code, filename )

} s rs=""
}


#; dfi
#define export(%code, %file) ##class(%DeepSee.UserLibrary.Utils).%Export( %code, %file, 0 )
#define export(%code,%file) w ##class(%DeepSee.UserLibrary.Utils).%Export( %code, %file, 0 )
s sql = "Select fullName as Name From %DeepSee_UserLibrary.FolderItem"
s rs = ##class(%SQL.Statement).%ExecDirect( .stm, sql )
while rs.%Next() {
s code = rs.Name, filename = ..filename( code_".dfi" )
$$$mkdir( filename )
$$$log
w $$$export( code, filename )
$$$export(code,filename)

} s rs=""

Q
Q 1
}

/// import all from workdir
Expand Down Expand Up @@ -101,6 +117,7 @@ ClassMethod import(filemask = "*.*", qspec = "cku-d", ByRef err = "", recurse =

Q sc
}

/// get or set working directory for export/import source
ClassMethod workdir(workdir)
{
Expand All @@ -118,6 +135,7 @@ ClassMethod gln() [ CodeMode = expression, Private ]

/// test.dfi -> /dfi/test.dfi
/// test.cls -> /cls/test.cls
/// testpkg.test.cls -> /cls/testpkg/test.cls
/// etc
ClassMethod filename(code)
{
Expand All @@ -134,27 +152,19 @@ ClassMethod filename(code)
#; for each type - different directory

s:ext'="" wd = ##class(%File).NormalizeDirectory( ext, wd )

#; directory must exist before any call (%File).NormalizeFilename( , wd)
if '##class(%File).DirectoryExists( wd ) {
s sc = ##class(%File).CreateDirectoryChain( wd )
s sc = ##class(%File).CreateDirectoryChain( wd )
$$$log(wd,sc)
}

s filename = ##class(%File).NormalizeFilename( code, wd )
#; for *.cls Package.Subpackage.ClassName.cls -> Folder/Subfolder/ClassName.cls
if ext ="cls" {
set foldercode=$piece(code,".",*-2)
set foldercode=$translate(foldercode,".","/")
set foldercode=foldercode_"/"_$piece(code,".",*-1,*)
set filename=##class(%File).NormalizeFilename( foldercode, wd )
}

#; for *.dfi filename can contain folders
if ext = ("dfi")!("cls") {
s path = ##class(%File).GetDirectory( filename )
if '##class(%File).DirectoryExists( path ) {
s sc = ##class(%File).CreateDirectoryChain( path )
$$$log(path,sc)
}
s dirs = $piece( code, ".", *-2 ), dirs = $translate( dirs, ".", "/" )
s relpath = dirs _ "/" _ $piece( code, ".", *-1, * ) ;
s filename = ##class(%File).NormalizeFilename( relpath, wd )
}
Q filename
}
Expand Down Expand Up @@ -242,3 +252,4 @@ ClassMethod codets(codename, ext)
}

}

0 comments on commit bdf8f33

Please sign in to comment.