@nodecg/types
Version:
Dynamic broadcast graphics rendered in a browser
34 lines (28 loc) • 1.2 kB
text/typescript
import * as fs from "fs";
import * as path from "path";
import type { NodeCG } from "../../types/nodecg";
export function parseExtension(
bundleDir: string,
manifest: NodeCG.Manifest,
): boolean {
const singleFilePath = path.resolve(bundleDir, "extension.js");
const directoryPath = path.resolve(bundleDir, "extension");
const singleFileExists = fs.existsSync(singleFilePath);
const directoryExists = fs.existsSync(directoryPath);
// If there is a file named "extension", throw an error. It should be a directory.
if (directoryExists && !fs.lstatSync(directoryPath).isDirectory()) {
throw new Error(
`${manifest.name} has an illegal file named "extension" in its root. ` +
'Either rename it to "extension.js", or make a directory named "extension"',
);
}
// If both "extension.js" and a directory named "extension" exist, throw an error.
if (singleFileExists && directoryExists) {
throw new Error(
`${manifest.name} has both "extension.js" and a folder named "extension". ` +
"There can only be one of these, not both.",
);
}
// Return "true" if either "extension.js" or a directory named "extension" exist.
return singleFileExists || directoryExists;
}