Skip to content

Commit d413c27

Browse files
committed
Add reverse dependencies
Closes #8
1 parent d137f25 commit d413c27

2 files changed

Lines changed: 41 additions & 1 deletion

File tree

src/_data/depctrl.js

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,28 @@ const extractScriptData = async (feeds) => {
9999
return feeds;
100100
}
101101

102+
103+
const resolveReverseDependencies = async (feeds) => {
104+
const reverseDependencies = feeds.flatMap((x) => [].concat(Object.entries(x.macros || {}), Object.entries(x.modules || {})))
105+
.flatMap(([namepsace, automation]) => {
106+
let defaultChannel = Object.values(automation.channels).filter((c) => c.default)[0];
107+
let dependencies = (defaultChannel.requiredModules || []).map((m) => m.moduleName);
108+
return dependencies.map(d => [d, namepsace]);
109+
}).reduce((acc, [dependency, namepsace]) => {
110+
acc[dependency] = acc[dependency] || [];
111+
acc[dependency].push(namepsace);
112+
return acc;
113+
}, {});
114+
console.log(reverseDependencies);
115+
116+
for (var feed of feeds) {
117+
for (var [moduleID, module] of Object.entries(feed.modules || {})) {
118+
module["_reverseDependency"] = reverseDependencies[moduleID] || [];
119+
}
120+
}
121+
return feeds;
122+
}
123+
102124
// fetch single feed
103125
const fetchFeed = (url) => {
104126
return limitedWebRequest(url, "text")
@@ -208,6 +230,7 @@ function fillTemplateVar(data, repDict = {}, parentKey = "", depth = 0) {
208230
const data = fetchAllFeeds(seedFeed)
209231
.then(fillTemplateVar)
210232
.then(checkFileIntegrity)
211-
.then(extractScriptData);
233+
.then(extractScriptData)
234+
.then(resolveReverseDependencies);
212235

213236
module.exports.getData = () => data;

src/pages/modules-pages.njk

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,23 @@ eleventyComputed:
102102
</div>
103103
{% endfor %}
104104
</p>
105+
106+
<h2>Reverse Dependencies:</h2>
107+
<p>
108+
{% if (module._reverseDependency | length) !== 0 %}
109+
<ul>
110+
{% for dependency in module._reverseDependency %}
111+
<li><span class="font-monospace">{{ dependency }}</span></li>
112+
{% endfor %}
113+
</ul>
114+
</p>
115+
{% else %}
116+
<div class="alert alert-secondary" role="alert">
117+
No known Macros/Modules depend on this Module.
118+
</div>
119+
{% endif %}
120+
</p>
121+
105122
{% if not loop.last %}<hr>{% endif %}
106123

107124
{% endfor %}

0 commit comments

Comments
 (0)