Skip to content

Commit 61cfd7c

Browse files
committed
[INTERNAL][WIP] VersionInfo: with manifest infos
added TODOs
1 parent 367729f commit 61cfd7c

File tree

2 files changed

+51
-17
lines changed

2 files changed

+51
-17
lines changed

lib/processors/versionInfoGenerator.js

Lines changed: 50 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
const log = require("@ui5/logger").getLogger("builder:processors:versionInfogenerator");
1+
const log = require("@ui5/logger").getLogger("builder:processors:versionInfoGenerator");
22
const resourceFactory = require("@ui5/fs").resourceFactory;
33
const path = require("path");
44

@@ -119,7 +119,7 @@ const resolveTransitiveDependencies = (libraryInfosMap) => {
119119
const keys = [...libraryInfosMap.keys()];
120120
keys.sort();
121121
const resolvedCache = new Map();
122-
keys.forEach((libName) => {
122+
keys.forEach((libName) => { // e.g. sap.ui.documentation
123123
resolve(libName, libraryInfosMap, resolvedCache);
124124
});
125125
};
@@ -146,31 +146,63 @@ const merge = (existingEntry, newLibs) => {
146146
*
147147
* @param {string} libName
148148
* @param {Map<string, DependencyInfos>} libraryInfosMap
149-
* @param {Map<string, DependencyInfos>} resolvedCache
149+
* @param {Map<string, DependencyInfos>} alreadyProcessed
150150
* @returns {DependencyInfos} resolved dependencies
151151
*/
152-
const resolve = (libName, libraryInfosMap, resolvedCache) => {
153-
// check cache first
154-
if ( resolvedCache.has(libName)) {
155-
return resolvedCache.get(libName);
152+
const resolve = (libName, libraryInfosMap, alreadyProcessed, isLazy) => {
153+
// check already processed first
154+
if ( alreadyProcessed.has(libName)) {
155+
return alreadyProcessed.get(libName);
156156
}
157157
const manifestHint = libraryInfosMap.get(libName);
158-
let resolved = manifestHint;
158+
let mergedDependencies = manifestHint;
159+
// cache
160+
alreadyProcessed.set(libName, mergedDependencies);
159161
if (!manifestHint) {
160-
log.error(`no manifest information in dependencies for ${libName}`);
161-
resolvedCache.set(libName, {});
162+
log.error(`no manifest information in dependencies for ${libName}`); // TODO check
163+
alreadyProcessed.set(libName, {});
162164
return {};
163165
}
164166
const keys = Object.keys(manifestHint);
165167
keys.forEach((childLibName) => {
166-
const childResolved = resolve(childLibName, libraryInfosMap, resolvedCache);
168+
const childResolved = resolve(childLibName, libraryInfosMap, alreadyProcessed, isLazy);
167169
// set a copy of the resolved libraries to avoid modifying it while iterating (recursively)
168-
resolved = merge(resolved, clone(childResolved));
170+
mergedDependencies = merge(mergedDependencies, clone(childResolved), isLazy);
171+
// TODO add childResolved to resolved
172+
// TODO check cacles
173+
174+
175+
// TODO lib a (lazy) --> all its dependencies must be lazy
176+
// input
177+
// a -> b (lazy) -> c
178+
// output
179+
// a -> b (lazy), c (lazy)
180+
181+
182+
// a -> c, b (lazy)
183+
// b -> c (lazy)
184+
185+
186+
// a -> c, b (lazy)
187+
188+
189+
// a -> c (lazy), b (lazy)
190+
// b -> c
191+
192+
// kette gewinnt lazy --> alle dependencies von einer lazy dep sind auch lazy
193+
// merge gewinnt eager
194+
195+
196+
// TODO put this into a classes to better structure the code
197+
// TODO instead of using a "global" map, have a Dependency as a class with a name
198+
// and the functionality to resolve its dependencies
199+
// ManifestHints -> resolve
169200
});
170201

171-
libraryInfosMap.set(libName, resolved);
172-
resolvedCache.set(libName, resolved);
173-
return resolved;
202+
libraryInfosMap.set(libName, mergedDependencies);
203+
204+
205+
return mergedDependencies;
174206
};
175207

176208
/**
@@ -202,12 +234,14 @@ const addManifestHints = (result, libs) => {
202234

203235
const processLibraryInfo = async (libraryInfo, dependencyInfoMap, embeddedInfoMap) => {
204236
const manifestInfo = await processManifest(libraryInfo.mainManifest);
237+
// gather shallow library information
205238
dependencyInfoMap.set(libraryInfo.name, manifestInfo.libs);
206-
const embeds = manifestInfo.embeds;
239+
const embeds = manifestInfo.embeds; // sdk
207240
// filter
208241
const embeddedPaths = embeds.map((embed) => {
209242
return getManifestPath(libraryInfo.mainManifest.getPath(), embed);
210243
});
244+
// sap.ui.documentation.sdk
211245
const relevantManifests = libraryInfo.manifestResources.filter((manifestResource) => {
212246
return embeddedPaths.includes(manifestResource.getPath());
213247
});

lib/tasks/generateVersionInfo.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ module.exports = async ({workspace, dependencies, options: {rootProject, pattern
2727
return manifestResource.getPath() === `/resources/${namespace}/${MANIFEST_JSON}`;
2828
});
2929
return {
30-
mainManifest,
30+
mainManifest, // TODO rename libraryManifest
3131
manifestResources,
3232
name: dotLibResource._project.metadata.name,
3333
version: dotLibResource._project.version

0 commit comments

Comments
 (0)