From 8768058290e0ca021e60e54be69a7ae0774169a9 Mon Sep 17 00:00:00 2001 From: "Shuheng Liu (InterSystems)" <155992272+isc-shuliu@users.noreply.github.com> Date: Mon, 16 Dec 2024 09:24:25 -0500 Subject: [PATCH 01/17] chore(ci): include `main` branch for CI --- .github/workflows/main.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index e9f9a32e..a28d2004 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -2,11 +2,13 @@ name: CI on: push: branches: + - main - v0.7.x - v0.9.x - v0.10.x pull_request: branches: + - main - v0.7.x - v0.9.x - v0.10.x From 0acd8f676f276386ab8e3a315ec174ba0e8bf945 Mon Sep 17 00:00:00 2001 From: "Shuheng Liu (InterSystems)" <155992272+isc-shuliu@users.noreply.github.com> Date: Mon, 16 Dec 2024 09:31:56 -0500 Subject: [PATCH 02/17] fix(ci): change ref from master to main on release --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index a28d2004..a66b999d 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -241,7 +241,7 @@ jobs: - uses: actions/checkout@master if: github.event_name == 'release' with: - ref: master + ref: main - uses: actions/download-artifact@v3 with: name: zpm-${{ needs.prepare.outputs.version }} From fa8ff89707688d610b95bd06cd61a49d1e7ffce5 Mon Sep 17 00:00:00 2001 From: Shuheng Liu Date: Tue, 17 Dec 2024 09:15:17 -0500 Subject: [PATCH 03/17] fix(ci): update path to preload Installer.cls --- .github/workflows/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index a66b999d..28e2dcbd 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -275,7 +275,7 @@ jobs: CONTAINER=$(docker run -d --rm -v $(pwd):/home/irisowner/zpm/ containers.intersystems.com/intersystems/${{ needs.prepare.outputs.main }} --check-caps false) sleep 5; docker exec $CONTAINER /usr/irissys/dev/Cloud/ICM/waitISC.sh docker exec -i $CONTAINER iris session iris -UUSER << EOF - set sc=##class(%SYSTEM.OBJ).Load("/home/irisowner/zpm/Installer.cls","ck") + set sc=##class(%SYSTEM.OBJ).Load("/home/irisowner/zpm/preload/cls/IPM/Installer.cls","ck") set sc=##class(IPM.Installer).setup("/home/irisowner/zpm/",3) zpm "repo -r -name registry -url ""https://pm.community.intersystems.com/"" -username ${{ secrets.REGISTRY_USERNAME }} -password ${{ secrets.REGISTRY_PASSWORD }}":1 zpm "publish zpm -v":1 From 8a7bb4d9dbc627f263dffa80530b78e3762b8c17 Mon Sep 17 00:00:00 2001 From: Shuheng Liu Date: Tue, 17 Dec 2024 10:24:56 -0500 Subject: [PATCH 04/17] feat(enable): allow mapping repo settings in addition to IPM itself --- src/cls/IPM/Main.cls | 44 +++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 43 insertions(+), 1 deletion(-) diff --git a/src/cls/IPM/Main.cls b/src/cls/IPM/Main.cls index df96edb8..b455b67a 100644 --- a/src/cls/IPM/Main.cls +++ b/src/cls/IPM/Main.cls @@ -654,6 +654,7 @@ generate /my/path -export 00000,PacketName2,IgnorePacket2^00000,PacketName3,Igno + @@ -2848,6 +2849,7 @@ ClassMethod EnableIPM(ByRef pCommandInfo) Set version = $$$GetModifier(pCommandInfo, "version") Set namespaces = $$$GetModifier(pCommandInfo, "namespaces") Set allowUpgrade = $$$HasModifier(pCommandInfo,"allow-upgrade") + Set mapRepos = $$$HasModifier(pCommandInfo,"repos") Set useLocal = 1 // var to store the final decision of whether to use local manifest or get from server Set targetVersion = "" // var to store the final version of IPM to be installed Kill targetNamespaces // multi-dim array to store the final namespaces that need to install IPM @@ -2866,6 +2868,9 @@ ClassMethod EnableIPM(ByRef pCommandInfo) If map && 'globally && (namespaces = "") { $$$ThrowOnError($$$ERROR($$$GeneralError,"If mapping from the current namespace's routine database with -map, must specify either -globally or a list of namespaces with -ns")) } + If ('map) && (mapRepos) { + $$$ThrowOnError($$$ERROR($$$GeneralError,"Cannot specify -repos without -map")) + } If map { If globally { @@ -2884,13 +2889,15 @@ ClassMethod EnableIPM(ByRef pCommandInfo) } Else { Set namespaces = $ListFromString(namespaces) } + + // First try to map IPM itself Set pointer = 0 While $ListNext(namespaces,pointer,namespace) { Set namespace = $Zstrip(namespace, "<>WC") Set $Namespace = namespace If ..IPMInstalled() { If 'quiet || preview { - Write !,"Skipping "_namespace_" - IPM already installed." + Write !,"Skipping IPM mapping of "_namespace_" - IPM already installed." } Continue } @@ -2908,6 +2915,41 @@ ClassMethod EnableIPM(ByRef pCommandInfo) } $$$ThrowOnError(##class(%IPM.Utils.Build).MapRoutineEquivalently("%IPM.*",initNamespace,,namespace)) } + + // Then try to map Repo settings if -repos is specified + If mapRepos { + Do ..GetMapInfo(.isMappedFrom) + Set pointer = 0 + While $ListNext(namespaces,pointer,namespace) { + Set namespace = $ZStrip(namespace, "<>WC") + // If IPM is not mapped from source namespace, skip repo mapping + If $Get(isMappedFrom(namespace)) '= initNamespace { + If 'quiet || preview { + Write !,"Skipping repository settings mapping of "_namespace_" - IPM not mapped from source namespace." + } + Continue + } + // If repository settings are already present, also skip repo mapping avoid override + If $Data(^IPM.Repo.DefinitionD) \ 2 { + If 'quiet || preview { + Write !,"Skipping repository settings mapping of "_namespace_" - IPM Repo settings found." + } + Continue + } + Set $Namespace = initNamespace + If preview { + Write !,"Would add IPM repository settings mappings to "_namespace + Continue + } + If 'quiet { + Write !,"Mapping IPM repository settings in "_namespace_" equivalently to "_initNamespace + } + For suffix = "D", "S", "I" { + $$$ThrowOnError(##class(%IPM.Utils.Build).MapGlobalEquivalently("IPM.Repo.Definition"_suffix, initNamespace, namespace)) + } + } + } + Set $Namespace = initNamespace If preview { Write !,"Preview mode; no configuration changes were made." From 93f0385d01b96ea0010e73dcdee2fd14ca8d604a Mon Sep 17 00:00:00 2001 From: Shuheng Liu Date: Tue, 17 Dec 2024 10:50:20 -0500 Subject: [PATCH 05/17] fix: forgot to change namespace when checking IPM globals --- src/cls/IPM/Main.cls | 1 + 1 file changed, 1 insertion(+) diff --git a/src/cls/IPM/Main.cls b/src/cls/IPM/Main.cls index b455b67a..181f79bc 100644 --- a/src/cls/IPM/Main.cls +++ b/src/cls/IPM/Main.cls @@ -2930,6 +2930,7 @@ ClassMethod EnableIPM(ByRef pCommandInfo) Continue } // If repository settings are already present, also skip repo mapping avoid override + Set $Namespace = namespace If $Data(^IPM.Repo.DefinitionD) \ 2 { If 'quiet || preview { Write !,"Skipping repository settings mapping of "_namespace_" - IPM Repo settings found." From fa560e0758e4ea9b2c4ca242d616445faaf0321c Mon Sep 17 00:00:00 2001 From: Shuheng Liu Date: Tue, 17 Dec 2024 10:52:01 -0500 Subject: [PATCH 06/17] feat: support "enable -community" to map community repo & IPM globally --- src/cls/IPM/Main.cls | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/cls/IPM/Main.cls b/src/cls/IPM/Main.cls index 181f79bc..f79cf0a2 100644 --- a/src/cls/IPM/Main.cls +++ b/src/cls/IPM/Main.cls @@ -657,6 +657,7 @@ generate /my/path -export 00000,PacketName2,IgnorePacket2^00000,PacketName3,Igno + enable -map -globally @@ -673,6 +674,9 @@ generate /my/path -export 00000,PacketName2,IgnorePacket2^00000,PacketName3,Igno enable -v latest -allow-upgrade NS1,NS2,NS3 + + enable -community + @@ -2841,6 +2845,19 @@ ClassMethod EnableIPM(ByRef pCommandInfo) Write !,($namespace)_"> "_$$$FormattedLine($$$Green,$$$IPMModuleName_" ")_modDef.VersionString } + If $$$HasModifier(pCommandInfo,"community") { + For cmd = "repo -delete-all", "repo -reset-defaults", "enable -map -repos -globally" { + Write !!, "RUNNING command: """, cmd, """" + Do ..ShellInternal(cmd, .exc) + If exc '= $$$NULLOREF { + Write !, $$$FormattedLine($$$Red, $$$FormatText("Error running command ""%1"" - %2", cmd, exc.DisplayString())) + } Else { + Write !, $$$FormattedLine($$$Green, $$$FormatText("Command ""%1"" finished successfull", cmd)) + } + } + Return + } + Set quiet = $$$HasModifier(pCommandInfo,"quiet") Set preview = $$$HasModifier(pCommandInfo,"preview") Set map = $$$HasModifier(pCommandInfo,"map") From 40d064526703973e0b9da636ff153773e1c5018b Mon Sep 17 00:00:00 2001 From: Shuheng Liu Date: Tue, 17 Dec 2024 10:53:37 -0500 Subject: [PATCH 07/17] style: reduce verbosity --- src/cls/IPM/Main.cls | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/cls/IPM/Main.cls b/src/cls/IPM/Main.cls index f79cf0a2..8ff9f13c 100644 --- a/src/cls/IPM/Main.cls +++ b/src/cls/IPM/Main.cls @@ -2933,7 +2933,7 @@ ClassMethod EnableIPM(ByRef pCommandInfo) $$$ThrowOnError(##class(%IPM.Utils.Build).MapRoutineEquivalently("%IPM.*",initNamespace,,namespace)) } - // Then try to map Repo settings if -repos is specified + // Then try to map repositories if -repos is specified If mapRepos { Do ..GetMapInfo(.isMappedFrom) Set pointer = 0 @@ -2942,25 +2942,25 @@ ClassMethod EnableIPM(ByRef pCommandInfo) // If IPM is not mapped from source namespace, skip repo mapping If $Get(isMappedFrom(namespace)) '= initNamespace { If 'quiet || preview { - Write !,"Skipping repository settings mapping of "_namespace_" - IPM not mapped from source namespace." + Write !,"Skipping repository mapping of "_namespace_" - IPM not mapped from source namespace." } Continue } - // If repository settings are already present, also skip repo mapping avoid override + // If repository are already present, also skip repo mapping avoid override Set $Namespace = namespace If $Data(^IPM.Repo.DefinitionD) \ 2 { If 'quiet || preview { - Write !,"Skipping repository settings mapping of "_namespace_" - IPM Repo settings found." + Write !,"Skipping repository mapping of "_namespace_" - IPM repositories found." } Continue } Set $Namespace = initNamespace If preview { - Write !,"Would add IPM repository settings mappings to "_namespace + Write !,"Would add IPM repository mappings to "_namespace Continue } If 'quiet { - Write !,"Mapping IPM repository settings in "_namespace_" equivalently to "_initNamespace + Write !,"Mapping IPM repository in "_namespace_" equivalently to "_initNamespace } For suffix = "D", "S", "I" { $$$ThrowOnError(##class(%IPM.Utils.Build).MapGlobalEquivalently("IPM.Repo.Definition"_suffix, initNamespace, namespace)) From 328c54df909f12c2d7136fd2911c6e56981642c0 Mon Sep 17 00:00:00 2001 From: Shuheng Liu Date: Tue, 17 Dec 2024 11:19:54 -0500 Subject: [PATCH 08/17] fix: improve output of zpm error message in namespaces without IPM --- src/cls/IPM/Main.cls | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/cls/IPM/Main.cls b/src/cls/IPM/Main.cls index 8ff9f13c..d29bc795 100644 --- a/src/cls/IPM/Main.cls +++ b/src/cls/IPM/Main.cls @@ -2808,9 +2808,12 @@ ZPM(pArgs...) Set found = 0 While rs.%Next() { Set $Namespace = $Zstrip(rs.%Get("Nsp"), "<>WC") - If $System.CLS.IsMthd("%IPM.Main", "Shell") { + // Some I4H containers come with %IPM.Main but the "version" command doesn't work ?! + If $System.CLS.IsMthd("%IPM.Main", "Shell") && ($Namespace '= "HSLIB") && ($Namespace '= "HSSYS") { Write !, "Change namepace to one of the following to run the ""zpm"" command" Do ##class(%IPM.Main).Shell("version") + Write !, "If you want to map IPM globally, switch to one of the namesapaces above and run: zpm ""enable -map -globally""." + Write !, "If you want to reset repository and map IPM globally along with repository settings, switch to one of the namesapaces above and run: zpm ""enable -community""." Set found = 1 Quit } From 938d3807438159e5724700deda1825f29af8071a Mon Sep 17 00:00:00 2001 From: Shuheng Liu Date: Tue, 17 Dec 2024 11:39:26 -0500 Subject: [PATCH 09/17] feat(unmap): support unmapping of repository settings --- src/cls/IPM/Main.cls | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/src/cls/IPM/Main.cls b/src/cls/IPM/Main.cls index d29bc795..eeb0edca 100644 --- a/src/cls/IPM/Main.cls +++ b/src/cls/IPM/Main.cls @@ -680,12 +680,15 @@ generate /my/path -export 00000,PacketName2,IgnorePacket2^00000,PacketName3,Igno + Unmap %IPM package and routines in specified namespaces. Unmap %IPM package and routines in specified namespaces. Will Skip non-mapped namespaces. + If repository settings are mapped, will also unmap repository settings. + unmap -ns NS1,NS2,NS3 @@ -3204,6 +3207,7 @@ ClassMethod UnmapIPM(ByRef pCommandInfo) Set globally = $$$HasModifier(pCommandInfo,"globally") Set namespaces = $ListFromString($$$GetModifier(pCommandInfo,"namespaces"), ",") Set verbose = '$$$HasModifier(pCommandInfo,"quiet") + set reposOnly = $$$HasModifier(pCommandInfo,"repos-only") // Sanity check If (globally && (namespaces '= "")) { $$$ThrowOnError($$$ERROR($$$GeneralError,"Cannot specify namespaces and global unmap flag at the same time.")) @@ -3224,7 +3228,11 @@ ClassMethod UnmapIPM(ByRef pCommandInfo) } } If verbose { - Write !,"Will attempt to unmap %IPM package and routines from: "_ $ListToString(namespaces, ", ") + If reposOnly { + Write !,"Will attempt to unmap IPM repository settings from: "_ $ListToString(namespaces, ", ") + } Else { + Write !,"Will attempt to unmap IPM package, routines, and repository settings from: "_ $ListToString(namespaces, ", ") + } } // Gather namespaces where %IPM is mapped into @@ -3239,11 +3247,21 @@ ClassMethod UnmapIPM(ByRef pCommandInfo) } Continue } + If verbose { - Write !,"Unmapping %IPM package and routines from "_ns_" (mapped from "_src_")" + Write !,"Unmapping repository settings from "_ns_" (mapped from "_src_")" + } + For suffix = "D", "S", "I" { + $$$ThrowOnError(##class(%IPM.Utils.Module).RemoveGlobalMapping(ns, "IPM.Repo.Definition"_suffix)) + } + + If 'reposOnly { + If verbose { + Write !,"Unmapping IPM package and routines from "_ns_" (mapped from "_src_")" + } + $$$ThrowOnError(##class(%IPM.Utils.Module).RemovePackageMapping(ns, "%IPM")) + $$$ThrowOnError(##class(%IPM.Utils.Module).RemoveRoutineMapping(ns, "%IPM.*")) } - $$$ThrowOnError(##class(%IPM.Utils.Module).RemovePackageMapping(ns, "%IPM")) - $$$ThrowOnError(##class(%IPM.Utils.Module).RemoveRoutineMapping(ns, "%IPM.*")) } } From 93eb017181037559445bcc8f0e38b22e9a94be95 Mon Sep 17 00:00:00 2001 From: Shuheng Liu Date: Tue, 17 Dec 2024 11:46:22 -0500 Subject: [PATCH 10/17] chore: update change log --- CHANGELOG.md | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ab5ca72b..3813bc1d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,7 +5,18 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## [Unreleased - 0.9.0+snapshot] +## [0.9.1] - 2024-12-17 + +### Added +- #663 Added support for mapping of repository settings along with, or in addition to, IPM package and routines +- #663 Added functionlity to always unmap repository settings when IPM package and routines are unmapped +- #663 Added support for unmapping of repository settings alone +- #663 Added support for `enable -community` which resets repository settings to default and map IPM along with repo settings globally + +### Changed +- #663 Improved error output and instructions in the language extension when running "zpm" is run from a namespace without IPM + +## [0.9.0] - 2024-12-16 ### Added - #364 Added ability to restrict the installation to IRIS or IRIS for Health platform to the SystemRequirements attribute @@ -64,11 +75,5 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - #606: Don't put garbage folders in tar archive - #652: Don't create extra needless mappings (could cause deadlock with parallel installation of dependencies) -### Security -- - -### Removed -- - ### Deprecated - #593 CSPApplication is deprecated in favor of WebApplication. User will be warned when installing a package containing CSPApplication. From 0cf51ffb6535b431d697582630545305cb22b915 Mon Sep 17 00:00:00 2001 From: Shuheng Liu Date: Tue, 17 Dec 2024 11:53:35 -0500 Subject: [PATCH 11/17] chore: changelog typo fix --- CHANGELOG.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3813bc1d..4c2d510d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,12 +9,12 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Added - #663 Added support for mapping of repository settings along with, or in addition to, IPM package and routines -- #663 Added functionlity to always unmap repository settings when IPM package and routines are unmapped +- #663 Added functionality to always unmap repository settings when IPM package and routines are unmapped - #663 Added support for unmapping of repository settings alone -- #663 Added support for `enable -community` which resets repository settings to default and map IPM along with repo settings globally +- #663 Added support for `enable -community`, which resets repository settings to default and maps IPM along with repo settings globally ### Changed -- #663 Improved error output and instructions in the language extension when running "zpm" is run from a namespace without IPM +- #663 Improved error output and instructions in the language extension when "zpm" is run from a namespace without IPM ## [0.9.0] - 2024-12-16 From 5723f39f4e68df20cc87ff16eb7bb62dc7b4a0e6 Mon Sep 17 00:00:00 2001 From: Shuheng Liu Date: Tue, 17 Dec 2024 14:24:43 -0500 Subject: [PATCH 12/17] chore: update change log to reflect the compatibility of changes --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4c2d510d..42de29dd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,7 +13,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - #663 Added support for unmapping of repository settings alone - #663 Added support for `enable -community`, which resets repository settings to default and maps IPM along with repo settings globally -### Changed +### Fixed - #663 Improved error output and instructions in the language extension when "zpm" is run from a namespace without IPM ## [0.9.0] - 2024-12-16 From 887bdd20cff9e82fd65c5d7d21f92d6c6d78b22a Mon Sep 17 00:00:00 2001 From: Shuheng Liu Date: Tue, 17 Dec 2024 14:27:17 -0500 Subject: [PATCH 13/17] docs: explain v0.9.0 changes and how to keep the legacy behavior --- README.md | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index c65ec88b..d1ab2e35 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,18 @@ -# ObjectScript Package Manager Client - ZPM +# InterSystems Package Manager - IPM -Helps to install ObjectScript classes and routines, globals, Embedded Python modules, CSP and Frontend packages, and any files into InterSystems IRIS published on the official [ZPM Registry](https://pm.community.intersystems.com/packages/-/all) or private ZPM registry of your own. +Helps to install ObjectScript classes and routines, globals, Embedded Python modules, CSP and Frontend packages, and any files into InterSystems IRIS published on the official [Registry](https://pm.community.intersystems.com/packages/-/all) or private registry of your own. ## Documentation * [The official documenation in the wiki](https://github.com/intersystems-community/zpm/wiki/) * [Articles on the InterSystems Developer Community](https://community.intersystems.com/tags/objectscript-package-manager-zpm) * [Videos on YouTube](https://www.youtube.com/playlist?list=PLKb2cBVphNQRcmxt4LtYDyLJEPfF4X4-4) +## Compatibility Note +With the release of IPM v0.9.0 on Dec 2024, IPM is no longer mapped across namespaces. Users can have different IPM versions and configurations in different namespaces. + +* To retain the old behavior where %IPM routines and classes mapped across all namespaces, run `zpm "enable -map -globally`. This is automatically performed when upgrading from a legacy version and can be undone by running `zpm "unmap -globally`. +* You can optionally choose to map IPM repositories across namespaces with `zpm "enable -map -repos -namespaces NS1,NS2,NS3` or `zpm "enable -map -repos -globally`. Repositories are only mapped if %IPM classes and rountines are also mapped from the same namespace. +* As a convenience command, `zpm "enable -community"` will make IPM behave essentially the same as legeacy versions (v0.7.x) by setting up the the community registry and maping %IPM routines and classes, as well IPM repository settings to all namespaces. ## Installing ObjectScript Package Manager Client: @@ -14,6 +20,7 @@ Helps to install ObjectScript classes and routines, globals, Embedded Python mod ``` s r=##class(%Net.HttpRequest).%New(),r.Server="pm.community.intersystems.com",r.SSLConfiguration="ISC.FeatureTracker.SSL.Config" d r.Get("/packages/zpm/latest/installer"),$system.OBJ.LoadStream(r.HttpResponse.Data,"c") ``` +**If you want the legacy behavior of mapping IPM classes, routines, and repository settings to all namespaces, run `zpm "enable -community"` after installing IPM. See `zpm "help enable"` for details.** OR: From 0afbc77d1a4c451c02a8927f7c8e5f510c8e5edf Mon Sep 17 00:00:00 2001 From: Shuheng Liu Date: Tue, 17 Dec 2024 14:31:20 -0500 Subject: [PATCH 14/17] docs: improve readme explanation on IPM 0.9 --- README.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index d1ab2e35..72571ade 100644 --- a/README.md +++ b/README.md @@ -8,9 +8,11 @@ Helps to install ObjectScript classes and routines, globals, Embedded Python mod * [Videos on YouTube](https://www.youtube.com/playlist?list=PLKb2cBVphNQRcmxt4LtYDyLJEPfF4X4-4) ## Compatibility Note -With the release of IPM v0.9.0 on Dec 2024, IPM is no longer mapped across namespaces. Users can have different IPM versions and configurations in different namespaces. +With the release of IPM v0.9.0 on Dec 2024, IPM is no longer mapped across namespaces. +This is an intentioal change so that users can have different IPM versions and configurations in different namespaces. +If you install IPM on an instance without the legacy 0.7.x version, IPM is only installed to the current namespace. -* To retain the old behavior where %IPM routines and classes mapped across all namespaces, run `zpm "enable -map -globally`. This is automatically performed when upgrading from a legacy version and can be undone by running `zpm "unmap -globally`. +* To retain the old behavior where %IPM routines and classes mapped across all namespaces, run `zpm "enable -map -globally`. This is automatically performed when upgrading from a legacy version and can be undone by running `zpm "unmap -globally"`. * You can optionally choose to map IPM repositories across namespaces with `zpm "enable -map -repos -namespaces NS1,NS2,NS3` or `zpm "enable -map -repos -globally`. Repositories are only mapped if %IPM classes and rountines are also mapped from the same namespace. * As a convenience command, `zpm "enable -community"` will make IPM behave essentially the same as legeacy versions (v0.7.x) by setting up the the community registry and maping %IPM routines and classes, as well IPM repository settings to all namespaces. From ea13ebc4092280dd0ebbd7e148348d4b6e3ab384 Mon Sep 17 00:00:00 2001 From: isc-tleavitt <73311181+isc-tleavitt@users.noreply.github.com> Date: Wed, 18 Dec 2024 08:17:31 -0500 Subject: [PATCH 15/17] docs: a few more readme tweaks --- README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 72571ade..cbc0e272 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ Helps to install ObjectScript classes and routines, globals, Embedded Python mod ## Compatibility Note With the release of IPM v0.9.0 on Dec 2024, IPM is no longer mapped across namespaces. -This is an intentioal change so that users can have different IPM versions and configurations in different namespaces. +This is an intentional change so that users can have different IPM versions and configurations in different namespaces. If you install IPM on an instance without the legacy 0.7.x version, IPM is only installed to the current namespace. * To retain the old behavior where %IPM routines and classes mapped across all namespaces, run `zpm "enable -map -globally`. This is automatically performed when upgrading from a legacy version and can be undone by running `zpm "unmap -globally"`. @@ -20,9 +20,10 @@ If you install IPM on an instance without the legacy 0.7.x version, IPM is only 0. Use one-liner in terminal call or programmatically: ``` -s r=##class(%Net.HttpRequest).%New(),r.Server="pm.community.intersystems.com",r.SSLConfiguration="ISC.FeatureTracker.SSL.Config" d r.Get("/packages/zpm/latest/installer"),$system.OBJ.LoadStream(r.HttpResponse.Data,"c") +s version="latest" s r=##class(%Net.HttpRequest).%New(),r.Server="pm.community.intersystems.com",r.SSLConfiguration="ISC.FeatureTracker.SSL.Config" d r.Get("/packages/zpm/"_version_"/installer"),$system.OBJ.LoadStream(r.HttpResponse.Data,"c") ``` **If you want the legacy behavior of mapping IPM classes, routines, and repository settings to all namespaces, run `zpm "enable -community"` after installing IPM. See `zpm "help enable"` for details.** +**In a CI script, for deterministic behavior, you should replace version="latest" with the IPM version you wish to use.** OR: From c1f67545a7c269497f390462e1695830c0b896ed Mon Sep 17 00:00:00 2001 From: "Shuheng Liu (InterSystems)" <155992272+isc-shuliu@users.noreply.github.com> Date: Wed, 18 Dec 2024 10:56:49 -0500 Subject: [PATCH 16/17] style: fix typos in readme --- README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index cbc0e272..9f897600 100644 --- a/README.md +++ b/README.md @@ -13,8 +13,8 @@ This is an intentional change so that users can have different IPM versions and If you install IPM on an instance without the legacy 0.7.x version, IPM is only installed to the current namespace. * To retain the old behavior where %IPM routines and classes mapped across all namespaces, run `zpm "enable -map -globally`. This is automatically performed when upgrading from a legacy version and can be undone by running `zpm "unmap -globally"`. -* You can optionally choose to map IPM repositories across namespaces with `zpm "enable -map -repos -namespaces NS1,NS2,NS3` or `zpm "enable -map -repos -globally`. Repositories are only mapped if %IPM classes and rountines are also mapped from the same namespace. -* As a convenience command, `zpm "enable -community"` will make IPM behave essentially the same as legeacy versions (v0.7.x) by setting up the the community registry and maping %IPM routines and classes, as well IPM repository settings to all namespaces. +* You can optionally choose to map IPM repositories across namespaces with `zpm "enable -map -repos -namespaces NS1,NS2,NS3` or `zpm "enable -map -repos -globally`. Repositories are only mapped if %IPM classes and routines are also mapped from the same namespace. +* As a convenience command, `zpm "enable -community"` will make IPM behave essentially the same as legacy versions (v0.7.x) by setting up the the community registry and maping %IPM routines and classes, as well IPM repository settings to all namespaces. ## Installing ObjectScript Package Manager Client: @@ -75,4 +75,4 @@ Here is the [alternative supported folder structure.](https://openexchange.inter ## Support and Collaboration ObjectScript Package Manager is a community supported project and thus open to collaboration via Pull Requests. -Issues and feature requests [are very welcome](https://github.com/intersystems-community/zpm/issues) \ No newline at end of file +Issues and feature requests [are very welcome](https://github.com/intersystems-community/zpm/issues) From bd30a19e2dd2f2b5db48196db9ed9a34c721ebb4 Mon Sep 17 00:00:00 2001 From: "Shuheng Liu (InterSystems)" <155992272+isc-shuliu@users.noreply.github.com> Date: Wed, 18 Dec 2024 10:58:00 -0500 Subject: [PATCH 17/17] style: fix typos in Main.cls --- src/cls/IPM/Main.cls | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/cls/IPM/Main.cls b/src/cls/IPM/Main.cls index eeb0edca..e478bfb7 100644 --- a/src/cls/IPM/Main.cls +++ b/src/cls/IPM/Main.cls @@ -2815,8 +2815,8 @@ ZPM(pArgs...) If $System.CLS.IsMthd("%IPM.Main", "Shell") && ($Namespace '= "HSLIB") && ($Namespace '= "HSSYS") { Write !, "Change namepace to one of the following to run the ""zpm"" command" Do ##class(%IPM.Main).Shell("version") - Write !, "If you want to map IPM globally, switch to one of the namesapaces above and run: zpm ""enable -map -globally""." - Write !, "If you want to reset repository and map IPM globally along with repository settings, switch to one of the namesapaces above and run: zpm ""enable -community""." + Write !, "If you want to map IPM globally, switch to one of the namespaces above and run: zpm ""enable -map -globally""." + Write !, "If you want to reset repository and map IPM globally along with repository settings, switch to one of the namespaces above and run: zpm ""enable -community""." Set found = 1 Quit }