import fs from "node:fs"; import path from "node:path";
export function isTruthy(value: unknown): boolean { if (value === undefined || value === null) { returnfalse;
} if (typeof value === "boolean") { return value;
} if (typeof value === "number") { return value !== 0;
} if (typeof value === "string") { return value.trim().length > 0;
} returntrue;
}
export function resolveConfigPath(config: unknown, pathStr: string): unknown { const parts = pathStr.split(".").filter(Boolean);
let current: unknown = config; for (const part of parts) { if (typeof current !== "object" || current === null) { return undefined;
}
current = (current as Record<string, unknown>)[part];
} return current;
}
export function isConfigPathTruthyWithDefaults(
config: unknown,
pathStr: string,
defaults: Record<string, boolean>,
): boolean { const value = resolveConfigPath(config, pathStr); if (value === undefined && pathStr in defaults) { return defaults[pathStr] ?? false;
} return isTruthy(value);
}
export function evaluateRuntimeRequires(params: RuntimeRequirementEvalParams): boolean { const requires = params.requires; if (!requires) { returntrue;
}
const requiredBins = requires.bins ?? []; if (requiredBins.length > 0) { for (const bin of requiredBins) { if (params.hasBin(bin)) { continue;
} if (params.hasRemoteBin?.(bin)) { continue;
} returnfalse;
}
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.