forked from dienianindya/gsi_ess_mobile
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
67 lines
2.3 KiB
67 lines
2.3 KiB
"use strict";
|
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
exports.isLocalExtension = exports.readFile = exports.findExtensionYaml = exports.getLocalExtensionSpec = void 0;
|
|
const fs = require("fs-extra");
|
|
const path = require("path");
|
|
const yaml = require("js-yaml");
|
|
const fsutils_1 = require("../fsutils");
|
|
const error_1 = require("../error");
|
|
const logger_1 = require("../logger");
|
|
const EXTENSIONS_SPEC_FILE = "extension.yaml";
|
|
const EXTENSIONS_PREINSTALL_FILE = "PREINSTALL.md";
|
|
async function getLocalExtensionSpec(directory) {
|
|
const spec = await parseYAML(readFile(path.resolve(directory, EXTENSIONS_SPEC_FILE)));
|
|
try {
|
|
const preinstall = readFile(path.resolve(directory, EXTENSIONS_PREINSTALL_FILE));
|
|
spec.preinstallContent = preinstall;
|
|
}
|
|
catch (err) {
|
|
logger_1.logger.debug(`No PREINSTALL.md found in directory ${directory}.`);
|
|
}
|
|
return spec;
|
|
}
|
|
exports.getLocalExtensionSpec = getLocalExtensionSpec;
|
|
function findExtensionYaml(directory) {
|
|
while (!(0, fsutils_1.fileExistsSync)(path.resolve(directory, EXTENSIONS_SPEC_FILE))) {
|
|
const parentDir = path.dirname(directory);
|
|
if (parentDir === directory) {
|
|
throw new error_1.FirebaseError("Couldn't find an extension.yaml file. Check that you are in the root directory of your extension.");
|
|
}
|
|
directory = parentDir;
|
|
}
|
|
return directory;
|
|
}
|
|
exports.findExtensionYaml = findExtensionYaml;
|
|
function readFile(pathToFile) {
|
|
try {
|
|
return fs.readFileSync(pathToFile, "utf8");
|
|
}
|
|
catch (err) {
|
|
if (err.code === "ENOENT") {
|
|
throw new error_1.FirebaseError(`Could not find "${pathToFile}""`, { original: err });
|
|
}
|
|
throw new error_1.FirebaseError(`Failed to read file at "${pathToFile}"`, { original: err });
|
|
}
|
|
}
|
|
exports.readFile = readFile;
|
|
function isLocalExtension(extensionName) {
|
|
try {
|
|
fs.readdirSync(extensionName);
|
|
}
|
|
catch (err) {
|
|
return false;
|
|
}
|
|
return true;
|
|
}
|
|
exports.isLocalExtension = isLocalExtension;
|
|
function parseYAML(source) {
|
|
try {
|
|
return yaml.safeLoad(source);
|
|
}
|
|
catch (err) {
|
|
if (err instanceof yaml.YAMLException) {
|
|
throw new error_1.FirebaseError(`YAML Error: ${err.message}`, { original: err });
|
|
}
|
|
throw new error_1.FirebaseError(err.message);
|
|
}
|
|
}
|