diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..114a057 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,3 @@ +**/.DS_Store +iris-main.log +.git \ No newline at end of file diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..43e39d5 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,11 @@ +*.cls linguist-language=ObjectScript +*.mac linguist-language=ObjectScript +*.int linguist-language=ObjectScript +*.inc linguist-language=ObjectScript +*.csp linguist-language=Html + +*.sh text eol=lf +*.cls text eol=lf +*.mac text eol=lf +*.int text eol=lf +Dockerfil* text eol=lf diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e845e07 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +/.project +/.buildpath diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000..a019fe9 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,17 @@ +{ + "recommendations": [ + "eamodio.gitlens", + "georgejames.gjlocate", + "github.copilot", + "intersystems-community.servermanager", + "intersystems-community.sqltools-intersystems-driver", + "intersystems-community.testingmanager", + "intersystems-community.vscode-objectscript", + "intersystems.language-server", + "mohsen1.prettify-json", + "ms-azuretools.vscode-docker", + "ms-python.python", + "ms-python.vscode-pylance", + "ms-vscode-remote.remote-containers" + ] +} \ No newline at end of file diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..c17f3ea --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,18 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "type": "objectscript", + "request": "launch", + "name": "ObjectScript Debug Class", + "program": "##class(dc.sample.ObjectScript).Test()", + }, + { + "type": "objectscript", + "request": "attach", + "name": "ObjectScript Attach", + "processId": "${command:PickProcess}", + "system": true + } + ] + } \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..044a229 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,22 @@ +{ + "files.associations": { + + "Dockerfile*": "dockerfile", + "iris.script": "objectscript" + }, + "objectscript.conn" :{ + "active": true, + "ns": "USER", + "username": "_SYSTEM", + "password": "SYS", + "docker-compose": { + "service": "iris", + "internalPort": 52773 + }, + "links": { + "UnitTest Portal": "${serverUrl}/csp/sys/%25UnitTest.Portal.Home.cls?$NAMESPACE=IRISAPP" + } + }, + "intersystems.testingManager.client.relativeTestRoot": "tests" + +} \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..13acaa3 --- /dev/null +++ b/Dockerfile @@ -0,0 +1 @@ +# fake for OEX docker detection diff --git a/README.md b/README.md index d03ee24..2d86c6b 100644 --- a/README.md +++ b/README.md @@ -29,3 +29,29 @@ More docs are in the code docs. The utility works only in a current namespace. ## Requirements Works in 2016.2 Field Test or later. + +## Docker + +### Prerequisites +Make sure you have [git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git) and [Docker desktop](https://www.docker.com/products/docker-desktop) installed. +### Installation +Clone/git pull the repo into any local directory +``` +$ git clone https://github.com/rcemper/PR_SystemMethodsRemover.git +``` +to build and start the container run +``` +$ docker compose up -d && docker compose logs -f +``` +All ready to be used. + +To open IRIS Terminal do: +``` +$ docker-compose exec iris iris session iris +USER> +``` +or using **WebTerminal** +http://localhost:42773/terminal/ + +To access IRIS System Management Portal +http://localhost:42773/csp/sys/UtilHome.csp diff --git a/ascript.sh b/ascript.sh new file mode 100644 index 0000000..7f0f074 --- /dev/null +++ b/ascript.sh @@ -0,0 +1,4 @@ +cd /home/irisowner/dev +iris view +iris session iris < iris.script +exit 0 \ No newline at end of file diff --git a/dev.md b/dev.md new file mode 100644 index 0000000..080011f --- /dev/null +++ b/dev.md @@ -0,0 +1,117 @@ +# useful commands +## clean up docker +use it when docker says "There is no space left on device". It will remove built but not used images and other temporary files. +``` +docker system prune -f +``` + +``` +docker rm -f $(docker ps -qa) +``` + +## build container with no cache +``` +docker-compose build --no-cache --progress=plain +``` +## start iris container +``` +docker-compose up -d +``` + +## open iris terminal in docker +``` +docker exec iris iris session iris -U IRISAPP +``` + + +## import objectscirpt code + +do $System.OBJ.LoadDir("/home/irisowner/dev/src","ck",,1) +## map iris key from Mac home directory to IRIS in container +- ~/iris.key:/usr/irissys/mgr/iris.key + +## install git in the docker image +## add git in dockerfile +USER root +RUN apt update && apt-get -y install git + +USER ${ISC_PACKAGE_MGRUSER} + + +## install docker-compose +``` +sudo curl -L "https://github.com/docker/compose/releases/download/1.26.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose + +sudo chmod +x /usr/local/bin/docker-compose + +``` + +## load and test module +``` + +zpm "load /home/irisowner/dev" + +zpm "test dc-sample" +``` + +## select zpm test registry +``` +repo -n registry -r -url https://test.pm.community.intersystems.com/registry/ -user test -pass PassWord42 +``` + +## get back to public zpm registry +``` +repo -r -n registry -url https://pm.community.intersystems.com/ -user "" -pass "" +``` + +## export a global in runtime into the repo +``` +d $System.OBJ.Export("GlobalD.GBL","/irisrun/repo/src/gbl/GlobalD.xml") +``` + +## create a web app in dockerfile +``` +zn "%SYS" \ + write "Create web application ...",! \ + set webName = "/csp/irisweb" \ + set webProperties("NameSpace") = "IRISAPP" \ + set webProperties("Enabled") = 1 \ + set webProperties("CSPZENEnabled") = 1 \ + set webProperties("AutheEnabled") = 32 \ + set webProperties("iKnowEnabled") = 1 \ + set webProperties("DeepSeeEnabled") = 1 \ + set sc = ##class(Security.Applications).Create(webName, .webProperties) \ + write "Web application "_webName_" has been created!",! +``` + + + +``` +do $SYSTEM.OBJ.ImportDir("/opt/irisbuild/src",, "ck") +``` + + +### run tests described in the module + +IRISAPP>zpm +IRISAPP:zpm>load /irisrun/repo +IRISAPP:zpm>test package-name + +### install ZPM with one line + // Install ZPM + set $namespace="%SYS", name="DefaultSSL" do:'##class(Security.SSLConfigs).Exists(name) ##class(Security.SSLConfigs).Create(name) set url="https://pm.community.intersystems.com/packages/zpm/latest/installer" Do ##class(%Net.URLParser).Parse(url,.comp) set ht = ##class(%Net.HttpRequest).%New(), ht.Server = comp("host"), ht.Port = 443, ht.Https=1, ht.SSLConfiguration=name, st=ht.Get(comp("path")) quit:'st $System.Status.GetErrorText(st) set xml=##class(%File).TempFilename("xml"), tFile = ##class(%Stream.FileBinary).%New(), tFile.Filename = xml do tFile.CopyFromAndSave(ht.HttpResponse.Data) do ht.%Close(), $system.OBJ.Load(xml,"ck") do ##class(%File).Delete(xml) + + + + +docker run --rm --name iris-sql -d -p 9091:1972 -p 9092:52773  -e IRIS_PASSWORD=demo -e IRIS_USERNAME=demo intersystemsdc/iris-community + + +docker run --rm --name iris-ce -d -p 9091:1972 -p 9092:52773 -e IRIS_PASSWORD=demo -e IRIS_USERNAME=demo intersystemsdc/iris-community -a "echo 'zpm \"install webterminal\"' | iriscli" + + + +docker run --rm --name iris-sql -d -p 9092:52773 containers.intersystems.com/intersystems/iris-community:2023.1.0.229.0 + + +docker run --rm --name iris-ce -d -p 9092:52773 containers.intersystems.com/intersystems/iris-community:2023.1.0.229.0 \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..eea062d --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,12 @@ +version: '3.6' +services: + iris: + image: intersystemsdc/iris-community + restart: always + command: -a /home/irisowner/dev/ascript.sh + + ports: + - 41773:1972 + - 42773:52773 + volumes: + - ./:/home/irisowner/dev diff --git a/iris.script b/iris.script new file mode 100644 index 0000000..5278065 --- /dev/null +++ b/iris.script @@ -0,0 +1,16 @@ +zn "%SYS" + +// Unexpire passwords and set up passwordless mode to simplify dev use. +do ##class(Security.Users).UnExpireUserPasswords("*") +zpm "install passwordless" + +zn "USER" +// Create /_vscode web app to support intersystems-community.testingmanager VS Code extension +zpm "install vscode-per-namespace-settings" +zpm "install webterminal" + +// this should be the place for individual application code. +zpm "load /home/irisowner/dev/ -v":1 +zpm "list" +halt + diff --git a/module.xml b/module.xml new file mode 100644 index 0000000..64d8fd2 --- /dev/null +++ b/module.xml @@ -0,0 +1,13 @@ + + + + + $remover + 2.0.0 + change methods from the codebase + module + . + + + +