From 23b814da146a375e6c7293f54af2d27ec4e1c0f9 Mon Sep 17 00:00:00 2001 From: Mihai Babiac Date: Tue, 16 May 2023 18:14:43 +0200 Subject: [PATCH 1/2] Fix bug in features with explicit port numbers See issue #522 --- src/spec-configuration/containerFeaturesOCI.ts | 2 +- src/spec-configuration/containerFeaturesOrder.ts | 4 ++-- src/spec-node/collectionCommonUtils/packageCommandImpl.ts | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/spec-configuration/containerFeaturesOCI.ts b/src/spec-configuration/containerFeaturesOCI.ts index 8fe254164..8ab16a497 100644 --- a/src/spec-configuration/containerFeaturesOCI.ts +++ b/src/spec-configuration/containerFeaturesOCI.ts @@ -15,7 +15,7 @@ export function tryGetOCIFeatureSet(output: Log, identifier: string, options: bo value: options }; - const userFeatureIdWithoutVersion = originalUserFeatureId.split(':')[0]; + const userFeatureIdWithoutVersion = originalUserFeatureId.split(':').slice(0, -1).join(':'); let featureSet: FeatureSet = { sourceInformation: { type: 'oci', diff --git a/src/spec-configuration/containerFeaturesOrder.ts b/src/spec-configuration/containerFeaturesOrder.ts index 096cd0c5a..8f1d30a24 100644 --- a/src/spec-configuration/containerFeaturesOrder.ts +++ b/src/spec-configuration/containerFeaturesOrder.ts @@ -49,7 +49,7 @@ export function computeInstallationOrder(features: FeatureSet[]) { feature, before: new Set(), after: new Set(), - })).reduce((map, feature) => map.set(feature.feature.sourceInformation.userFeatureId.split(':')[0], feature), new Map()); + })).reduce((map, feature) => map.set(feature.feature.sourceInformation.userFeatureId.split(':').slice(0, -1).join(':'), feature), new Map()); let nodes = [...nodesById.values()]; @@ -124,7 +124,7 @@ export function computeInstallationOrder(features: FeatureSet[]) { const missing = new Set(nodesById.keys()); for (const feature of orderedFeatures) { - missing.delete(feature.sourceInformation.userFeatureId.split(':')[0]); + missing.delete(feature.sourceInformation.userFeatureId.split(':').slice(0, -1).join(':')); } if (missing.size !== 0) { diff --git a/src/spec-node/collectionCommonUtils/packageCommandImpl.ts b/src/spec-node/collectionCommonUtils/packageCommandImpl.ts index 2be6ace02..b51963ff1 100644 --- a/src/spec-node/collectionCommonUtils/packageCommandImpl.ts +++ b/src/spec-node/collectionCommonUtils/packageCommandImpl.ts @@ -135,7 +135,7 @@ async function addsAdditionalTemplateProps(srcFolder: string, devcontainerTempla templateData.type = type; templateData.fileCount = (await recursiveDirReader.default(srcFolder)).length; - templateData.featureIds = config.features ? Object.keys(config.features).map((k) => k.split(':')[0]) : []; + templateData.featureIds = config.features ? Object.keys(config.features).map((k) => k.split(':').slice(0, -1).join(':')) : []; await writeLocalFile(devcontainerTemplateJsonPath, JSON.stringify(templateData, null, 4)); From efa1784c6765f0e1c1cdcc35ce989ba74703ce7c Mon Sep 17 00:00:00 2001 From: Mihai Babiac Date: Wed, 17 May 2023 09:53:38 +0000 Subject: [PATCH 2/2] Use better approach for bugfix --- src/spec-configuration/containerFeaturesOCI.ts | 2 +- src/spec-configuration/containerFeaturesOrder.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/spec-configuration/containerFeaturesOCI.ts b/src/spec-configuration/containerFeaturesOCI.ts index 8ab16a497..de30b9ef1 100644 --- a/src/spec-configuration/containerFeaturesOCI.ts +++ b/src/spec-configuration/containerFeaturesOCI.ts @@ -15,7 +15,7 @@ export function tryGetOCIFeatureSet(output: Log, identifier: string, options: bo value: options }; - const userFeatureIdWithoutVersion = originalUserFeatureId.split(':').slice(0, -1).join(':'); + const userFeatureIdWithoutVersion = featureRef.resource; let featureSet: FeatureSet = { sourceInformation: { type: 'oci', diff --git a/src/spec-configuration/containerFeaturesOrder.ts b/src/spec-configuration/containerFeaturesOrder.ts index 8f1d30a24..f1f59976c 100644 --- a/src/spec-configuration/containerFeaturesOrder.ts +++ b/src/spec-configuration/containerFeaturesOrder.ts @@ -49,7 +49,7 @@ export function computeInstallationOrder(features: FeatureSet[]) { feature, before: new Set(), after: new Set(), - })).reduce((map, feature) => map.set(feature.feature.sourceInformation.userFeatureId.split(':').slice(0, -1).join(':'), feature), new Map()); + })).reduce((map, feature) => map.set(feature.feature.sourceInformation.userFeatureIdWithoutVersion || feature.feature.sourceInformation.userFeatureId, feature), new Map()); let nodes = [...nodesById.values()]; @@ -124,7 +124,7 @@ export function computeInstallationOrder(features: FeatureSet[]) { const missing = new Set(nodesById.keys()); for (const feature of orderedFeatures) { - missing.delete(feature.sourceInformation.userFeatureId.split(':').slice(0, -1).join(':')); + missing.delete(feature.sourceInformation.userFeatureIdWithoutVersion || feature.sourceInformation.userFeatureId); } if (missing.size !== 0) {