From e572da708317050ee60496afd56c44b8dc89563a Mon Sep 17 00:00:00 2001 From: evgeny Date: Mon, 12 Jul 2021 23:38:36 +0300 Subject: [PATCH] added cubes export --- Dockerfile | 3 +- module.xml | 2 +- src/{cls => }/dev/FileManExtension.cls | 0 src/{cls => }/dev/code.cls | 46 +++++++++++++++++++++++--- src/{cls => }/dev/deepsee.cls | 0 src/{cls => }/dev/diff/gitHub.cls | 0 src/{cls => }/dev/diff/gitLocal.cls | 0 src/{cls => }/dev/diff/utils.cls | 0 8 files changed, 43 insertions(+), 8 deletions(-) rename src/{cls => }/dev/FileManExtension.cls (100%) rename src/{cls => }/dev/code.cls (92%) mode change 100644 => 100755 rename src/{cls => }/dev/deepsee.cls (100%) mode change 100644 => 100755 rename src/{cls => }/dev/diff/gitHub.cls (100%) mode change 100644 => 100755 rename src/{cls => }/dev/diff/gitLocal.cls (100%) mode change 100644 => 100755 rename src/{cls => }/dev/diff/utils.cls (100%) mode change 100644 => 100755 diff --git a/Dockerfile b/Dockerfile index bae13e6..5e9684d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -2,8 +2,7 @@ ARG IMAGE=store/intersystems/irishealth:2019.3.0.308.0-community ARG IMAGE=store/intersystems/iris-community:2019.3.0.309.0 ARG IMAGE=store/intersystems/iris-community:2019.4.0.379.0 ARG IMAGE=store/intersystems/iris-community:2020.1.0.199.0 -# ARG IMAGE=intersystemsdc/iris-community:2019.4.0.383.0-zpm -ARG IMAGE=intersystemsdc/iris-community:2020.4.0.524.0-zpm +ARG IMAGE=intersystemsdc/iris-community FROM $IMAGE USER root diff --git a/module.xml b/module.xml index 25bb559..cf75c73 100644 --- a/module.xml +++ b/module.xml @@ -3,7 +3,7 @@ isc-dev - 1.4.1 + 1.4.2 Export/Import InterSystems Data Platform development artefacts src module diff --git a/src/cls/dev/FileManExtension.cls b/src/dev/FileManExtension.cls similarity index 100% rename from src/cls/dev/FileManExtension.cls rename to src/dev/FileManExtension.cls diff --git a/src/cls/dev/code.cls b/src/dev/code.cls old mode 100644 new mode 100755 similarity index 92% rename from src/cls/dev/code.cls rename to src/dev/code.cls index ebf1fc6..a60bf28 --- a/src/cls/dev/code.cls +++ b/src/dev/code.cls @@ -1,10 +1,10 @@ /// Export different types of modules in different subfolders in UDL (plain) format /// test.dfi -> /dfi/test.dfi -/// testpkg.test.cls -> /cls/testpkg/test.cls +/// testpkg.test.cls -> /testpkg/test.cls Class dev.code [ Abstract ] { -Parameter version = "1.2.0"; +Parameter version = "1.4.0"; /// export all available code ClassMethod export(mask = "", generated = 0, system = 0, percent = 0, mapped = 0, dfi = 0) @@ -98,12 +98,49 @@ ClassMethod export(mask = "", generated = 0, system = 0, percent = 0, mapped = 0 set rs="" #;DeepSee artefacts + do ..exportCubes() do ..exportDeepSeeArtefacts() write !,!, "#; Exported to ", ..workdir() return $$$OK } +/// Export Cube Classes +ClassMethod exportCubes() As %Status +{ + #define export(%code, %file) set sc = $system.OBJ.ExportUDL(%code, %file,"/diffexport") ##continue + write:sc "Ok" do:'sc $system.OBJ.DisplayError(sc) + #define isMapped(%code) ##class(%RoutineMgr).IsMapped( %code ) + #define isPercented(%code) ("%" = $e(%code)) + #define isCube(%code) $classmethod(%code,"%Extends","%DeepSee.CubeDefinition") + + #define log write !, code, " -> ", $piece(filename,..workdir(),2), " " + + Set sc = $$$OK + #; classes + set rs = ##class(%ResultSet).%New("%Dictionary.ClassDefinition:Summary") + if rs.Execute() + { + while rs.%Next() + { + set code = rs.Name _ ".cls", isSystem = rs.System + if isSystem continue + if $$$isPercented( code ) continue + if $$$isMapped( code ) continue + + if '($classmethod(rs.Name,"%Extends","%DeepSee.CubeDefinition")) continue + set filename = ..filename( code ) + do ..mkdir( filename ) + $$$log + $$$export( code, filename ) + } + set rs="" + } + + + Return sc +} + /// import all from workdir ClassMethod import(filemask = "*.xml;*.cls;*.mac;*.int;*.inc;*.dfi", qspec = "cku-d", ByRef err = "", recurse = 1, ByRef loaded = "", verbose = 1) As %Status { @@ -382,8 +419,8 @@ ClassMethod filename(code) set ext = $p( code, ".", * ), ext = $zcvt( ext, "l" ) #; for each type - different directory - - set:ext'="" wd = ##class(%File).NormalizeDirectory( ext, wd ) + #; except cls,int,inc,mac + if ext'="cls",ext'="mac",ext'="int",ext'="inc",ext'="" set wd = ##class(%File).NormalizeDirectory( ext, wd ) #; directory must exist before any call (%File).NormalizeFilename( , wd) if '##class(%File).DirectoryExists( wd ) @@ -560,4 +597,3 @@ ClassMethod checkMasks(name As %String, masks As %String) As %Boolean } } - diff --git a/src/cls/dev/deepsee.cls b/src/dev/deepsee.cls old mode 100644 new mode 100755 similarity index 100% rename from src/cls/dev/deepsee.cls rename to src/dev/deepsee.cls diff --git a/src/cls/dev/diff/gitHub.cls b/src/dev/diff/gitHub.cls old mode 100644 new mode 100755 similarity index 100% rename from src/cls/dev/diff/gitHub.cls rename to src/dev/diff/gitHub.cls diff --git a/src/cls/dev/diff/gitLocal.cls b/src/dev/diff/gitLocal.cls old mode 100644 new mode 100755 similarity index 100% rename from src/cls/dev/diff/gitLocal.cls rename to src/dev/diff/gitLocal.cls diff --git a/src/cls/dev/diff/utils.cls b/src/dev/diff/utils.cls old mode 100644 new mode 100755 similarity index 100% rename from src/cls/dev/diff/utils.cls rename to src/dev/diff/utils.cls