MCPcopy Index your code
hub / github.com/devcontainers/cli / getDevcontainerMetadata

Function getDevcontainerMetadata

src/spec-node/imageMetadata.ts:291–316  ·  view source on GitHub ↗
(baseImageMetadata: SubstitutedConfig<ImageMetadataEntry[]>, devContainerConfig: SubstitutedConfig<DevContainerConfig>, featuresConfig: FeaturesConfig | undefined, omitPropertyOverride: string[] = [], omitDevcontainerPropertyOverride: (keyof DevContainerConfig & keyof ImageMetadataEntry)[] = [])

Source from the content-addressed store, hash-verified

289}
290
291export function getDevcontainerMetadata(baseImageMetadata: SubstitutedConfig<ImageMetadataEntry[]>, devContainerConfig: SubstitutedConfig<DevContainerConfig>, featuresConfig: FeaturesConfig | undefined, omitPropertyOverride: string[] = [], omitDevcontainerPropertyOverride: (keyof DevContainerConfig & keyof ImageMetadataEntry)[] = []): SubstitutedConfig<ImageMetadataEntry[]> {
292 const effectivePickFeatureProperties = pickFeatureProperties.filter(property => !omitPropertyOverride.includes(property));
293 const effectivePickDevcontainerProperties = pickConfigProperties.filter(property => !omitDevcontainerPropertyOverride.includes(property));
294
295 const featureRaw = featuresConfig?.featureSets.map(featureSet =>
296 featureSet.features.map(feature => ({
297 id: featureSet.sourceInformation.userFeatureId,
298 ...pick(feature, effectivePickFeatureProperties),
299 }))).flat() || [];
300
301 const raw = [
302 ...baseImageMetadata.raw,
303 ...featureRaw,
304 pick(devContainerConfig.raw, effectivePickDevcontainerProperties),
305 ].filter(config => Object.keys(config).length);
306
307 return {
308 config: [
309 ...baseImageMetadata.config,
310 ...featureRaw.map(devContainerConfig.substitute),
311 pick(devContainerConfig.config, effectivePickDevcontainerProperties),
312 ].filter(config => Object.keys(config).length),
313 raw,
314 substitute: devContainerConfig.substitute,
315 };
316}
317
318function pick<T extends object, K extends keyof T>(obj: T, keys: K[]) {
319 return keys.reduce((res, key) => {

Callers 9

extendImageFunction · 0.90
getExtendImageBuildInfoFunction · 0.90
getImageBuildOptionsFunction · 0.90
getFeaturesBuildOptionsFunction · 0.90
buildAndExtendImageFunction · 0.90
readConfigurationFunction · 0.90

Calls 1

pickFunction · 0.85

Tested by

no test coverage detected