Small Improvements for the new plugin.json code

This commit is contained in:
DJj123dj
2026-02-11 20:37:28 +01:00
parent 3989fb5f76
commit 138f7fa2bb
4 changed files with 66 additions and 106 deletions
+16 -16
View File
@@ -28,6 +28,7 @@ const fs = require("fs")
const ts = require("typescript")
const {createHash,Hash} = require("crypto")
const nodepath = require('path')
const ansis = require("ansis")
/** ## What is this?
* This is a function which compares `./src/` with a hash stored in `./dist/hash.txt`.
@@ -84,48 +85,47 @@ function saveNewCompilationHash(){
}
if (!process.argv.includes("--no-compile")){
const pluginDependencies = new Set()
const requiredDependencies = new Set()
if (fs.existsSync("./plugins")){
console.log("OT: Reading plugin.json files...")
const plugins = fs.readdirSync("./plugins")
for (const pluginDir of plugins){
for (const pluginDir of fs.readdirSync("./plugins")){
if (pluginDir === ".DS_Store") continue
const pluginPath = nodepath.join("./plugins", pluginDir)
if (!fs.statSync(pluginPath).isDirectory()) continue
const pluginJsonPath = nodepath.join(pluginPath, "plugin.json")
if (fs.existsSync(pluginJsonPath)){
try {
try{
const pluginData = JSON.parse(fs.readFileSync(pluginJsonPath).toString())
if (pluginData.npmDependencies && Array.isArray(pluginData.npmDependencies)){
pluginData.npmDependencies.forEach(dep => {
if (typeof dep === "string" && dep.trim()) {
pluginDependencies.add(dep.trim())
pluginData.npmDependencies.forEach((dep) => {
if (typeof dep === "string" && dep.trim()){
requiredDependencies.add(dep.trim())
}
})
}
} catch (e) {
}catch(err){
// skip invalid plugin.json files, will be caught later
}
}
}
if (pluginDependencies.size > 0){
if (requiredDependencies.size > 0){
console.log("OT: Checking plugin npm dependencies...")
/**@type {string[]} */
const missingDeps = []
for (const dep of pluginDependencies){
try {
for (const dep of requiredDependencies){
try{
require.resolve(dep)
} catch {
}catch(err){
missingDeps.push(dep)
}
}
if (missingDeps.length > 0){
console.log("OT: Warning - Missing npm dependencies required by plugins:")
missingDeps.forEach(dep => console.log(` - ${dep}`))
console.log("OT: Please install missing dependencies with: npm install " + missingDeps.join(" "))
console.log("OT: Continuing compilation anyway...")
console.log(ansis.red("OT: ❌ Fatal Error --> Missing npm dependencies required by plugins:\n\n")+ansis.cyan(missingDeps.map((dep) => " - "+dep).join("\n")+"\n"))
console.log("OT: Please install missing dependencies using the following command:\n> "+ansis.bold.green("npm install " + missingDeps.join(" "))+"\n")
process.exit(1)
}
}
}